diff --git a/package.json b/package.json
index 02a6b1a940..fece70e744 100644
--- a/package.json
+++ b/package.json
@@ -43,11 +43,10 @@
   "devDependencies": {
     "@biomejs/biome": "1.4.1",
     "@changesets/cli": "2.27.1",
+    "@tanstack/react-query": "^5.17.9",
     "@commitlint/cli": "^18.4.3",
     "@commitlint/config-conventional": "^18.4.3",
     "@lavamoat/preinstall-always-fail": "^2.0.0",
-    "@tanstack/query-core": "^4.28.0",
-    "@tanstack/react-query": "^4.28.0",
     "@testing-library/jest-dom": "^6.2.0",
     "@testing-library/react": "^14.1.2",
     "@testing-library/user-event": "^14.5.2",
@@ -72,14 +71,14 @@
     "react-dom": "^18.2.0",
     "recursive-readdir-files": "^2.3.1",
     "typescript": "^5.0.4",
-    "viem": "~1.21.4",
+    "viem": "^2.4.1",
     "vitest": "^0.33.0",
-    "wagmi": "~1.4.13"
+    "wagmi": "^2.3.1"
   },
-  "packageManager": "pnpm@8.14.0",
+  "packageManager": "pnpm@8.14.1",
   "pnpm": {
     "onlyBuiltDependencies": [
       "esbuild"
     ]
   }
-}
\ No newline at end of file
+}
diff --git a/packages/create-rainbowkit/generated-test-app/package.json b/packages/create-rainbowkit/generated-test-app/package.json
index b42251d6e0..3efe9dbbe3 100644
--- a/packages/create-rainbowkit/generated-test-app/package.json
+++ b/packages/create-rainbowkit/generated-test-app/package.json
@@ -10,11 +10,12 @@
   },
   "dependencies": {
     "@rainbow-me/rainbowkit": "workspace:*",
+    "@tanstack/react-query": "^5.17.9",
     "next": "^14.0.4",
     "react": "^18.2.0",
     "react-dom": "^18.2.0",
-    "viem": "~1.21.4",
-    "wagmi": "~1.4.13"
+    "viem": "^2.4.1",
+    "wagmi": "^2.3.1"
   },
   "devDependencies": {
     "@types/node": "^18.19.3",
diff --git a/packages/create-rainbowkit/generated-test-app/pages/_app.tsx b/packages/create-rainbowkit/generated-test-app/pages/_app.tsx
index 45930a428f..ef39adeffa 100644
--- a/packages/create-rainbowkit/generated-test-app/pages/_app.tsx
+++ b/packages/create-rainbowkit/generated-test-app/pages/_app.tsx
@@ -2,8 +2,8 @@ import '../styles/globals.css';
 import '@rainbow-me/rainbowkit/styles.css';
 import type { AppProps } from 'next/app';
 
-import { getDefaultConfig, RainbowKitProvider } from '@rainbow-me/rainbowkit';
-import { WagmiConfig } from 'wagmi';
+import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
+import { WagmiProvider } from 'wagmi';
 import {
   arbitrum,
   base,
@@ -13,30 +13,33 @@ import {
   sepolia,
   zora,
 } from 'wagmi/chains';
+import { getDefaultConfig, RainbowKitProvider } from '@rainbow-me/rainbowkit';
 
-const chains = [
-  mainnet,
-  polygon,
-  optimism,
-  arbitrum,
-  base,
-  zora,
-  ...(process.env.NEXT_PUBLIC_ENABLE_TESTNETS === 'true' ? [sepolia] : []),
-];
-
-const wagmiConfig = getDefaultConfig({
+const config = getDefaultConfig({
   appName: 'RainbowKit App',
   projectId: 'YOUR_PROJECT_ID',
-  chains,
+  chains: [
+    mainnet,
+    polygon,
+    optimism,
+    arbitrum,
+    base,
+    zora,
+    ...(process.env.NEXT_PUBLIC_ENABLE_TESTNETS === 'true' ? [sepolia] : []),
+  ]
 });
 
+const client = new QueryClient();
+
 function MyApp({ Component, pageProps }: AppProps) {
   return (
-    <WagmiConfig config={wagmiConfig}>
-      <RainbowKitProvider chains={chains}>
-        <Component {...pageProps} />
-      </RainbowKitProvider>
-    </WagmiConfig>
+    <WagmiProvider config={config}>
+      <QueryClientProvider client={client}>
+        <RainbowKitProvider>
+          <Component {...pageProps} />
+        </RainbowKitProvider>
+      </QueryClientProvider>
+    </WagmiProvider>
   );
 }
 
diff --git a/packages/create-rainbowkit/package.json b/packages/create-rainbowkit/package.json
index 9bf1fdf869..c6f05557c9 100644
--- a/packages/create-rainbowkit/package.json
+++ b/packages/create-rainbowkit/package.json
@@ -1,7 +1,7 @@
 {
   "name": "@rainbow-me/create-rainbowkit",
   "description": "Scaffold a new RainbowKit project",
-  "version": "0.3.0-beta.0",
+  "version": "0.3.0-beta.2",
   "files": [
     "dist",
     "templates"
diff --git a/packages/create-rainbowkit/templates/next-app/package.json b/packages/create-rainbowkit/templates/next-app/package.json
index 9bd7978dac..5229e55ff3 100644
--- a/packages/create-rainbowkit/templates/next-app/package.json
+++ b/packages/create-rainbowkit/templates/next-app/package.json
@@ -10,11 +10,12 @@
   },
   "dependencies": {
     "@rainbow-me/rainbowkit": "workspace:*",
+    "@tanstack/react-query": "^5.17.9",
     "next": "^14.0.4",
     "react": "^18.2.0",
     "react-dom": "^18.2.0",
-    "viem": "~1.21.4",
-    "wagmi": "~1.4.13"
+    "viem": "^2.4.1",
+    "wagmi": "^2.3.1"
   },
   "devDependencies": {
     "@types/node": "^18.19.3",
@@ -23,4 +24,4 @@
     "eslint-config-next": "^14.0.4",
     "typescript": "^5.0.4"
   }
-}
\ No newline at end of file
+}
diff --git a/packages/create-rainbowkit/templates/next-app/pages/_app.tsx b/packages/create-rainbowkit/templates/next-app/pages/_app.tsx
index 45930a428f..ef39adeffa 100644
--- a/packages/create-rainbowkit/templates/next-app/pages/_app.tsx
+++ b/packages/create-rainbowkit/templates/next-app/pages/_app.tsx
@@ -2,8 +2,8 @@ import '../styles/globals.css';
 import '@rainbow-me/rainbowkit/styles.css';
 import type { AppProps } from 'next/app';
 
-import { getDefaultConfig, RainbowKitProvider } from '@rainbow-me/rainbowkit';
-import { WagmiConfig } from 'wagmi';
+import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
+import { WagmiProvider } from 'wagmi';
 import {
   arbitrum,
   base,
@@ -13,30 +13,33 @@ import {
   sepolia,
   zora,
 } from 'wagmi/chains';
+import { getDefaultConfig, RainbowKitProvider } from '@rainbow-me/rainbowkit';
 
-const chains = [
-  mainnet,
-  polygon,
-  optimism,
-  arbitrum,
-  base,
-  zora,
-  ...(process.env.NEXT_PUBLIC_ENABLE_TESTNETS === 'true' ? [sepolia] : []),
-];
-
-const wagmiConfig = getDefaultConfig({
+const config = getDefaultConfig({
   appName: 'RainbowKit App',
   projectId: 'YOUR_PROJECT_ID',
-  chains,
+  chains: [
+    mainnet,
+    polygon,
+    optimism,
+    arbitrum,
+    base,
+    zora,
+    ...(process.env.NEXT_PUBLIC_ENABLE_TESTNETS === 'true' ? [sepolia] : []),
+  ]
 });
 
+const client = new QueryClient();
+
 function MyApp({ Component, pageProps }: AppProps) {
   return (
-    <WagmiConfig config={wagmiConfig}>
-      <RainbowKitProvider chains={chains}>
-        <Component {...pageProps} />
-      </RainbowKitProvider>
-    </WagmiConfig>
+    <WagmiProvider config={config}>
+      <QueryClientProvider client={client}>
+        <RainbowKitProvider>
+          <Component {...pageProps} />
+        </RainbowKitProvider>
+      </QueryClientProvider>
+    </WagmiProvider>
   );
 }
 
diff --git a/packages/create-rainbowkit/tsconfig.json b/packages/create-rainbowkit/tsconfig.json
index 916c2687d7..249b419276 100644
--- a/packages/create-rainbowkit/tsconfig.json
+++ b/packages/create-rainbowkit/tsconfig.json
@@ -1,10 +1,10 @@
 {
   "extends": "../../tsconfig.json",
   "compilerOptions": {
-    "preserveSymlinks": true,
     "target": "ES2020",
+    "preserveSymlinks": false,
     "outDir": "dist"
   },
   "include": ["src", "templates"],
   "exclude": ["node_modules"],
-}
+}
\ No newline at end of file
diff --git a/packages/example/package.json b/packages/example/package.json
index c9aa3d1279..43b968530d 100644
--- a/packages/example/package.json
+++ b/packages/example/package.json
@@ -8,14 +8,15 @@
     "@rainbow-me/rainbowkit": "workspace:*",
     "@rainbow-me/rainbowkit-siwe-next-auth": "workspace:*",
     "@rainbow-me/rainbow-button": "workspace:*",
+    "@tanstack/react-query": "^5.17.9",
     "ethers": "^5.6.8",
     "next": "^14.0.4",
     "next-auth": "4.24.5",
     "react": "^18.2.0",
     "react-dom": "^18.2.0",
     "siwe": "^2.1.4",
-    "viem": "~1.21.4",
-    "wagmi": "~1.4.13"
+    "viem": "^2.4.1",
+    "wagmi": "^2.3.1"
   },
   "scripts": {
     "dev": "next dev",
@@ -25,4 +26,4 @@
   "keywords": [],
   "author": "",
   "license": "ISC"
-}
\ No newline at end of file
+}
diff --git a/packages/example/pages/_app.tsx b/packages/example/pages/_app.tsx
index edfa9458f7..789e5c5409 100644
--- a/packages/example/pages/_app.tsx
+++ b/packages/example/pages/_app.tsx
@@ -53,13 +53,14 @@ import {
   zerionWallet,
 } from '@rainbow-me/rainbowkit/wallets';
 
+import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
 import type { Session } from 'next-auth';
 import { SessionProvider, signOut } from 'next-auth/react';
 import type { AppProps } from 'next/app';
 import Head from 'next/head';
 import { useRouter } from 'next/router';
 import React, { useEffect, useState } from 'react';
-import { WagmiConfig, useDisconnect } from 'wagmi';
+import { WagmiProvider, useDisconnect } from 'wagmi';
 import {
   arbitrum,
   arbitrumSepolia,
@@ -85,78 +86,72 @@ const RAINBOW_TERMS = 'https://rainbow.me/terms-of-use';
 const projectId =
   process.env.NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID ?? 'YOUR_PROJECT_ID';
 
-const chains = [
-  mainnet,
-  polygon,
-  optimism,
-  arbitrum,
-  base,
-  zora,
-  bsc,
-  zkSync,
-  ...(process.env.NEXT_PUBLIC_ENABLE_TESTNETS === 'true'
-    ? [
-        goerli,
-        sepolia,
-        holesky,
-        polygonMumbai,
-        optimismSepolia,
-        arbitrumSepolia,
-        baseSepolia,
-        zoraSepolia,
-      ]
-    : []),
-];
-
-const { wallets } = getDefaultWallets({
-  appName: 'RainbowKit Demo',
-  projectId,
-  chains,
-});
+const { wallets } = getDefaultWallets();
 
-const wagmiConfig = getDefaultConfig({
+const config = getDefaultConfig({
   appName: 'RainbowKit Demo',
   projectId,
-  chains,
+  chains: [
+    mainnet,
+    polygon,
+    optimism,
+    arbitrum,
+    base,
+    zora,
+    bsc,
+    zkSync,
+    ...(process.env.NEXT_PUBLIC_ENABLE_TESTNETS === 'true'
+      ? [
+          goerli,
+          sepolia,
+          holesky,
+          polygonMumbai,
+          optimismSepolia,
+          arbitrumSepolia,
+          baseSepolia,
+          zoraSepolia,
+        ]
+      : []),
+  ],
   wallets: [
     ...wallets,
     {
       groupName: 'Other',
       wallets: [
-        argentWallet({ projectId, chains }),
-        bifrostWallet({ projectId, chains }),
-        bitgetWallet({ projectId, chains }),
-        bitskiWallet({ chains }),
-        clvWallet({ projectId, chains }),
-        coin98Wallet({ projectId, chains }),
-        coreWallet({ projectId, chains }),
-        dawnWallet({ chains }),
-        desigWallet({ chains }),
-        enkryptWallet({ chains }),
-        foxWallet({ projectId, chains }),
-        frameWallet({ chains }),
-        frontierWallet({ projectId, chains }),
-        imTokenWallet({ projectId, chains }),
-        ledgerWallet({ projectId, chains }),
-        mewWallet({ chains }),
-        oktoWallet({ projectId, chains }),
-        okxWallet({ projectId, chains }),
-        omniWallet({ projectId, chains }),
-        oneKeyWallet({ chains }),
-        phantomWallet({ chains }),
-        rabbyWallet({ chains }),
-        safeheronWallet({ chains }),
-        safepalWallet({ projectId, chains }),
-        subWallet({ projectId, chains }),
-        tahoWallet({ chains }),
-        talismanWallet({ chains }),
-        tokenPocketWallet({ projectId, chains }),
-        tokenaryWallet({ chains }),
-        trustWallet({ projectId, chains }),
-        uniswapWallet({ projectId, chains }),
-        xdefiWallet({ chains }),
-        zealWallet({ chains }),
-        zerionWallet({ projectId, chains }),
+        argentWallet,
+        bifrostWallet,
+        bitgetWallet,
+        bitskiWallet,
+        clvWallet,
+        coin98Wallet,
+        coreWallet,
+        dawnWallet,
+        desigWallet,
+        enkryptWallet,
+        foxWallet,
+        frameWallet,
+        frontierWallet,
+        imTokenWallet,
+        ledgerWallet,
+        mewWallet,
+        oktoWallet,
+        okxWallet,
+        omniWallet,
+        oneKeyWallet,
+        phantomWallet,
+        rabbyWallet,
+        safeheronWallet,
+        safepalWallet,
+        subWallet,
+        tahoWallet,
+        talismanWallet,
+        tokenPocketWallet,
+        tokenaryWallet,
+        trustWallet,
+        uniswapWallet,
+        xdefiWallet,
+        zealWallet,
+        zerionWallet,
       ],
     },
   ],
@@ -293,7 +288,6 @@ function RainbowKitApp({
           ...(showDisclaimer && { disclaimer: DisclaimerDemo }),
         }}
         avatar={customAvatar ? CustomAvatar : undefined}
-        chains={chains}
         locale={locale}
         coolMode={coolModeEnabled}
         initialChain={selectedInitialChainId}
@@ -464,7 +458,7 @@ function RainbowKitApp({
                           }
                           value={selectedInitialChainId ?? 'default'}
                         >
-                          {[undefined, ...chains].map((chain) => (
+                          {[undefined, ...config.chains].map((chain) => (
                             <option
                               key={chain?.id ?? ''}
                               value={chain?.id ?? ''}
@@ -643,6 +637,8 @@ function RainbowKitApp({
   );
 }
 
+const queryClient = new QueryClient();
+
 export default function App(
   appProps: AppProps<{
     session: Session;
@@ -654,10 +650,13 @@ export default function App(
         <title>RainbowKit Example</title>
         <link href="/favicon.ico" rel="icon" />
       </Head>
+
       <SessionProvider refetchInterval={0} session={appProps.pageProps.session}>
-        <WagmiConfig config={wagmiConfig}>
-          <RainbowKitApp {...appProps} />
-        </WagmiConfig>
+        <WagmiProvider config={config}>
+          <QueryClientProvider client={queryClient}>
+            <RainbowKitApp {...appProps} />
+          </QueryClientProvider>
+        </WagmiProvider>
       </SessionProvider>
     </>
   );
diff --git a/packages/example/pages/index.tsx b/packages/example/pages/index.tsx
index 12cd67e7df..ef012f47d9 100644
--- a/packages/example/pages/index.tsx
+++ b/packages/example/pages/index.tsx
@@ -11,10 +11,9 @@ import { GetServerSideProps } from 'next';
 import { getServerSession } from 'next-auth';
 import { useSession } from 'next-auth/react';
 import React, { ComponentProps, useEffect, useState } from 'react';
+import { Address, parseEther } from 'viem';
 import {
   useAccount,
-  useNetwork,
-  usePrepareSendTransaction,
   useSendTransaction,
   useSignMessage,
   useSignTypedData,
@@ -61,63 +60,25 @@ const Example = ({ authEnabled }: AppContextProps) => {
     defaultProps.showBalance.largeScreen,
   );
 
-  const { chain: activeChain } = useNetwork();
-
-  const { config: sendTransactionConfig } = usePrepareSendTransaction({
-    enabled: !!address,
-    to: address,
-    value: 0n,
-  });
+  const { chain: activeChain } = useAccount();
 
   const {
     data: transactionData,
     error: transactionError,
     sendTransaction,
-  } = useSendTransaction(sendTransactionConfig);
+  } = useSendTransaction();
 
   const {
     data: signingData,
     error: signingError,
     signMessage,
-  } = useSignMessage({
-    message: 'wen token',
-  });
+  } = useSignMessage();
 
   const {
     data: typedData,
     error: typedError,
     signTypedData,
-  } = useSignTypedData({
-    domain: {
-      chainId: 1,
-      name: 'Ether Mail',
-      verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',
-      version: '1',
-    },
-    message: {
-      contents: 'Hello, Bob!',
-      from: {
-        name: 'Cow',
-        wallet: '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826',
-      },
-      to: {
-        name: 'Bob',
-        wallet: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB',
-      },
-    },
-    primaryType: 'Mail',
-    types: {
-      Mail: [
-        { name: 'from', type: 'Person' },
-        { name: 'to', type: 'Person' },
-        { name: 'contents', type: 'string' },
-      ],
-      Person: [
-        { name: 'name', type: 'string' },
-        { name: 'wallet', type: 'address' },
-      ],
-    },
-  });
+  } = useSignTypedData();
 
   const [mounted, setMounted] = useState(false);
   useEffect(() => setMounted(true), []);
@@ -326,21 +287,59 @@ const Example = ({ authEnabled }: AppContextProps) => {
             <div style={{ display: 'flex', gap: 12, paddingBottom: 12 }}>
               <button
                 disabled={!connected || !sendTransaction}
-                onClick={() => sendTransaction?.()}
+                onClick={() =>
+                  sendTransaction?.({
+                    to: address as Address,
+                    value: parseEther('0.00001'),
+                  })
+                }
                 type="button"
               >
                 Send Transaction
               </button>
               <button
                 disabled={!connected}
-                onClick={() => signMessage()}
+                onClick={() => signMessage({ message: 'wen token' })}
                 type="button"
               >
                 Sign Message
               </button>
               <button
                 disabled={!connected || activeChain?.id !== 1}
-                onClick={() => signTypedData()}
+                onClick={() =>
+                  signTypedData({
+                    domain: {
+                      chainId: 1,
+                      name: 'Ether Mail',
+                      verifyingContract:
+                        '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',
+                      version: '1',
+                    },
+                    message: {
+                      contents: 'Hello, Bob!',
+                      from: {
+                        name: 'Cow',
+                        wallet: '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826',
+                      },
+                      to: {
+                        name: 'Bob',
+                        wallet: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB',
+                      },
+                    },
+                    primaryType: 'Mail',
+                    types: {
+                      Mail: [
+                        { name: 'from', type: 'Person' },
+                        { name: 'to', type: 'Person' },
+                        { name: 'contents', type: 'string' },
+                      ],
+                      Person: [
+                        { name: 'name', type: 'string' },
+                        { name: 'wallet', type: 'address' },
+                      ],
+                    },
+                  })
+                }
                 type="button"
               >
                 Sign Typed Data
diff --git a/packages/rainbow-button/package.json b/packages/rainbow-button/package.json
index 635295bba2..5bedbbc4ec 100644
--- a/packages/rainbow-button/package.json
+++ b/packages/rainbow-button/package.json
@@ -1,7 +1,7 @@
 {
   "name": "@rainbow-me/rainbow-button",
   "description": "Rainbow connector button",
-  "version": "0.2.0-beta.0",
+  "version": "0.2.0-beta.2",
   "files": [
     "dist",
     "styles.css"
@@ -39,8 +39,8 @@
   "peerDependencies": {
     "react": ">=17",
     "react-dom": ">=17",
-    "viem": "~0.3.19 || ^1.0.0",
-    "wagmi": "~1.0.1 || ~1.1.0 || ~1.2.0 || ~1.3.0 || ~1.4.0"
+    "viem": "2.x",
+    "wagmi": "2.x"
   },
   "repository": {
     "type": "git",
diff --git a/packages/rainbow-button/src/components/RainbowButton.tsx b/packages/rainbow-button/src/components/RainbowButton.tsx
index 260eabb725..c4db464a8d 100644
--- a/packages/rainbow-button/src/components/RainbowButton.tsx
+++ b/packages/rainbow-button/src/components/RainbowButton.tsx
@@ -9,12 +9,7 @@ export function RainbowButtonProvider({
   RainbowKitProviderProps,
   'chains' | 'avatar' | 'initialChain' | 'modalSize' | 'showRecentTransactions'
 >) {
-  return (
-    // chains array is intentionally left empty
-    <RainbowKitProvider chains={[]} {...options}>
-      {children}
-    </RainbowKitProvider>
-  );
+  return <RainbowKitProvider {...options}>{children}</RainbowKitProvider>;
 }
 
 export const RainbowButton = () => {
diff --git a/packages/rainbow-button/src/connectors/rainbow.ts b/packages/rainbow-button/src/connectors/rainbow.ts
index 9d56c332e1..8478809005 100644
--- a/packages/rainbow-button/src/connectors/rainbow.ts
+++ b/packages/rainbow-button/src/connectors/rainbow.ts
@@ -1,16 +1,35 @@
 import { connectorsForWallets } from '@rainbow-me/rainbowkit';
 import { rainbowWallet } from '@rainbow-me/rainbowkit/wallets';
-import { Connector } from 'wagmi';
+import type { CreateConnectorFn } from 'wagmi';
 
-export type RainbowConnectorOptions = Parameters<typeof rainbowWallet>[0];
+export type RainbowConnectorOptions = Parameters<typeof rainbowWallet>[0] & {
+  appName: string;
+  appDescription?: string;
+  appUrl?: string;
+  appIcon?: string;
+};
 
-declare class RainbowConnector extends Connector {
-  constructor(options: RainbowConnectorOptions);
-}
+function rainbowConnector({
+  projectId,
+  appName,
+  appDescription,
+  appUrl,
+  appIcon,
+  walletConnectParameters,
+}: RainbowConnectorOptions): CreateConnectorFn {
+  const [connector] = connectorsForWallets(
+    [{ groupName: 'Popular', wallets: [rainbowWallet] }],
+    {
+      projectId,
+      appName,
+      appDescription,
+      appUrl,
+      appIcon,
+      walletConnectParameters,
+    },
+  );
 
-function RainbowConnector(options: RainbowConnectorOptions) {
-  const [rainbowConnector] = connectorsForWallets([rainbowWallet(options)]);
-  return rainbowConnector;
+  return connector;
 }
 
-export { RainbowConnector };
+export { rainbowConnector };
diff --git a/packages/rainbow-button/src/index.ts b/packages/rainbow-button/src/index.ts
index 8c7e3d054c..2f537adfb3 100644
--- a/packages/rainbow-button/src/index.ts
+++ b/packages/rainbow-button/src/index.ts
@@ -1,3 +1,3 @@
 export { RainbowButtonProvider } from './components/RainbowButton';
-export { RainbowConnector } from './connectors/rainbow';
+export { rainbowConnector } from './connectors/rainbow';
 export { RainbowButton } from './components/RainbowButton';
diff --git a/packages/rainbowkit-siwe-next-auth/package.json b/packages/rainbowkit-siwe-next-auth/package.json
index 56c4b5f021..ecdbd644ed 100644
--- a/packages/rainbowkit-siwe-next-auth/package.json
+++ b/packages/rainbowkit-siwe-next-auth/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@rainbow-me/rainbowkit-siwe-next-auth",
-  "version": "0.4.0-beta.0",
+  "version": "0.4.0-beta.2",
   "description": "RainbowKit authentication adapter for Sign-In with Ethereum and NextAuth.js",
   "files": [
     "dist"
diff --git a/packages/rainbowkit/package.json b/packages/rainbowkit/package.json
index 0b4bbb5249..4364b21745 100644
--- a/packages/rainbowkit/package.json
+++ b/packages/rainbowkit/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@rainbow-me/rainbowkit",
-  "version": "2.0.0-beta.0",
+  "version": "2.0.0-beta.2",
   "description": "The best way to connect a wallet",
   "files": [
     "dist",
@@ -44,8 +44,8 @@
   "peerDependencies": {
     "react": ">=17",
     "react-dom": ">=17",
-    "viem": "~0.3.19 || ^1.0.0",
-    "wagmi": "~1.0.1 || ~1.1.0 || ~1.2.0 || ~1.3.0 || ~1.4.0"
+    "viem": "2.x",
+    "wagmi": "2.x"
   },
   "devDependencies": {
     "@testing-library/jest-dom": "^6.2.0",
@@ -59,9 +59,7 @@
     "nock": "^13.4.0",
     "postcss": "^8.4.32",
     "react": "^18.2.0",
-    "viem": "~1.21.4",
     "vitest": "^0.33.0",
-    "wagmi": "~1.4.13",
     "@types/i18n-js": "^3.8.9",
     "@types/ua-parser-js": "^0.7.39"
   },
@@ -80,4 +78,4 @@
     "url": "git+https://github.com/rainbow-me/rainbowkit.git",
     "directory": "packages/rainbowkit"
   }
-}
\ No newline at end of file
+}
diff --git a/packages/rainbowkit/src/components/AsyncImage/AsyncImage.tsx b/packages/rainbowkit/src/components/AsyncImage/AsyncImage.tsx
index f60c47e77c..e43c66ce33 100644
--- a/packages/rainbowkit/src/components/AsyncImage/AsyncImage.tsx
+++ b/packages/rainbowkit/src/components/AsyncImage/AsyncImage.tsx
@@ -12,6 +12,7 @@ interface AsyncImageProps {
   height: BoxProps['height'] | number;
   background?: string;
   borderRadius?: BoxProps['borderRadius'];
+  useAsImage?: boolean;
   borderColor?: BoxProps['borderColor'] | CustomBorderColor;
   boxShadow?: BoxProps['boxShadow'];
   testId?: string;
@@ -22,6 +23,7 @@ export function AsyncImage({
   background,
   borderColor,
   borderRadius,
+  useAsImage,
   boxShadow,
   height,
   src: srcProp,
@@ -53,32 +55,36 @@ export function AsyncImage({
       testId={testId}
     >
       <Box
-        {...(isRemoteImage
-          ? // biome-ignore format: design system keys
-            {
-              'aria-hidden': true,
-              'as': 'img',
-              'onLoad': setRemoteImageLoaded,
-              'src': src,
+        {...(useAsImage
+          ? { 'aria-hidden': true, as: 'img', src }
+          : isRemoteImage
+            ? // biome-ignore format: design system keys
+              {
+              "aria-hidden": true,
+              as: "img",
+              onLoad: setRemoteImageLoaded,
+              src,
             }
-          : {
-              backgroundSize: 'cover',
-            })}
+            : {
+                backgroundSize: 'cover',
+              })}
         height="full"
         position="absolute"
         style={{
-          touchCallout: 'none',
+          WebkitTouchCallout: 'none',
           transition: 'opacity .15s linear',
           userSelect: 'none',
-          ...(isRemoteImage
-            ? {
-                opacity: isRemoteImageLoaded ? 1 : 0,
-              }
-            : {
-                backgroundImage: src ? `url(${src})` : undefined,
-                backgroundRepeat: 'no-repeat',
-                opacity: src ? 1 : 0,
-              }),
+          ...(!useAsImage
+            ? isRemoteImage
+              ? {
+                  opacity: isRemoteImageLoaded ? 1 : 0,
+                }
+              : {
+                  backgroundImage: src ? `url(${src})` : undefined,
+                  backgroundRepeat: 'no-repeat',
+                  opacity: src ? 1 : 0,
+                }
+            : {}),
         }}
         width="full"
       />
diff --git a/packages/rainbowkit/src/components/ChainModal/Chain.tsx b/packages/rainbowkit/src/components/ChainModal/Chain.tsx
new file mode 100644
index 0000000000..7fa6ff72fd
--- /dev/null
+++ b/packages/rainbowkit/src/components/ChainModal/Chain.tsx
@@ -0,0 +1,128 @@
+import React, { Fragment, useContext } from 'react';
+import { useSwitchChain } from 'wagmi';
+import { isMobile } from '../../utils/isMobile';
+import { AsyncImage } from '../AsyncImage/AsyncImage';
+import { AsyncImageSrc } from '../AsyncImage/useAsyncImage';
+import { Box, BoxProps } from '../Box/Box';
+import { MenuButton } from '../MenuButton/MenuButton';
+import { I18nContext } from '../RainbowKitProvider/I18nContext';
+import { useRainbowKitChains } from '../RainbowKitProvider/RainbowKitChainContext';
+import { Text } from '../Text/Text';
+
+interface ChainProps {
+  chainId: number;
+  currentChainId: number;
+  switchChain: ReturnType<typeof useSwitchChain>['switchChain'];
+  chainIconSize: BoxProps['height'];
+  name: string | undefined;
+  isLoading: boolean;
+  iconBackground: string | undefined;
+  src: string | AsyncImageSrc | undefined | null;
+  idx: number;
+}
+
+const Chain = ({
+  chainId,
+  currentChainId,
+  switchChain,
+  chainIconSize,
+  isLoading,
+  src,
+  name,
+  iconBackground,
+  idx,
+}: ChainProps) => {
+  const mobile = isMobile();
+  const { i18n } = useContext(I18nContext);
+  const rainbowkitChains = useRainbowKitChains();
+
+  const isCurrentChain = currentChainId === chainId;
+
+  return (
+    <Fragment>
+      <MenuButton
+        currentlySelected={isCurrentChain}
+        onClick={isCurrentChain ? undefined : () => switchChain({ chainId })}
+        testId={`chain-option-${chainId}`}
+      >
+        <Box fontFamily="body" fontSize="16" fontWeight="bold">
+          <Box
+            alignItems="center"
+            display="flex"
+            flexDirection="row"
+            justifyContent="space-between"
+          >
+            <Box
+              alignItems="center"
+              display="flex"
+              flexDirection="row"
+              gap="4"
+              height={chainIconSize}
+            >
+              {src && (
+                <Box height="full" marginRight="8">
+                  <AsyncImage
+                    alt={name}
+                    background={iconBackground}
+                    borderRadius="full"
+                    height={chainIconSize}
+                    src={src}
+                    width={chainIconSize}
+                    testId={`chain-option-${chainId}-icon`}
+                  />
+                </Box>
+              )}
+              <div>{name ?? name}</div>
+            </Box>
+            {isCurrentChain && (
+              <Box
+                alignItems="center"
+                display="flex"
+                flexDirection="row"
+                marginRight="6"
+              >
+                <Text color="accentColorForeground" size="14" weight="medium">
+                  {i18n.t('chains.connected')}
+                </Text>
+                <Box
+                  background="connectionIndicator"
+                  borderColor="selectedOptionBorder"
+                  borderRadius="full"
+                  borderStyle="solid"
+                  borderWidth="1"
+                  height="8"
+                  marginLeft="8"
+                  width="8"
+                />
+              </Box>
+            )}
+            {isLoading && (
+              <Box
+                alignItems="center"
+                display="flex"
+                flexDirection="row"
+                marginRight="6"
+              >
+                <Text color="modalText" size="14" weight="medium">
+                  {i18n.t('chains.confirm')}
+                </Text>
+                <Box
+                  background="standby"
+                  borderRadius="full"
+                  height="8"
+                  marginLeft="8"
+                  width="8"
+                />
+              </Box>
+            )}
+          </Box>
+        </Box>
+      </MenuButton>
+      {mobile && idx < rainbowkitChains.length - 1 && (
+        <Box background="generalBorderDim" height="1" marginX="8" />
+      )}
+    </Fragment>
+  );
+};
+
+export default Chain;
diff --git a/packages/rainbowkit/src/components/ChainModal/ChainModal.test.tsx b/packages/rainbowkit/src/components/ChainModal/ChainModal.test.tsx
index cb81fed36d..73cb3e368b 100644
--- a/packages/rainbowkit/src/components/ChainModal/ChainModal.test.tsx
+++ b/packages/rainbowkit/src/components/ChainModal/ChainModal.test.tsx
@@ -1,28 +1,11 @@
 import user from '@testing-library/user-event';
 import React from 'react';
 import { describe, expect, it } from 'vitest';
-import { arbitrum, goerli, mainnet, optimism } from 'wagmi/chains';
+import { arbitrum, mainnet, optimism } from 'wagmi/chains';
 import { renderWithProviders } from '../../../test/';
-import { Chain } from '../RainbowKitProvider/RainbowKitChainContext';
 import { ChainModal } from './ChainModal';
 
 describe('<ChainModal />', () => {
-  it('Unsupported chain', async () => {
-    const { findByText } = renderWithProviders(
-      <ChainModal onClose={() => {}} open />,
-      {
-        chains: [mainnet], // only supports mainnet
-        mock: true,
-        mockOptions: { chainId: goerli.id }, // is connected to goerli
-      },
-    );
-    expect(
-      await findByText(
-        'Wrong network detected, switch or disconnect to continue.',
-      ),
-    ).toBeVisible();
-  });
-
   it('Show current connected chain indicator', async () => {
     const modal = renderWithProviders(<ChainModal onClose={() => {}} open />, {
       mock: true,
@@ -35,31 +18,28 @@ describe('<ChainModal />', () => {
     expect(mainnetOption).toBeDisabled();
   });
 
-  it('List chains provided in <RainbowKitProvider />', async () => {
+  it('List chains from <RainbowKitProvider />', async () => {
     const modal = renderWithProviders(<ChainModal onClose={() => {}} open />, {
       chains: [mainnet, arbitrum, optimism],
       mock: true,
-      props: { chains: [optimism] },
     });
 
+    const mainnetOption = await modal.findByTestId(
+      `rk-chain-option-${optimism.id}`,
+    );
+    const arbitrumOption = await modal.findByTestId(
+      `rk-chain-option-${optimism.id}`,
+    );
     const optimismOption = await modal.findByTestId(
       `rk-chain-option-${optimism.id}`,
     );
 
-    // optimism SHOULD be displayed
-    // as it was the only passed to RainbowKitProvider
+    expect(mainnetOption).toBeInTheDocument();
+    expect(arbitrumOption).toBeInTheDocument();
     expect(optimismOption).toBeInTheDocument();
-
-    // mainnet & arb SHOULD NOT be displayed
-    // even tho they're supported they were not passed to RainbowKitProvider
-    expect(
-      modal.queryByTestId(`rk-chain-option-${mainnet.id}`),
-    ).not.toBeInTheDocument();
-    expect(
-      modal.queryByTestId(`rk-chain-option-${arbitrum.id}`),
-    ).not.toBeInTheDocument();
   });
 
+  // Wagmi can also switch chains without having your wallet connected
   it('Can switch chains', async () => {
     let onCloseGotCalled = false;
     const modal = renderWithProviders(
@@ -86,76 +66,21 @@ describe('<ChainModal />', () => {
     expect(onCloseGotCalled).toBe(true);
   });
 
-  it('Just closes on switch error (user rejected, or other)', async () => {
-    let onCloseGotCalled = false;
-    const modal = renderWithProviders(
-      <ChainModal onClose={() => (onCloseGotCalled = true)} open />,
-      {
-        mock: true,
-        mockOptions: {
-          chainId: mainnet.id,
-          flags: { failSwitchChain: true, isAuthorized: true },
-        },
-      },
-    );
-    const mainnetOption = await modal.findByTestId(
-      `rk-chain-option-${mainnet.id}`,
-    );
-    const arbitrumOption = await modal.findByTestId(
-      `rk-chain-option-${arbitrum.id}`,
-    );
-
-    expect(mainnetOption).toHaveTextContent('Connected');
-    expect(arbitrumOption).not.toHaveTextContent('Connected');
-
-    await user.click(arbitrumOption);
-
-    expect(mainnetOption).toHaveTextContent('Connected');
-    expect(arbitrumOption).not.toHaveTextContent('Connected'); // keep not having it lmao
-
-    expect(onCloseGotCalled).toBe(true);
-  });
-
-  it(`Handles wallets that don't support switching`, async () => {
-    const modal = renderWithProviders(<ChainModal onClose={() => {}} open />, {
-      mock: true,
-      mockOptions: {
-        flags: { isAuthorized: true, noSwitchChain: true },
-      },
-    });
-
-    expect(modal.baseElement).toHaveTextContent(
-      'Your wallet does not support switching networks from',
-    );
-  });
-
   it('Closes on close button press', async () => {
     let onCloseGotCalled = false;
     const modal = renderWithProviders(
       <ChainModal onClose={() => (onCloseGotCalled = true)} open />,
-      {
-        mock: true,
-      },
     );
     const closeButton = await modal.findByLabelText('Close');
+
     await user.click(closeButton);
 
     expect(onCloseGotCalled).toBe(true);
   });
 
-  it('Custom chain metadata', async () => {
-    const customChains: Chain[] = [
-      {
-        ...mainnet,
-        name: 'Custom Chain',
-        iconUrl: 'https://example.com/icon.svg',
-        iconBackground: '#fff',
-      },
-    ];
-
+  it('Custom chain metadata passed from <RainbowKitProvider>', async () => {
     const modal = renderWithProviders(<ChainModal onClose={() => {}} open />, {
-      chains: customChains,
-      mock: true,
+      chains: [mainnet],
     });
     const mainnetOption = await modal.findByTestId(
       `rk-chain-option-${mainnet.id}`,
@@ -167,7 +92,7 @@ describe('<ChainModal />', () => {
     );
     expect(mainnetOptionIcon).toHaveAttribute(
       'style',
-      'background: rgb(255, 255, 255);',
+      'background: rgb(72, 76, 80);',
     );
   });
 });
diff --git a/packages/rainbowkit/src/components/ChainModal/ChainModal.tsx b/packages/rainbowkit/src/components/ChainModal/ChainModal.tsx
index cfc703fd2f..be3af21fca 100644
--- a/packages/rainbowkit/src/components/ChainModal/ChainModal.tsx
+++ b/packages/rainbowkit/src/components/ChainModal/ChainModal.tsx
@@ -1,17 +1,17 @@
-import React, { Fragment, useContext } from 'react';
-import { useDisconnect, useNetwork, useSwitchNetwork } from 'wagmi';
+import React, { useContext, useState } from 'react';
+import { useChainId, useDisconnect, useSwitchChain } from 'wagmi';
+import { useConfig } from 'wagmi';
 import { isMobile } from '../../utils/isMobile';
-import { AsyncImage } from '../AsyncImage/AsyncImage';
 import { Box } from '../Box/Box';
 import { CloseButton } from '../CloseButton/CloseButton';
 import { Dialog } from '../Dialog/Dialog';
 import { DialogContent } from '../Dialog/DialogContent';
 import { DisconnectSqIcon } from '../Icons/DisconnectSq';
 import { MenuButton } from '../MenuButton/MenuButton';
-import { AppContext } from '../RainbowKitProvider/AppContext';
 import { I18nContext } from '../RainbowKitProvider/I18nContext';
 import { useRainbowKitChains } from '../RainbowKitProvider/RainbowKitChainContext';
 import { Text } from '../Text/Text';
+import Chain from './Chain';
 import {
   DesktopScrollClassName,
   MobileScrollClassName,
@@ -23,11 +23,23 @@ export interface ChainModalProps {
 }
 
 export function ChainModal({ onClose, open }: ChainModalProps) {
-  const { chain: activeChain } = useNetwork();
-  const { chains, pendingChainId, reset, switchNetwork } = useSwitchNetwork({
-    onSettled: () => {
-      reset(); // reset mutation variables (eg. pendingChainId, error)
-      onClose();
+  const chainId = useChainId();
+  const { chains } = useConfig();
+  const [pendingChainId, setPendingChainId] = useState<number | null>(null);
+  const { switchChain } = useSwitchChain({
+    mutation: {
+      onMutate: ({ chainId: _chainId }) => {
+        setPendingChainId(_chainId);
+      },
+      onSuccess: () => {
+        if (pendingChainId) setPendingChainId(null);
+      },
+      onError: () => {
+        if (pendingChainId) setPendingChainId(null);
+      },
+      onSettled: () => {
+        onClose();
+      },
     },
   });
 
@@ -36,14 +48,11 @@ export function ChainModal({ onClose, open }: ChainModalProps) {
   const { disconnect } = useDisconnect();
   const titleId = 'rk_chain_modal_title';
   const mobile = isMobile();
-  const unsupportedChain = activeChain?.unsupported ?? false;
+  const isCurrentChainSupported = chains.some((chain) => chain.id === chainId);
   const chainIconSize = mobile ? '36' : '28';
-
-  const { appName } = useContext(AppContext);
-
   const rainbowkitChains = useRainbowKitChains();
 
-  if (!activeChain || !activeChain?.id) {
+  if (!chainId) {
     return null;
   }
 
@@ -70,7 +79,7 @@ export function ChainModal({ onClose, open }: ChainModalProps) {
             </Box>
             <CloseButton onClose={onClose} />
           </Box>
-          {unsupportedChain && (
+          {!isCurrentChainSupported && (
             <Box marginX="8" textAlign={mobile ? 'center' : 'left'}>
               <Text color="modalTextSecondary" size="14" weight="medium">
                 {i18n.t('chains.wrong_network')}
@@ -85,136 +94,25 @@ export function ChainModal({ onClose, open }: ChainModalProps) {
             padding="2"
             paddingBottom="16"
           >
-            {switchNetwork ? (
-              rainbowkitChains.map(
-                ({ iconBackground, iconUrl, id, name }, idx) => {
-                  const chain = chains.find((c) => c.id === id);
-                  if (!chain) return null;
-
-                  const isCurrentChain = chain.id === activeChain?.id;
-                  const switching =
-                    !isCurrentChain && chain.id === pendingChainId;
-
-                  return (
-                    <Fragment key={chain.id}>
-                      <MenuButton
-                        currentlySelected={isCurrentChain}
-                        onClick={
-                          isCurrentChain
-                            ? undefined
-                            : () => switchNetwork(chain.id)
-                        }
-                        testId={`chain-option-${chain.id}`}
-                      >
-                        <Box fontFamily="body" fontSize="16" fontWeight="bold">
-                          <Box
-                            alignItems="center"
-                            display="flex"
-                            flexDirection="row"
-                            justifyContent="space-between"
-                          >
-                            <Box
-                              alignItems="center"
-                              display="flex"
-                              flexDirection="row"
-                              gap="4"
-                              height={chainIconSize}
-                            >
-                              {iconUrl && (
-                                <Box height="full" marginRight="8">
-                                  <AsyncImage
-                                    alt={name ?? chain.name}
-                                    background={iconBackground}
-                                    borderRadius="full"
-                                    height={chainIconSize}
-                                    src={iconUrl}
-                                    width={chainIconSize}
-                                    testId={`chain-option-${chain.id}-icon`}
-                                  />
-                                </Box>
-                              )}
-                              <div>{name ?? chain.name}</div>
-                            </Box>
-                            {isCurrentChain && (
-                              <Box
-                                alignItems="center"
-                                display="flex"
-                                flexDirection="row"
-                                marginRight="6"
-                              >
-                                <Text
-                                  color="accentColorForeground"
-                                  size="14"
-                                  weight="medium"
-                                >
-                                  {i18n.t('chains.connected')}
-                                </Text>
-                                <Box
-                                  background="connectionIndicator"
-                                  borderColor="selectedOptionBorder"
-                                  borderRadius="full"
-                                  borderStyle="solid"
-                                  borderWidth="1"
-                                  height="8"
-                                  marginLeft="8"
-                                  width="8"
-                                />
-                              </Box>
-                            )}
-                            {switching && (
-                              <Box
-                                alignItems="center"
-                                display="flex"
-                                flexDirection="row"
-                                marginRight="6"
-                              >
-                                <Text
-                                  color="modalText"
-                                  size="14"
-                                  weight="medium"
-                                >
-                                  {i18n.t('chains.confirm')}
-                                </Text>
-                                <Box
-                                  background="standby"
-                                  borderRadius="full"
-                                  height="8"
-                                  marginLeft="8"
-                                  width="8"
-                                />
-                              </Box>
-                            )}
-                          </Box>
-                        </Box>
-                      </MenuButton>
-                      {mobile && idx < rainbowkitChains.length - 1 && (
-                        <Box
-                          background="generalBorderDim"
-                          height="1"
-                          marginX="8"
-                        />
-                      )}
-                    </Fragment>
-                  );
-                },
-              )
-            ) : (
-              <Box
-                background="generalBorder"
-                borderRadius="menuButton"
-                paddingX="18"
-                paddingY="12"
-              >
-                <Text color="modalText" size="14" weight="medium">
-                  {appName
-                    ? i18n.t('chains.switching_not_supported', {
-                        appName,
-                      })
-                    : i18n.t('chains.switching_not_supported_fallback')}
-                </Text>
-              </Box>
+            {rainbowkitChains.map(
+              ({ iconBackground, iconUrl, id, name }, idx) => {
+                return (
+                  <Chain
+                    key={id}
+                    chainId={id}
+                    currentChainId={chainId}
+                    switchChain={switchChain}
+                    chainIconSize={chainIconSize}
+                    isLoading={pendingChainId === id}
+                    src={iconUrl}
+                    name={name}
+                    iconBackground={iconBackground}
+                    idx={idx}
+                  />
+                );
+              },
             )}
-            {unsupportedChain && (
+            {!isCurrentChainSupported && (
               <>
                 <Box background="generalBorderDim" height="1" marginX="8" />
                 <MenuButton
diff --git a/packages/rainbowkit/src/components/ConnectButton/ConnectButton.test.tsx b/packages/rainbowkit/src/components/ConnectButton/ConnectButton.test.tsx
index 9742a02d04..99c5d29541 100644
--- a/packages/rainbowkit/src/components/ConnectButton/ConnectButton.test.tsx
+++ b/packages/rainbowkit/src/components/ConnectButton/ConnectButton.test.tsx
@@ -9,6 +9,7 @@ import { ConnectButton } from './ConnectButton';
 describe('<ConnectButton />', () => {
   const renderTextButton = (locale?: Locale) => {
     const options = {
+      mock: true,
       props: {
         chains: [mainnet],
         ...(locale ? { locale } : {}),
diff --git a/packages/rainbowkit/src/components/ConnectButton/ConnectButtonRenderer.tsx b/packages/rainbowkit/src/components/ConnectButton/ConnectButtonRenderer.tsx
index 93c3cb2d0b..bb1ce038f0 100644
--- a/packages/rainbowkit/src/components/ConnectButton/ConnectButtonRenderer.tsx
+++ b/packages/rainbowkit/src/components/ConnectButton/ConnectButtonRenderer.tsx
@@ -1,5 +1,5 @@
 import React, { ReactNode, useContext } from 'react';
-import { useAccount, useBalance, useNetwork } from 'wagmi';
+import { useAccount, useBalance, useConfig } from 'wagmi';
 import { normalizeResponsiveValue } from '../../css/sprinkles.css';
 import { useIsMounted } from '../../hooks/useIsMounted';
 import { useMainnetEnsAvatar } from '../../hooks/useMainnetEnsAvatar';
@@ -66,17 +66,18 @@ export function ConnectButtonRenderer({
   const ensName = useMainnetEnsName(address);
   const ensAvatar = useMainnetEnsAvatar(ensName);
 
+  const { chainId } = useAccount();
+  const { chains: wagmiChains } = useConfig();
+  const isCurrentChainSupported = wagmiChains.some(
+    (chain) => chain.id === chainId,
+  );
+
   const rainbowkitChainsById = useRainbowKitChainsById();
   const authenticationStatus = useAuthenticationStatus() ?? undefined;
-
-  const { chain: activeChain } = useNetwork();
-  const rainbowKitChain = activeChain
-    ? rainbowkitChainsById[activeChain.id]
-    : undefined;
+  const rainbowKitChain = chainId ? rainbowkitChainsById[chainId] : undefined;
   const chainName = rainbowKitChain?.name ?? undefined;
   const chainIconUrl = rainbowKitChain?.iconUrl ?? undefined;
   const chainIconBackground = rainbowKitChain?.iconBackground ?? undefined;
-
   const resolvedChainIconUrl = useAsyncImage(chainIconUrl);
 
   const showRecentTransactions = useContext(ShowRecentTransactionsContext);
@@ -125,14 +126,14 @@ export function ConnectButtonRenderer({
           : undefined,
         accountModalOpen,
         authenticationStatus,
-        chain: activeChain
+        chain: chainId
           ? {
               hasIcon: Boolean(chainIconUrl),
               iconBackground: chainIconBackground,
               iconUrl: resolvedChainIconUrl,
-              id: activeChain.id,
-              name: chainName ?? activeChain.name,
-              unsupported: activeChain.unsupported,
+              id: chainId,
+              name: chainName,
+              unsupported: !isCurrentChainSupported,
             }
           : undefined,
         chainModalOpen,
diff --git a/packages/rainbowkit/src/components/ConnectButton/formatENS.ts b/packages/rainbowkit/src/components/ConnectButton/formatENS.ts
index 8c19f91210..f6b7b7df89 100644
--- a/packages/rainbowkit/src/components/ConnectButton/formatENS.ts
+++ b/packages/rainbowkit/src/components/ConnectButton/formatENS.ts
@@ -1,4 +1,8 @@
-export function formatENS(name: string): string {
+import { GetEnsNameReturnType } from 'viem';
+
+export function formatENS(name: GetEnsNameReturnType): string {
+  if (!name) return '';
+
   const parts = name.split('.');
   const last = parts.pop();
   if (parts.join('.').length > 24) {
diff --git a/packages/rainbowkit/src/components/ConnectModal/ConnectModal.test.tsx b/packages/rainbowkit/src/components/ConnectModal/ConnectModal.test.tsx
index c26548d853..32d2d0c88c 100644
--- a/packages/rainbowkit/src/components/ConnectModal/ConnectModal.test.tsx
+++ b/packages/rainbowkit/src/components/ConnectModal/ConnectModal.test.tsx
@@ -9,6 +9,7 @@ import { ConnectModal } from './ConnectModal';
 describe('<ConnectModal />', () => {
   const renderHeaderLabelModal = async (locale?: Locale) => {
     const options = {
+      mock: true,
       props: {
         chains: [mainnet],
         ...(locale ? { locale } : {}),
diff --git a/packages/rainbowkit/src/components/ConnectModal/ConnectModal.tsx b/packages/rainbowkit/src/components/ConnectModal/ConnectModal.tsx
index 8427a00ef5..45819ff383 100644
--- a/packages/rainbowkit/src/components/ConnectModal/ConnectModal.tsx
+++ b/packages/rainbowkit/src/components/ConnectModal/ConnectModal.tsx
@@ -15,9 +15,10 @@ export function ConnectModal({ onClose, open }: ConnectModalProps) {
   const titleId = 'rk_connect_title';
   const connectionStatus = useConnectionStatus();
 
-  // when a user cancels or dismisses the SignIn modal for SIWE, disconnect and call onClose
   const { disconnect } = useDisconnect();
   const { isConnecting } = useAccount();
+
+  // when a user cancels or dismisses the SignIn modal for SIWE, disconnect and call onClose
   const onAuthCancel = React.useCallback(() => {
     onClose();
     disconnect();
diff --git a/packages/rainbowkit/src/components/ConnectOptions/ConnectDetails.tsx b/packages/rainbowkit/src/components/ConnectOptions/ConnectDetails.tsx
index 7cbfeab368..bb097552a6 100644
--- a/packages/rainbowkit/src/components/ConnectOptions/ConnectDetails.tsx
+++ b/packages/rainbowkit/src/components/ConnectOptions/ConnectDetails.tsx
@@ -71,7 +71,10 @@ export function GetDetail({
   getWalletDownload: (walletId: string) => void;
   compactModeEnabled: boolean;
 }) {
-  const wallets = useWalletConnectors();
+  const wallets = useWalletConnectors().filter(
+    (wallet) => wallet.isRainbowKitConnector,
+  );
+
   const shownWallets = wallets.splice(0, 5);
 
   const { i18n } = useContext(I18nContext);
@@ -210,8 +213,9 @@ export function ConnectDetail({
     qrCode,
     ready,
     showWalletConnectModal,
+    getDesktopUri,
   } = wallet;
-  const getDesktopDeepLink = wallet.desktop?.getUri;
+  const isDesktopDeepLinkAvailable = !!getDesktopUri;
   const safari = isSafari();
 
   const { i18n } = useContext(I18nContext);
@@ -222,6 +226,11 @@ export function ConnectDetail({
     downloadUrls?.qrCode && !!wallet.desktopDownloadUrl;
   const hasQrCode = qrCode && qrCodeUri;
 
+  const onDesktopUri = async () => {
+    const uri = await getDesktopUri?.();
+    window.open(uri, safari ? '_blank' : '_self');
+  };
+
   const secondaryAction: {
     description: string;
     label: string;
@@ -299,7 +308,12 @@ export function ConnectDetail({
             gap="8"
           >
             <Box borderRadius="10" height={LOGO_SIZE} overflow="hidden">
-              <AsyncImage height={LOGO_SIZE} src={iconUrl} width={LOGO_SIZE} />
+              <AsyncImage
+                useAsImage={!wallet.isRainbowKitConnector}
+                height={LOGO_SIZE}
+                src={iconUrl}
+                width={LOGO_SIZE}
+              />
             </Box>
             <Box
               alignItems="center"
@@ -359,16 +373,10 @@ export function ConnectDetail({
                     {connectionError ? (
                       <ActionButton
                         label={i18n.t('connect.secondary_action.retry.label')}
-                        onClick={
-                          getDesktopDeepLink
-                            ? async () => {
-                                const uri = await getDesktopDeepLink();
-                                window.open(uri, safari ? '_blank' : '_self');
-                              }
-                            : () => {
-                                reconnect(wallet);
-                              }
-                        }
+                        onClick={async () => {
+                          if (isDesktopDeepLinkAvailable) onDesktopUri();
+                          reconnect(wallet);
+                        }}
                       />
                     ) : (
                       <Box color="modalTextSecondary">
diff --git a/packages/rainbowkit/src/components/ConnectOptions/DesktopOptions.tsx b/packages/rainbowkit/src/components/ConnectOptions/DesktopOptions.tsx
index 27af2428b2..387aa38dae 100644
--- a/packages/rainbowkit/src/components/ConnectOptions/DesktopOptions.tsx
+++ b/packages/rainbowkit/src/components/ConnectOptions/DesktopOptions.tsx
@@ -8,7 +8,6 @@ import React, {
 import { touchableStyles } from '../../css/touchableStyles';
 import { isSafari } from '../../utils/browsers';
 import { groupBy } from '../../utils/groupBy';
-import { addLatestWalletId } from '../../wallets/latestWalletId';
 import {
   WalletConnector,
   useWalletConnectors,
@@ -29,6 +28,8 @@ import {
 } from '../RainbowKitProvider/ModalSizeContext';
 import { WalletButtonContext } from '../RainbowKitProvider/WalletButtonContext';
 import { Text } from '../Text/Text';
+
+import { addLatestWalletId } from '../../wallets/latestWalletId';
 import {
   ConnectDetail,
   DownloadDetail,
@@ -58,7 +59,6 @@ export enum WalletStep {
 
 export function DesktopOptions({ onClose }: { onClose: () => void }) {
   const titleId = 'rk_connect_title';
-  const safari = isSafari();
   const [selectedOptionId, setSelectedOptionId] = useState<
     string | undefined
   >();
@@ -70,12 +70,15 @@ export function DesktopOptions({ onClose }: { onClose: () => void }) {
   const compactModeEnabled = modalSize === ModalSizeOptions.COMPACT;
   const { disclaimer: Disclaimer } = useContext(AppContext);
   const { i18n } = useContext(I18nContext);
+  const safari = isSafari();
 
   const initialized = useRef(false);
 
   const { connector } = useContext(WalletButtonContext);
 
-  const wallets = useWalletConnectors()
+  const mergeEIP6963WithRkConnectors = true;
+
+  const wallets = useWalletConnectors(mergeEIP6963WithRkConnectors)
     .filter((wallet) => wallet.ready || !!wallet.extensionDownloadUrl)
     .sort((a, b) => a.groupIndex - b.groupIndex);
 
@@ -87,6 +90,7 @@ export function DesktopOptions({ onClose }: { onClose: () => void }) {
     'Popular',
     'More',
     'Others',
+    'Installed',
   ];
 
   // If a user hasn't installed the extension we will get the
@@ -105,70 +109,54 @@ export function DesktopOptions({ onClose }: { onClose: () => void }) {
       wallet?.connect?.()?.catch(() => {
         setConnectionError(true);
       });
-
-      const getDesktopDeepLink = wallet.desktop?.getUri;
-      if (getDesktopDeepLink) {
-        // if desktop deep link, wait for uri
-        setTimeout(async () => {
-          const uri = await getDesktopDeepLink();
-          window.open(uri, safari ? '_blank' : '_self');
-        }, 0);
-      }
     }
   };
 
-  const selectWallet = (wallet: WalletConnector) => {
-    // We still want to get the latest wallet id to show connected
-    // green badge on our custom WalletButton API
-    addLatestWalletId(wallet.id);
+  const onDesktopUri = async (wallet: WalletConnector) => {
+    const sWallet = wallets.find((w) => wallet.id === w.id);
 
-    connectToWallet(wallet);
-    setSelectedOptionId(wallet.id);
+    if (!sWallet?.getDesktopUri) return;
 
-    if (wallet.ready) {
-      // We need to guard against "onConnecting" callbacks being fired
-      // multiple times since connector instances can be shared between
-      // wallets. Ideally wagmi would let us scope the callback to the
-      // specific "connect" call, but this will work in the meantime.
-      let callbackFired = false;
+    setTimeout(async () => {
+      const uri = await sWallet?.getDesktopUri?.();
+      if (uri) window.open(uri, safari ? '_blank' : '_self');
+    }, 0);
+  };
 
-      wallet?.onConnecting?.(async () => {
-        if (callbackFired) return;
-        callbackFired = true;
+  const onQrCode = async (wallet: WalletConnector) => {
+    const sWallet = wallets.find((w) => wallet.id === w.id);
 
-        const sWallet = wallets.find((w) => wallet.id === w.id);
-        const uri = await sWallet?.qrCode?.getUri();
+    const uri = await sWallet?.getQrCodeUri?.();
 
-        setQrCodeUri(uri);
+    setQrCodeUri(uri);
 
-        // This timeout prevents the UI from flickering if connection is instant,
-        // otherwise users will see a flash of the "connecting" state.
-        setTimeout(
-          () => {
-            setSelectedWallet(sWallet);
-            changeWalletStep(WalletStep.Connect);
-          },
-          uri ? 0 : 50,
-        );
+    // This timeout prevents the UI from flickering if connection is instant,
+    // otherwise users will see a flash of the "connecting" state.
+    setTimeout(
+      () => {
+        setSelectedWallet(sWallet);
+        changeWalletStep(WalletStep.Connect);
+      },
+      uri ? 0 : 50,
+    );
+  };
 
-        // If the WalletConnect request is rejected, restart the wallet
-        // selection flow to create a new connection with a new QR code
-        const provider = await sWallet?.connector.getProvider();
-        const connection = provider?.signer?.connection;
-        if (connection?.on && connection?.off) {
-          const handleConnectionClose = () => {
-            removeHandlers();
-            selectWallet(wallet);
-          };
-          const removeHandlers = () => {
-            connection.off('close', handleConnectionClose);
-            connection.off('open', removeHandlers);
-          };
-          connection.on('close', handleConnectionClose);
-          connection.on('open', removeHandlers);
-        }
-      });
-    } else {
+  const selectWallet = async (wallet: WalletConnector) => {
+    // We still want to get the latest wallet id to show connected
+    // green badge on our custom WalletButton API
+    addLatestWalletId(wallet.id);
+
+    // This ensures that we listen to the provider.once("display_uri")
+    // before connecting to the wallet
+    if (wallet.ready) {
+      onQrCode(wallet);
+      onDesktopUri(wallet);
+    }
+
+    connectToWallet(wallet);
+    setSelectedOptionId(wallet.id);
+
+    if (!wallet.ready) {
       setSelectedWallet(wallet);
       changeWalletStep(
         wallet?.extensionDownloadUrl
@@ -426,7 +414,11 @@ export function DesktopOptions({ onClose }: { onClose: () => void }) {
                     {groupName ? (
                       <Box marginBottom="8" marginTop="16" marginX="6">
                         <Text
-                          color="modalTextSecondary"
+                          color={
+                            groupName === 'Installed'
+                              ? 'accentColor'
+                              : 'modalTextSecondary'
+                          }
                           size="14"
                           weight="bold"
                         >
@@ -451,6 +443,7 @@ export function DesktopOptions({ onClose }: { onClose: () => void }) {
                             ready={wallet.ready}
                             recent={wallet.recent}
                             testId={`wallet-option-${wallet.id}`}
+                            isRainbowKitConnector={wallet.isRainbowKitConnector}
                           />
                         );
                       })}
diff --git a/packages/rainbowkit/src/components/ConnectOptions/MobileOptions.css.ts b/packages/rainbowkit/src/components/ConnectOptions/MobileOptions.css.ts
index 5be65281ea..a365981621 100644
--- a/packages/rainbowkit/src/components/ConnectOptions/MobileOptions.css.ts
+++ b/packages/rainbowkit/src/components/ConnectOptions/MobileOptions.css.ts
@@ -24,7 +24,7 @@ export const rotatingBorder = style({
   animation: `${snakeBorder} 1s linear infinite`,
   strokeDasharray: '98 196', // Adjusted based on new perimeter calculation
   fill: 'none',
-  strokeLineCap: 'round',
+  strokeLinecap: 'round',
   strokeWidth: '4', // Reduced stroke width for better appearance on a smaller spinner
 });
 
diff --git a/packages/rainbowkit/src/components/ConnectOptions/MobileOptions.tsx b/packages/rainbowkit/src/components/ConnectOptions/MobileOptions.tsx
index d82024b51f..276b3ba651 100644
--- a/packages/rainbowkit/src/components/ConnectOptions/MobileOptions.tsx
+++ b/packages/rainbowkit/src/components/ConnectOptions/MobileOptions.tsx
@@ -67,69 +67,62 @@ export function WalletButton({
 }) {
   const {
     connect,
-    connector,
     iconBackground,
     iconUrl,
     id,
-    mobile,
     name,
-    onConnecting,
+    getMobileUri,
     ready,
     shortName,
+    showWalletConnectModal,
   } = wallet;
-  const getMobileUri = mobile?.getUri;
+
   const coolModeRef = useCoolMode(iconUrl);
   const initialized = useRef(false);
 
   const { i18n } = useContext(I18nContext);
 
   const onConnect = useCallback(async () => {
-    if (id === 'walletConnect') onClose?.();
-    connect?.()?.catch(() => {});
-
-    // We need to guard against "onConnecting" callbacks being fired
-    // multiple times since connector instances can be shared between
-    // wallets. Ideally wagmi would let us scope the callback to the
-    // specific "connect" call, but this will work in the meantime.
-    let callbackFired = false;
-
-    onConnecting?.(async () => {
-      if (callbackFired) return;
-      callbackFired = true;
-
-      if (getMobileUri) {
-        const mobileUri = await getMobileUri();
-
-        if (connector.id === 'walletConnect') {
-          // In Web3Modal, an equivalent setWalletConnectDeepLink routine gets called after
-          // successful connection and then the universal provider uses it on requests. We call
-          // it upon onConnecting; this now needs to be called for both v1 and v2 Wagmi connectors.
-          // The `connector` type refers to Wagmi connectors, as opposed to RainbowKit wallet connectors.
-          // https://github.com/WalletConnect/web3modal/blob/27f2b1fa2509130c5548061816c42d4596156e81/packages/core/src/utils/CoreUtil.ts#L72
-          setWalletConnectDeepLink({ mobileUri, name });
-        }
+    const onMobileUri = async () => {
+      const mobileUri = await getMobileUri?.();
 
-        if (mobileUri.startsWith('http')) {
-          // Workaround for https://github.com/rainbow-me/rainbowkit/issues/524.
-          // Using 'window.open' causes issues on iOS in non-Safari browsers and
-          // WebViews where a blank tab is left behind after connecting.
-          // This is especially bad in some WebView scenarios (e.g. following a
-          // link from Twitter) where the user doesn't have any mechanism for
-          // closing the blank tab.
-          // For whatever reason, links with a target of "_blank" don't suffer
-          // from this problem, and programmatically clicking a detached link
-          // element with the same attributes also avoids the issue.
-          const link = document.createElement('a');
-          link.href = mobileUri;
-          link.target = '_blank';
-          link.rel = 'noreferrer noopener';
-          link.click();
-        } else {
-          window.location.href = mobileUri;
-        }
+      if (!mobileUri) return;
+
+      if (mobileUri) {
+        setWalletConnectDeepLink({ mobileUri, name });
+      }
+
+      if (mobileUri.startsWith('http')) {
+        // Workaround for https://github.com/rainbow-me/rainbowkit/issues/524.
+        // Using 'window.open' causes issues on iOS in non-Safari browsers and
+        // WebViews where a blank tab is left behind after connecting.
+        // This is especially bad in some WebView scenarios (e.g. following a
+        // link from Twitter) where the user doesn't have any mechanism for
+        // closing the blank tab.
+        // For whatever reason, links with a target of "_blank" don't suffer
+        // from this problem, and programmatically clicking a detached link
+        // element with the same attributes also avoids the issue.
+        const link = document.createElement('a');
+        link.href = mobileUri;
+        link.target = '_blank';
+        link.rel = 'noreferrer noopener';
+        link.click();
+      } else {
+        window.location.href = mobileUri;
       }
-    });
-  }, [connector, connect, getMobileUri, onConnecting, onClose, name, id]);
+    };
+
+    if (id !== 'walletConnect') onMobileUri();
+
+    // If the id is "walletConnect" then "showWalletConnectModal" will always be true
+    if (showWalletConnectModal) {
+      showWalletConnectModal();
+      onClose?.();
+      return;
+    }
+
+    connect?.();
+  }, [connect, getMobileUri, showWalletConnectModal, onClose, name, id]);
 
   useEffect(() => {
     // When using `reactStrictMode: true` in development mode the useEffect hook
@@ -212,7 +205,9 @@ enum MobileWalletStep {
 
 export function MobileOptions({ onClose }: { onClose: () => void }) {
   const titleId = 'rk_connect_title';
-  const wallets = useWalletConnectors();
+  const wallets = useWalletConnectors().filter(
+    (wallet) => wallet.isRainbowKitConnector,
+  );
   const { disclaimer: Disclaimer, learnMoreUrl } = useContext(AppContext);
 
   let headerLabel = null;
diff --git a/packages/rainbowkit/src/components/ModalSelection/ModalSelection.tsx b/packages/rainbowkit/src/components/ModalSelection/ModalSelection.tsx
index 13bde6ff17..034c093f4d 100644
--- a/packages/rainbowkit/src/components/ModalSelection/ModalSelection.tsx
+++ b/packages/rainbowkit/src/components/ModalSelection/ModalSelection.tsx
@@ -17,6 +17,7 @@ type Props = {
   iconUrl: string | (() => Promise<string>);
   iconBackground?: string;
   testId?: string;
+  isRainbowKitConnector?: boolean;
 };
 
 export const ModalSelection = ({
@@ -29,6 +30,7 @@ export const ModalSelection = ({
   ready,
   recent,
   testId,
+  isRainbowKitConnector,
   ...urlProps
 }: Props) => {
   const coolModeRef = useCoolMode(iconUrl);
@@ -88,14 +90,25 @@ export const ModalSelection = ({
           <Box alignItems="center" display="flex" flexDirection="row" gap="12">
             <AsyncImage
               background={iconBackground}
-              {...(isMouseOver ? {} : { borderColor: 'actionButtonBorder' })}
+              {...(!isMouseOver && isRainbowKitConnector
+                ? { borderColor: 'actionButtonBorder' }
+                : {})}
+              // We want to use pure <img /> element
+              // to avoid bugs with eip6963 icons as sometimes
+              // background: url(...) does not work
+              useAsImage={!isRainbowKitConnector}
               borderRadius="6"
               height="28"
               src={iconUrl}
               width="28"
             />
             <Box>
-              <Box style={{ marginTop: recent ? -2 : undefined }}>{name}</Box>
+              <Box
+                style={{ marginTop: recent ? -2 : undefined }}
+                maxWidth="200"
+              >
+                {name}
+              </Box>
               {recent && (
                 <Text
                   color={
diff --git a/packages/rainbowkit/src/components/ProfileDetails/ProfileDetails.tsx b/packages/rainbowkit/src/components/ProfileDetails/ProfileDetails.tsx
index 666203ba0d..086249159e 100644
--- a/packages/rainbowkit/src/components/ProfileDetails/ProfileDetails.tsx
+++ b/packages/rainbowkit/src/components/ProfileDetails/ProfileDetails.tsx
@@ -1,5 +1,7 @@
 import React, { useCallback, useContext, useEffect, useState } from 'react';
-import { useAccount, useBalance, useEnsAvatar, useEnsName } from 'wagmi';
+import { GetEnsNameReturnType } from 'viem';
+import { GetEnsAvatarReturnType } from 'viem/actions';
+import { useAccount, useBalance } from 'wagmi';
 import { isMobile } from '../../utils/isMobile';
 import { Avatar } from '../Avatar/Avatar';
 import { Box } from '../Box/Box';
@@ -18,8 +20,8 @@ import { ProfileDetailsAction } from './ProfileDetailsAction';
 
 interface ProfileDetailsProps {
   address: ReturnType<typeof useAccount>['address'];
-  ensAvatar: ReturnType<typeof useEnsAvatar>['data'];
-  ensName: ReturnType<typeof useEnsName>['data'];
+  ensAvatar: GetEnsAvatarReturnType | undefined;
+  ensName: GetEnsNameReturnType | undefined;
   onClose: () => void;
   onDisconnect: () => void;
 }
@@ -115,7 +117,7 @@ export function ProfileDetails({
                   {accountName}
                 </Text>
               </Box>
-              {balanceData && (
+              {!!balanceData && (
                 <Box textAlign="center">
                   <Text
                     as="h1"
diff --git a/packages/rainbowkit/src/components/RainbowKitProvider/AuthenticationContext.tsx b/packages/rainbowkit/src/components/RainbowKitProvider/AuthenticationContext.tsx
index 31bff84279..dc306d8771 100644
--- a/packages/rainbowkit/src/components/RainbowKitProvider/AuthenticationContext.tsx
+++ b/packages/rainbowkit/src/components/RainbowKitProvider/AuthenticationContext.tsx
@@ -1,13 +1,12 @@
 import React, {
   ReactNode,
   createContext,
-  useCallback,
   useContext,
   useEffect,
   useMemo,
   useRef,
 } from 'react';
-import { ConnectorData, useAccount } from 'wagmi';
+import { useAccount, useAccountEffect } from 'wagmi';
 
 export type AuthenticationStatus =
   | 'loading'
@@ -56,7 +55,9 @@ export function RainbowKitAuthenticationProvider<Message = unknown>({
 }: RainbowKitAuthenticationProviderProps<Message>) {
   // When the wallet is disconnected, we want to tell the auth
   // adapter that the user session is no longer active.
-  const { connector } = useAccount({
+  const { connector } = useAccount();
+
+  useAccountEffect({
     onDisconnect: () => {
       adapter.signOut();
     },
@@ -78,28 +79,30 @@ export function RainbowKitAuthenticationProvider<Message = unknown>({
     }
   }, [status, adapter, isDisconnected]);
 
-  const handleChangedAccount = useCallback(
-    ({ account }: ConnectorData) => {
-      // Only if account is changed then signOut
-      if (account) adapter.signOut();
-    },
-    [adapter],
-  );
+  const handleChangedAccount = () => {
+    adapter.signOut();
+  };
 
   // Wait for user authentication before listening to "change" event.
   // Avoid listening immediately after wallet connection due to potential SIWE authentication delay.
   // Ensure to turn off the "change" event listener for cleanup.
+  // biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>
   useEffect(() => {
-    if (connector && status === 'authenticated') {
+    // Wagmi renders emitter's partially on page load. We wanna make sure
+    // the event emitters gets updated before proceeding
+    if (
+      typeof connector?.emitter?.on === 'function' &&
+      status === 'authenticated'
+    ) {
       // Attach the event listener when status is 'authenticated'
-      connector.on('change', handleChangedAccount);
+      connector.emitter.on('change', handleChangedAccount);
 
       // Cleanup function to remove the event listener
       return () => {
-        connector?.off('change', handleChangedAccount);
+        connector.emitter.off('change', handleChangedAccount);
       };
     }
-  }, [connector, status, handleChangedAccount]);
+  }, [connector?.emitter, status]);
 
   return (
     <AuthenticationContext.Provider
diff --git a/packages/rainbowkit/src/components/RainbowKitProvider/ModalContext.tsx b/packages/rainbowkit/src/components/RainbowKitProvider/ModalContext.tsx
index 10c25ed59a..bb7916d826 100644
--- a/packages/rainbowkit/src/components/RainbowKitProvider/ModalContext.tsx
+++ b/packages/rainbowkit/src/components/RainbowKitProvider/ModalContext.tsx
@@ -6,7 +6,7 @@ import React, {
   useMemo,
   useState,
 } from 'react';
-import { useAccount, useNetwork } from 'wagmi';
+import { useAccount, useAccountEffect, useConfig } from 'wagmi';
 import { useConnectionStatus } from '../../hooks/useConnectionStatus';
 import { AccountModal } from '../AccountModal/AccountModal';
 import { ChainModal } from '../ChainModal/ChainModal';
@@ -62,8 +62,11 @@ export function ModalProvider({ children }: ModalProviderProps) {
   } = useModalStateValue();
 
   const connectionStatus = useConnectionStatus();
-  const { chain } = useNetwork();
-  const chainSupported = !chain?.unsupported;
+
+  const { chainId } = useAccount();
+  const { chains } = useConfig();
+
+  const isCurrentChainSupported = chains.some((chain) => chain.id === chainId);
 
   interface CloseModalsOptions {
     keepConnectModalOpen?: boolean;
@@ -80,7 +83,8 @@ export function ModalProvider({ children }: ModalProviderProps) {
   }
 
   const isUnauthenticated = useAuthenticationStatus() === 'unauthenticated';
-  useAccount({
+
+  useAccountEffect({
     onConnect: () => closeModals({ keepConnectModalOpen: isUnauthenticated }),
     onDisconnect: () => closeModals(),
   });
@@ -93,7 +97,7 @@ export function ModalProvider({ children }: ModalProviderProps) {
           chainModalOpen,
           connectModalOpen,
           openAccountModal:
-            chainSupported && connectionStatus === 'connected'
+            isCurrentChainSupported && connectionStatus === 'connected'
               ? openAccountModal
               : undefined,
           openChainModal:
@@ -106,13 +110,13 @@ export function ModalProvider({ children }: ModalProviderProps) {
         }),
         [
           connectionStatus,
-          chainSupported,
           accountModalOpen,
           chainModalOpen,
           connectModalOpen,
           openAccountModal,
           openChainModal,
           openConnectModal,
+          isCurrentChainSupported,
         ],
       )}
     >
diff --git a/packages/rainbowkit/src/components/RainbowKitProvider/RainbowKitChainContext.tsx b/packages/rainbowkit/src/components/RainbowKitProvider/RainbowKitChainContext.tsx
index 34972ca28a..42e11a647c 100644
--- a/packages/rainbowkit/src/components/RainbowKitProvider/RainbowKitChainContext.tsx
+++ b/packages/rainbowkit/src/components/RainbowKitProvider/RainbowKitChainContext.tsx
@@ -1,18 +1,13 @@
 import React, { ReactNode, createContext, useContext, useMemo } from 'react';
-import { Chain as WagmiChain } from 'wagmi';
+import { useConfig } from 'wagmi';
+import type { Chain } from 'wagmi/chains';
 import { provideRainbowKitChains } from './provideRainbowKitChains';
 
-export interface RainbowKitChain {
-  id: number;
-  name?: string;
+export interface RainbowKitChain extends Chain {
   iconUrl?: string | (() => Promise<string>) | null;
   iconBackground?: string;
 }
 
-// This type is a combination of wagmi and RainbowKit chain types to make
-// it easier for consumers to define their chain config in a single place.
-export type Chain = WagmiChain & RainbowKitChain;
-
 interface RainbowKitChainContextValue {
   chains: RainbowKitChain[];
   initialChainId?: number;
@@ -23,16 +18,16 @@ const RainbowKitChainContext = createContext<RainbowKitChainContextValue>({
 });
 
 interface RainbowKitChainProviderProps {
-  chains: RainbowKitChain[];
-  initialChain?: RainbowKitChain | number;
+  initialChain?: Chain | number;
   children: ReactNode;
 }
 
 export function RainbowKitChainProvider({
-  chains,
   children,
   initialChain,
 }: RainbowKitChainProviderProps) {
+  const { chains } = useConfig();
+
   return (
     <RainbowKitChainContext.Provider
       value={useMemo(
diff --git a/packages/rainbowkit/src/components/RainbowKitProvider/RainbowKitProvider.tsx b/packages/rainbowkit/src/components/RainbowKitProvider/RainbowKitProvider.tsx
index 557e47d590..fde6e7d5b6 100644
--- a/packages/rainbowkit/src/components/RainbowKitProvider/RainbowKitProvider.tsx
+++ b/packages/rainbowkit/src/components/RainbowKitProvider/RainbowKitProvider.tsx
@@ -1,5 +1,6 @@
 import React, { ReactNode, createContext, useContext } from 'react';
-import { useAccount } from 'wagmi';
+import { useAccountEffect } from 'wagmi';
+import type { Chain } from 'wagmi/chains';
 import { cssStringFromTheme } from '../../css/cssStringFromTheme';
 import { ThemeVars } from '../../css/sprinkles.css';
 import { Locale } from '../../locales';
@@ -15,10 +16,7 @@ import {
   ModalSizeProvider,
   ModalSizes,
 } from './ModalSizeContext';
-import {
-  RainbowKitChain,
-  RainbowKitChainProvider,
-} from './RainbowKitChainContext';
+import { RainbowKitChainProvider } from './RainbowKitChainContext';
 import { ShowBalanceProvider } from './ShowBalanceContext';
 import { ShowRecentTransactionsContext } from './ShowRecentTransactionsContext';
 import { WalletButtonProvider } from './WalletButtonContext';
@@ -53,8 +51,7 @@ export type Theme =
     };
 
 export interface RainbowKitProviderProps {
-  chains: RainbowKitChain[];
-  initialChain?: RainbowKitChain | number;
+  initialChain?: Chain | number;
   id?: string;
   children: ReactNode;
   theme?: Theme | null;
@@ -75,7 +72,6 @@ const defaultTheme = lightTheme();
 export function RainbowKitProvider({
   appInfo,
   avatar,
-  chains,
   children,
   coolMode = false,
   id,
@@ -88,7 +84,7 @@ export function RainbowKitProvider({
   usePreloadImages();
   useFingerprint();
 
-  useAccount({ onDisconnect: clearWalletConnectDeepLink });
+  useAccountEffect({ onDisconnect: clearWalletConnectDeepLink });
 
   if (typeof theme === 'function') {
     throw new Error(
@@ -106,7 +102,7 @@ export function RainbowKitProvider({
   const avatarContext = avatar ?? defaultAvatar;
 
   return (
-    <RainbowKitChainProvider chains={chains} initialChain={initialChain}>
+    <RainbowKitChainProvider initialChain={initialChain}>
       <WalletButtonProvider>
         <I18nProvider locale={locale}>
           <CoolModeContext.Provider value={coolMode}>
diff --git a/packages/rainbowkit/src/components/RainbowKitProvider/provideRainbowKitChains.ts b/packages/rainbowkit/src/components/RainbowKitProvider/provideRainbowKitChains.ts
index c8b2cbfca3..aa3afb8a34 100644
--- a/packages/rainbowkit/src/components/RainbowKitProvider/provideRainbowKitChains.ts
+++ b/packages/rainbowkit/src/components/RainbowKitProvider/provideRainbowKitChains.ts
@@ -1,5 +1,6 @@
+import { Chain } from 'wagmi/chains';
 import { isNotNullish } from '../../utils/isNotNullish';
-import type { RainbowKitChain } from './RainbowKitChainContext';
+import { RainbowKitChain } from './RainbowKitChainContext';
 
 // Sourced from https://github.com/tmm/wagmi/blob/main/packages/core/src/constants/chains.ts
 // This is just so we can clearly see which of wagmi's first-class chains we provide metadata for
@@ -152,16 +153,13 @@ const chainMetadataById = Object.fromEntries(
     .map(({ chainId, ...metadata }) => [chainId, metadata]),
 );
 
-/** @description Decorates an array of wagmi `Chain` objects with RainbowKitChain property overrides */
-export const provideRainbowKitChains = <Chain extends RainbowKitChain>(
-  chains: Chain[],
-): Chain[] =>
+export const provideRainbowKitChains = (chains: readonly [Chain, ...Chain[]]) =>
   chains.map((chain) => {
     const defaultMetadata = chainMetadataById[chain.id] ?? {};
     return {
       ...chain,
-      name: defaultMetadata.name ?? chain.name, // favor colloquial names
-      iconUrl: chain.iconUrl ?? defaultMetadata.iconUrl,
-      iconBackground: chain.iconBackground ?? defaultMetadata.iconBackground,
-    } as Chain;
+      name: defaultMetadata.name ?? chain.name, // Favor colloquial names
+      iconUrl: defaultMetadata.iconUrl,
+      iconBackground: defaultMetadata.iconBackground,
+    } as RainbowKitChain;
   });
diff --git a/packages/rainbowkit/src/components/SignIn/SignIn.tsx b/packages/rainbowkit/src/components/SignIn/SignIn.tsx
index 80597cf643..abcfa4cba5 100644
--- a/packages/rainbowkit/src/components/SignIn/SignIn.tsx
+++ b/packages/rainbowkit/src/components/SignIn/SignIn.tsx
@@ -1,6 +1,6 @@
 import React, { useCallback, useContext, useRef } from 'react';
 import { UserRejectedRequestError } from 'viem';
-import { useAccount, useNetwork, useSignMessage } from 'wagmi';
+import { useAccount, useSignMessage } from 'wagmi';
 import { touchableStyles } from '../../css/touchableStyles';
 import { isMobile } from '../../utils/isMobile';
 import { AsyncImage } from '../AsyncImage/AsyncImage';
@@ -49,8 +49,7 @@ export function SignIn({ onClose }: { onClose: () => void }) {
   }, [getNonce]);
 
   const mobile = isMobile();
-  const { address } = useAccount();
-  const { chain: activeChain } = useNetwork();
+  const { address, chain: activeChain } = useAccount();
   const { signMessageAsync } = useSignMessage();
 
   const signIn = async () => {
diff --git a/packages/rainbowkit/src/components/Txs/TxItem.tsx b/packages/rainbowkit/src/components/Txs/TxItem.tsx
index 89942bffd0..dc725a001c 100644
--- a/packages/rainbowkit/src/components/Txs/TxItem.tsx
+++ b/packages/rainbowkit/src/components/Txs/TxItem.tsx
@@ -1,5 +1,5 @@
 import React from 'react';
-import { useNetwork } from 'wagmi';
+import { useAccount } from 'wagmi';
 import { touchableStyles } from '../../css/touchableStyles';
 import { Transaction } from '../../transactions/transactionStore';
 import { chainToExplorerUrl } from '../../utils/chainToExplorerUrl';
@@ -32,7 +32,7 @@ export function TxItem({ tx }: TxProps) {
   const mobile = isMobile();
   const Icon = getTxStatusIcon(tx.status);
   const color = tx.status === 'failed' ? 'error' : 'accentColor';
-  const { chain: activeChain } = useNetwork();
+  const { chain: activeChain } = useAccount();
 
   const confirmationStatus =
     tx.status === 'confirmed'
diff --git a/packages/rainbowkit/src/components/Txs/TxList.tsx b/packages/rainbowkit/src/components/Txs/TxList.tsx
index c68b21beac..9a5c089610 100644
--- a/packages/rainbowkit/src/components/Txs/TxList.tsx
+++ b/packages/rainbowkit/src/components/Txs/TxList.tsx
@@ -1,5 +1,5 @@
 import React, { useContext } from 'react';
-import { useAccount, useNetwork } from 'wagmi';
+import { useAccount } from 'wagmi';
 import { touchableStyles } from '../../css/touchableStyles';
 import { useClearRecentTransactions } from '../../transactions/useClearRecentTransactions';
 import { useRecentTransactions } from '../../transactions/useRecentTransactions';
@@ -21,7 +21,7 @@ interface TxListProps {
 export function TxList({ address }: TxListProps) {
   const recentTransactions = useRecentTransactions();
   const clearRecentTransactions = useClearRecentTransactions();
-  const { chain: activeChain } = useNetwork();
+  const { chain: activeChain } = useAccount();
   const explorerLink = chainToExplorerUrl(activeChain);
   const visibleTxs = recentTransactions.slice(0, NUMBER_OF_VISIBLE_TXS);
   const hasTransactions = visibleTxs.length > 0;
diff --git a/packages/rainbowkit/src/components/WalletButton/WalletButtonRenderer.tsx b/packages/rainbowkit/src/components/WalletButton/WalletButtonRenderer.tsx
index 298a52569f..c3037d9c53 100644
--- a/packages/rainbowkit/src/components/WalletButton/WalletButtonRenderer.tsx
+++ b/packages/rainbowkit/src/components/WalletButton/WalletButtonRenderer.tsx
@@ -5,7 +5,7 @@ import React, {
   useMemo,
   useState,
 } from 'react';
-import { useAccount } from 'wagmi';
+import { useAccount, useAccountEffect } from 'wagmi';
 import { useConnectionStatus } from '../../hooks/useConnectionStatus';
 import { useIsMounted } from '../../hooks/useIsMounted';
 import { isMobile } from '../../utils/isMobile';
@@ -48,12 +48,13 @@ export function WalletButtonRenderer({
   const { connectModalOpen } = useModalState();
   const { connector, setConnector } = useContext(WalletButtonContext);
   const [firstConnector] = useWalletConnectors()
+    .filter((wallet) => wallet.isRainbowKitConnector)
     // rainbowkit / wagmi connectors can uppercase some letters on the `id` field.
     // Id for metamask is `metaMask`, so instead we will make sure it's has lowercase comparison
     .filter((_wallet) => _wallet.id.toLowerCase() === wallet.toLowerCase())
     .sort((a, b) => a.groupIndex - b.groupIndex);
 
-  if (!firstConnector) {
+  if (!firstConnector && isMounted()) {
     throw new Error('Connector not found');
   }
 
@@ -70,7 +71,9 @@ export function WalletButtonRenderer({
     if (!connectModalOpen && connector) setConnector(null);
   }, [connectModalOpen, connector, setConnector]);
 
-  const { isConnected, isConnecting } = useAccount({
+  const { isConnected, isConnecting } = useAccount();
+
+  useAccountEffect({
     onConnect: () => {
       /*  const lastClickedWalletName = getRecent */
       // If you get error on desktop and thenswitch to mobile view
diff --git a/packages/rainbowkit/src/config/getDefaultConfig.ts b/packages/rainbowkit/src/config/getDefaultConfig.ts
index fc6d3a9c46..8286f8547b 100644
--- a/packages/rainbowkit/src/config/getDefaultConfig.ts
+++ b/packages/rainbowkit/src/config/getDefaultConfig.ts
@@ -1,8 +1,10 @@
-import { type Chain, configureChains, createConfig } from 'wagmi';
-import { publicProvider } from 'wagmi/providers/public';
+import { Transport } from 'viem';
+import { http } from 'wagmi';
+import { WagmiProviderProps, createConfig } from 'wagmi';
+import { type Chain } from 'wagmi/chains';
 import type { WalletList } from '../wallets/Wallet';
+import { computeWalletConnectMetaData } from '../wallets/computeWalletConnectMetaData';
 import { connectorsForWallets } from '../wallets/connectorsForWallets';
-import type { WalletConnectConnectorMetadata } from '../wallets/getWalletConnectConnector';
 import {
   coinbaseWallet,
   metaMaskWallet,
@@ -10,59 +12,82 @@ import {
   walletConnectWallet,
 } from '../wallets/walletConnectors';
 
-export const getDefaultConfig = ({
-  appName,
-  appDescription,
-  appUrl,
-  appIcon,
-  chains,
-  wallets,
-  projectId,
-}: {
+export type _chains = readonly [Chain, ...Chain[]];
+
+// Define the '_transports' type as a Record
+// It maps each 'Chain' id to a 'Transport'
+export type _transports = Record<_chains[number]['id'], Transport>;
+
+interface GetDefaultConfigParameters {
   appName: string;
   appDescription?: string;
   appUrl?: string;
   appIcon?: string;
-  chains: Chain[];
   wallets?: WalletList;
   projectId: string;
-}) => {
-  const { publicClient, webSocketPublicClient } = configureChains(chains, [
-    publicProvider(),
-  ]);
+  chains: _chains;
+  transports?: _transports;
+  multiInjectedProviderDiscovery?: boolean;
+}
+
+const createDefaultTransports = (chains: _chains): _transports => {
+  const transportsObject = chains.reduce((acc: _transports, chain) => {
+    const key = chain.id as keyof _transports;
+    acc[key] = http() as _transports[keyof _transports]; // Type assertion here
+    return acc;
+  }, {} as _transports);
 
-  const metadata: WalletConnectConnectorMetadata = {
-    name: appName,
-    description: appDescription,
-    url: appUrl,
-  };
+  return transportsObject;
+};
+
+export const getDefaultConfig = ({
+  appName,
+  appDescription,
+  appUrl,
+  appIcon,
+  wallets,
+  projectId,
+  chains,
+  multiInjectedProviderDiscovery = true,
+  transports,
+}: GetDefaultConfigParameters): WagmiProviderProps['config'] => {
+  const metadata = computeWalletConnectMetaData({
+    appName,
+    appDescription,
+    appUrl,
+    appIcon,
+  });
 
   const connectors = connectorsForWallets(
     wallets || [
       {
         groupName: 'Popular',
         wallets: [
-          rainbowWallet({
-            chains,
-            projectId,
-            walletConnectOptions: { metadata },
-          }),
-          coinbaseWallet({ appName, appIcon, chains }),
-          metaMaskWallet({
-            chains,
-            projectId,
-            walletConnectOptions: { metadata },
-          }),
-          walletConnectWallet({ chains, projectId, options: { metadata } }),
+          rainbowWallet,
+          coinbaseWallet,
+          metaMaskWallet,
+          walletConnectWallet,
         ],
       },
     ],
+    {
+      projectId,
+      appName,
+      appDescription,
+      appUrl,
+      appIcon,
+      walletConnectParameters: { metadata },
+    },
   );
 
+  if (!transports) {
+    transports = createDefaultTransports(chains);
+  }
+
   return createConfig({
-    autoConnect: true,
     connectors,
-    publicClient,
-    webSocketPublicClient,
+    chains,
+    transports,
+    multiInjectedProviderDiscovery,
   });
 };
diff --git a/packages/rainbowkit/src/hooks/useChainId.ts b/packages/rainbowkit/src/hooks/useChainId.ts
deleted file mode 100644
index 3920dbd06f..0000000000
--- a/packages/rainbowkit/src/hooks/useChainId.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-import { useNetwork } from 'wagmi';
-
-export function useChainId(): number | null {
-  const { chain: activeChain } = useNetwork();
-  return activeChain?.id ?? null;
-}
diff --git a/packages/rainbowkit/src/hooks/useMainnet.ts b/packages/rainbowkit/src/hooks/useMainnet.ts
deleted file mode 100644
index 83596a7d6e..0000000000
--- a/packages/rainbowkit/src/hooks/useMainnet.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import type { Chain } from 'wagmi';
-import { usePublicClient } from 'wagmi';
-import { mainnet } from 'wagmi/chains';
-
-export function useMainnet() {
-  const chainId = mainnet.id;
-
-  // Because the generic for 'useProvider' is defaulting to 'unknown'
-  // and the return type is being resolved as 'any', we're having to
-  // manually define the Provider type, so this code is more defensive
-  // than necessary in case the manual typing is ever incorrect.
-  // If we're unable to resolve a list of chains, or the chains are
-  // an invalid type, we'll silently bail out.
-  const provider = usePublicClient<{ chains?: Chain[] }>();
-  const chains = Array.isArray(provider.chains) ? provider.chains : [];
-  const enabled = chains?.some((chain) => chain?.id === chainId);
-
-  return { chainId, enabled };
-}
diff --git a/packages/rainbowkit/src/hooks/useMainnetEnsAvatar.ts b/packages/rainbowkit/src/hooks/useMainnetEnsAvatar.ts
index e30a9e94d6..601e9de7c4 100644
--- a/packages/rainbowkit/src/hooks/useMainnetEnsAvatar.ts
+++ b/packages/rainbowkit/src/hooks/useMainnetEnsAvatar.ts
@@ -1,13 +1,11 @@
+import { GetEnsNameReturnType, normalize } from 'viem/ens';
 import { useEnsAvatar } from 'wagmi';
-import { useMainnet } from './useMainnet';
-
-export function useMainnetEnsAvatar(name: string | null | undefined) {
-  const { chainId, enabled } = useMainnet();
+import { mainnet } from 'wagmi/chains';
 
+export function useMainnetEnsAvatar(name: GetEnsNameReturnType | undefined) {
   const { data: ensAvatar } = useEnsAvatar({
-    chainId,
-    enabled,
-    name,
+    chainId: mainnet.id,
+    name: name ? normalize(name) : undefined,
   });
 
   return ensAvatar;
diff --git a/packages/rainbowkit/src/hooks/useMainnetEnsName.ts b/packages/rainbowkit/src/hooks/useMainnetEnsName.ts
index 8a61c69397..14d642622e 100644
--- a/packages/rainbowkit/src/hooks/useMainnetEnsName.ts
+++ b/packages/rainbowkit/src/hooks/useMainnetEnsName.ts
@@ -1,13 +1,11 @@
+import { Address } from 'viem';
 import { useEnsName } from 'wagmi';
-import { useMainnet } from './useMainnet';
-
-export function useMainnetEnsName(address: string | undefined) {
-  const { chainId, enabled } = useMainnet();
+import { mainnet } from 'wagmi/chains';
 
+export function useMainnetEnsName(address: Address | undefined) {
   const { data: ensName } = useEnsName({
+    chainId: mainnet.id,
     address,
-    chainId,
-    enabled,
   });
 
   return ensName;
diff --git a/packages/rainbowkit/src/index.ts b/packages/rainbowkit/src/index.ts
index 8eed142444..174b4983bf 100644
--- a/packages/rainbowkit/src/index.ts
+++ b/packages/rainbowkit/src/index.ts
@@ -15,8 +15,12 @@ export {
   RainbowKitAuthenticationProvider,
   createAuthenticationAdapter,
 } from './components/RainbowKitProvider/AuthenticationContext';
-export type { Wallet, WalletList } from './wallets/Wallet';
-export type { Chain } from './components/RainbowKitProvider/RainbowKitChainContext';
+export type {
+  Wallet,
+  WalletList,
+  WalletDetailsParams,
+  RainbowKitWalletConnectParameters,
+} from './wallets/Wallet';
 export type { Theme } from './components/RainbowKitProvider/RainbowKitProvider';
 export type {
   AuthenticationStatus,
diff --git a/packages/rainbowkit/src/locales/en_US.json b/packages/rainbowkit/src/locales/en_US.json
index 1d6c407172..a99fdf9010 100644
--- a/packages/rainbowkit/src/locales/en_US.json
+++ b/packages/rainbowkit/src/locales/en_US.json
@@ -91,6 +91,7 @@
   },
 
   "connector_group": {
+    "installed": "Installed",
     "recommended": "Recommended",
     "other": "Other",
     "popular": "Popular",
diff --git a/packages/rainbowkit/src/transactions/TransactionStoreContext.tsx b/packages/rainbowkit/src/transactions/TransactionStoreContext.tsx
index c13e4c0f5a..303d04557d 100644
--- a/packages/rainbowkit/src/transactions/TransactionStoreContext.tsx
+++ b/packages/rainbowkit/src/transactions/TransactionStoreContext.tsx
@@ -1,7 +1,7 @@
 import React, { createContext, useContext, useEffect, useState } from 'react';
 import { PublicClient } from 'viem';
 import { useAccount, usePublicClient } from 'wagmi';
-import { useChainId } from '../hooks/useChainId';
+import { useChainId } from 'wagmi';
 import { TransactionStore, createTransactionStore } from './transactionStore';
 
 // Only allow a single instance of the store to exist at once
@@ -46,7 +46,7 @@ export function TransactionStoreProvider({
   );
 }
 
-export function useTransactionStore() {
+export function useTransactionStore(): TransactionStore {
   const store = useContext(TransactionStoreContext);
 
   if (!store) {
diff --git a/packages/rainbowkit/src/transactions/useAddRecentTransaction.ts b/packages/rainbowkit/src/transactions/useAddRecentTransaction.ts
index d6988cd853..ff55e09ff6 100644
--- a/packages/rainbowkit/src/transactions/useAddRecentTransaction.ts
+++ b/packages/rainbowkit/src/transactions/useAddRecentTransaction.ts
@@ -1,6 +1,6 @@
 import { useCallback } from 'react';
 import { useAccount } from 'wagmi';
-import { useChainId } from '../hooks/useChainId';
+import { useChainId } from 'wagmi';
 import { useTransactionStore } from './TransactionStoreContext';
 import { NewTransaction } from './transactionStore';
 
diff --git a/packages/rainbowkit/src/transactions/useClearRecentTransactions.ts b/packages/rainbowkit/src/transactions/useClearRecentTransactions.ts
index a1d83f862c..3f62cd0f90 100644
--- a/packages/rainbowkit/src/transactions/useClearRecentTransactions.ts
+++ b/packages/rainbowkit/src/transactions/useClearRecentTransactions.ts
@@ -1,6 +1,6 @@
 import { useCallback } from 'react';
 import { useAccount } from 'wagmi';
-import { useChainId } from '../hooks/useChainId';
+import { useChainId } from 'wagmi';
 import { useTransactionStore } from './TransactionStoreContext';
 
 export function useClearRecentTransactions(): () => void {
diff --git a/packages/rainbowkit/src/transactions/useRecentTransactions.ts b/packages/rainbowkit/src/transactions/useRecentTransactions.ts
index 88d620b2ba..532f4ce91d 100644
--- a/packages/rainbowkit/src/transactions/useRecentTransactions.ts
+++ b/packages/rainbowkit/src/transactions/useRecentTransactions.ts
@@ -1,6 +1,5 @@
 import { useEffect, useState } from 'react';
-import { useAccount } from 'wagmi';
-import { useChainId } from '../hooks/useChainId';
+import { useAccount, useChainId } from 'wagmi';
 import { useTransactionStore } from './TransactionStoreContext';
 import type { Transaction } from './transactionStore';
 
diff --git a/packages/rainbowkit/src/utils/chainToExplorerUrl.ts b/packages/rainbowkit/src/utils/chainToExplorerUrl.ts
index f7c21f7013..58e9eca3b0 100644
--- a/packages/rainbowkit/src/utils/chainToExplorerUrl.ts
+++ b/packages/rainbowkit/src/utils/chainToExplorerUrl.ts
@@ -1,4 +1,4 @@
-import { Chain } from '../components/RainbowKitProvider/RainbowKitChainContext';
+import type { Chain } from 'wagmi/chains';
 
 export const chainToExplorerUrl = (chain?: Chain): string | undefined =>
   chain?.blockExplorers?.default?.url; // using wagmi's built-in Chain.blockExplorers and grab the default URL
diff --git a/packages/rainbowkit/src/utils/getWalletConnectUri.ts b/packages/rainbowkit/src/utils/getWalletConnectUri.ts
deleted file mode 100644
index fc08cde40c..0000000000
--- a/packages/rainbowkit/src/utils/getWalletConnectUri.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import type { Connector } from 'wagmi/connectors';
-
-export async function getWalletConnectUri(
-  connector: Connector,
-): Promise<string> {
-  const provider = await connector.getProvider();
-  return new Promise<string>((resolve) =>
-    provider.once('display_uri', resolve),
-  );
-}
diff --git a/packages/rainbowkit/src/wallets/Wallet.ts b/packages/rainbowkit/src/wallets/Wallet.ts
index ee46333010..eaf6b7e30d 100644
--- a/packages/rainbowkit/src/wallets/Wallet.ts
+++ b/packages/rainbowkit/src/wallets/Wallet.ts
@@ -1,4 +1,7 @@
-import { Connector } from 'wagmi';
+import { Connector, CreateConnectorFn } from 'wagmi';
+import { WalletConnectParameters } from 'wagmi/connectors';
+import { CoinbaseWalletOptions } from './walletConnectors/coinbaseWallet/coinbaseWallet';
+import { WalletConnectWalletOptions } from './walletConnectors/walletConnectWallet/walletConnectWallet';
 
 export type InstructionStepName =
   | 'install'
@@ -7,13 +10,12 @@ export type InstructionStepName =
   | 'connect'
   | 'refresh';
 
-type RainbowKitConnector<C extends Connector = Connector> = {
-  connector: C;
+type RainbowKitConnector = {
   mobile?: {
-    getUri?: () => Promise<string>;
+    getUri?: (uri: string) => string;
   };
   desktop?: {
-    getUri?: () => Promise<string>;
+    getUri?: (uri: string) => string;
     instructions?: {
       learnMoreUrl: string;
       steps: {
@@ -24,7 +26,7 @@ type RainbowKitConnector<C extends Connector = Connector> = {
     };
   };
   qrCode?: {
-    getUri: () => Promise<string>;
+    getUri: (uri: string) => string;
     instructions?: {
       learnMoreUrl: string;
       steps: {
@@ -46,9 +48,10 @@ type RainbowKitConnector<C extends Connector = Connector> = {
   };
 };
 
-export type Wallet<C extends Connector = Connector> = {
+export type Wallet = {
   id: string;
   name: string;
+  rdns?: string;
   shortName?: string;
   iconUrl: string | (() => Promise<string>);
   iconAccent?: string;
@@ -70,23 +73,62 @@ export type Wallet<C extends Connector = Connector> = {
     linux?: string;
     desktop?: string;
   };
-  hidden?: (args: {
-    wallets: {
-      id: string;
-      connector: Connector;
-      installed?: boolean;
-      name: string;
-    }[];
-  }) => boolean;
-  createConnector: () => RainbowKitConnector<C>;
+  hidden?: () => boolean;
+  createConnector: (walletDetails: WalletDetailsParams) => CreateConnectorFn;
+} & RainbowKitConnector;
+
+export interface DefaultWalletOptions {
+  projectId: string;
+  walletConnectParameters?: RainbowKitWalletConnectParameters;
+}
+
+export type CreateWalletFn = (
+  // These parameters will be used when creating a wallet. If injected
+  // wallet doesn't have parameters it will just ignore these passed in parameters
+  createWalletParams: CoinbaseWalletOptions &
+    Omit<WalletConnectWalletOptions, 'projectId'> &
+    DefaultWalletOptions,
+) => Wallet;
+
+export type WalletList = {
+  groupName: string;
+  wallets: CreateWalletFn[];
+}[];
+
+// We don't want users to pass in `showQrModal` or `projectId`.
+// Those two values are handled by rainbowkit. The rest of WalletConnect
+// parameters can be passed with no issue
+export type RainbowKitWalletConnectParameters = Omit<
+  WalletConnectParameters,
+  'showQrModal' | 'projectId'
+>;
+
+export type RainbowKitDetails = Omit<Wallet, 'createConnector' | 'hidden'> & {
+  index: number;
+  groupIndex: number;
+  groupName: string;
+  isWalletConnectModalConnector?: boolean;
+  isRainbowKitConnector: boolean;
+  walletConnectModalConnector?: Connector;
+  // Used specifically in `connectorsForWallets` logic
+  // to make sure we can also get WalletConnect modal in rainbowkit
+  showQrModal?: true;
 };
 
-export type WalletList = { groupName: string; wallets: Wallet[] }[];
+export type WalletDetailsParams = { rkDetails: RainbowKitDetails };
 
-export type WalletInstance = Omit<Wallet, 'createConnector' | 'hidden'> &
-  ReturnType<Wallet['createConnector']> & {
-    index: number;
-    groupIndex: number;
-    groupName: string;
-    walletConnectModalConnector?: Connector;
-  };
+export type CreateConnector = (walletDetails: {
+  rkDetails: RainbowKitDetails;
+}) => CreateConnectorFn;
+
+// This is the default connector you get at first from wagmi
+// "Connector" + rainbowkit details we inject into the connector
+export type WagmiConnectorInstance = Connector & {
+  // this is optional since we only get
+  // rkDetails if we use rainbowkit connectors
+  rkDetails?: RainbowKitDetails;
+};
+
+// This will be the wallet instance we will return
+// in the rainbowkit connect modal
+export type WalletInstance = Connector & RainbowKitDetails;
diff --git a/packages/rainbowkit/src/wallets/computeWalletConnectMetaData.ts b/packages/rainbowkit/src/wallets/computeWalletConnectMetaData.ts
new file mode 100644
index 0000000000..da3e213b8e
--- /dev/null
+++ b/packages/rainbowkit/src/wallets/computeWalletConnectMetaData.ts
@@ -0,0 +1,22 @@
+import { RainbowKitWalletConnectParameters } from './Wallet';
+
+interface ComputeMetaDataParameters {
+  appName: string;
+  appDescription?: string;
+  appUrl?: string;
+  appIcon?: string;
+}
+
+export const computeWalletConnectMetaData = ({
+  appName,
+  appDescription,
+  appUrl,
+  appIcon,
+}: ComputeMetaDataParameters): RainbowKitWalletConnectParameters['metadata'] => {
+  return {
+    name: appName,
+    description: appDescription ?? appName,
+    url: appUrl ?? (typeof window !== 'undefined' ? window.location.href : ''),
+    icons: [...(appIcon ? [appIcon] : [])],
+  };
+};
diff --git a/packages/rainbowkit/src/wallets/connectorsForWallets.test.ts b/packages/rainbowkit/src/wallets/connectorsForWallets.test.ts
index b77662ad87..b2140219ee 100644
--- a/packages/rainbowkit/src/wallets/connectorsForWallets.test.ts
+++ b/packages/rainbowkit/src/wallets/connectorsForWallets.test.ts
@@ -1,247 +1,95 @@
 import { describe, expect, it } from 'vitest';
-import { Connector } from 'wagmi';
-import { mainnet } from 'wagmi/chains';
-import { InjectedConnector } from 'wagmi/connectors/injected';
-import { WalletConnectConnector } from 'wagmi/connectors/walletConnect';
+import type { CreateConnectorFn } from 'wagmi';
+import { walletConnect } from 'wagmi/connectors';
 import { connectorsForWallets } from '..';
-import { WalletInstance } from './Wallet';
-import { browserWallet } from './walletConnectors/browserWallet/browserWallet';
+import { CreateWalletFn } from './Wallet';
+import { injectedWallet } from './walletConnectors/injectedWallet/injectedWallet';
+import { walletConnectWallet } from './walletConnectors/walletConnectWallet/walletConnectWallet';
 
-const projectId = 'YOUR_PROJECT_ID';
-
-const getWalletInstances = (
-  connector: Connector & { _wallets?: WalletInstance[] },
-) => {
-  if (!connector._wallets) {
-    throw new Error('Wallet instances not found on connector');
+const isValidConnector = (connector: CreateConnectorFn): boolean => {
+  if (typeof connector !== 'function') {
+    throw new Error('Wallet instance is not a function');
   }
 
-  return connector._wallets;
+  return !!connector;
 };
 
+const exampleProjectId = '21fef48091f12692cad574a6f7753643';
+
 describe('connectorsForWallets', () => {
   describe('injected fallback', () => {
-    it('includes injected fallback if no wallets using InjectedConnector were provided', () => {
-      const chains = [mainnet];
-      const connectors = connectorsForWallets([
+    it('should return wallet connect and injected wallet connectors', () => {
+      const customWallet: CreateWalletFn = (params) => ({
+        createConnector: () => walletConnect({ projectId: params?.projectId! }),
+        iconBackground: '#fff',
+        iconUrl: '/test.png',
+        id: 'test-walletconnect-wallet',
+        name: 'Test WalletConnect Wallet',
+      });
+
+      const connectors = connectorsForWallets(
+        [
+          {
+            groupName: 'Test Group 1',
+            wallets: [customWallet, injectedWallet],
+          },
+        ],
         {
-          groupName: 'Test Group 1',
-          wallets: [
-            {
-              createConnector: () => ({
-                connector: new WalletConnectConnector({
-                  chains,
-                  options: {
-                    projectId,
-                  },
-                }),
-              }),
-              iconBackground: '#fff',
-              iconUrl: '/test.png',
-              id: 'test-walletconnect-wallet',
-              name: 'Test WalletConnect Wallet',
-            },
-            browserWallet({ chains }),
-          ],
+          projectId: exampleProjectId,
+          appName: 'rainbowkit.com',
         },
-      ])();
-
-      expect(connectors.length).toBe(2);
-
-      expect(getWalletInstances(connectors[0]).length).toBe(1);
-      expect(getWalletInstances(connectors[0])[0].index).toBe(0);
-      expect(getWalletInstances(connectors[0])[0].name).toBe(
-        'Test WalletConnect Wallet',
       );
 
-      expect(getWalletInstances(connectors[1]).length).toBe(1);
-      expect(getWalletInstances(connectors[1])[0].index).toBe(1);
-      expect(getWalletInstances(connectors[1])[0].name).toBe('Browser Wallet');
-    });
-
-    it('includes injected fallback if no wallets using InjectedConnector are installed', () => {
-      const chains = [mainnet];
-      const connectors = connectorsForWallets([
-        {
-          groupName: 'Test Group 1',
-          wallets: [
-            {
-              createConnector: () => ({
-                connector: new InjectedConnector(),
-              }),
-              iconBackground: '#fff',
-              iconUrl: '/test.png',
-              id: 'test-not-installed-wallet',
-              installed: false,
-              name: 'Test Not Installed Wallet',
-            },
-            {
-              createConnector: () => ({
-                connector: new WalletConnectConnector({
-                  chains,
-                  options: {
-                    projectId,
-                  },
-                }),
-              }),
-              iconBackground: '#fff',
-              iconUrl: '/test.png',
-              id: 'test-walletconnect-wallet',
-              name: 'Test WalletConnect Wallet',
-            },
-            browserWallet({ chains }),
-          ],
-        },
-      ])();
-
-      expect(connectors.length).toBe(3);
-
-      expect(getWalletInstances(connectors[0]).length).toBe(1);
-      expect(getWalletInstances(connectors[0])[0].index).toBe(0);
-      expect(getWalletInstances(connectors[0])[0].name).toBe(
-        'Test Not Installed Wallet',
-      );
+      expect(connectors.length).toBe(2);
 
-      expect(getWalletInstances(connectors[1]).length).toBe(1);
-      expect(getWalletInstances(connectors[1])[0].index).toBe(1);
-      expect(getWalletInstances(connectors[1])[0].name).toBe(
-        'Test WalletConnect Wallet',
-      );
+      expect(isValidConnector(connectors[0])).toBe(true);
+      expect(isValidConnector(connectors[1])).toBe(true);
 
-      expect(getWalletInstances(connectors[2]).length).toBe(1);
-      expect(getWalletInstances(connectors[2])[0].index).toBe(2);
-      expect(getWalletInstances(connectors[2])[0].name).toBe('Browser Wallet');
+      expect(connectors.length).toBe(2);
     });
 
-    it('includes injected fallback in the same order it was defined if no wallets using InjectedConnector are installed', () => {
-      const chains = [mainnet];
-      const connectors = connectorsForWallets([
-        {
-          groupName: 'Test Group 1',
-          wallets: [
-            browserWallet({ chains }),
-            {
-              createConnector: () => ({
-                connector: new InjectedConnector(),
-              }),
-              iconBackground: '#fff',
-              iconUrl: '/test.png',
-              id: 'test-not-installed-wallet',
-              installed: false,
-              name: 'Test Not Installed Wallet',
-            },
-          ],
-        },
+    it("should not return connector if 'hidden' returns true", () => {
+      const customWallet: CreateWalletFn = (params) => ({
+        createConnector: () => walletConnect({ projectId: params?.projectId! }),
+        hidden: () => true,
+        iconBackground: '#fff',
+        iconUrl: '/test.png',
+        id: 'test-not-installed-wallet',
+        installed: false,
+        name: 'Test Not Installed Wallet',
+      });
+
+      const connectors = connectorsForWallets(
+        [{ groupName: 'groupName: "Test Group 1"', wallets: [customWallet] }],
         {
-          groupName: 'Test Group 2',
-          wallets: [
-            {
-              createConnector: () => ({
-                connector: new WalletConnectConnector({
-                  chains,
-                  options: {
-                    projectId,
-                  },
-                }),
-              }),
-              iconBackground: '#fff',
-              iconUrl: '/test.png',
-              id: 'test-walletconnect-wallet',
-              name: 'Test WalletConnect Wallet',
-            },
-          ],
+          projectId: exampleProjectId,
+          appName: 'rainbowkit.com',
         },
-      ])();
-
-      expect(connectors.length).toBe(3);
-
-      expect(getWalletInstances(connectors[0]).length).toBe(1);
-      expect(getWalletInstances(connectors[0])[0].index).toBe(1);
-      expect(getWalletInstances(connectors[0])[0].name).toBe(
-        'Test Not Installed Wallet',
-      );
-      expect(getWalletInstances(connectors[0])[0].groupName).toBe(
-        'Test Group 1',
-      );
-
-      expect(getWalletInstances(connectors[1]).length).toBe(1);
-      expect(getWalletInstances(connectors[1])[0].index).toBe(2);
-      expect(getWalletInstances(connectors[1])[0].name).toBe(
-        'Test WalletConnect Wallet',
-      );
-      expect(getWalletInstances(connectors[1])[0].groupName).toBe(
-        'Test Group 2',
       );
 
-      expect(getWalletInstances(connectors[2]).length).toBe(1);
-      expect(getWalletInstances(connectors[2])[0].index).toBe(0); // Note this is now first in the list
-      expect(getWalletInstances(connectors[2])[0].name).toBe('Browser Wallet');
-      expect(getWalletInstances(connectors[2])[0].groupName).toBe(
-        'Test Group 1',
-      );
+      expect(connectors.length).toBe(0);
     });
 
-    it('excludes injected fallback if another wallet using InjectedConnector is installed', () => {
-      const chains = [mainnet];
-      const connectors = connectorsForWallets([
-        {
-          groupName: 'Test Group 1',
-          wallets: [
+    it('should throw if projectId is invalid to wallet connect connector', () => {
+      // You can also check the specific error message part, for example:
+      expect(() => {
+        connectorsForWallets(
+          [
             {
-              createConnector: () => ({
-                connector: new InjectedConnector({
-                  chains,
-                  options: { name: 'Test Wallet Installed' },
-                }),
-              }),
-              iconBackground: '#fff',
-              iconUrl: '/test.png',
-              id: 'test-wallet-installed',
-              installed: true,
-              name: 'Test Wallet Installed',
+              groupName: 'Test Group 1',
+              wallets: [
+                // @ts-expect-error
+                walletConnectWallet({ projectId: undefined }),
+              ],
             },
           ],
-        },
-        {
-          groupName: 'Test Group 2',
-          wallets: [
-            browserWallet({ chains }),
-            {
-              createConnector: () => ({
-                connector: new WalletConnectConnector({
-                  chains,
-                  options: {
-                    projectId,
-                  },
-                }),
-              }),
-              iconBackground: '#fff',
-              iconUrl: '/test.png',
-              id: 'test-walletconnect-wallet',
-              name: 'Test WalletConnect Wallet',
-            },
-          ],
-        },
-      ])();
-
-      expect(connectors.length).toBe(2);
-
-      expect(getWalletInstances(connectors[0]).length).toBe(1);
-      expect(getWalletInstances(connectors[0])[0].index).toBe(0);
-      expect(getWalletInstances(connectors[0])[0].groupName).toBe(
-        'Test Group 1',
-      );
-      expect(getWalletInstances(connectors[0])[0].name).toBe(
-        'Test Wallet Installed',
-      );
-
-      expect(getWalletInstances(connectors[1]).length).toBe(1);
-      expect(getWalletInstances(connectors[1])[0].index).toBe(2);
-      expect(getWalletInstances(connectors[1])[0].groupName).toBe(
-        'Test Group 2',
-      );
-      expect(getWalletInstances(connectors[1])[0].name).toBe(
-        'Test WalletConnect Wallet',
+          {
+            projectId: exampleProjectId,
+            appName: 'rainbowkit.com',
+          },
+        );
+      }).toThrow(
+        'No projectId found. Every dApp must now provide a WalletConnect Cloud projectId',
       );
     });
   });
diff --git a/packages/rainbowkit/src/wallets/connectorsForWallets.ts b/packages/rainbowkit/src/wallets/connectorsForWallets.ts
index c1774cf79c..5cd3b9ab9d 100644
--- a/packages/rainbowkit/src/wallets/connectorsForWallets.ts
+++ b/packages/rainbowkit/src/wallets/connectorsForWallets.ts
@@ -1,9 +1,13 @@
-import { Connector } from 'wagmi';
-import { WalletConnectConnector } from 'wagmi/connectors/walletConnect';
+import type { CreateConnectorFn } from 'wagmi';
 import { isHexString } from '../utils/colors';
-import { isMobile } from '../utils/isMobile';
 import { omitUndefinedValues } from '../utils/omitUndefinedValues';
-import { Wallet, WalletInstance, WalletList } from './Wallet';
+import type {
+  RainbowKitWalletConnectParameters,
+  Wallet,
+  WalletDetailsParams,
+  WalletList,
+} from './Wallet';
+import { computeWalletConnectMetaData } from './computeWalletConnectMetaData';
 
 interface WalletListItem extends Wallet {
   index: number;
@@ -11,175 +15,152 @@ interface WalletListItem extends Wallet {
   groupName: string;
 }
 
-/*
-  Build your own list of wallets for the RainbowKit modal
-  with their necessary connectors. This way you have full
-  control over which wallets to display, and in which order.
-  Returns a `connectors` fn to pass directly to Wagmi's `createConfig`. 
-*/
-export function connectorsForWallets(walletList: WalletList): () => Connector[];
-
-/*
-  Assemble a list of low-level connectors for use with the
-  `WalletButton` and `RainbowButton` components in custom implementations.
-*/
-export function connectorsForWallets(wallets: Wallet[]): Connector[];
-
-/*
-  Overload implementation for `connectorsForWallets`.
-  1. Returns a `connectors` function that will then return a Connectors array
-  2. Returns a prepared Connectors array stuffed with dummy WalletList data
-*/
-export function connectorsForWallets(walletList: any): any {
-  if ('groupName' in walletList[0]) {
-    return _connectorsForWallets(walletList);
-  }
-  return _connectorsForWallets([
-    {
-      groupName: '',
-      wallets: walletList as Wallet[],
-    },
-  ])();
+export interface ConnectorsForWalletsParameters {
+  projectId: string;
+  appName: string;
+  appDescription?: string;
+  appUrl?: string;
+  appIcon?: string;
+  walletConnectParameters?: RainbowKitWalletConnectParameters;
 }
 
-const _connectorsForWallets = (walletList: WalletList): (() => Connector[]) => {
-  return () => {
-    let index = -1;
-
-    const connectors: Connector[] = [];
-    const visibleWallets: WalletListItem[] = [];
-    const potentiallyHiddenWallets: WalletListItem[] = [];
-    const walletInstances: WalletInstance[] = [];
-
-    // First collect all list items in the correct order, but keep
-    // track of which ones have a `hidden` function so we can
-    // evaluate them after all the visible wallet instances have
-    // been created. This is because the potentially hidden wallets
-    // need access to the list of resolved wallet instances so that
-    // they can decide whether or not they should be hidden,
-    // e.g. the "Injected Wallet" option hides itself if another
-    // injected wallet is available.
+export const connectorsForWallets = (
+  walletList: WalletList,
+  {
+    projectId,
+    walletConnectParameters,
+    appName,
+    appDescription,
+    appUrl,
+    appIcon,
+  }: ConnectorsForWalletsParameters,
+): CreateConnectorFn[] => {
+  // The 'connectorsForWallets' will run on server side. We wanna make sure we don't call
+  // the connectors at the time when we're rendering on server side otherwise we might
+  // expose too many event emitters at once
+  if (typeof window === 'undefined') return [];
+
+  let index = -1;
+
+  const connectors: CreateConnectorFn[] = [];
+  const visibleWallets: WalletListItem[] = [];
+  const potentiallyHiddenWallets: WalletListItem[] = [];
+
+  const walletConnectMetaData = computeWalletConnectMetaData({
+    appName,
+    appDescription,
+    appUrl,
+    appIcon,
+  });
+
+  // biome-ignore lint/complexity/noForEach: TODO
+  walletList.forEach(({ groupName, wallets }, groupIndex) => {
     // biome-ignore lint/complexity/noForEach: TODO
-    walletList.forEach(({ groupName, wallets }, groupIndex) => {
-      // biome-ignore lint/complexity/noForEach: TODO
-      wallets.forEach((wallet) => {
-        index++;
-
-        // guard against non-hex values for `iconAccent`
-        if (wallet?.iconAccent && !isHexString(wallet?.iconAccent)) {
-          throw new Error(
-            `Property \`iconAccent\` is not a hex value for wallet: ${wallet.name}`,
-          );
-        }
-
-        const walletListItem = {
-          ...wallet,
-          groupIndex,
-          groupName,
-          index,
-        };
-
-        if (typeof wallet.hidden === 'function') {
-          potentiallyHiddenWallets.push(walletListItem);
-        } else {
-          visibleWallets.push(walletListItem);
-        }
+    wallets.forEach((createWallet) => {
+      index++;
+
+      const wallet = createWallet({
+        projectId,
+        appName,
+        appIcon,
+        // `option` is being used only for `walletConnectWallet` wallet
+        options: {
+          metadata: walletConnectMetaData,
+          ...walletConnectParameters,
+        },
+        // Every other wallet that supports walletConnect flow and is not
+        // `walletConnectWallet` wallet will have `walletConnectParameters` property
+        walletConnectParameters: {
+          metadata: walletConnectMetaData,
+          ...walletConnectParameters,
+        },
       });
-    });
 
-    // We process the known visible wallets first so that the potentially
-    // hidden wallets have access to the complete list of resolved wallets
-    const walletListItems: WalletListItem[] = [
-      ...visibleWallets,
-      ...potentiallyHiddenWallets,
-    ];
+      // guard against non-hex values for `iconAccent`
+      if (wallet?.iconAccent && !isHexString(wallet?.iconAccent)) {
+        throw new Error(
+          `Property \`iconAccent\` is not a hex value for wallet: ${wallet.name}`,
+        );
+      }
 
-    // biome-ignore lint/complexity/noForEach: TODO
-    walletListItems.forEach(
-      ({
-        createConnector,
-        groupIndex,
+      const walletListItem = {
+        ...wallet,
+        groupIndex: groupIndex + 1,
         groupName,
-        hidden,
         index,
-        ...walletMeta
-      }) => {
-        if (typeof hidden === 'function') {
-          // Run the function to check if the wallet needs to be hidden
-          const isHidden = hidden({
-            wallets: [
-              // Note: We only expose a subset of fields
-              // publicly to reduce API surface area
-              ...walletInstances.map(({ connector, id, installed, name }) => ({
-                connector,
-                id,
-                installed,
-                name,
-              })),
-            ],
-          });
-
-          // If wallet is hidden, bail out and proceed to the next list item
-          if (isHidden) {
-            return;
-          }
-        }
-
-        const { connector, ...connectionMethods } = omitUndefinedValues(
-          createConnector(),
-        );
+      };
 
-        let walletConnectModalConnector: Connector | undefined;
-        if (
-          walletMeta.id === 'walletConnect' &&
-          connectionMethods.qrCode &&
-          !isMobile()
-        ) {
-          const { chains, options } = connector;
-
-          walletConnectModalConnector = new WalletConnectConnector({
-            chains,
-            options: {
-              ...options,
-              showQrModal: true,
-            },
-          });
-
-          connectors.push(walletConnectModalConnector);
-        }
-
-        const walletInstance: WalletInstance = {
-          connector,
+      if (typeof wallet.hidden === 'function') {
+        potentiallyHiddenWallets.push(walletListItem);
+      } else {
+        visibleWallets.push(walletListItem);
+      }
+    });
+  });
+
+  // We process the known visible wallets first so that the potentially
+  // hidden wallets have access to the complete list of resolved wallets
+  const walletListItems: WalletListItem[] = [
+    ...visibleWallets,
+    ...potentiallyHiddenWallets,
+  ];
+
+  for (const {
+    createConnector,
+    groupIndex,
+    groupName,
+    hidden,
+    ...walletMeta
+  } of walletListItems) {
+    if (typeof hidden === 'function') {
+      // Run the function to check if the wallet needs to be hidden
+      const isHidden = hidden();
+
+      // If wallet is hidden, bail out and proceed to the next list item
+      if (isHidden) {
+        continue;
+      }
+    }
+
+    const walletMetaData = (
+      // For now we should only use these as the additional parameters
+      additionalRkParams?: Pick<
+        WalletDetailsParams['rkDetails'],
+        'isWalletConnectModalConnector' | 'showQrModal'
+      >,
+    ) => {
+      return {
+        rkDetails: omitUndefinedValues({
+          ...walletMeta,
           groupIndex,
           groupName,
-          index,
-          walletConnectModalConnector,
-          ...walletMeta,
-          ...connectionMethods,
-        };
-
-        // We maintain an array of all wallet instances
-        // so they can be passed to the `hidden` function
-        // used by generic fallback wallets
-        walletInstances.push(walletInstance);
-
-        if (!connectors.includes(connector)) {
-          connectors.push(connector);
-
-          // Reset private wallet list the first time we see
-          // a connector to avoid duplicates after HMR,
-          // otherwise we'll keep pushing wallets into
-          // the old list. This is happening because we're
-          // re-using the WalletConnectConnector instance
-          // so the wallet list already exists after HMR.
-          connector._wallets = [];
-        }
-
-        // Add wallet to connector's list of associated wallets
-        connector._wallets.push(walletInstance);
-      },
-    );
-
-    return connectors;
-  };
+          isRainbowKitConnector: true,
+          // These additional params will be used in rainbowkit react tree to
+          // merge `walletConnectWallet` and `walletConnect` connector from wagmi with
+          // showQrModal: true. This way we can let the user choose if they want to
+          // connect via QR code or open the official walletConnect modal instead
+          ...(additionalRkParams ? additionalRkParams : {}),
+        }),
+      };
+    };
+
+    const isWalletConnectConnector = walletMeta.id === 'walletConnect';
+
+    if (isWalletConnectConnector) {
+      connectors.push(
+        createConnector(
+          walletMetaData({
+            isWalletConnectModalConnector: true,
+            showQrModal: true,
+          }),
+        ),
+      );
+    }
+
+    const connector = createConnector(walletMetaData());
+
+    connectors.push(connector);
+  }
+
+  return connectors;
 };
diff --git a/packages/rainbowkit/src/wallets/getDefaultWallets.ts b/packages/rainbowkit/src/wallets/getDefaultWallets.ts
index 88f4bce925..ea04ad3a10 100644
--- a/packages/rainbowkit/src/wallets/getDefaultWallets.ts
+++ b/packages/rainbowkit/src/wallets/getDefaultWallets.ts
@@ -1,38 +1,42 @@
-import type { Connector } from 'wagmi';
-import type { Chain } from '../components/RainbowKitProvider/RainbowKitChainContext';
+import type { CreateConnectorFn } from 'wagmi';
 import type { WalletList } from './Wallet';
-import { connectorsForWallets } from './connectorsForWallets';
+import {
+  ConnectorsForWalletsParameters,
+  connectorsForWallets,
+} from './connectorsForWallets';
 import { coinbaseWallet } from './walletConnectors/coinbaseWallet/coinbaseWallet';
 import { metaMaskWallet } from './walletConnectors/metaMaskWallet/metaMaskWallet';
 import { rainbowWallet } from './walletConnectors/rainbowWallet/rainbowWallet';
 import { walletConnectWallet } from './walletConnectors/walletConnectWallet/walletConnectWallet';
 
-export const getDefaultWallets = ({
-  appName,
-  chains,
-  projectId,
-}: {
-  appName: string;
-  projectId: string;
-  chains: Chain[];
-}): {
-  connectors: () => Connector[];
+export function getDefaultWallets(parameters: ConnectorsForWalletsParameters): {
+  connectors: CreateConnectorFn[];
   wallets: WalletList;
-} => {
+};
+
+export function getDefaultWallets(): { wallets: WalletList };
+
+export function getDefaultWallets(parameters?: ConnectorsForWalletsParameters) {
   const wallets: WalletList = [
     {
       groupName: 'Popular',
       wallets: [
-        rainbowWallet({ chains, projectId }),
-        coinbaseWallet({ appName, chains }),
-        metaMaskWallet({ chains, projectId }),
-        walletConnectWallet({ chains, projectId }),
+        rainbowWallet,
+        coinbaseWallet,
+        metaMaskWallet,
+        walletConnectWallet,
       ],
     },
   ];
 
+  if (parameters) {
+    return {
+      connectors: connectorsForWallets(wallets, parameters),
+      wallets,
+    };
+  }
+
   return {
-    connectors: connectorsForWallets(wallets),
     wallets,
   };
-};
+}
diff --git a/packages/rainbowkit/src/wallets/getInjectedConnector.test.ts b/packages/rainbowkit/src/wallets/getInjectedConnector.test.ts
index 6ca3cffbb3..82e32c23e4 100644
--- a/packages/rainbowkit/src/wallets/getInjectedConnector.test.ts
+++ b/packages/rainbowkit/src/wallets/getInjectedConnector.test.ts
@@ -1,90 +1,36 @@
 import { describe, expect, it } from 'vitest';
-import type { WindowProvider } from 'wagmi';
-import { mainnet } from 'wagmi/chains';
 import {
   getInjectedConnector,
   hasInjectedProvider,
 } from './getInjectedConnector';
 
 describe('getInjectedConnector', () => {
-  const chains = [mainnet];
-
   it('only rainbow provider', () => {
-    window.ethereum = { isMetaMask: true, isRainbow: true } as WindowProvider;
+    window.ethereum = { isMetaMask: true, isRainbow: true };
     const connector = getInjectedConnector({
       flag: 'isRainbow',
-      chains,
     });
-    expect(connector.name).toEqual('Rainbow');
+    expect(!!connector).toEqual(true);
   });
 
   it('only metamask provider', () => {
-    window.ethereum = { isMetaMask: true } as WindowProvider;
+    window.ethereum = { isMetaMask: true };
     const connector = getInjectedConnector({
       flag: 'isMetaMask',
-      chains,
-    });
-    expect(connector.name).toEqual('MetaMask');
-  });
-
-  describe('rainbow and metamask providers', () => {
-    it('rainbow default enabled', () => {
-      window.ethereum = {
-        isMetaMask: true,
-        isRainbow: true,
-        providers: [
-          { isMetaMask: true, isRainbow: true },
-          { isMetaMask: true },
-        ],
-      } as WindowProvider;
-      const connector = getInjectedConnector({
-        flag: 'isRainbow',
-        chains,
-      });
-      expect(connector.name).toEqual('Rainbow');
-    });
-
-    it('rainbow default disabled rainbow connector', () => {
-      window.ethereum = {
-        isMetaMask: true,
-        providers: [
-          { isMetaMask: true },
-          { isMetaMask: true, isRainbow: true },
-        ],
-      } as WindowProvider;
-      const connector = getInjectedConnector({
-        flag: 'isRainbow',
-        chains,
-      });
-      expect(connector.name).toEqual('Rainbow');
-    });
-
-    it('rainbow default disabled metamask connector', () => {
-      window.ethereum = {
-        isMetaMask: true,
-        providers: [
-          { isMetaMask: true },
-          { isMetaMask: true, isRainbow: true },
-        ],
-      } as WindowProvider;
-      const connector = getInjectedConnector({
-        flag: 'isMetaMask',
-        chains,
-      });
-      expect(connector.name).toEqual('MetaMask');
     });
+    expect(!!connector).toEqual(true);
   });
 });
 
 describe('hasInjectedProvider', () => {
   it('only rainbow flag', () => {
-    window.ethereum = { isMetaMask: true, isRainbow: true } as WindowProvider;
+    window.ethereum = { isMetaMask: true, isRainbow: true };
     const hasRainbow = hasInjectedProvider({ flag: 'isRainbow' });
     expect(hasRainbow).toEqual(true);
   });
 
   it('only metamask flag', () => {
-    window.ethereum = { isMetaMask: true } as WindowProvider;
+    window.ethereum = { isMetaMask: true };
     const hasRainbow = hasInjectedProvider({ flag: 'isRainbow' });
     expect(hasRainbow).toEqual(false);
   });
@@ -93,7 +39,7 @@ describe('hasInjectedProvider', () => {
     window.ethereum = {
       isMetaMask: true,
       isCoinbaseWallet: true,
-    } as WindowProvider;
+    };
     const hasCoinbase = hasInjectedProvider({ flag: 'isCoinbaseWallet' });
     expect(hasCoinbase).toEqual(true);
   });
@@ -104,7 +50,7 @@ describe('hasInjectedProvider', () => {
       providers: {
         ethereum: { isMetaMask: true },
       },
-    } as WindowProvider;
+    };
     const hasEnkrypt = hasInjectedProvider({
       namespace: 'enkrypt.providers.ethereum',
     });
@@ -116,7 +62,7 @@ describe('hasInjectedProvider', () => {
     window.avalanche = {
       isMetaMask: true,
       isAvalanche: true,
-    } as WindowProvider;
+    };
     const hasCore = hasInjectedProvider({
       namespace: 'avalanche',
       flag: 'isAvalanche',
@@ -128,7 +74,7 @@ describe('hasInjectedProvider', () => {
     window.ethereum = {
       isMetaMask: true,
       isAvalanche: true,
-    } as WindowProvider;
+    };
     const hasCore = hasInjectedProvider({
       namespace: 'avalanche',
       flag: 'isAvalanche',
@@ -144,7 +90,7 @@ describe('hasInjectedProvider', () => {
         { isMetaMask: true, isCoinbaseWallet: true },
         { isMetaMask: true, isRainbow: true },
       ],
-    } as WindowProvider;
+    };
 
     const hasCoinbase = hasInjectedProvider({ flag: 'isCoinbaseWallet' });
     expect(hasCoinbase).toEqual(true);
@@ -162,7 +108,7 @@ describe('hasInjectedProvider', () => {
         { isMetaMask: true, isRainbow: true },
         { isMetaMask: true },
       ],
-    } as WindowProvider;
+    };
 
     const hasCoinbase = hasInjectedProvider({ flag: 'isCoinbaseWallet' });
     expect(hasCoinbase).toEqual(true);
diff --git a/packages/rainbowkit/src/wallets/getInjectedConnector.ts b/packages/rainbowkit/src/wallets/getInjectedConnector.ts
index 470d098ab6..c79d104668 100644
--- a/packages/rainbowkit/src/wallets/getInjectedConnector.ts
+++ b/packages/rainbowkit/src/wallets/getInjectedConnector.ts
@@ -1,21 +1,18 @@
-import { InjectedConnector } from 'wagmi/connectors/injected';
-import type { InjectedProviderFlags, WindowProvider } from 'wagmi/window';
-import type { Chain } from '../components/RainbowKitProvider/RainbowKitChainContext';
+import { createConnector } from 'wagmi';
+import { injected } from 'wagmi/connectors';
+import { CreateConnector, WalletDetailsParams } from './Wallet';
 
 /*
  * Returns the explicit window provider that matches the flag and the flag is true
  */
-function getExplicitInjectedProvider(
-  flag: keyof InjectedProviderFlags | string,
-): WindowProvider | undefined {
+function getExplicitInjectedProvider(flag: string) {
   if (typeof window === 'undefined' || typeof window.ethereum === 'undefined')
     return;
   const providers = window.ethereum.providers;
   return providers
     ? // @ts-expect-error - some provider flags are not typed in `InjectedProviderFlags`
       providers.find((provider) => provider[flag])
-    : // @ts-expect-error - some provider flags are not typed in `InjectedProviderFlags`
-      window.ethereum[flag]
+    : window.ethereum[flag]
       ? window.ethereum
       : undefined;
 }
@@ -23,13 +20,8 @@ function getExplicitInjectedProvider(
 /*
  * Gets the `window.namespace` window provider if it exists
  */
-function getWindowProviderNamespace(
-  namespace: string,
-): WindowProvider | undefined {
-  const providerSearch = (
-    provider: any,
-    namespace: string,
-  ): WindowProvider | undefined => {
+function getWindowProviderNamespace(namespace: string) {
+  const providerSearch = (provider: any, namespace: string): any => {
     const [property, ...path] = namespace.split('.');
     const _provider = provider[property];
     if (_provider) {
@@ -47,7 +39,7 @@ export function hasInjectedProvider({
   flag,
   namespace,
 }: {
-  flag?: keyof InjectedProviderFlags | string;
+  flag?: string;
   namespace?: string;
 }): boolean {
   if (namespace && typeof getWindowProviderNamespace(namespace) !== 'undefined')
@@ -64,9 +56,9 @@ function getInjectedProvider({
   flag,
   namespace,
 }: {
-  flag?: keyof InjectedProviderFlags | string;
+  flag?: string;
   namespace?: string;
-}): WindowProvider | undefined {
+}) {
   if (typeof window === 'undefined') return;
   if (namespace) {
     // prefer custom eip1193 namespaces
@@ -83,23 +75,36 @@ function getInjectedProvider({
   return window.ethereum;
 }
 
+function createInjectedConnector(provider?: any): CreateConnector {
+  return (walletDetails: WalletDetailsParams) => {
+    // Create the injected configuration object conditionally based on the provider.
+    const injectedConfig = provider
+      ? {
+          target: () => ({
+            id: walletDetails.rkDetails.id,
+            name: walletDetails.rkDetails.name,
+            provider,
+          }),
+        }
+      : {};
+
+    return createConnector((config) => ({
+      // Spread the injectedConfig object, which may be empty or contain the target function
+      ...injected(injectedConfig)(config),
+      ...walletDetails,
+    }));
+  };
+}
+
 export function getInjectedConnector({
-  chains,
   flag,
   namespace,
-  getProvider,
+  target,
 }: {
-  flag?: keyof InjectedProviderFlags | string;
+  flag?: string;
   namespace?: string;
-  getProvider?: () => WindowProvider | undefined;
-  chains: Chain[];
-}): InjectedConnector {
-  return new InjectedConnector({
-    chains,
-    options: getProvider
-      ? { getProvider }
-      : flag || namespace
-        ? { getProvider: () => getInjectedProvider({ flag, namespace }) }
-        : undefined,
-  });
+  target?: any;
+}): CreateConnector {
+  const provider = target ? target : getInjectedProvider({ flag, namespace });
+  return createInjectedConnector(provider);
 }
diff --git a/packages/rainbowkit/src/wallets/getWalletConnectConnector.test.ts b/packages/rainbowkit/src/wallets/getWalletConnectConnector.test.ts
index ad3f4f947b..8cf897abe7 100644
--- a/packages/rainbowkit/src/wallets/getWalletConnectConnector.test.ts
+++ b/packages/rainbowkit/src/wallets/getWalletConnectConnector.test.ts
@@ -1,6 +1,5 @@
 import { describe, expect, expectTypeOf, it } from 'vitest';
-import { mainnet } from 'wagmi/chains';
-import { WalletConnectConnector } from 'wagmi/connectors/walletConnect';
+import { CreateConnector } from './Wallet';
 import { getWalletConnectConnector } from './getWalletConnectConnector';
 
 /*
@@ -9,50 +8,31 @@ import { getWalletConnectConnector } from './getWalletConnectConnector';
  */
 
 describe('getWalletConnectConnector', () => {
-  const chains = [mainnet];
   const projectId = 'test-project-id';
 
   describe('generic', () => {
     it('without projectId', () => {
-      expect(() => getWalletConnectConnector({ chains })).toThrowError();
+      // @ts-expect-error
+      expect(() => getWalletConnectConnector()).toThrowError();
     });
     it('with projectId', () => {
-      const connector = getWalletConnectConnector({ chains, projectId });
-      expect(connector.id).toBe('walletConnect');
-      expectTypeOf(connector).toMatchTypeOf<WalletConnectConnector>();
-    });
-    it('qrcode defaults', () => {
-      const connector = getWalletConnectConnector({ chains, projectId });
-      expect(connector.options.showQrModal).toBe(false);
-    });
-    it('v2 qrcode defaults', () => {
-      const connector = getWalletConnectConnector({
-        chains,
-        projectId,
-      });
-      expect(connector.options.showQrModal).toBe(false);
+      const connector = getWalletConnectConnector({ projectId });
+      expectTypeOf(connector).toMatchTypeOf<CreateConnector>();
     });
   });
 
   describe("version '2'", () => {
     it('without options', () => {
       const connector = getWalletConnectConnector({
-        chains,
         projectId,
       });
-      expect(connector.id).toBe('walletConnect');
-      expectTypeOf(connector).toMatchTypeOf<WalletConnectConnector>();
+      expectTypeOf(connector).toMatchTypeOf<CreateConnector>();
     });
     it('with options', () => {
       const connector = getWalletConnectConnector({
-        chains,
         projectId,
-        options: {
-          showQrModal: true,
-        },
       });
-      expect(connector.id).toBe('walletConnect');
-      expectTypeOf(connector).toMatchTypeOf<WalletConnectConnector>();
+      expectTypeOf(connector).toMatchTypeOf<CreateConnector>();
     });
   });
 });
diff --git a/packages/rainbowkit/src/wallets/getWalletConnectConnector.ts b/packages/rainbowkit/src/wallets/getWalletConnectConnector.ts
index 50d78f8aea..a4f31b473b 100644
--- a/packages/rainbowkit/src/wallets/getWalletConnectConnector.ts
+++ b/packages/rainbowkit/src/wallets/getWalletConnectConnector.ts
@@ -1,67 +1,114 @@
-import { WalletConnectConnector } from 'wagmi/connectors/walletConnect';
-import { Chain } from '../components/RainbowKitProvider/RainbowKitChainContext';
+import { createConnector } from 'wagmi';
+import type { CreateConnectorFn } from 'wagmi';
+import { WalletConnectParameters, walletConnect } from 'wagmi/connectors';
+import type {
+  CreateConnector,
+  RainbowKitDetails,
+  RainbowKitWalletConnectParameters,
+  WalletDetailsParams,
+} from './Wallet';
 
-type SerializedOptions = string;
-const sharedConnectors = new Map<SerializedOptions, WalletConnectConnector>();
+interface GetWalletConnectConnectorParams {
+  projectId: string;
+  walletConnectParameters?: RainbowKitWalletConnectParameters;
+}
 
-type WalletConnectConnectorConfig = ConstructorParameters<
-  typeof WalletConnectConnector
->[0];
+interface CreateWalletConnectConnectorParams {
+  projectId: string;
+  walletDetails: WalletDetailsParams;
+  walletConnectParameters?: RainbowKitWalletConnectParameters;
+}
 
-export type WalletConnectConnectorOptions =
-  // @ts-ignore
-  WalletConnectConnectorConfig['options'];
+interface GetOrCreateWalletConnectInstanceParams {
+  projectId: string;
+  walletConnectParameters?: RainbowKitWalletConnectParameters;
+  rkDetailsShowQrModal?: RainbowKitDetails['showQrModal'];
+}
 
-export type WalletConnectConnectorMetadata =
-  WalletConnectConnectorOptions['metadata'];
+const walletConnectInstances = new Map<
+  string,
+  ReturnType<typeof walletConnect>
+>();
 
-function createConnector(
-  config: WalletConnectConnectorConfig,
-): WalletConnectConnector {
-  const connector = new WalletConnectConnector(config);
-  sharedConnectors.set(JSON.stringify(config), connector);
-  return connector;
-}
+// Function to get or create a walletConnect instance
+const getOrCreateWalletConnectInstance = ({
+  projectId,
+  walletConnectParameters,
+  rkDetailsShowQrModal,
+}: GetOrCreateWalletConnectInstanceParams): ReturnType<
+  typeof walletConnect
+> => {
+  let config: WalletConnectParameters = {
+    ...(walletConnectParameters ? walletConnectParameters : {}),
+    projectId,
+    showQrModal: false, // Required. Otherwise WalletConnect modal (Web3Modal) will popup during time of connection for a wallet
+  };
 
-export function getWalletConnectConnector(config: {
-  projectId: string;
-  chains: Chain[];
-  options?: WalletConnectConnectorOptions;
-}): WalletConnectConnector;
+  // `rkDetailsShowQrModal` should always be `true`
+  if (rkDetailsShowQrModal) {
+    config = { ...config, showQrModal: true };
+  }
+
+  const serializedConfig = JSON.stringify(config);
+
+  const sharedWalletConnector = walletConnectInstances.get(serializedConfig);
 
+  if (sharedWalletConnector) {
+    return sharedWalletConnector;
+  }
+
+  // Create a new walletConnect instance and store it
+  const newWalletConnectInstance = walletConnect(config);
+
+  walletConnectInstances.set(serializedConfig, newWalletConnectInstance);
+
+  return newWalletConnectInstance;
+};
+
+// Creates a WalletConnect connector with the given project ID and additional options.
+function createWalletConnectConnector({
+  projectId,
+  walletDetails,
+  walletConnectParameters,
+}: CreateWalletConnectConnectorParams): CreateConnectorFn {
+  // Create and configure the WalletConnect connector with project ID and options.
+  return createConnector((config) => ({
+    ...getOrCreateWalletConnectInstance({
+      projectId,
+      walletConnectParameters,
+      // Used in `connectorsForWallets` to add another
+      // walletConnect wallet into rainbowkit with modal popup option
+      rkDetailsShowQrModal: walletDetails.rkDetails.showQrModal,
+    })(config),
+    ...walletDetails,
+  }));
+}
+
+// Factory function to obtain a configured WalletConnect connector.
 export function getWalletConnectConnector({
-  chains,
-  options = {},
   projectId,
-}: {
-  chains: Chain[];
-  projectId?: string;
-  options?: WalletConnectConnectorOptions;
-}): WalletConnectConnector {
+  walletConnectParameters,
+}: GetWalletConnectConnectorParams): CreateConnector {
   // We use this projectId in place of YOUR_PROJECT_ID for our examples.
   // This allows us our examples and templates to be functional with WalletConnect v2.
   // We warn developers against using this projectId in their dApp in production.
   const exampleProjectId = '21fef48091f12692cad574a6f7753643';
-  if (!projectId || projectId === '')
+
+  if (!projectId || projectId === '') {
     throw new Error(
       'No projectId found. Every dApp must now provide a WalletConnect Cloud projectId to enable WalletConnect v2 https://www.rainbowkit.com/docs/installation#configure',
     );
-  if (projectId === 'YOUR_PROJECT_ID' || projectId === exampleProjectId)
-    console.warn(
-      'Invalid projectId. Please create a unique WalletConnect Cloud projectId for your dApp https://www.rainbowkit.com/docs/installation#configure',
-    );
+  }
 
-  const config = {
-    chains,
-    options: {
-      projectId: projectId === 'YOUR_PROJECT_ID' ? exampleProjectId : projectId,
-      showQrModal: false,
-      ...options,
-    },
-  };
-
-  const serializedConfig = JSON.stringify(config);
-  const sharedConnector = sharedConnectors.get(serializedConfig);
+  if (projectId === 'YOUR_PROJECT_ID') {
+    projectId = exampleProjectId;
+  }
 
-  return sharedConnector ?? createConnector(config);
+  // Return a function that merges additional wallet details with `CreateConnectorFn`.
+  return (walletDetails: WalletDetailsParams) =>
+    createWalletConnectConnector({
+      projectId,
+      walletDetails,
+      walletConnectParameters,
+    });
 }
diff --git a/packages/rainbowkit/src/wallets/groupedWallets.ts b/packages/rainbowkit/src/wallets/groupedWallets.ts
new file mode 100644
index 0000000000..9bf6fd7317
--- /dev/null
+++ b/packages/rainbowkit/src/wallets/groupedWallets.ts
@@ -0,0 +1,62 @@
+import { WalletInstance } from './Wallet';
+
+export const groupedWallets = (
+  recentWallets: WalletInstance[],
+  walletInstances: WalletInstance[],
+) => {
+  return [
+    ...recentWallets,
+    ...walletInstances.filter(
+      (walletInstance) =>
+        !recentWallets.some((wallet) => wallet.id === walletInstance.id),
+    ),
+  ];
+};
+
+export const isRecentWallet = (
+  recentWallets: WalletInstance[],
+  walletId: string,
+) => {
+  return recentWallets.some((recentWallet) => recentWallet.id === walletId);
+};
+
+export const isRainbowKitConnector = (wallet: WalletInstance) => {
+  return !!wallet.isRainbowKitConnector;
+};
+
+export const isEIP6963Connector = (wallet: WalletInstance) => {
+  return !!(
+    !wallet.isRainbowKitConnector &&
+    wallet.icon?.startsWith('data:image') &&
+    wallet.uid &&
+    wallet.name
+  );
+};
+
+export const rainbowKitConnectorWithWalletConnect = (
+  wallet: WalletInstance,
+  walletConnectModalConnector: WalletInstance,
+) => {
+  // Check if we should use the walletConnectModalConnector for this instance
+  const shouldUseWalletConnectModal =
+    wallet.id === 'walletConnect' && walletConnectModalConnector;
+
+  // Include the walletConnectModalConnector in the result
+  return shouldUseWalletConnectModal
+    ? { ...wallet, walletConnectModalConnector }
+    : wallet;
+};
+interface ConnectorsWithWalletsParams {
+  wallets: WalletInstance[];
+  recentWallets: WalletInstance[];
+}
+
+export const connectorsWithRecentWallets = ({
+  wallets,
+  recentWallets,
+}: ConnectorsWithWalletsParams) => {
+  return [
+    ...recentWallets,
+    ...wallets.filter((wallet) => !isRecentWallet(recentWallets, wallet.id)),
+  ];
+};
diff --git a/packages/rainbowkit/src/wallets/useWalletConnectors.ts b/packages/rainbowkit/src/wallets/useWalletConnectors.ts
index 4931b59332..fa12af79d5 100644
--- a/packages/rainbowkit/src/wallets/useWalletConnectors.ts
+++ b/packages/rainbowkit/src/wallets/useWalletConnectors.ts
@@ -1,37 +1,56 @@
-import { Connector, useConnect } from 'wagmi';
-import { flatten } from '../utils/flatten';
+import { Config, Connector, useConnect } from 'wagmi';
+import { ConnectMutateAsync } from 'wagmi/query';
 import { indexBy } from '../utils/indexBy';
-import { isNotNullish } from '../utils/isNotNullish';
 import {
   useInitialChainId,
   useRainbowKitChains,
 } from './../components/RainbowKitProvider/RainbowKitChainContext';
-import { WalletInstance } from './Wallet';
+import { WagmiConnectorInstance, WalletInstance } from './Wallet';
 import {
   getDesktopDownloadUrl,
   getExtensionDownloadUrl,
   getMobileDownloadUrl,
 } from './downloadUrls';
+import {
+  connectorsWithRecentWallets,
+  isEIP6963Connector,
+  isRainbowKitConnector,
+  isRecentWallet,
+  rainbowKitConnectorWithWalletConnect,
+} from './groupedWallets';
 import { addRecentWalletId, getRecentWalletIds } from './recentWalletIds';
 
 export interface WalletConnector extends WalletInstance {
   ready?: boolean;
-  connect?: ReturnType<typeof useConnect>['connectAsync'];
-  onConnecting?: (fn: () => void) => void;
+  connect: () => ReturnType<ConnectMutateAsync<Config, unknown>>;
   showWalletConnectModal?: () => void;
   recent: boolean;
   mobileDownloadUrl?: string;
   extensionDownloadUrl?: string;
   desktopDownloadUrl?: string;
+  getDesktopUri?: () => Promise<string>;
+  getQrCodeUri?: () => Promise<string>;
+  getMobileUri?: () => Promise<string>;
 }
 
-export function useWalletConnectors(): WalletConnector[] {
+export function useWalletConnectors(
+  mergeEIP6963WithRkConnectors = false,
+): WalletConnector[] {
   const rainbowKitChains = useRainbowKitChains();
   const intialChainId = useInitialChainId();
   const { connectAsync, connectors: defaultConnectors_untyped } = useConnect();
-  const defaultConnectors = defaultConnectors_untyped as Connector[];
+  const defaultCreatedConnectors =
+    defaultConnectors_untyped as WagmiConnectorInstance[];
+
+  const defaultConnectors = defaultCreatedConnectors.map((connector) => ({
+    ...connector,
+    // rkDetails is optional it does not exist in eip6963 connectors.
+    // We only inject `rkDetails` in `connectorsForWallets` when we
+    // want to have additional information in the connector.
+    ...(connector.rkDetails || {}),
+  })) as WalletInstance[];
 
-  async function connectWallet(walletId: string, connector: Connector) {
+  async function connectWallet(connector: Connector) {
     const walletChainId = await connector.getChainId();
     const result = await connectAsync({
       chainId:
@@ -46,18 +65,17 @@ export function useWalletConnectors(): WalletConnector[] {
     });
 
     if (result) {
-      addRecentWalletId(walletId);
+      addRecentWalletId(connector.id);
     }
 
     return result;
   }
 
   async function connectToWalletConnectModal(
-    walletId: string,
     walletConnectModalConnector: Connector,
   ) {
     try {
-      return await connectWallet(walletId, walletConnectModalConnector!);
+      return await connectWallet(walletConnectModalConnector);
     } catch (err) {
       const isUserRejection =
         // @ts-expect-error - Web3Modal v1 error name
@@ -71,62 +89,121 @@ export function useWalletConnectors(): WalletConnector[] {
     }
   }
 
-  const walletInstances = flatten(
-    defaultConnectors.map((connector) => {
-      return (connector._wallets as WalletInstance[]) ?? [];
-    }),
-  ).sort((a, b) => a.index - b.index);
+  const getWalletConnectUri = async (
+    connector: Connector,
+    uriConverter: (uri: string) => string,
+  ): Promise<string> => {
+    const provider = await connector.getProvider();
+
+    if (connector.id === 'coinbase') {
+      // @ts-expect-error
+      return provider.qrUrl;
+    }
+
+    return new Promise<string>((resolve) =>
+      // Wagmi v2 doesn't have a return type for provider yet
+      // @ts-expect-error
+      provider.once('display_uri', (uri) => {
+        resolve(uriConverter(uri));
+      }),
+    );
+  };
+
+  const walletConnectModalConnector = defaultConnectors.find(
+    (connector) =>
+      connector.id === 'walletConnect' &&
+      connector.isWalletConnectModalConnector,
+  );
+
+  const eip6963Connectors = defaultConnectors
+    .filter(isEIP6963Connector)
+    .map((connector) => {
+      return {
+        ...connector,
+        groupIndex: 0,
+      };
+    });
+
+  const rainbowKitConnectors = defaultConnectors
+    .filter(isRainbowKitConnector)
+    .filter((wallet) => !wallet.isWalletConnectModalConnector)
+    .filter((wallet) => {
+      if (!mergeEIP6963WithRkConnectors) return true;
+
+      const existsInEIP6963Connectors = eip6963Connectors.some(
+        (eip6963) => eip6963.id === wallet.rdns,
+      );
+
+      return !existsInEIP6963Connectors;
+    })
+    .map((wallet) =>
+      rainbowKitConnectorWithWalletConnect(
+        wallet,
+        walletConnectModalConnector!,
+      ),
+    );
+
+  const combinedConnectors = [...eip6963Connectors, ...rainbowKitConnectors];
 
   const walletInstanceById = indexBy(
-    walletInstances,
+    combinedConnectors,
     (walletInstance) => walletInstance.id,
   );
 
   const MAX_RECENT_WALLETS = 3;
+
   const recentWallets: WalletInstance[] = getRecentWalletIds()
     .map((walletId) => walletInstanceById[walletId])
-    .filter(isNotNullish)
+    .filter(Boolean)
     .slice(0, MAX_RECENT_WALLETS);
 
-  const groupedWallets: WalletInstance[] = [
-    ...recentWallets,
-    ...walletInstances.filter(
-      (walletInstance) => !recentWallets.includes(walletInstance),
-    ),
-  ];
-
   const walletConnectors: WalletConnector[] = [];
 
-  for (const wallet of groupedWallets) {
-    if (!wallet) {
+  const combinedConnectorsWithRecentWallets = connectorsWithRecentWallets({
+    wallets: combinedConnectors,
+    recentWallets: recentWallets,
+  });
+
+  for (const wallet of combinedConnectorsWithRecentWallets) {
+    if (!wallet) continue;
+
+    const eip6963 = isEIP6963Connector(wallet);
+
+    const recent = isRecentWallet(recentWallets, wallet.id);
+
+    if (eip6963) {
+      walletConnectors.push({
+        ...wallet,
+        iconUrl: wallet.icon!,
+        ready: true,
+        connect: () => connectWallet(wallet),
+        groupName: 'Installed',
+        recent,
+      });
+
       continue;
     }
 
-    const recent = recentWallets.includes(wallet);
-
     walletConnectors.push({
       ...wallet,
-      // @ts-ignore - ignoring potential undefined return type
-      connect: () =>
-        wallet.connector.showQrModal
-          ? connectToWalletConnectModal(wallet.id, wallet.connector)
-          : connectWallet(wallet.id, wallet.connector),
+      ready: wallet.installed ?? true,
+      connect: () => connectWallet(wallet),
       desktopDownloadUrl: getDesktopDownloadUrl(wallet),
       extensionDownloadUrl: getExtensionDownloadUrl(wallet),
       groupName: wallet.groupName,
       mobileDownloadUrl: getMobileDownloadUrl(wallet),
-      onConnecting: (fn: () => void) =>
-        wallet.connector.on('message', ({ type }: { type: string }) =>
-          type === 'connecting' ? fn() : undefined,
-        ),
-      ready: (wallet.installed ?? true) && wallet.connector.ready,
+      getQrCodeUri: wallet.qrCode?.getUri
+        ? () => getWalletConnectUri(wallet, wallet.qrCode!.getUri!)
+        : undefined,
+      getDesktopUri: wallet.desktop?.getUri
+        ? () => getWalletConnectUri(wallet, wallet.desktop!.getUri!)
+        : undefined,
+      getMobileUri: wallet.mobile?.getUri
+        ? () => getWalletConnectUri(wallet, wallet.mobile?.getUri!)
+        : undefined,
       recent,
       showWalletConnectModal: wallet.walletConnectModalConnector
-        ? () =>
-            connectToWalletConnectModal(
-              wallet.id,
-              wallet.walletConnectModalConnector,
-            )
+        ? () => connectToWalletConnectModal(wallet.walletConnectModalConnector!)
         : undefined,
     });
   }
diff --git a/packages/rainbowkit/src/wallets/walletConnectors/argentWallet/argentWallet.ts b/packages/rainbowkit/src/wallets/walletConnectors/argentWallet/argentWallet.ts
index 547180307e..b0da58b046 100644
--- a/packages/rainbowkit/src/wallets/walletConnectors/argentWallet/argentWallet.ts
+++ b/packages/rainbowkit/src/wallets/walletConnectors/argentWallet/argentWallet.ts
@@ -1,20 +1,12 @@
-import { Chain } from '../../../components/RainbowKitProvider/RainbowKitChainContext';
-import { getWalletConnectUri } from '../../../utils/getWalletConnectUri';
 import { isAndroid } from '../../../utils/isMobile';
-import { Wallet } from '../../Wallet';
+import { DefaultWalletOptions, Wallet } from '../../Wallet';
 import { getWalletConnectConnector } from '../../getWalletConnectConnector';
-import type { WalletConnectConnectorOptions } from '../../getWalletConnectConnector';
 
-export interface ArgentWalletOptions {
-  projectId: string;
-  chains: Chain[];
-  walletConnectOptions?: WalletConnectConnectorOptions;
-}
+export type ArgentWalletOptions = DefaultWalletOptions;
 
 export const argentWallet = ({
-  chains,
   projectId,
-  walletConnectOptions,
+  walletConnectParameters,
 }: ArgentWalletOptions): Wallet => ({
   id: 'argent',
   name: 'Argent',
@@ -27,46 +19,38 @@ export const argentWallet = ({
     mobile: 'https://argent.xyz/download-argent',
     qrCode: 'https://argent.link/app',
   },
-  createConnector: () => {
-    const connector = getWalletConnectConnector({
-      projectId,
-      chains,
-      options: walletConnectOptions,
-    });
-
-    return {
-      connector,
-      mobile: {
-        getUri: async () => {
-          const uri = await getWalletConnectUri(connector);
-          return isAndroid()
-            ? uri
-            : `argent://app/wc?uri=${encodeURIComponent(uri)}`;
+  mobile: {
+    getUri: (uri: string) => {
+      return isAndroid()
+        ? uri
+        : `argent://app/wc?uri=${encodeURIComponent(uri)}`;
+    },
+  },
+  qrCode: {
+    getUri: (uri: string) => uri,
+    instructions: {
+      learnMoreUrl: 'https://argent.xyz/learn/what-is-a-crypto-wallet/',
+      steps: [
+        {
+          description: 'wallet_connectors.argent.qr_code.step1.description',
+          step: 'install',
+          title: 'wallet_connectors.argent.qr_code.step1.title',
+        },
+        {
+          description: 'wallet_connectors.argent.qr_code.step2.description',
+          step: 'create',
+          title: 'wallet_connectors.argent.qr_code.step2.title',
         },
-      },
-      qrCode: {
-        getUri: async () => getWalletConnectUri(connector),
-        instructions: {
-          learnMoreUrl: 'https://argent.xyz/learn/what-is-a-crypto-wallet/',
-          steps: [
-            {
-              description: 'wallet_connectors.argent.qr_code.step1.description',
-              step: 'install',
-              title: 'wallet_connectors.argent.qr_code.step1.title',
-            },
-            {
-              description: 'wallet_connectors.argent.qr_code.step2.description',
-              step: 'create',
-              title: 'wallet_connectors.argent.qr_code.step2.title',
-            },
-            {
-              description: 'wallet_connectors.argent.qr_code.step3.description',
-              step: 'scan',
-              title: 'wallet_connectors.argent.qr_code.step3.title',
-            },
-          ],
+        {
+          description: 'wallet_connectors.argent.qr_code.step3.description',
+          step: 'scan',
+          title: 'wallet_connectors.argent.qr_code.step3.title',
         },
-      },
-    };
+      ],
+    },
   },
+  createConnector: getWalletConnectConnector({
+    projectId,
+    walletConnectParameters,
+  }),
 });
diff --git a/packages/rainbowkit/src/wallets/walletConnectors/bifrostWallet/bifrostWallet.ts b/packages/rainbowkit/src/wallets/walletConnectors/bifrostWallet/bifrostWallet.ts
index 1ef4dd9bed..12376f633e 100644
--- a/packages/rainbowkit/src/wallets/walletConnectors/bifrostWallet/bifrostWallet.ts
+++ b/packages/rainbowkit/src/wallets/walletConnectors/bifrostWallet/bifrostWallet.ts
@@ -1,30 +1,28 @@
-import { Chain } from '../../../components/RainbowKitProvider/RainbowKitChainContext';
-import { getWalletConnectUri } from '../../../utils/getWalletConnectUri';
 import { isAndroid } from '../../../utils/isMobile';
 import { Wallet } from '../../Wallet';
 import {
   getInjectedConnector,
   hasInjectedProvider,
 } from '../../getInjectedConnector';
-import {
-  WalletConnectConnectorOptions,
-  getWalletConnectConnector,
-} from '../../getWalletConnectConnector';
+import { getWalletConnectConnector } from '../../getWalletConnectConnector';
+import { DefaultWalletOptions } from './../../Wallet';
 
-export interface BifrostWalletOptions {
-  projectId: string;
-  chains: Chain[];
-  walletConnectOptions?: WalletConnectConnectorOptions;
-}
+export type BifrostWalletOptions = DefaultWalletOptions;
 
 export const bifrostWallet = ({
-  chains,
   projectId,
-  walletConnectOptions,
+  walletConnectParameters,
 }: BifrostWalletOptions): Wallet => {
   const isBifrostInjected = hasInjectedProvider({ flag: 'isBifrost' });
+
   const shouldUseWalletConnect = !isBifrostInjected;
 
+  const getUri = (uri: string) => {
+    return isAndroid()
+      ? uri
+      : `https://app.bifrostwallet.com/wc?uri=${encodeURIComponent(uri)}`;
+  };
+
   return {
     id: 'bifrostWallet',
     name: 'Bifrost Wallet',
@@ -37,61 +35,46 @@ export const bifrostWallet = ({
       ios: 'https://apps.apple.com/us/app/bifrost-wallet/id1577198351',
       qrCode: 'https://bifrostwallet.com/#download-app',
     },
-    createConnector: () => {
-      const connector = shouldUseWalletConnect
-        ? getWalletConnectConnector({
-            chains,
-            projectId,
-            options: walletConnectOptions,
-          })
-        : getInjectedConnector({
-            flag: 'isBifrost',
-            chains,
-          });
-
-      const getUri = async () => {
-        const uri = await getWalletConnectUri(connector);
-
-        return isAndroid()
-          ? uri
-          : `https://app.bifrostwallet.com/wc?uri=${encodeURIComponent(uri)}`;
-      };
-
-      return {
-        connector,
-        mobile: {
-          getUri: shouldUseWalletConnect ? getUri : undefined,
-        },
-        qrCode: shouldUseWalletConnect
-          ? {
-              getUri: async () => getWalletConnectUri(connector),
-              instructions: {
-                learnMoreUrl:
-                  'https://support.bifrostwallet.com/en/articles/6886814-how-to-use-walletconnect',
-                steps: [
-                  {
-                    description:
-                      'wallet_connectors.bifrost.qr_code.step1.description',
-                    step: 'install',
-                    title: 'wallet_connectors.bifrost.qr_code.step1.title',
-                  },
-                  {
-                    description:
-                      'wallet_connectors.bifrost.qr_code.step2.description',
-                    step: 'create',
-                    title: 'wallet_connectors.bifrost.qr_code.step2.title',
-                  },
-                  {
-                    description:
-                      'wallet_connectors.bifrost.qr_code.step3.description',
-                    step: 'scan',
-                    title: 'wallet_connectors.bifrost.qr_code.step3.title',
-                  },
-                ],
-              },
-            }
-          : undefined,
-      };
+    mobile: {
+      getUri: shouldUseWalletConnect ? getUri : undefined,
     },
+    qrCode: shouldUseWalletConnect
+      ? {
+          getUri: (uri: string) => uri,
+          instructions: {
+            learnMoreUrl:
+              'https://support.bifrostwallet.com/en/articles/6886814-how-to-use-walletconnect',
+            steps: [
+              {
+                description:
+                  'wallet_connectors.bifrost.qr_code.step1.description',
+                step: 'install',
+                title: 'wallet_connectors.bifrost.qr_code.step1.title',
+              },
+              {
+                description:
+                  'wallet_connectors.bifrost.qr_code.step2.description',
+                step: 'create',
+                title: 'wallet_connectors.bifrost.qr_code.step2.title',
+              },
+              {
+                description:
+                  'wallet_connectors.bifrost.qr_code.step3.description',
+                step: 'scan',
+                title: 'wallet_connectors.bifrost.qr_code.step3.title',
+              },
+            ],
+          },
+        }
+      : undefined,
+
+    createConnector: shouldUseWalletConnect
+      ? getWalletConnectConnector({
+          projectId,
+          walletConnectParameters,
+        })
+      : getInjectedConnector({
+          flag: 'isBifrost',
+        }),
   };
 };
diff --git a/packages/rainbowkit/src/wallets/walletConnectors/bitgetWallet/bitgetWallet.ts b/packages/rainbowkit/src/wallets/walletConnectors/bitgetWallet/bitgetWallet.ts
index 38405a6450..74a965ebe0 100644
--- a/packages/rainbowkit/src/wallets/walletConnectors/bitgetWallet/bitgetWallet.ts
+++ b/packages/rainbowkit/src/wallets/walletConnectors/bitgetWallet/bitgetWallet.ts
@@ -1,24 +1,16 @@
-import { Chain } from '../../../components/RainbowKitProvider/RainbowKitChainContext';
-import { getWalletConnectUri } from '../../../utils/getWalletConnectUri';
 import { isAndroid } from '../../../utils/isMobile';
-import { Wallet } from '../../Wallet';
+import { DefaultWalletOptions, Wallet } from '../../Wallet';
 import {
   getInjectedConnector,
   hasInjectedProvider,
 } from '../../getInjectedConnector';
 import { getWalletConnectConnector } from '../../getWalletConnectConnector';
-import type { WalletConnectConnectorOptions } from '../../getWalletConnectConnector';
 
-export interface BitgetWalletOptions {
-  projectId: string;
-  chains: Chain[];
-  walletConnectOptions?: WalletConnectConnectorOptions;
-}
+export type BitgetWalletOptions = DefaultWalletOptions;
 
 export const bitgetWallet = ({
-  chains,
   projectId,
-  walletConnectOptions,
+  walletConnectParameters,
 }: BitgetWalletOptions): Wallet => {
   const isBitKeepInjected = hasInjectedProvider({
     namespace: 'bitkeep.ethereum',
@@ -43,87 +35,75 @@ export const bitgetWallet = ({
       browserExtension: 'https://web3.bitget.com/en/wallet-download',
     },
 
-    createConnector: () => {
-      const connector = shouldUseWalletConnect
-        ? getWalletConnectConnector({
-            chains,
-            options: walletConnectOptions,
-            projectId,
-          })
-        : getInjectedConnector({
-            chains,
-            namespace: 'bitkeep.ethereum',
-            flag: 'isBitKeep',
-          });
-
-      const getUri = async () => {
-        const uri = await getWalletConnectUri(connector);
-
-        return isAndroid()
-          ? uri
-          : `bitkeep://wc?uri=${encodeURIComponent(uri)}`;
-      };
-
-      return {
-        connector,
-        extension: {
+    extension: {
+      instructions: {
+        learnMoreUrl: 'https://web3.bitget.com/en/academy',
+        steps: [
+          {
+            description: 'wallet_connectors.bitget.extension.step1.description',
+            step: 'install',
+            title: 'wallet_connectors.bitget.extension.step1.title',
+          },
+          {
+            description: 'wallet_connectors.bitget.extension.step2.description',
+            step: 'create',
+            title: 'wallet_connectors.bitget.extension.step2.title',
+          },
+          {
+            description: 'wallet_connectors.bitget.extension.step3.description',
+            step: 'refresh',
+            title: 'wallet_connectors.bitget.extension.step3.description',
+          },
+        ],
+      },
+    },
+    mobile: {
+      getUri: shouldUseWalletConnect
+        ? (uri: string) => {
+            return isAndroid()
+              ? uri
+              : `bitkeep://wc?uri=${encodeURIComponent(uri)}`;
+          }
+        : undefined,
+    },
+    qrCode: shouldUseWalletConnect
+      ? {
+          getUri: (uri: string) => uri,
           instructions: {
             learnMoreUrl: 'https://web3.bitget.com/en/academy',
             steps: [
               {
                 description:
-                  'wallet_connectors.bitget.extension.step1.description',
+                  'wallet_connectors.bitget.qr_code.step1.description',
                 step: 'install',
-                title: 'wallet_connectors.bitget.extension.step1.title',
+                title: 'wallet_connectors.bitget.qr_code.step1.title',
               },
               {
                 description:
-                  'wallet_connectors.bitget.extension.step2.description',
+                  'wallet_connectors.bitget.qr_code.step2.description',
+
                 step: 'create',
-                title: 'wallet_connectors.bitget.extension.step2.title',
+                title: 'wallet_connectors.bitget.qr_code.step2.title',
               },
               {
                 description:
-                  'wallet_connectors.bitget.extension.step3.description',
-                step: 'refresh',
-                title: 'wallet_connectors.bitget.extension.step3.description',
+                  'wallet_connectors.bitget.qr_code.step3.description',
+                step: 'scan',
+                title: 'wallet_connectors.bitget.qr_code.step3.title',
               },
             ],
           },
-        },
-        mobile: {
-          getUri: shouldUseWalletConnect ? getUri : undefined,
-        },
-        qrCode: shouldUseWalletConnect
-          ? {
-              getUri: async () => getWalletConnectUri(connector),
-              instructions: {
-                learnMoreUrl: 'https://web3.bitget.com/en/academy',
-                steps: [
-                  {
-                    description:
-                      'wallet_connectors.bitget.qr_code.step1.description',
-                    step: 'install',
-                    title: 'wallet_connectors.bitget.qr_code.step1.title',
-                  },
-                  {
-                    description:
-                      'wallet_connectors.bitget.qr_code.step2.description',
+        }
+      : undefined,
 
-                    step: 'create',
-                    title: 'wallet_connectors.bitget.qr_code.step2.title',
-                  },
-                  {
-                    description:
-                      'wallet_connectors.bitget.qr_code.step3.description',
-                    step: 'scan',
-                    title: 'wallet_connectors.bitget.qr_code.step3.title',
-                  },
-                ],
-              },
-            }
-          : undefined,
-      };
-    },
+    createConnector: shouldUseWalletConnect
+      ? getWalletConnectConnector({
+          projectId,
+          walletConnectParameters,
+        })
+      : getInjectedConnector({
+          namespace: 'bitkeep.ethereum',
+          flag: 'isBitKeep',
+        }),
   };
 };
diff --git a/packages/rainbowkit/src/wallets/walletConnectors/bitskiWallet/bitskiWallet.ts b/packages/rainbowkit/src/wallets/walletConnectors/bitskiWallet/bitskiWallet.ts
index cc074cb077..13c88b47a9 100644
--- a/packages/rainbowkit/src/wallets/walletConnectors/bitskiWallet/bitskiWallet.ts
+++ b/packages/rainbowkit/src/wallets/walletConnectors/bitskiWallet/bitskiWallet.ts
@@ -1,15 +1,10 @@
-import { Chain } from '../../../components/RainbowKitProvider/RainbowKitChainContext';
 import { Wallet } from '../../Wallet';
 import {
   getInjectedConnector,
   hasInjectedProvider,
 } from '../../getInjectedConnector';
 
-export interface BitskiWalletOptions {
-  chains: Chain[];
-}
-
-export const bitskiWallet = ({ chains }: BitskiWalletOptions): Wallet => ({
+export const bitskiWallet = (): Wallet => ({
   id: 'bitski',
   name: 'Bitski',
   installed: hasInjectedProvider({ flag: 'isBitski' }),
@@ -20,30 +15,28 @@ export const bitskiWallet = ({ chains }: BitskiWalletOptions): Wallet => ({
       'https://chrome.google.com/webstore/detail/bitski/feejiigddaafeojfddjjlmfkabimkell',
     browserExtension: 'https://bitski.com',
   },
-  createConnector: () => ({
-    connector: getInjectedConnector({ chains, flag: 'isBitski' }),
-    extension: {
-      instructions: {
-        learnMoreUrl:
-          'https://bitski.zendesk.com/hc/articles/12803972818836-How-to-install-the-Bitski-browser-extension',
-        steps: [
-          {
-            description: 'wallet_connectors.bitski.extension.step1.description',
-            step: 'install',
-            title: 'wallet_connectors.bitski.extension.step1.title',
-          },
-          {
-            description: 'wallet_connectors.bitski.extension.step2.description',
-            step: 'create',
-            title: 'wallet_connectors.bitski.extension.step2.title',
-          },
-          {
-            description: 'wallet_connectors.bitski.extension.step3.description',
-            step: 'refresh',
-            title: 'wallet_connectors.bitski.extension.step3.title',
-          },
-        ],
-      },
+  extension: {
+    instructions: {
+      learnMoreUrl:
+        'https://bitski.zendesk.com/hc/articles/12803972818836-How-to-install-the-Bitski-browser-extension',
+      steps: [
+        {
+          description: 'wallet_connectors.bitski.extension.step1.description',
+          step: 'install',
+          title: 'wallet_connectors.bitski.extension.step1.title',
+        },
+        {
+          description: 'wallet_connectors.bitski.extension.step2.description',
+          step: 'create',
+          title: 'wallet_connectors.bitski.extension.step2.title',
+        },
+        {
+          description: 'wallet_connectors.bitski.extension.step3.description',
+          step: 'refresh',
+          title: 'wallet_connectors.bitski.extension.step3.title',
+        },
+      ],
     },
-  }),
+  },
+  createConnector: getInjectedConnector({ flag: 'isBitski' }),
 });
diff --git a/packages/rainbowkit/src/wallets/walletConnectors/braveWallet/braveWallet.ts b/packages/rainbowkit/src/wallets/walletConnectors/braveWallet/braveWallet.ts
index 2b3ee5f9c1..426f9e054a 100644
--- a/packages/rainbowkit/src/wallets/walletConnectors/braveWallet/braveWallet.ts
+++ b/packages/rainbowkit/src/wallets/walletConnectors/braveWallet/braveWallet.ts
@@ -1,23 +1,13 @@
-import { Chain } from '../../../components/RainbowKitProvider/RainbowKitChainContext';
 import { Wallet } from '../../Wallet';
 import {
   getInjectedConnector,
   hasInjectedProvider,
 } from '../../getInjectedConnector';
 
-/**
- * @protected `braveWallet` interface
- */
-export interface BraveWalletOptions {
-  chains: Chain[];
-}
-
-/**
- * @protected Brave Browser wallet connector
- */
-export const braveWallet = ({ chains }: BraveWalletOptions): Wallet => ({
+export const braveWallet = (): Wallet => ({
   id: 'brave',
   name: 'Brave Wallet',
+  rdns: 'com.brave.wallet',
   iconUrl: async () => (await import('./braveWallet.svg')).default,
   iconBackground: '#fff',
   installed: hasInjectedProvider({ flag: 'isBraveWallet' }),
@@ -27,7 +17,5 @@ export const braveWallet = ({ chains }: BraveWalletOptions): Wallet => ({
     // more of a convenience for users who are already using Brave rather than
     // an explicit wallet choice for users coming from other browsers.
   },
-  createConnector: () => ({
-    connector: getInjectedConnector({ chains, flag: 'isBraveWallet' }),
-  }),
+  createConnector: getInjectedConnector({ flag: 'isBraveWallet' }),
 });
diff --git a/packages/rainbowkit/src/wallets/walletConnectors/browserWallet/browserWallet.ts b/packages/rainbowkit/src/wallets/walletConnectors/browserWallet/browserWallet.ts
deleted file mode 100644
index 98d11b581c..0000000000
--- a/packages/rainbowkit/src/wallets/walletConnectors/browserWallet/browserWallet.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-import { InjectedConnector } from 'wagmi/connectors/injected';
-import { Chain } from '../../../components/RainbowKitProvider/RainbowKitChainContext';
-import { Wallet } from '../../Wallet';
-import { getInjectedConnector } from '../../getInjectedConnector';
-
-/**
- * @protected `browserWallet` interface
- */
-export interface BrowserWalletOptions {
-  chains: Chain[];
-}
-
-/**
- * @protected eip-1193 wallet connector
- */
-export const browserWallet = ({ chains }: BrowserWalletOptions): Wallet => ({
-  id: 'browser',
-  name: 'Browser Wallet',
-  iconUrl: async () => (await import('./browserWallet.svg')).default,
-  iconBackground: '#fff',
-  hidden: ({ wallets }) =>
-    wallets.some(
-      (wallet) =>
-        wallet.installed &&
-        wallet.name === wallet.connector.name &&
-        (wallet.connector instanceof InjectedConnector ||
-          wallet.id === 'coinbase'),
-    ),
-  createConnector: () => ({
-    connector: getInjectedConnector({ chains }),
-  }),
-});
diff --git a/packages/rainbowkit/src/wallets/walletConnectors/clvWallet/clvWallet.ts b/packages/rainbowkit/src/wallets/walletConnectors/clvWallet/clvWallet.ts
index af4e9384ff..2e910569db 100644
--- a/packages/rainbowkit/src/wallets/walletConnectors/clvWallet/clvWallet.ts
+++ b/packages/rainbowkit/src/wallets/walletConnectors/clvWallet/clvWallet.ts
@@ -1,25 +1,15 @@
-import { Chain } from '../../../components/RainbowKitProvider/RainbowKitChainContext';
-import { getWalletConnectUri } from '../../../utils/getWalletConnectUri';
-import { Wallet } from '../../Wallet';
+import { DefaultWalletOptions, Wallet } from '../../Wallet';
 import {
   getInjectedConnector,
   hasInjectedProvider,
 } from '../../getInjectedConnector';
-import {
-  WalletConnectConnectorOptions,
-  getWalletConnectConnector,
-} from '../../getWalletConnectConnector';
+import { getWalletConnectConnector } from '../../getWalletConnectConnector';
 
-export interface CLVWalletOptions {
-  projectId: string;
-  chains: Chain[];
-  walletConnectOptions?: WalletConnectConnectorOptions;
-}
+export type CLVWalletOptions = DefaultWalletOptions;
 
 export const clvWallet = ({
-  chains,
   projectId,
-  walletConnectOptions,
+  walletConnectParameters,
 }: CLVWalletOptions): Wallet => {
   const isCLVInjected = hasInjectedProvider({ namespace: 'clover' });
   const shouldUseWalletConnect = !isCLVInjected;
@@ -38,79 +28,61 @@ export const clvWallet = ({
       mobile: 'https://apps.apple.com/app/clover-wallet/id1570072858',
       qrCode: 'https://clv.org/',
     },
-    createConnector: () => {
-      const connector = shouldUseWalletConnect
-        ? getWalletConnectConnector({
-            chains,
-            options: walletConnectOptions,
-            projectId,
-          })
-        : getInjectedConnector({ chains, namespace: 'clover' });
-
-      const getUri = async () => {
-        const uri = await getWalletConnectUri(connector);
-        return uri;
-      };
-
-      return {
-        connector,
-        extension: {
+    extension: {
+      instructions: {
+        learnMoreUrl: 'https://clv.org/',
+        steps: [
+          {
+            description: 'wallet_connectors.clv.extension.step1.description',
+            step: 'install',
+            title: 'wallet_connectors.clv.extension.step1.title',
+          },
+          {
+            description: 'wallet_connectors.clv.extension.step2.description',
+            step: 'create',
+            title: 'wallet_connectors.clv.extension.step2.title',
+          },
+          {
+            description: 'wallet_connectors.clv.extension.step3.description',
+            step: 'refresh',
+            title: 'wallet_connectors.clv.extension.step3.title',
+          },
+        ],
+      },
+    },
+    mobile: {
+      getUri: shouldUseWalletConnect ? (uri: string) => uri : undefined,
+    },
+    qrCode: shouldUseWalletConnect
+      ? {
+          getUri: (uri: string) => uri,
           instructions: {
             learnMoreUrl: 'https://clv.org/',
             steps: [
               {
-                description:
-                  'wallet_connectors.clv.extension.step1.description',
+                description: 'wallet_connectors.clv.qr_code.step1.description',
                 step: 'install',
-                title: 'wallet_connectors.clv.extension.step1.title',
+                title: 'wallet_connectors.clv.qr_code.step1.title',
               },
               {
-                description:
-                  'wallet_connectors.clv.extension.step2.description',
+                description: 'wallet_connectors.clv.qr_code.step2.description',
                 step: 'create',
-                title: 'wallet_connectors.clv.extension.step2.title',
+                title: 'wallet_connectors.clv.qr_code.step2.title',
               },
               {
-                description:
-                  'wallet_connectors.clv.extension.step3.description',
-                step: 'refresh',
-                title: 'wallet_connectors.clv.extension.step3.title',
+                description: 'wallet_connectors.clv.qr_code.step3.description',
+                step: 'scan',
+                title: 'wallet_connectors.clv.qr_code.step3.title',
               },
             ],
           },
-        },
-        mobile: {
-          getUri: shouldUseWalletConnect ? getUri : undefined,
-        },
-        qrCode: shouldUseWalletConnect
-          ? {
-              getUri: async () => getWalletConnectUri(connector),
-              instructions: {
-                learnMoreUrl: 'https://clv.org/',
-                steps: [
-                  {
-                    description:
-                      'wallet_connectors.clv.qr_code.step1.description',
-                    step: 'install',
-                    title: 'wallet_connectors.clv.qr_code.step1.title',
-                  },
-                  {
-                    description:
-                      'wallet_connectors.clv.qr_code.step2.description',
-                    step: 'create',
-                    title: 'wallet_connectors.clv.qr_code.step2.title',
-                  },
-                  {
-                    description:
-                      'wallet_connectors.clv.qr_code.step3.description',
-                    step: 'scan',
-                    title: 'wallet_connectors.clv.qr_code.step3.title',
-                  },
-                ],
-              },
-            }
-          : undefined,
-      };
-    },
+        }
+      : undefined,
+    createConnector: shouldUseWalletConnect
+      ? getWalletConnectConnector({
+          projectId,
+          walletConnectParameters,
+        })
+      : getInjectedConnector({ namespace: 'clover' }),
   };
 };
diff --git a/packages/rainbowkit/src/wallets/walletConnectors/coin98Wallet/coin98Wallet.ts b/packages/rainbowkit/src/wallets/walletConnectors/coin98Wallet/coin98Wallet.ts
index 2d048c52c4..3d8bda0d50 100644
--- a/packages/rainbowkit/src/wallets/walletConnectors/coin98Wallet/coin98Wallet.ts
+++ b/packages/rainbowkit/src/wallets/walletConnectors/coin98Wallet/coin98Wallet.ts
@@ -1,25 +1,15 @@
-import { Chain } from '../../../components/RainbowKitProvider/RainbowKitChainContext';
-import { getWalletConnectUri } from '../../../utils/getWalletConnectUri';
-import { Wallet } from '../../Wallet';
+import { DefaultWalletOptions, Wallet } from '../../Wallet';
 import {
   getInjectedConnector,
   hasInjectedProvider,
 } from '../../getInjectedConnector';
-import {
-  WalletConnectConnectorOptions,
-  getWalletConnectConnector,
-} from '../../getWalletConnectConnector';
+import { getWalletConnectConnector } from '../../getWalletConnectConnector';
 
-export interface Coin98WalletOptions {
-  projectId: string;
-  chains: Chain[];
-  walletConnectOptions?: WalletConnectConnectorOptions;
-}
+export type Coin98WalletOptions = DefaultWalletOptions;
 
 export const coin98Wallet = ({
-  chains,
   projectId,
-  walletConnectOptions,
+  walletConnectParameters,
 }: Coin98WalletOptions): Wallet => {
   const isCoin98WalletInjected = hasInjectedProvider({
     namespace: 'coin98Wallet',
@@ -43,80 +33,67 @@ export const coin98Wallet = ({
         'https://chrome.google.com/webstore/detail/coin98-wallet/aeachknmefphepccionboohckonoeemg',
       browserExtension: 'https://coin98.com/wallet',
     },
-    createConnector: () => {
-      const connector = shouldUseWalletConnect
-        ? getWalletConnectConnector({
-            projectId,
-            chains,
-            options: walletConnectOptions,
-          })
-        : getInjectedConnector({
-            chains,
-            namespace: 'coin98Wallet',
-            flag: 'isCoin98',
-          });
-      const getUri = async () => {
-        const uri = await getWalletConnectUri(connector);
-        return uri;
-      };
-
-      return {
-        connector,
-        mobile: { getUri: shouldUseWalletConnect ? getUri : undefined },
-        qrCode: shouldUseWalletConnect
-          ? {
-              getUri,
-              instructions: {
-                learnMoreUrl: 'https://coin98.com/wallet',
-                steps: [
-                  {
-                    description:
-                      'wallet_connectors.coin98.qr_code.step1.description',
-                    step: 'install',
-                    title: 'wallet_connectors.coin98.qr_code.step1.title',
-                  },
-                  {
-                    description:
-                      'wallet_connectors.coin98.qr_code.step2.description',
-                    step: 'create',
-                    title: 'wallet_connectors.coin98.qr_code.step2.title',
-                  },
-                  {
-                    description:
-                      'wallet_connectors.coin98.qr_code.step3.description',
-                    step: 'scan',
-                    title: 'wallet_connectors.coin98.qr_code.step3.title',
-                  },
-                ],
-              },
-            }
-          : undefined,
-        extension: {
+    mobile: {
+      getUri: shouldUseWalletConnect ? (uri: string) => uri : undefined,
+    },
+    qrCode: shouldUseWalletConnect
+      ? {
+          getUri: (uri: string) => uri,
           instructions: {
             learnMoreUrl: 'https://coin98.com/wallet',
             steps: [
               {
                 description:
-                  'wallet_connectors.coin98.extension.step1.description',
+                  'wallet_connectors.coin98.qr_code.step1.description',
                 step: 'install',
-                title: 'wallet_connectors.coin98.extension.step1.title',
+                title: 'wallet_connectors.coin98.qr_code.step1.title',
               },
               {
                 description:
-                  'wallet_connectors.coin98.extension.step2.description',
+                  'wallet_connectors.coin98.qr_code.step2.description',
                 step: 'create',
-                title: 'wallet_connectors.coin98.extension.step2.title',
+                title: 'wallet_connectors.coin98.qr_code.step2.title',
               },
               {
                 description:
-                  'wallet_connectors.coin98.extension.step3.description',
-                step: 'refresh',
-                title: 'wallet_connectors.coin98.extension.step3.title',
+                  'wallet_connectors.coin98.qr_code.step3.description',
+                step: 'scan',
+                title: 'wallet_connectors.coin98.qr_code.step3.title',
               },
             ],
           },
-        },
-      };
+        }
+      : undefined,
+    extension: {
+      instructions: {
+        learnMoreUrl: 'https://coin98.com/wallet',
+        steps: [
+          {
+            description: 'wallet_connectors.coin98.extension.step1.description',
+            step: 'install',
+            title: 'wallet_connectors.coin98.extension.step1.title',
+          },
+          {
+            description: 'wallet_connectors.coin98.extension.step2.description',
+            step: 'create',
+            title: 'wallet_connectors.coin98.extension.step2.title',
+          },
+          {
+            description: 'wallet_connectors.coin98.extension.step3.description',
+            step: 'refresh',
+            title: 'wallet_connectors.coin98.extension.step3.title',
+          },
+        ],
+      },
     },
+    createConnector: shouldUseWalletConnect
+      ? getWalletConnectConnector({
+          projectId,
+          walletConnectParameters,
+        })
+      : getInjectedConnector({
+          namespace: 'coin98Wallet',
+          flag: 'isCoin98',
+        }),
   };
 };
diff --git a/packages/rainbowkit/src/wallets/walletConnectors/coinbaseWallet/coinbaseWallet.ts b/packages/rainbowkit/src/wallets/walletConnectors/coinbaseWallet/coinbaseWallet.ts
index da911c73f6..69b580efbc 100644
--- a/packages/rainbowkit/src/wallets/walletConnectors/coinbaseWallet/coinbaseWallet.ts
+++ b/packages/rainbowkit/src/wallets/walletConnectors/coinbaseWallet/coinbaseWallet.ts
@@ -1,28 +1,30 @@
-import { CoinbaseWalletConnector } from 'wagmi/connectors/coinbaseWallet';
-import { Chain } from '../../../components/RainbowKitProvider/RainbowKitChainContext';
+import { createConnector } from 'wagmi';
+import { coinbaseWallet as coinbaseWagmiWallet } from 'wagmi/connectors';
 import { isIOS } from '../../../utils/isMobile';
-import { Wallet } from '../../Wallet';
+import { Wallet, WalletDetailsParams } from '../../Wallet';
 import { hasInjectedProvider } from '../../getInjectedConnector';
 
 export interface CoinbaseWalletOptions {
   appName: string;
   appIcon?: string;
-  chains: Chain[];
 }
 
 export const coinbaseWallet = ({
   appName,
   appIcon,
-  chains,
 }: CoinbaseWalletOptions): Wallet => {
   const isCoinbaseWalletInjected = hasInjectedProvider({
     flag: 'isCoinbaseWallet',
   });
 
+  const getUri = (uri: string) => uri;
+  const ios = isIOS();
+
   return {
     id: 'coinbase',
     name: 'Coinbase Wallet',
     shortName: 'Coinbase',
+    rdns: 'com.coinbase.wallet',
     iconUrl: async () => (await import('./coinbaseWallet.svg')).default,
     iconAccent: '#2c5ff6',
     iconBackground: '#2c5ff6',
@@ -39,80 +41,71 @@ export const coinbaseWallet = ({
         'https://chrome.google.com/webstore/detail/coinbase-wallet-extension/hnfanknocfeofbddgcijnmhnfnkdnaad',
       browserExtension: 'https://coinbase.com/wallet',
     },
-    createConnector: () => {
-      const ios = isIOS();
-
-      const connector = new CoinbaseWalletConnector({
-        chains,
-        options: {
+    ...(ios
+      ? {}
+      : {
+          qrCode: {
+            getUri,
+            instructions: {
+              learnMoreUrl:
+                'https://coinbase.com/wallet/articles/getting-started-mobile',
+              steps: [
+                {
+                  description:
+                    'wallet_connectors.coinbase.qr_code.step1.description',
+                  step: 'install',
+                  title: 'wallet_connectors.coinbase.qr_code.step1.title',
+                },
+                {
+                  description:
+                    'wallet_connectors.coinbase.qr_code.step2.description',
+                  step: 'create',
+                  title: 'wallet_connectors.coinbase.qr_code.step2.title',
+                },
+                {
+                  description:
+                    'wallet_connectors.coinbase.qr_code.step3.description',
+                  step: 'scan',
+                  title: 'wallet_connectors.coinbase.qr_code.step3.title',
+                },
+              ],
+            },
+          },
+          extension: {
+            instructions: {
+              learnMoreUrl:
+                'https://coinbase.com/wallet/articles/getting-started-extension',
+              steps: [
+                {
+                  description:
+                    'wallet_connectors.coinbase.extension.step1.description',
+                  step: 'install',
+                  title: 'wallet_connectors.coinbase.extension.step1.title',
+                },
+                {
+                  description:
+                    'wallet_connectors.coinbase.extension.step2.description',
+                  step: 'create',
+                  title: 'wallet_connectors.coinbase.extension.step2.title',
+                },
+                {
+                  description:
+                    'wallet_connectors.coinbase.extension.step3.description',
+                  step: 'refresh',
+                  title: 'wallet_connectors.coinbase.extension.step3.title',
+                },
+              ],
+            },
+          },
+        }),
+    createConnector: (walletDetails: WalletDetailsParams) =>
+      createConnector((config) => ({
+        ...coinbaseWagmiWallet({
           appName,
           appLogoUrl: appIcon,
           headlessMode: true,
-        },
-      });
-
-      const getUri = async () => (await connector.getProvider()).qrUrl;
-
-      return {
-        connector,
-        ...(ios
-          ? {}
-          : {
-              qrCode: {
-                getUri,
-                instructions: {
-                  learnMoreUrl:
-                    'https://coinbase.com/wallet/articles/getting-started-mobile',
-                  steps: [
-                    {
-                      description:
-                        'wallet_connectors.coinbase.qr_code.step1.description',
-                      step: 'install',
-                      title: 'wallet_connectors.coinbase.qr_code.step1.title',
-                    },
-                    {
-                      description:
-                        'wallet_connectors.coinbase.qr_code.step2.description',
-                      step: 'create',
-                      title: 'wallet_connectors.coinbase.qr_code.step2.title',
-                    },
-                    {
-                      description:
-                        'wallet_connectors.coinbase.qr_code.step3.description',
-                      step: 'scan',
-                      title: 'wallet_connectors.coinbase.qr_code.step3.title',
-                    },
-                  ],
-                },
-              },
-              extension: {
-                instructions: {
-                  learnMoreUrl:
-                    'https://coinbase.com/wallet/articles/getting-started-extension',
-                  steps: [
-                    {
-                      description:
-                        'wallet_connectors.coinbase.extension.step1.description',
-                      step: 'install',
-                      title: 'wallet_connectors.coinbase.extension.step1.title',
-                    },
-                    {
-                      description:
-                        'wallet_connectors.coinbase.extension.step2.description',
-                      step: 'create',
-                      title: 'wallet_connectors.coinbase.extension.step2.title',
-                    },
-                    {
-                      description:
-                        'wallet_connectors.coinbase.extension.step3.description',
-                      step: 'refresh',
-                      title: 'wallet_connectors.coinbase.extension.step3.title',
-                    },
-                  ],
-                },
-              },
-            }),
-      };
-    },
+        })(config),
+        ...walletDetails,
+      })),
   };
 };
diff --git a/packages/rainbowkit/src/wallets/walletConnectors/coreWallet/coreWallet.ts b/packages/rainbowkit/src/wallets/walletConnectors/coreWallet/coreWallet.ts
index 01109e6ce6..226ee75b3a 100644
--- a/packages/rainbowkit/src/wallets/walletConnectors/coreWallet/coreWallet.ts
+++ b/packages/rainbowkit/src/wallets/walletConnectors/coreWallet/coreWallet.ts
@@ -1,25 +1,15 @@
-import { Chain } from '../../../components/RainbowKitProvider/RainbowKitChainContext';
-import { getWalletConnectUri } from '../../../utils/getWalletConnectUri';
-import { Wallet } from '../../Wallet';
+import { DefaultWalletOptions, Wallet } from '../../Wallet';
 import {
   getInjectedConnector,
   hasInjectedProvider,
 } from '../../getInjectedConnector';
-import {
-  WalletConnectConnectorOptions,
-  getWalletConnectConnector,
-} from '../../getWalletConnectConnector';
+import { getWalletConnectConnector } from '../../getWalletConnectConnector';
 
-export interface CoreWalletOptions {
-  projectId: string;
-  chains: Chain[];
-  walletConnectOptions?: WalletConnectConnectorOptions;
-}
+export type CoreWalletOptions = DefaultWalletOptions;
 
 export const coreWallet = ({
-  chains,
   projectId,
-  walletConnectOptions,
+  walletConnectParameters,
 }: CoreWalletOptions): Wallet => {
   const isCoreInjected = hasInjectedProvider({
     namespace: 'avalanche',
@@ -41,80 +31,65 @@ export const coreWallet = ({
         'https://chrome.google.com/webstore/detail/core-crypto-wallet-nft-ex/agoakfejjabomempkjlepdflaleeobhb',
       browserExtension: 'https://extension.core.app/',
     },
-    createConnector: () => {
-      const connector = shouldUseWalletConnect
-        ? getWalletConnectConnector({
-            projectId,
-            chains,
-            options: walletConnectOptions,
-          })
-        : getInjectedConnector({
-            chains,
-            namespace: 'avalanche',
-            flag: 'isAvalanche',
-          });
-      const getUri = async () => {
-        const uri = await getWalletConnectUri(connector);
-        return uri;
-      };
-      return {
-        connector,
-        mobile: { getUri: shouldUseWalletConnect ? getUri : undefined },
-        qrCode: shouldUseWalletConnect
-          ? {
-              getUri,
-              instructions: {
-                learnMoreUrl:
-                  'https://support.avax.network/en/articles/6115608-core-mobile-how-to-add-the-core-mobile-to-my-phone',
-                steps: [
-                  {
-                    description:
-                      'wallet_connectors.core.qr_code.step1.description',
-                    step: 'install',
-                    title: 'wallet_connectors.core.qr_code.step1.title',
-                  },
-                  {
-                    description:
-                      'wallet_connectors.core.qr_code.step2.description',
-                    step: 'create',
-                    title: 'wallet_connectors.core.qr_code.step2.title',
-                  },
-                  {
-                    description:
-                      'wallet_connectors.core.qr_code.step3.description',
-                    step: 'scan',
-                    title: 'wallet_connectors.core.qr_code.step3.title',
-                  },
-                ],
-              },
-            }
-          : undefined,
-        extension: {
+    mobile: {
+      getUri: shouldUseWalletConnect ? (uri: string) => uri : undefined,
+    },
+    qrCode: shouldUseWalletConnect
+      ? {
+          getUri: (uri: string) => uri,
           instructions: {
-            learnMoreUrl: 'https://extension.core.app/',
+            learnMoreUrl:
+              'https://support.avax.network/en/articles/6115608-core-mobile-how-to-add-the-core-mobile-to-my-phone',
             steps: [
               {
-                description:
-                  'wallet_connectors.core.extension.step1.description',
+                description: 'wallet_connectors.core.qr_code.step1.description',
                 step: 'install',
-                title: 'wallet_connectors.core.extension.step1.title',
+                title: 'wallet_connectors.core.qr_code.step1.title',
               },
               {
-                description:
-                  'wallet_connectors.core.extension.step2.description',
+                description: 'wallet_connectors.core.qr_code.step2.description',
                 step: 'create',
-                title: 'wallet_connectors.core.extension.step2.title',
+                title: 'wallet_connectors.core.qr_code.step2.title',
               },
               {
-                description:
-                  'wallet_connectors.core.extension.step3.description',
-                step: 'refresh',
-                title: 'wallet_connectors.core.extension.step3.title',
+                description: 'wallet_connectors.core.qr_code.step3.description',
+                step: 'scan',
+                title: 'wallet_connectors.core.qr_code.step3.title',
               },
             ],
           },
-        },
-      };
+        }
+      : undefined,
+    extension: {
+      instructions: {
+        learnMoreUrl: 'https://extension.core.app/',
+        steps: [
+          {
+            description: 'wallet_connectors.core.extension.step1.description',
+            step: 'install',
+            title: 'wallet_connectors.core.extension.step1.title',
+          },
+          {
+            description: 'wallet_connectors.core.extension.step2.description',
+            step: 'create',
+            title: 'wallet_connectors.core.extension.step2.title',
+          },
+          {
+            description: 'wallet_connectors.core.extension.step3.description',
+            step: 'refresh',
+            title: 'wallet_connectors.core.extension.step3.title',
+          },
+        ],
+      },
     },
+    createConnector: shouldUseWalletConnect
+      ? getWalletConnectConnector({
+          projectId,
+          walletConnectParameters,
+        })
+      : getInjectedConnector({
+          namespace: 'avalanche',
+          flag: 'isAvalanche',
+        }),
   };
 };
diff --git a/packages/rainbowkit/src/wallets/walletConnectors/dawnWallet/dawnWallet.ts b/packages/rainbowkit/src/wallets/walletConnectors/dawnWallet/dawnWallet.ts
index dad622b634..634d1b10a5 100644
--- a/packages/rainbowkit/src/wallets/walletConnectors/dawnWallet/dawnWallet.ts
+++ b/packages/rainbowkit/src/wallets/walletConnectors/dawnWallet/dawnWallet.ts
@@ -1,4 +1,3 @@
-import { Chain } from '../../../components/RainbowKitProvider/RainbowKitChainContext';
 import { isIOS } from '../../../utils/isMobile';
 import { Wallet } from '../../Wallet';
 import {
@@ -6,11 +5,7 @@ import {
   hasInjectedProvider,
 } from '../../getInjectedConnector';
 
-export interface DawnWalletOptions {
-  chains: Chain[];
-}
-
-export const dawnWallet = ({ chains }: DawnWalletOptions): Wallet => ({
+export const dawnWallet = (): Wallet => ({
   id: 'dawn',
   name: 'Dawn',
   iconUrl: async () => (await import('./dawnWallet.svg')).default,
@@ -21,7 +16,5 @@ export const dawnWallet = ({ chains }: DawnWalletOptions): Wallet => ({
     ios: 'https://apps.apple.com/us/app/dawn-ethereum-wallet/id1673143782',
     mobile: 'https://dawnwallet.xyz',
   },
-  createConnector: () => ({
-    connector: getInjectedConnector({ chains, flag: 'isDawn' }),
-  }),
+  createConnector: getInjectedConnector({ flag: 'isDawn' }),
 });
diff --git a/packages/rainbowkit/src/wallets/walletConnectors/desigWallet/desigWallet.ts b/packages/rainbowkit/src/wallets/walletConnectors/desigWallet/desigWallet.ts
index 6390120b41..d2f602cd9d 100644
--- a/packages/rainbowkit/src/wallets/walletConnectors/desigWallet/desigWallet.ts
+++ b/packages/rainbowkit/src/wallets/walletConnectors/desigWallet/desigWallet.ts
@@ -1,62 +1,48 @@
-import { Chain } from '../../../components/RainbowKitProvider/RainbowKitChainContext';
 import { Wallet } from '../../Wallet';
 import {
   getInjectedConnector,
   hasInjectedProvider,
 } from '../../getInjectedConnector';
 
-export interface DesigWalletOptions {
-  chains: Chain[];
-}
-
-export const desigWallet = ({ chains }: DesigWalletOptions): Wallet => ({
-  id: 'desig',
-  name: 'Desig Wallet',
-  iconUrl: async () => (await import('./desigWallet.svg')).default,
-  iconBackground: '#ffffff',
-  installed: hasInjectedProvider({ namespace: 'desig.ethereum' }),
-  downloadUrls: {
-    android: 'https://play.google.com/store/apps/details?id=io.desig.app',
-    ios: 'https://apps.apple.com/app/desig-wallet/id6450106028',
-    qrCode: 'https://desig.io',
-    mobile: 'https://desig.io',
-    browserExtension:
-      'https://chrome.google.com/webstore/detail/desig-wallet/panpgppehdchfphcigocleabcmcgfoca',
-  },
-
-  createConnector: () => {
-    const connector = getInjectedConnector({
-      chains,
-      namespace: 'desig.ethereum',
-    });
-
-    return {
-      connector,
-      extension: {
-        instructions: {
-          steps: [
-            {
-              description:
-                'wallet_connectors.desig.extension.step1.description',
-              step: 'install',
-              title: 'wallet_connectors.desig.extension.step1.title',
-            },
-            {
-              description:
-                'wallet_connectors.desig.extension.step2.description',
-              step: 'create',
-              title: 'wallet_connectors.desig.extension.step2.title',
-            },
-            {
-              description:
-                'wallet_connectors.desig.extension.step3.description',
-              step: 'refresh',
-              title: 'wallet_connectors.desig.extension.step3.title',
-            },
-          ],
-          learnMoreUrl: 'https://desig.io',
-        },
+export const desigWallet = (): Wallet => {
+  return {
+    id: 'desig',
+    name: 'Desig Wallet',
+    iconUrl: async () => (await import('./desigWallet.svg')).default,
+    iconBackground: '#ffffff',
+    installed: hasInjectedProvider({ namespace: 'desig.ethereum' }),
+    downloadUrls: {
+      android: 'https://play.google.com/store/apps/details?id=io.desig.app',
+      ios: 'https://apps.apple.com/app/desig-wallet/id6450106028',
+      qrCode: 'https://desig.io',
+      mobile: 'https://desig.io',
+      browserExtension:
+        'https://chrome.google.com/webstore/detail/desig-wallet/panpgppehdchfphcigocleabcmcgfoca',
+    },
+    extension: {
+      instructions: {
+        steps: [
+          {
+            description: 'wallet_connectors.desig.extension.step1.description',
+            step: 'install',
+            title: 'wallet_connectors.desig.extension.step1.title',
+          },
+          {
+            description: 'wallet_connectors.desig.extension.step2.description',
+            step: 'create',
+            title: 'wallet_connectors.desig.extension.step2.title',
+          },
+          {
+            description: 'wallet_connectors.desig.extension.step3.description',
+            step: 'refresh',
+            title: 'wallet_connectors.desig.extension.step3.title',
+          },
+        ],
+        learnMoreUrl: 'https://desig.io',
       },
-    };
-  },
-});
+    },
+    createConnector: getInjectedConnector({
+      namespace: 'desig.ethereum',
+    }),
+  };
+};
diff --git a/packages/rainbowkit/src/wallets/walletConnectors/enkryptWallet/enkryptWallet.ts b/packages/rainbowkit/src/wallets/walletConnectors/enkryptWallet/enkryptWallet.ts
index fad630b045..534aae01b3 100644
--- a/packages/rainbowkit/src/wallets/walletConnectors/enkryptWallet/enkryptWallet.ts
+++ b/packages/rainbowkit/src/wallets/walletConnectors/enkryptWallet/enkryptWallet.ts
@@ -1,61 +1,54 @@
-import type { Chain } from '../../../components/RainbowKitProvider/RainbowKitChainContext';
 import type { Wallet } from '../../Wallet';
 import {
   getInjectedConnector,
   hasInjectedProvider,
 } from '../../getInjectedConnector';
 
-export interface EnkryptWalletOptions {
-  chains: Chain[];
-}
-
-export const enkryptWallet = ({ chains }: EnkryptWalletOptions): Wallet => ({
-  id: 'enkrypt',
-  name: 'Enkrypt Wallet',
-  installed: hasInjectedProvider({ namespace: 'enkrypt.providers.ethereum' }),
-  iconUrl: async () => (await import('./enkryptWallet.svg')).default,
-  iconBackground: '#FFFFFF',
-  downloadUrls: {
-    qrCode: 'https://www.enkrypt.com',
-    chrome:
-      'https://chrome.google.com/webstore/detail/enkrypt-ethereum-polkadot/kkpllkodjeloidieedojogacfhpaihoh',
-    browserExtension: 'https://www.enkrypt.com/',
-    edge: 'https://microsoftedge.microsoft.com/addons/detail/enkrypt-ethereum-polkad/gfenajajnjjmmdojhdjmnngomkhlnfjl',
-    firefox: 'https://addons.mozilla.org/en-US/firefox/addon/enkrypt/',
-    opera: 'https://addons.opera.com/en/extensions/details/enkrypt/',
-    safari: 'https://apps.apple.com/app/enkrypt-web3-wallet/id1640164309',
-  },
-  createConnector: () => {
-    return {
-      connector: getInjectedConnector({
-        chains,
-        namespace: 'enkrypt.providers.ethereum',
-      }),
-      extension: {
-        instructions: {
-          learnMoreUrl: 'https://blog.enkrypt.com/what-is-a-web3-wallet/',
-          steps: [
-            {
-              description:
-                'wallet_connectors.enkrypt.extension.step1.description',
-              step: 'install',
-              title: 'wallet_connectors.enkrypt.extension.step1.title',
-            },
-            {
-              description:
-                'wallet_connectors.enkrypt.extension.step2.description',
-              step: 'create',
-              title: 'wallet_connectors.enkrypt.extension.step2.title',
-            },
-            {
-              description:
-                'wallet_connectors.enkrypt.extension.step3.description',
-              step: 'refresh',
-              title: 'wallet_connectors.enkrypt.extension.step3.title',
-            },
-          ],
-        },
+export const enkryptWallet = (): Wallet => {
+  return {
+    id: 'enkrypt',
+    name: 'Enkrypt Wallet',
+    rdns: 'com.enkrypt',
+    installed: hasInjectedProvider({ namespace: 'enkrypt.providers.ethereum' }),
+    iconUrl: async () => (await import('./enkryptWallet.svg')).default,
+    iconBackground: '#FFFFFF',
+    downloadUrls: {
+      qrCode: 'https://www.enkrypt.com',
+      chrome:
+        'https://chrome.google.com/webstore/detail/enkrypt-ethereum-polkadot/kkpllkodjeloidieedojogacfhpaihoh',
+      browserExtension: 'https://www.enkrypt.com/',
+      edge: 'https://microsoftedge.microsoft.com/addons/detail/enkrypt-ethereum-polkad/gfenajajnjjmmdojhdjmnngomkhlnfjl',
+      firefox: 'https://addons.mozilla.org/en-US/firefox/addon/enkrypt/',
+      opera: 'https://addons.opera.com/en/extensions/details/enkrypt/',
+      safari: 'https://apps.apple.com/app/enkrypt-web3-wallet/id1640164309',
+    },
+    extension: {
+      instructions: {
+        learnMoreUrl: 'https://blog.enkrypt.com/what-is-a-web3-wallet/',
+        steps: [
+          {
+            description:
+              'wallet_connectors.enkrypt.extension.step1.description',
+            step: 'install',
+            title: 'wallet_connectors.enkrypt.extension.step1.title',
+          },
+          {
+            description:
+              'wallet_connectors.enkrypt.extension.step2.description',
+            step: 'create',
+            title: 'wallet_connectors.enkrypt.extension.step2.title',
+          },
+          {
+            description:
+              'wallet_connectors.enkrypt.extension.step3.description',
+            step: 'refresh',
+            title: 'wallet_connectors.enkrypt.extension.step3.title',
+          },
+        ],
       },
-    };
-  },
-});
+    },
+    createConnector: getInjectedConnector({
+      namespace: 'enkrypt.providers.ethereum',
+    }),
+  };
+};
diff --git a/packages/rainbowkit/src/wallets/walletConnectors/foxWallet/foxWallet.ts b/packages/rainbowkit/src/wallets/walletConnectors/foxWallet/foxWallet.ts
index 70f2b7e5dd..ca0a2caaf6 100644
--- a/packages/rainbowkit/src/wallets/walletConnectors/foxWallet/foxWallet.ts
+++ b/packages/rainbowkit/src/wallets/walletConnectors/foxWallet/foxWallet.ts
@@ -1,23 +1,15 @@
-import { Chain } from '../../../components/RainbowKitProvider/RainbowKitChainContext';
-import { getWalletConnectUri } from '../../../utils/getWalletConnectUri';
-import { Wallet } from '../../Wallet';
+import { DefaultWalletOptions, Wallet } from '../../Wallet';
 import {
   getInjectedConnector,
   hasInjectedProvider,
 } from '../../getInjectedConnector';
 import { getWalletConnectConnector } from '../../getWalletConnectConnector';
-import type { WalletConnectConnectorOptions } from '../../getWalletConnectConnector';
 
-export interface FoxWalletOptions {
-  projectId: string;
-  chains: Chain[];
-  walletConnectOptions?: WalletConnectConnectorOptions;
-}
+export type FoxWalletOptions = DefaultWalletOptions;
 
 export const foxWallet = ({
-  chains,
   projectId,
-  walletConnectOptions,
+  walletConnectParameters,
 }: FoxWalletOptions): Wallet => {
   const isFoxInjected = hasInjectedProvider({
     namespace: 'foxwallet.ethereum',
@@ -35,55 +27,44 @@ export const foxWallet = ({
       ios: 'https://apps.apple.com/app/foxwallet-crypto-web3/id1590983231',
       qrCode: 'https://foxwallet.com/download',
     },
-    createConnector: () => {
-      const connector = shouldUseWalletConnect
-        ? getWalletConnectConnector({
-            projectId,
-            chains,
-            options: walletConnectOptions,
-          })
-        : getInjectedConnector({ chains, namespace: 'foxwallet.ethereum' });
-
-      return {
-        connector,
-        mobile: {
-          getUri: shouldUseWalletConnect
-            ? async () => {
-                const uri = await getWalletConnectUri(connector);
-                return `foxwallet://wc?uri=${encodeURIComponent(uri)}`;
-              }
-            : undefined,
-        },
-        qrCode: shouldUseWalletConnect
-          ? {
-              getUri: async () => getWalletConnectUri(connector),
-              instructions: {
-                learnMoreUrl: 'https://foxwallet.com',
-                steps: [
-                  {
-                    description:
-                      'wallet_connectors.fox.qr_code.step1.description',
-                    step: 'install',
-                    title: 'wallet_connectors.fox.qr_code.step1.title',
-                  },
-                  {
-                    description:
-                      'wallet_connectors.fox.qr_code.step2.description',
+    mobile: {
+      getUri: shouldUseWalletConnect
+        ? (uri: string) => {
+            return `foxwallet://wc?uri=${encodeURIComponent(uri)}`;
+          }
+        : undefined,
+    },
+    qrCode: shouldUseWalletConnect
+      ? {
+          getUri: (uri: string) => uri,
+          instructions: {
+            learnMoreUrl: 'https://foxwallet.com',
+            steps: [
+              {
+                description: 'wallet_connectors.fox.qr_code.step1.description',
+                step: 'install',
+                title: 'wallet_connectors.fox.qr_code.step1.title',
+              },
+              {
+                description: 'wallet_connectors.fox.qr_code.step2.description',
 
-                    step: 'create',
-                    title: 'wallet_connectors.fox.qr_code.step2.title',
-                  },
-                  {
-                    description:
-                      'wallet_connectors.fox.qr_code.step3.description',
-                    step: 'scan',
-                    title: 'wallet_connectors.fox.qr_code.step3.title',
-                  },
-                ],
+                step: 'create',
+                title: 'wallet_connectors.fox.qr_code.step2.title',
               },
-            }
-          : undefined,
-      };
-    },
+              {
+                description: 'wallet_connectors.fox.qr_code.step3.description',
+                step: 'scan',
+                title: 'wallet_connectors.fox.qr_code.step3.title',
+              },
+            ],
+          },
+        }
+      : undefined,
+    createConnector: shouldUseWalletConnect
+      ? getWalletConnectConnector({
+          projectId,
+          walletConnectParameters,
+        })
+      : getInjectedConnector({ namespace: 'foxwallet.ethereum' }),
   };
 };
diff --git a/packages/rainbowkit/src/wallets/walletConnectors/frameWallet/frameWallet.ts b/packages/rainbowkit/src/wallets/walletConnectors/frameWallet/frameWallet.ts
index 8767bdeae8..292b43ccdb 100644
--- a/packages/rainbowkit/src/wallets/walletConnectors/frameWallet/frameWallet.ts
+++ b/packages/rainbowkit/src/wallets/walletConnectors/frameWallet/frameWallet.ts
@@ -1,15 +1,10 @@
-import { Chain } from '../../../components/RainbowKitProvider/RainbowKitChainContext';
 import { Wallet } from '../../Wallet';
 import {
   getInjectedConnector,
   hasInjectedProvider,
 } from '../../getInjectedConnector';
 
-export interface FrameWalletOptions {
-  chains: Chain[];
-}
-
-export const frameWallet = ({ chains }: FrameWalletOptions): Wallet => ({
+export const frameWallet = (): Wallet => ({
   id: 'frame',
   name: 'Frame',
   installed: hasInjectedProvider({ flag: 'isFrame' }),
@@ -18,30 +13,28 @@ export const frameWallet = ({ chains }: FrameWalletOptions): Wallet => ({
   downloadUrls: {
     browserExtension: 'https://frame.sh/',
   },
-  createConnector: () => ({
-    connector: getInjectedConnector({ chains, flag: 'isFrame' }),
-    extension: {
-      instructions: {
-        learnMoreUrl:
-          'https://docs.frame.sh/docs/Getting%20Started/Installation/',
-        steps: [
-          {
-            description: 'wallet_connectors.frame.extension.step1.description',
-            step: 'install',
-            title: 'wallet_connectors.frame.extension.step1.title',
-          },
-          {
-            description: 'wallet_connectors.frame.extension.step2.description',
-            step: 'create',
-            title: 'wallet_connectors.frame.extension.step2.title',
-          },
-          {
-            description: 'wallet_connectors.frame.extension.step3.description',
-            step: 'refresh',
-            title: 'wallet_connectors.frame.extension.step3.title',
-          },
-        ],
-      },
+  extension: {
+    instructions: {
+      learnMoreUrl:
+        'https://docs.frame.sh/docs/Getting%20Started/Installation/',
+      steps: [
+        {
+          description: 'wallet_connectors.frame.extension.step1.description',
+          step: 'install',
+          title: 'wallet_connectors.frame.extension.step1.title',
+        },
+        {
+          description: 'wallet_connectors.frame.extension.step2.description',
+          step: 'create',
+          title: 'wallet_connectors.frame.extension.step2.title',
+        },
+        {
+          description: 'wallet_connectors.frame.extension.step3.description',
+          step: 'refresh',
+          title: 'wallet_connectors.frame.extension.step3.title',
+        },
+      ],
     },
-  }),
+  },
+  createConnector: getInjectedConnector({ flag: 'isFrame' }),
 });
diff --git a/packages/rainbowkit/src/wallets/walletConnectors/frontierWallet/frontierWallet.ts b/packages/rainbowkit/src/wallets/walletConnectors/frontierWallet/frontierWallet.ts
index 72962f5afd..1282465bf3 100644
--- a/packages/rainbowkit/src/wallets/walletConnectors/frontierWallet/frontierWallet.ts
+++ b/packages/rainbowkit/src/wallets/walletConnectors/frontierWallet/frontierWallet.ts
@@ -1,24 +1,17 @@
-import type { Chain } from '../../../components/RainbowKitProvider/RainbowKitChainContext';
-import { getWalletConnectUri } from '../../../utils/getWalletConnectUri';
 import { isAndroid } from '../../../utils/isMobile';
 import type { Wallet } from '../../Wallet';
 import {
   getInjectedConnector,
   hasInjectedProvider,
 } from '../../getInjectedConnector';
-import type { WalletConnectConnectorOptions } from '../../getWalletConnectConnector';
 import { getWalletConnectConnector } from '../../getWalletConnectConnector';
+import { DefaultWalletOptions } from './../../Wallet';
 
-export interface FrontierWalletOptions {
-  projectId: string;
-  chains: Chain[];
-  walletConnectOptions?: WalletConnectConnectorOptions;
-}
+export type FrontierWalletOptions = DefaultWalletOptions;
 
 export const frontierWallet = ({
-  chains,
   projectId,
-  walletConnectOptions,
+  walletConnectParameters,
 }: FrontierWalletOptions): Wallet => {
   const isFrontierInjected = hasInjectedProvider({
     namespace: 'frontier.ethereum',
@@ -28,6 +21,7 @@ export const frontierWallet = ({
   return {
     id: 'frontier',
     name: 'Frontier Wallet',
+    rdns: 'xyz.frontier.wallet',
     installed: isFrontierInjected,
     iconUrl: async () => (await import('./frontierWallet.svg')).default,
     iconBackground: '#CC703C',
@@ -40,84 +34,79 @@ export const frontierWallet = ({
         'https://chrome.google.com/webstore/detail/frontier-wallet/kppfdiipphfccemcignhifpjkapfbihd',
       browserExtension: 'https://www.frontier.xyz/download',
     },
-    createConnector: () => {
-      const connector = shouldUseWalletConnect
-        ? getWalletConnectConnector({
-            chains,
-            projectId,
-            options: walletConnectOptions,
-          })
-        : undefined;
-      const getUri = async () => {
-        const uri = await getWalletConnectUri(connector);
-        return isAndroid()
-          ? `frontier://wc?uri=${encodeURIComponent(uri)}`
-          : uri;
-      };
-      return {
-        connector: getInjectedConnector({
-          chains,
-          namespace: 'frontier.ethereum',
-          flag: 'isFrontier',
-        }),
-        mobile: {
-          getUri: shouldUseWalletConnect ? getUri : undefined,
-        },
-        qrCode: shouldUseWalletConnect
-          ? {
-              getUri,
-              instructions: {
-                learnMoreUrl: 'https://help.frontier.xyz/en/',
-                steps: [
-                  {
-                    description:
-                      'wallet_connectors.im_token.qr_code.step1.description',
-                    step: 'install',
-                    title: 'wallet_connectors.im_token.qr_code.step1.title',
-                  },
-                  {
-                    description:
-                      'wallet_connectors.im_token.qr_code.step2.description',
-                    step: 'create',
-                    title: 'wallet_connectors.im_token.qr_code.step2.title',
-                  },
-                  {
-                    description:
-                      'wallet_connectors.im_token.qr_code.step3.description',
-                    step: 'scan',
-                    title: 'wallet_connectors.im_token.qr_code.step3.title',
-                  },
-                ],
-              },
-            }
-          : undefined,
-        extension: {
+
+    mobile: {
+      getUri: shouldUseWalletConnect
+        ? (uri: string) => {
+            return isAndroid()
+              ? `frontier://wc?uri=${encodeURIComponent(uri)}`
+              : uri;
+          }
+        : undefined,
+    },
+    qrCode: shouldUseWalletConnect
+      ? {
+          getUri: (uri: string) => {
+            return isAndroid()
+              ? `frontier://wc?uri=${encodeURIComponent(uri)}`
+              : uri;
+          },
           instructions: {
-            learnMoreUrl:
-              'https://help.frontier.xyz/en/articles/6967236-setting-up-frontier-on-your-device',
+            learnMoreUrl: 'https://help.frontier.xyz/en/',
             steps: [
               {
                 description:
-                  'wallet_connectors.frontier.extension.step1.description',
+                  'wallet_connectors.im_token.qr_code.step1.description',
                 step: 'install',
-                title: 'wallet_connectors.frontier.extension.step1.title',
+                title: 'wallet_connectors.im_token.qr_code.step1.title',
               },
               {
                 description:
-                  'wallet_connectors.frontier.extension.step2.description',
+                  'wallet_connectors.im_token.qr_code.step2.description',
                 step: 'create',
-                title: 'wallet_connectors.frontier.extension.step2.title',
+                title: 'wallet_connectors.im_token.qr_code.step2.title',
               },
               {
                 description:
-                  'wallet_connectors.frontier.extension.step3.description',
-                step: 'refresh',
-                title: 'wallet_connectors.frontier.extension.step3.title',
+                  'wallet_connectors.im_token.qr_code.step3.description',
+                step: 'scan',
+                title: 'wallet_connectors.im_token.qr_code.step3.title',
               },
             ],
           },
-        },
-      };
+        }
+      : undefined,
+    extension: {
+      instructions: {
+        learnMoreUrl:
+          'https://help.frontier.xyz/en/articles/6967236-setting-up-frontier-on-your-device',
+        steps: [
+          {
+            description:
+              'wallet_connectors.frontier.extension.step1.description',
+            step: 'install',
+            title: 'wallet_connectors.frontier.extension.step1.title',
+          },
+          {
+            description:
+              'wallet_connectors.frontier.extension.step2.description',
+            step: 'create',
+            title: 'wallet_connectors.frontier.extension.step2.title',
+          },
+          {
+            description:
+              'wallet_connectors.frontier.extension.step3.description',
+            step: 'refresh',
+            title: 'wallet_connectors.frontier.extension.step3.title',
+          },
+        ],
+      },
     },
+    createConnector: shouldUseWalletConnect
+      ? getWalletConnectConnector({ projectId, walletConnectParameters })
+      : getInjectedConnector({
+          namespace: 'frontier.ethereum',
+          flag: 'isFrontier',
+        }),
   };
 };
diff --git a/packages/rainbowkit/src/wallets/walletConnectors/imTokenWallet/imTokenWallet.ts b/packages/rainbowkit/src/wallets/walletConnectors/imTokenWallet/imTokenWallet.ts
index ceb9ea2d40..e07783f0d8 100644
--- a/packages/rainbowkit/src/wallets/walletConnectors/imTokenWallet/imTokenWallet.ts
+++ b/packages/rainbowkit/src/wallets/walletConnectors/imTokenWallet/imTokenWallet.ts
@@ -1,19 +1,11 @@
-import { Chain } from '../../../components/RainbowKitProvider/RainbowKitChainContext';
-import { getWalletConnectUri } from '../../../utils/getWalletConnectUri';
-import { Wallet } from '../../Wallet';
+import { DefaultWalletOptions, Wallet } from '../../Wallet';
 import { getWalletConnectConnector } from '../../getWalletConnectConnector';
-import type { WalletConnectConnectorOptions } from '../../getWalletConnectConnector';
 
-export interface ImTokenWalletOptions {
-  projectId: string;
-  chains: Chain[];
-  walletConnectOptions?: WalletConnectConnectorOptions;
-}
+export type ImTokenWalletOptions = DefaultWalletOptions;
 
 export const imTokenWallet = ({
-  chains,
   projectId,
-  walletConnectOptions,
+  walletConnectParameters,
 }: ImTokenWalletOptions): Wallet => ({
   id: 'imToken',
   name: 'imToken',
@@ -25,51 +17,40 @@ export const imTokenWallet = ({
     mobile: 'https://token.im/download',
     qrCode: 'https://token.im/download',
   },
-  createConnector: () => {
-    const connector = getWalletConnectConnector({
-      projectId,
-      chains,
-      options: walletConnectOptions,
-    });
-
-    return {
-      connector,
-      mobile: {
-        getUri: async () => {
-          const uri = await getWalletConnectUri(connector);
-          return `imtokenv2://wc?uri=${encodeURIComponent(uri)}`;
+  mobile: {
+    getUri: (uri: string) => {
+      return `imtokenv2://wc?uri=${encodeURIComponent(uri)}`;
+    },
+  },
+  qrCode: {
+    getUri: (uri: string) => uri,
+    instructions: {
+      learnMoreUrl:
+        typeof window !== 'undefined' &&
+        window.navigator.language.includes('zh')
+          ? 'https://support.token.im/hc/zh-cn/categories/360000925393'
+          : 'https://support.token.im/hc/en-us/categories/360000925393',
+      steps: [
+        {
+          description: 'wallet_connectors.im_token.qr_code.step1.description',
+          step: 'install',
+          title: 'wallet_connectors.im_token.qr_code.step1.title',
+        },
+        {
+          description: 'wallet_connectors.im_token.qr_code.step2.description',
+          step: 'create',
+          title: 'wallet_connectors.im_token.qr_code.step2.title',
         },
-      },
-      qrCode: {
-        getUri: async () => getWalletConnectUri(connector),
-        instructions: {
-          learnMoreUrl:
-            typeof window !== 'undefined' &&
-            window.navigator.language.includes('zh')
-              ? 'https://support.token.im/hc/zh-cn/categories/360000925393'
-              : 'https://support.token.im/hc/en-us/categories/360000925393',
-          steps: [
-            {
-              description:
-                'wallet_connectors.im_token.qr_code.step1.description',
-              step: 'install',
-              title: 'wallet_connectors.im_token.qr_code.step1.title',
-            },
-            {
-              description:
-                'wallet_connectors.im_token.qr_code.step2.description',
-              step: 'create',
-              title: 'wallet_connectors.im_token.qr_code.step2.title',
-            },
-            {
-              description:
-                'wallet_connectors.im_token.qr_code.step3.description',
-              step: 'scan',
-              title: 'wallet_connectors.im_token.qr_code.step3.title',
-            },
-          ],
+        {
+          description: 'wallet_connectors.im_token.qr_code.step3.description',
+          step: 'scan',
+          title: 'wallet_connectors.im_token.qr_code.step3.title',
         },
-      },
-    };
+      ],
+    },
   },
+  createConnector: getWalletConnectConnector({
+    projectId,
+    walletConnectParameters,
+  }),
 });
diff --git a/packages/rainbowkit/src/wallets/walletConnectors/index.ts b/packages/rainbowkit/src/wallets/walletConnectors/index.ts
index 083e7a16b1..214f693809 100644
--- a/packages/rainbowkit/src/wallets/walletConnectors/index.ts
+++ b/packages/rainbowkit/src/wallets/walletConnectors/index.ts
@@ -13,6 +13,7 @@ import { foxWallet } from './foxWallet/foxWallet';
 import { frameWallet } from './frameWallet/frameWallet';
 import { frontierWallet } from './frontierWallet/frontierWallet';
 import { imTokenWallet } from './imTokenWallet/imTokenWallet';
+import { injectedWallet } from './injectedWallet/injectedWallet';
 import { ledgerWallet } from './ledgerWallet/ledgerWallet';
 import { metaMaskWallet } from './metaMaskWallet/metaMaskWallet';
 import { mewWallet } from './mewWallet/mewWallet';
@@ -76,4 +77,5 @@ export {
   xdefiWallet,
   zealWallet,
   zerionWallet,
+  injectedWallet,
 };
diff --git a/packages/rainbowkit/src/wallets/walletConnectors/browserWallet/browserWallet.svg b/packages/rainbowkit/src/wallets/walletConnectors/injectedWallet/injectedWallet.svg
similarity index 100%
rename from packages/rainbowkit/src/wallets/walletConnectors/browserWallet/browserWallet.svg
rename to packages/rainbowkit/src/wallets/walletConnectors/injectedWallet/injectedWallet.svg
diff --git a/packages/rainbowkit/src/wallets/walletConnectors/injectedWallet/injectedWallet.ts b/packages/rainbowkit/src/wallets/walletConnectors/injectedWallet/injectedWallet.ts
new file mode 100644
index 0000000000..f59c8d35f7
--- /dev/null
+++ b/packages/rainbowkit/src/wallets/walletConnectors/injectedWallet/injectedWallet.ts
@@ -0,0 +1,10 @@
+import { Wallet } from '../../Wallet';
+import { getInjectedConnector } from '../../getInjectedConnector';
+
+export const injectedWallet = (): Wallet => ({
+  id: 'injected',
+  name: 'Browser Wallet',
+  iconUrl: async () => (await import('./injectedWallet.svg')).default,
+  iconBackground: '#fff',
+  createConnector: getInjectedConnector({}),
+});
diff --git a/packages/rainbowkit/src/wallets/walletConnectors/ledgerWallet/ledgerWallet.ts b/packages/rainbowkit/src/wallets/walletConnectors/ledgerWallet/ledgerWallet.ts
index ec21f3b527..ca16e9fa39 100644
--- a/packages/rainbowkit/src/wallets/walletConnectors/ledgerWallet/ledgerWallet.ts
+++ b/packages/rainbowkit/src/wallets/walletConnectors/ledgerWallet/ledgerWallet.ts
@@ -1,20 +1,12 @@
-import { Chain } from '../../../components/RainbowKitProvider/RainbowKitChainContext';
-import { getWalletConnectUri } from '../../../utils/getWalletConnectUri';
 import { isAndroid } from '../../../utils/isMobile';
-import { Wallet } from '../../Wallet';
+import { DefaultWalletOptions, Wallet } from '../../Wallet';
 import { getWalletConnectConnector } from '../../getWalletConnectConnector';
-import type { WalletConnectConnectorOptions } from '../../getWalletConnectConnector';
 
-export interface LedgerWalletOptions {
-  projectId: string;
-  chains: Chain[];
-  walletConnectOptions?: WalletConnectConnectorOptions;
-}
+export type LedgerWalletOptions = DefaultWalletOptions;
 
 export const ledgerWallet = ({
-  chains,
   projectId,
-  walletConnectOptions,
+  walletConnectParameters,
 }: LedgerWalletOptions): Wallet => ({
   id: 'ledger',
   iconBackground: '#000',
@@ -31,77 +23,67 @@ export const ledgerWallet = ({
     linux: 'https://www.ledger.com/ledger-live/download',
     desktop: 'https://www.ledger.com/ledger-live',
   },
-  createConnector: () => {
-    const connector = getWalletConnectConnector({
-      projectId,
-      chains,
-      options: walletConnectOptions,
-    });
-
-    return {
-      connector,
-      mobile: {
-        getUri: async () => {
-          const uri = await getWalletConnectUri(connector);
-          return isAndroid()
-            ? uri
-            : `ledgerlive://wc?uri=${encodeURIComponent(uri)}`;
+  mobile: {
+    getUri: (uri: string) => {
+      return isAndroid()
+        ? uri
+        : `ledgerlive://wc?uri=${encodeURIComponent(uri)}`;
+    },
+  },
+  desktop: {
+    getUri: (uri: string) => {
+      return `ledgerlive://wc?uri=${encodeURIComponent(uri)}`;
+    },
+    instructions: {
+      learnMoreUrl:
+        'https://support.ledger.com/hc/en-us/articles/4404389503889-Getting-started-with-Ledger-Live',
+      steps: [
+        {
+          description: 'wallet_connectors.ledger.desktop.step1.description',
+          step: 'install',
+          title: 'wallet_connectors.ledger.desktop.step1.title',
         },
-      },
-      desktop: {
-        getUri: async () => {
-          const uri = await getWalletConnectUri(connector);
-          return `ledgerlive://wc?uri=${encodeURIComponent(uri)}`;
+        {
+          description: 'wallet_connectors.ledger.desktop.step2.description',
+          step: 'create',
+          title: 'wallet_connectors.ledger.desktop.step2.title',
         },
-        instructions: {
-          learnMoreUrl:
-            'https://support.ledger.com/hc/en-us/articles/4404389503889-Getting-started-with-Ledger-Live',
-          steps: [
-            {
-              description: 'wallet_connectors.ledger.desktop.step1.description',
-              step: 'install',
-              title: 'wallet_connectors.ledger.desktop.step1.title',
-            },
-            {
-              description: 'wallet_connectors.ledger.desktop.step2.description',
-              step: 'create',
-              title: 'wallet_connectors.ledger.desktop.step2.title',
-            },
-            {
-              description: 'wallet_connectors.ledger.desktop.step3.description',
-              step: 'connect',
-              title: 'wallet_connectors.ledger.desktop.step3.title',
-            },
-          ],
+        {
+          description: 'wallet_connectors.ledger.desktop.step3.description',
+          step: 'connect',
+          title: 'wallet_connectors.ledger.desktop.step3.title',
+        },
+      ],
+    },
+  },
+  qrCode: {
+    getUri: (uri: string) => {
+      return `ledgerlive://wc?uri=${encodeURIComponent(uri)}`;
+    },
+    instructions: {
+      learnMoreUrl:
+        'https://support.ledger.com/hc/en-us/articles/4404389503889-Getting-started-with-Ledger-Live',
+      steps: [
+        {
+          description: 'wallet_connectors.ledger.qr_code.step1.description',
+          step: 'install',
+          title: 'wallet_connectors.ledger.qr_code.step1.title',
         },
-      },
-      qrCode: {
-        getUri: async () => {
-          const uri = await getWalletConnectUri(connector);
-          return `ledgerlive://wc?uri=${encodeURIComponent(uri)}`;
+        {
+          description: 'wallet_connectors.ledger.qr_code.step2.description',
+          step: 'create',
+          title: 'wallet_connectors.ledger.qr_code.step2.title',
         },
-        instructions: {
-          learnMoreUrl:
-            'https://support.ledger.com/hc/en-us/articles/4404389503889-Getting-started-with-Ledger-Live',
-          steps: [
-            {
-              description: 'wallet_connectors.ledger.qr_code.step1.description',
-              step: 'install',
-              title: 'wallet_connectors.ledger.qr_code.step1.title',
-            },
-            {
-              description: 'wallet_connectors.ledger.qr_code.step2.description',
-              step: 'create',
-              title: 'wallet_connectors.ledger.qr_code.step2.title',
-            },
-            {
-              description: 'wallet_connectors.ledger.qr_code.step3.description',
-              step: 'scan',
-              title: 'wallet_connectors.ledger.qr_code.step3.title',
-            },
-          ],
+        {
+          description: 'wallet_connectors.ledger.qr_code.step3.description',
+          step: 'scan',
+          title: 'wallet_connectors.ledger.qr_code.step3.title',
         },
-      },
-    };
+      ],
+    },
   },
+  createConnector: getWalletConnectConnector({
+    projectId,
+    walletConnectParameters,
+  }),
 });
diff --git a/packages/rainbowkit/src/wallets/walletConnectors/metaMaskWallet/metaMaskWallet.ts b/packages/rainbowkit/src/wallets/walletConnectors/metaMaskWallet/metaMaskWallet.ts
index 726a11065a..b2bfef01bb 100644
--- a/packages/rainbowkit/src/wallets/walletConnectors/metaMaskWallet/metaMaskWallet.ts
+++ b/packages/rainbowkit/src/wallets/walletConnectors/metaMaskWallet/metaMaskWallet.ts
@@ -1,19 +1,12 @@
-import { Chain } from '../../../components/RainbowKitProvider/RainbowKitChainContext';
-import { getWalletConnectUri } from '../../../utils/getWalletConnectUri';
 import { isAndroid, isIOS } from '../../../utils/isMobile';
-import { Wallet } from '../../Wallet';
+import { DefaultWalletOptions, Wallet } from '../../Wallet';
 import {
   getInjectedConnector,
   hasInjectedProvider,
 } from '../../getInjectedConnector';
 import { getWalletConnectConnector } from '../../getWalletConnectConnector';
-import type { WalletConnectConnectorOptions } from '../../getWalletConnectConnector';
 
-export interface MetaMaskWalletOptions {
-  projectId: string;
-  chains: Chain[];
-  walletConnectOptions?: WalletConnectConnectorOptions;
-}
+export type MetaMaskWalletOptions = DefaultWalletOptions;
 
 function isMetaMask(ethereum?: (typeof window)['ethereum']): boolean {
   // Logic borrowed from wagmi's MetaMaskConnector
@@ -62,9 +55,8 @@ function isMetaMask(ethereum?: (typeof window)['ethereum']): boolean {
 }
 
 export const metaMaskWallet = ({
-  chains,
   projectId,
-  walletConnectOptions,
+  walletConnectParameters,
 }: MetaMaskWalletOptions): Wallet => {
   // Not using the explicit isMetaMask fn to check for MetaMask
   // so that users can continue to use the MetaMask button
@@ -74,9 +66,19 @@ export const metaMaskWallet = ({
   const isMetaMaskInjected = hasInjectedProvider({ flag: 'isMetaMask' });
   const shouldUseWalletConnect = !isMetaMaskInjected;
 
+  const getUri = (uri: string) => {
+    return isAndroid()
+      ? uri
+      : isIOS()
+        ? // currently broken in MetaMask v6.5.0 https://github.com/MetaMask/metamask-mobile/issues/6457
+          `metamask://wc?uri=${encodeURIComponent(uri)}`
+        : `https://metamask.app.link/wc?uri=${encodeURIComponent(uri)}`;
+  };
+
   return {
     id: 'metaMask',
     name: 'MetaMask',
+    rdns: 'io.metamask',
     iconUrl: async () => (await import('./metaMaskWallet.svg')).default,
     iconAccent: '#f6851a',
     iconBackground: '#fff',
@@ -93,92 +95,73 @@ export const metaMaskWallet = ({
       opera: 'https://addons.opera.com/extensions/details/metamask-10',
       browserExtension: 'https://metamask.io/download',
     },
-    createConnector: () => {
-      const connector = shouldUseWalletConnect
-        ? getWalletConnectConnector({
-            projectId,
-            chains,
-            options: walletConnectOptions,
-          })
-        : getInjectedConnector({
-            chains,
-            // custom handling for metamask button fallback for third party wallets
-            getProvider: () =>
-              typeof window !== 'undefined'
-                ? window.ethereum?.providers?.find(isMetaMask) ??
-                  window.ethereum
-                : undefined,
-          });
 
-      const getUri = async () => {
-        const uri = await getWalletConnectUri(connector);
-        return isAndroid()
-          ? uri
-          : isIOS()
-            ? // currently broken in MetaMask v6.5.0 https://github.com/MetaMask/metamask-mobile/issues/6457
-              `metamask://wc?uri=${encodeURIComponent(uri)}`
-            : `https://metamask.app.link/wc?uri=${encodeURIComponent(uri)}`;
-      };
-
-      return {
-        connector,
-        mobile: {
-          getUri: shouldUseWalletConnect ? getUri : undefined,
-        },
-        qrCode: shouldUseWalletConnect
-          ? {
-              getUri,
-              instructions: {
-                learnMoreUrl: 'https://metamask.io/faqs/',
-                steps: [
-                  {
-                    description:
-                      'wallet_connectors.metamask.qr_code.step1.description',
-                    step: 'install',
-                    title: 'wallet_connectors.metamask.qr_code.step1.title',
-                  },
-                  {
-                    description:
-                      'wallet_connectors.metamask.qr_code.step2.description',
-                    step: 'create',
-                    title: 'wallet_connectors.metamask.qr_code.step2.title',
-                  },
-                  {
-                    description:
-                      'wallet_connectors.metamask.qr_code.step3.description',
-                    step: 'refresh',
-                    title: 'wallet_connectors.metamask.qr_code.step3.title',
-                  },
-                ],
-              },
-            }
-          : undefined,
-        extension: {
+    mobile: {
+      getUri: shouldUseWalletConnect ? getUri : undefined,
+    },
+    qrCode: shouldUseWalletConnect
+      ? {
+          getUri,
           instructions: {
             learnMoreUrl: 'https://metamask.io/faqs/',
             steps: [
               {
                 description:
-                  'wallet_connectors.metamask.extension.step1.description',
+                  'wallet_connectors.metamask.qr_code.step1.description',
                 step: 'install',
-                title: 'wallet_connectors.metamask.extension.step1.title',
+                title: 'wallet_connectors.metamask.qr_code.step1.title',
               },
               {
                 description:
-                  'wallet_connectors.metamask.extension.step2.description',
+                  'wallet_connectors.metamask.qr_code.step2.description',
                 step: 'create',
-                title: 'wallet_connectors.metamask.extension.step2.title',
+                title: 'wallet_connectors.metamask.qr_code.step2.title',
               },
               {
                 description:
-                  'wallet_connectors.metamask.extension.step3.description',
+                  'wallet_connectors.metamask.qr_code.step3.description',
                 step: 'refresh',
-                title: 'wallet_connectors.metamask.extension.step3.title',
+                title: 'wallet_connectors.metamask.qr_code.step3.title',
               },
             ],
           },
-        },
-      };
+        }
+      : undefined,
+    extension: {
+      instructions: {
+        learnMoreUrl: 'https://metamask.io/faqs/',
+        steps: [
+          {
+            description:
+              'wallet_connectors.metamask.extension.step1.description',
+            step: 'install',
+            title: 'wallet_connectors.metamask.extension.step1.title',
+          },
+          {
+            description:
+              'wallet_connectors.metamask.extension.step2.description',
+            step: 'create',
+            title: 'wallet_connectors.metamask.extension.step2.title',
+          },
+          {
+            description:
+              'wallet_connectors.metamask.extension.step3.description',
+            step: 'refresh',
+            title: 'wallet_connectors.metamask.extension.step3.title',
+          },
+        ],
+      },
     },
+    createConnector: shouldUseWalletConnect
+      ? getWalletConnectConnector({
+          projectId,
+          walletConnectParameters,
+        })
+      : getInjectedConnector({
+          target:
+            typeof window !== 'undefined'
+              ? window.ethereum?.providers?.find(isMetaMask) ?? window.ethereum
+              : undefined,
+        }),
   };
 };
diff --git a/packages/rainbowkit/src/wallets/walletConnectors/mewWallet/mewWallet.ts b/packages/rainbowkit/src/wallets/walletConnectors/mewWallet/mewWallet.ts
index 10d854865c..e2cf106548 100644
--- a/packages/rainbowkit/src/wallets/walletConnectors/mewWallet/mewWallet.ts
+++ b/packages/rainbowkit/src/wallets/walletConnectors/mewWallet/mewWallet.ts
@@ -1,15 +1,10 @@
-import { Chain } from '../../../components/RainbowKitProvider/RainbowKitChainContext';
 import { Wallet } from '../../Wallet';
 import {
   getInjectedConnector,
   hasInjectedProvider,
 } from '../../getInjectedConnector';
 
-export interface MewWalletOptions {
-  chains: Chain[];
-}
-
-export const mewWallet = ({ chains }: MewWalletOptions): Wallet => {
+export const mewWallet = (): Wallet => {
   return {
     id: 'mew',
     name: 'MEW wallet',
@@ -23,10 +18,6 @@ export const mewWallet = ({ chains }: MewWalletOptions): Wallet => {
       mobile: 'https://mewwallet.com',
       qrCode: 'https://mewwallet.com',
     },
-    createConnector: () => {
-      return {
-        connector: getInjectedConnector({ chains, flag: 'isMEWwallet' }),
-      };
-    },
+    createConnector: getInjectedConnector({ flag: 'isMEWwallet' }),
   };
 };
diff --git a/packages/rainbowkit/src/wallets/walletConnectors/oktoWallet/oktoWallet.ts b/packages/rainbowkit/src/wallets/walletConnectors/oktoWallet/oktoWallet.ts
index 911738ba3a..cfdbca3c13 100644
--- a/packages/rainbowkit/src/wallets/walletConnectors/oktoWallet/oktoWallet.ts
+++ b/packages/rainbowkit/src/wallets/walletConnectors/oktoWallet/oktoWallet.ts
@@ -1,20 +1,12 @@
-import { Chain } from '../../../components/RainbowKitProvider/RainbowKitChainContext';
-import { getWalletConnectUri } from '../../../utils/getWalletConnectUri';
 import { isAndroid } from '../../../utils/isMobile';
-import { Wallet } from '../../Wallet';
+import { DefaultWalletOptions, Wallet } from '../../Wallet';
 import { getWalletConnectConnector } from '../../getWalletConnectConnector';
-import type { WalletConnectConnectorOptions } from '../../getWalletConnectConnector';
 
-export interface OktoWalletOptions {
-  projectId: string;
-  chains: Chain[];
-  walletConnectOptions?: WalletConnectConnectorOptions;
-}
+export type OktoWalletOptions = DefaultWalletOptions;
 
 export const oktoWallet = ({
-  chains,
   projectId,
-  walletConnectOptions,
+  walletConnectParameters,
 }: OktoWalletOptions): Wallet => ({
   id: 'Okto',
   name: 'Okto',
@@ -27,44 +19,36 @@ export const oktoWallet = ({
     mobile: 'https://okto.tech/',
     qrCode: 'https://okto.tech/',
   },
-  createConnector: () => {
-    const connector = getWalletConnectConnector({
-      projectId,
-      chains,
-      options: walletConnectOptions,
-    });
-
-    return {
-      connector,
-      mobile: {
-        getUri: async () => {
-          const uri = await getWalletConnectUri(connector);
-          return isAndroid() ? uri : `okto://wc?uri=${encodeURIComponent(uri)}`;
+  mobile: {
+    getUri: (uri: string) => {
+      return isAndroid() ? uri : `okto://wc?uri=${encodeURIComponent(uri)}`;
+    },
+  },
+  qrCode: {
+    getUri: (uri: string) => uri,
+    instructions: {
+      learnMoreUrl: 'https://okto.tech/',
+      steps: [
+        {
+          description: 'wallet_connectors.okto.qr_code.step1.description',
+          step: 'install',
+          title: 'wallet_connectors.okto.qr_code.step1.title',
+        },
+        {
+          description: 'wallet_connectors.okto.qr_code.step2.description',
+          step: 'create',
+          title: 'wallet_connectors.okto.qr_code.step2.title',
         },
-      },
-      qrCode: {
-        getUri: async () => getWalletConnectUri(connector),
-        instructions: {
-          learnMoreUrl: 'https://okto.tech/',
-          steps: [
-            {
-              description: 'wallet_connectors.okto.qr_code.step1.description',
-              step: 'install',
-              title: 'wallet_connectors.okto.qr_code.step1.title',
-            },
-            {
-              description: 'wallet_connectors.okto.qr_code.step2.description',
-              step: 'create',
-              title: 'wallet_connectors.okto.qr_code.step2.title',
-            },
-            {
-              description: 'wallet_connectors.okto.qr_code.step3.description',
-              step: 'scan',
-              title: 'wallet_connectors.okto.qr_code.step3.title',
-            },
-          ],
+        {
+          description: 'wallet_connectors.okto.qr_code.step3.description',
+          step: 'scan',
+          title: 'wallet_connectors.okto.qr_code.step3.title',
         },
-      },
-    };
+      ],
+    },
   },
+  createConnector: getWalletConnectConnector({
+    projectId,
+    walletConnectParameters,
+  }),
 });
diff --git a/packages/rainbowkit/src/wallets/walletConnectors/okxWallet/okxWallet.ts b/packages/rainbowkit/src/wallets/walletConnectors/okxWallet/okxWallet.ts
index 3608d16de5..5f793342dd 100644
--- a/packages/rainbowkit/src/wallets/walletConnectors/okxWallet/okxWallet.ts
+++ b/packages/rainbowkit/src/wallets/walletConnectors/okxWallet/okxWallet.ts
@@ -1,24 +1,16 @@
-import { Chain } from '../../../components/RainbowKitProvider/RainbowKitChainContext';
-import { getWalletConnectUri } from '../../../utils/getWalletConnectUri';
 import { isAndroid } from '../../../utils/isMobile';
-import { Wallet } from '../../Wallet';
+import { DefaultWalletOptions, Wallet } from '../../Wallet';
 import {
   getInjectedConnector,
   hasInjectedProvider,
 } from '../../getInjectedConnector';
 import { getWalletConnectConnector } from '../../getWalletConnectConnector';
-import type { WalletConnectConnectorOptions } from '../../getWalletConnectConnector';
 
-export interface OKXWalletOptions {
-  projectId: string;
-  chains: Chain[];
-  walletConnectOptions?: WalletConnectConnectorOptions;
-}
+export type OKXWalletOptions = DefaultWalletOptions;
 
 export const okxWallet = ({
-  chains,
   projectId,
-  walletConnectOptions,
+  walletConnectParameters,
 }: OKXWalletOptions): Wallet => {
   const isOKXInjected = hasInjectedProvider({ namespace: 'okxwallet' });
   const shouldUseWalletConnect = !isOKXInjected;
@@ -26,6 +18,7 @@ export const okxWallet = ({
   return {
     id: 'okx',
     name: 'OKX Wallet',
+    rdns: 'com.okex.wallet',
     iconUrl: async () => (await import('./okxWallet.svg')).default,
     iconAccent: '#000',
     iconBackground: '#000',
@@ -41,81 +34,68 @@ export const okxWallet = ({
       firefox: 'https://addons.mozilla.org/firefox/addon/okexwallet/',
       browserExtension: 'https://okx.com/download',
     },
-    createConnector: () => {
-      const connector = shouldUseWalletConnect
-        ? getWalletConnectConnector({
-            projectId,
-            chains,
-            options: walletConnectOptions,
-          })
-        : getInjectedConnector({ chains, namespace: 'okxwallet' });
-
-      return {
-        connector,
-        mobile: {
-          getUri: shouldUseWalletConnect
-            ? async () => {
-                const uri = await getWalletConnectUri(connector);
-                return isAndroid()
-                  ? uri
-                  : `okex://main/wc?uri=${encodeURIComponent(uri)}`;
-              }
-            : undefined,
-        },
-        qrCode: shouldUseWalletConnect
-          ? {
-              getUri: async () => getWalletConnectUri(connector),
-              instructions: {
-                learnMoreUrl: 'https://okx.com/web3/',
-                steps: [
-                  {
-                    description:
-                      'wallet_connectors.okx.qr_code.step1.description',
-                    step: 'install',
-                    title: 'wallet_connectors.okx.qr_code.step1.title',
-                  },
-                  {
-                    description:
-                      'wallet_connectors.okx.qr_code.step2.description',
-                    step: 'create',
-                    title: 'wallet_connectors.okx.qr_code.step2.title',
-                  },
-                  {
-                    description:
-                      'wallet_connectors.okx.qr_code.step3.description',
-                    step: 'scan',
-                    title: 'wallet_connectors.okx.qr_code.step3.title',
-                  },
-                ],
-              },
-            }
-          : undefined,
-        extension: {
+    mobile: {
+      getUri: shouldUseWalletConnect
+        ? (uri: string) => {
+            return isAndroid()
+              ? uri
+              : `okex://main/wc?uri=${encodeURIComponent(uri)}`;
+          }
+        : undefined,
+    },
+    qrCode: shouldUseWalletConnect
+      ? {
+          getUri: (uri: string) => uri,
           instructions: {
             learnMoreUrl: 'https://okx.com/web3/',
             steps: [
               {
-                description:
-                  'wallet_connectors.okx.extension.step1.description',
+                description: 'wallet_connectors.okx.qr_code.step1.description',
                 step: 'install',
-                title: 'wallet_connectors.okx.extension.step1.title',
+                title: 'wallet_connectors.okx.qr_code.step1.title',
               },
               {
-                description:
-                  'wallet_connectors.okx.extension.step2.description',
+                description: 'wallet_connectors.okx.qr_code.step2.description',
                 step: 'create',
-                title: 'wallet_connectors.okx.extension.step2.title',
+                title: 'wallet_connectors.okx.qr_code.step2.title',
               },
               {
-                description:
-                  'wallet_connectors.okx.extension.step3.description',
-                step: 'refresh',
-                title: 'wallet_connectors.okx.extension.step3.title',
+                description: 'wallet_connectors.okx.qr_code.step3.description',
+                step: 'scan',
+                title: 'wallet_connectors.okx.qr_code.step3.title',
               },
             ],
           },
-        },
-      };
+        }
+      : undefined,
+    extension: {
+      instructions: {
+        learnMoreUrl: 'https://okx.com/web3/',
+        steps: [
+          {
+            description: 'wallet_connectors.okx.extension.step1.description',
+            step: 'install',
+            title: 'wallet_connectors.okx.extension.step1.title',
+          },
+          {
+            description: 'wallet_connectors.okx.extension.step2.description',
+            step: 'create',
+            title: 'wallet_connectors.okx.extension.step2.title',
+          },
+          {
+            description: 'wallet_connectors.okx.extension.step3.description',
+            step: 'refresh',
+            title: 'wallet_connectors.okx.extension.step3.title',
+          },
+        ],
+      },
     },
+
+    createConnector: shouldUseWalletConnect
+      ? getWalletConnectConnector({
+          projectId,
+          walletConnectParameters,
+        })
+      : getInjectedConnector({ namespace: 'okxwallet' }),
   };
 };
diff --git a/packages/rainbowkit/src/wallets/walletConnectors/omniWallet/omniWallet.ts b/packages/rainbowkit/src/wallets/walletConnectors/omniWallet/omniWallet.ts
index 8f9a1bb523..35d1688406 100644
--- a/packages/rainbowkit/src/wallets/walletConnectors/omniWallet/omniWallet.ts
+++ b/packages/rainbowkit/src/wallets/walletConnectors/omniWallet/omniWallet.ts
@@ -1,20 +1,12 @@
-import { Chain } from '../../../components/RainbowKitProvider/RainbowKitChainContext';
-import { getWalletConnectUri } from '../../../utils/getWalletConnectUri';
 import { isAndroid } from '../../../utils/isMobile';
-import { Wallet } from '../../Wallet';
+import { DefaultWalletOptions, Wallet } from '../../Wallet';
 import { getWalletConnectConnector } from '../../getWalletConnectConnector';
-import type { WalletConnectConnectorOptions } from '../../getWalletConnectConnector';
 
-export interface OmniWalletOptions {
-  projectId: string;
-  chains: Chain[];
-  walletConnectOptions?: WalletConnectConnectorOptions;
-}
+export type OmniWalletOptions = DefaultWalletOptions;
 
 export const omniWallet = ({
-  chains,
   projectId,
-  walletConnectOptions,
+  walletConnectParameters,
 }: OmniWalletOptions): Wallet => ({
   id: 'omni',
   name: 'Omni',
@@ -26,44 +18,36 @@ export const omniWallet = ({
     mobile: 'https://omniwallet.app.link',
     qrCode: 'https://omniwallet.app.link',
   },
-  createConnector: () => {
-    const connector = getWalletConnectConnector({
-      projectId,
-      chains,
-      options: walletConnectOptions,
-    });
-
-    return {
-      connector,
-      mobile: {
-        getUri: async () => {
-          const uri = await getWalletConnectUri(connector);
-          return isAndroid() ? uri : `omni://wc?uri=${encodeURIComponent(uri)}`;
+  mobile: {
+    getUri: (uri: string) => {
+      return isAndroid() ? uri : `omni://wc?uri=${encodeURIComponent(uri)}`;
+    },
+  },
+  qrCode: {
+    getUri: (uri: string) => uri,
+    instructions: {
+      learnMoreUrl: 'https://omni.app/support',
+      steps: [
+        {
+          description: 'wallet_connectors.omni.qr_code.step1.description',
+          step: 'install',
+          title: 'wallet_connectors.omni.qr_code.step1.title',
+        },
+        {
+          description: 'wallet_connectors.omni.qr_code.step2.description',
+          step: 'create',
+          title: 'wallet_connectors.omni.qr_code.step2.title',
         },
-      },
-      qrCode: {
-        getUri: async () => getWalletConnectUri(connector),
-        instructions: {
-          learnMoreUrl: 'https://omni.app/support',
-          steps: [
-            {
-              description: 'wallet_connectors.omni.qr_code.step1.description',
-              step: 'install',
-              title: 'wallet_connectors.omni.qr_code.step1.title',
-            },
-            {
-              description: 'wallet_connectors.omni.qr_code.step2.description',
-              step: 'create',
-              title: 'wallet_connectors.omni.qr_code.step2.title',
-            },
-            {
-              description: 'wallet_connectors.omni.qr_code.step3.description',
-              step: 'scan',
-              title: 'wallet_connectors.omni.qr_code.step3.title',
-            },
-          ],
+        {
+          description: 'wallet_connectors.omni.qr_code.step3.description',
+          step: 'scan',
+          title: 'wallet_connectors.omni.qr_code.step3.title',
         },
-      },
-    };
+      ],
+    },
   },
+  createConnector: getWalletConnectConnector({
+    projectId,
+    walletConnectParameters,
+  }),
 });
diff --git a/packages/rainbowkit/src/wallets/walletConnectors/oneKeyWallet/oneKeyWallet.ts b/packages/rainbowkit/src/wallets/walletConnectors/oneKeyWallet/oneKeyWallet.ts
index 541d58f2c1..6c5e83dcd6 100644
--- a/packages/rainbowkit/src/wallets/walletConnectors/oneKeyWallet/oneKeyWallet.ts
+++ b/packages/rainbowkit/src/wallets/walletConnectors/oneKeyWallet/oneKeyWallet.ts
@@ -1,64 +1,57 @@
-import { Chain } from '../../../components/RainbowKitProvider/RainbowKitChainContext';
 import { Wallet } from '../../Wallet';
 import {
   getInjectedConnector,
   hasInjectedProvider,
 } from '../../getInjectedConnector';
 
-export interface OnekeyWalletOptions {
-  chains: Chain[];
-}
+export const oneKeyWallet = (): Wallet => {
+  return {
+    id: 'onekey',
+    name: 'OneKey',
+    iconAccent: '#00B812',
+    iconBackground: '#fff',
+    iconUrl: async () => (await import('./oneKeyWallet.svg')).default,
+    installed: hasInjectedProvider({ namespace: '$onekey.ethereum' }),
+    downloadUrls: {
+      android:
+        'https://play.google.com/store/apps/details?id=so.onekey.app.wallet',
+      browserExtension: 'https://www.onekey.so/download/',
+      chrome:
+        'https://chrome.google.com/webstore/detail/onekey/jnmbobjmhlngoefaiojfljckilhhlhcj',
+      edge: 'https://microsoftedge.microsoft.com/addons/detail/onekey/obffkkagpmohennipjokmpllocnlndac',
+      ios: 'https://apps.apple.com/us/app/onekey-open-source-wallet/id1609559473',
+      mobile: 'https://www.onekey.so/download/',
+      qrCode: 'https://www.onekey.so/download/',
+    },
 
-export const oneKeyWallet = ({ chains }: OnekeyWalletOptions): Wallet => ({
-  id: 'onekey',
-  name: 'OneKey',
-  iconUrl: async () => (await import('./oneKeyWallet.svg')).default,
-  iconAccent: '#00B812',
-  iconBackground: '#fff',
-  installed: hasInjectedProvider({ namespace: '$onekey.ethereum' }),
-  downloadUrls: {
-    android:
-      'https://play.google.com/store/apps/details?id=so.onekey.app.wallet',
-    browserExtension: 'https://www.onekey.so/download/',
-    chrome:
-      'https://chrome.google.com/webstore/detail/onekey/jnmbobjmhlngoefaiojfljckilhhlhcj',
-    edge: 'https://microsoftedge.microsoft.com/addons/detail/onekey/obffkkagpmohennipjokmpllocnlndac',
-    ios: 'https://apps.apple.com/us/app/onekey-open-source-wallet/id1609559473',
-    mobile: 'https://www.onekey.so/download/',
-    qrCode: 'https://www.onekey.so/download/',
-  },
-  createConnector: () => {
-    return {
-      connector: getInjectedConnector({
-        chains,
-        namespace: '$onekey.ethereum',
-      }),
-      extension: {
-        instructions: {
-          learnMoreUrl:
-            'https://help.onekey.so/hc/en-us/categories/360000170236',
-          steps: [
-            {
-              description:
-                'wallet_connectors.one_key.extension.step1.description',
-              step: 'install',
-              title: 'wallet_connectors.one_key.extension.step1.title',
-            },
-            {
-              description:
-                'wallet_connectors.one_key.extension.step2.description',
-              step: 'create',
-              title: 'wallet_connectors.one_key.extension.step2.title',
-            },
-            {
-              description:
-                'wallet_connectors.one_key.extension.step3.description',
-              step: 'refresh',
-              title: 'wallet_connectors.one_key.extension.step3.title',
-            },
-          ],
-        },
+    extension: {
+      instructions: {
+        learnMoreUrl: 'https://help.onekey.so/hc/en-us/categories/360000170236',
+        steps: [
+          {
+            description:
+              'wallet_connectors.one_key.extension.step1.description',
+            step: 'install',
+            title: 'wallet_connectors.one_key.extension.step1.title',
+          },
+          {
+            description:
+              'wallet_connectors.one_key.extension.step2.description',
+            step: 'create',
+            title: 'wallet_connectors.one_key.extension.step2.title',
+          },
+          {
+            description:
+              'wallet_connectors.one_key.extension.step3.description',
+            step: 'refresh',
+            title: 'wallet_connectors.one_key.extension.step3.title',
+          },
+        ],
       },
-    };
-  },
-});
+    },
+
+    createConnector: getInjectedConnector({
+      namespace: '$onekey.ethereum',
+    }),
+  };
+};
diff --git a/packages/rainbowkit/src/wallets/walletConnectors/phantomWallet/phantomWallet.ts b/packages/rainbowkit/src/wallets/walletConnectors/phantomWallet/phantomWallet.ts
index f5f3490ae3..4d1eea1c4b 100644
--- a/packages/rainbowkit/src/wallets/walletConnectors/phantomWallet/phantomWallet.ts
+++ b/packages/rainbowkit/src/wallets/walletConnectors/phantomWallet/phantomWallet.ts
@@ -1,63 +1,54 @@
-import { Chain } from '../../../components/RainbowKitProvider/RainbowKitChainContext';
 import { Wallet } from '../../Wallet';
 import {
   getInjectedConnector,
   hasInjectedProvider,
 } from '../../getInjectedConnector';
 
-export interface PhantomWalletOptions {
-  chains: Chain[];
-}
-
-export const phantomWallet = ({ chains }: PhantomWalletOptions): Wallet => ({
-  id: 'phantom',
-  name: 'Phantom',
-  iconUrl: async () => (await import('./phantomWallet.svg')).default,
-  iconBackground: '#9A8AEE',
-  installed: hasInjectedProvider({ namespace: 'phantom.ethereum' }),
-  downloadUrls: {
-    android: 'https://play.google.com/store/apps/details?id=app.phantom',
-    ios: 'https://apps.apple.com/app/phantom-solana-wallet/1598432977',
-    mobile: 'https://phantom.app/download',
-    qrCode: 'https://phantom.app/download',
-    chrome:
-      'https://chrome.google.com/webstore/detail/phantom/bfnaelmomeimhlpmgjnjophhpkkoljpa',
-    firefox: 'https://addons.mozilla.org/firefox/addon/phantom-app/',
-    browserExtension: 'https://phantom.app/download',
-  },
-  createConnector: () => {
-    const connector = getInjectedConnector({
-      chains,
-      namespace: 'phantom.ethereum',
-    });
-
-    return {
-      connector,
-      extension: {
-        instructions: {
-          steps: [
-            {
-              description:
-                'wallet_connectors.phantom.extension.step1.description',
-              step: 'install',
-              title: 'wallet_connectors.phantom.extension.step1.title',
-            },
-            {
-              description:
-                'wallet_connectors.phantom.extension.step2.description',
-              step: 'create',
-              title: 'wallet_connectors.phantom.extension.step2.title',
-            },
-            {
-              description:
-                'wallet_connectors.phantom.extension.step3.description',
-              step: 'refresh',
-              title: 'wallet_connectors.phantom.extension.step3.title',
-            },
-          ],
-          learnMoreUrl: 'https://help.phantom.app',
-        },
+export const phantomWallet = (): Wallet => {
+  return {
+    id: 'phantom',
+    name: 'Phantom',
+    rdns: 'app.phantom',
+    iconUrl: async () => (await import('./phantomWallet.svg')).default,
+    iconBackground: '#9A8AEE',
+    installed: hasInjectedProvider({ namespace: 'phantom.ethereum' }),
+    downloadUrls: {
+      android: 'https://play.google.com/store/apps/details?id=app.phantom',
+      ios: 'https://apps.apple.com/app/phantom-solana-wallet/1598432977',
+      mobile: 'https://phantom.app/download',
+      qrCode: 'https://phantom.app/download',
+      chrome:
+        'https://chrome.google.com/webstore/detail/phantom/bfnaelmomeimhlpmgjnjophhpkkoljpa',
+      firefox: 'https://addons.mozilla.org/firefox/addon/phantom-app/',
+      browserExtension: 'https://phantom.app/download',
+    },
+    extension: {
+      instructions: {
+        steps: [
+          {
+            description:
+              'wallet_connectors.phantom.extension.step1.description',
+            step: 'install',
+            title: 'wallet_connectors.phantom.extension.step1.title',
+          },
+          {
+            description:
+              'wallet_connectors.phantom.extension.step2.description',
+            step: 'create',
+            title: 'wallet_connectors.phantom.extension.step2.title',
+          },
+          {
+            description:
+              'wallet_connectors.phantom.extension.step3.description',
+            step: 'refresh',
+            title: 'wallet_connectors.phantom.extension.step3.title',
+          },
+        ],
+        learnMoreUrl: 'https://help.phantom.app',
       },
-    };
-  },
-});
+    },
+    createConnector: getInjectedConnector({
+      namespace: 'phantom.ethereum',
+    }),
+  };
+};
diff --git a/packages/rainbowkit/src/wallets/walletConnectors/rabbyWallet/rabbyWallet.ts b/packages/rainbowkit/src/wallets/walletConnectors/rabbyWallet/rabbyWallet.ts
index 1501b77096..4bc086764b 100644
--- a/packages/rainbowkit/src/wallets/walletConnectors/rabbyWallet/rabbyWallet.ts
+++ b/packages/rainbowkit/src/wallets/walletConnectors/rabbyWallet/rabbyWallet.ts
@@ -1,18 +1,14 @@
-import { Chain } from '../../../components/RainbowKitProvider/RainbowKitChainContext';
 import { Wallet } from '../../Wallet';
 import {
   getInjectedConnector,
   hasInjectedProvider,
 } from '../../getInjectedConnector';
 
-export interface RabbyWalletOptions {
-  chains: Chain[];
-}
-
-export const rabbyWallet = ({ chains }: RabbyWalletOptions): Wallet => ({
+export const rabbyWallet = (): Wallet => ({
   id: 'rabby',
   name: 'Rabby Wallet',
   iconUrl: async () => (await import('./rabbyWallet.svg')).default,
+  rdns: 'io.rabby',
   iconBackground: '#8697FF',
   installed: hasInjectedProvider({ flag: 'isRabby' }),
   downloadUrls: {
@@ -20,29 +16,27 @@ export const rabbyWallet = ({ chains }: RabbyWalletOptions): Wallet => ({
       'https://chrome.google.com/webstore/detail/rabby-wallet/acmacodkjbdgmoleebolmdjonilkdbch',
     browserExtension: 'https://rabby.io',
   },
-  createConnector: () => ({
-    connector: getInjectedConnector({ chains, flag: 'isRabby' }),
-    extension: {
-      instructions: {
-        learnMoreUrl: 'https://rabby.io/',
-        steps: [
-          {
-            description: 'wallet_connectors.rabby.extension.step1.description',
-            step: 'install',
-            title: 'wallet_connectors.rabby.extension.step1.title',
-          },
-          {
-            description: 'wallet_connectors.rabby.extension.step2.description',
-            step: 'create',
-            title: 'wallet_connectors.rabby.extension.step2.title',
-          },
-          {
-            description: 'wallet_connectors.rabby.extension.step3.description',
-            step: 'refresh',
-            title: 'wallet_connectors.rabby.extension.step3.title',
-          },
-        ],
-      },
+  extension: {
+    instructions: {
+      learnMoreUrl: 'https://rabby.io/',
+      steps: [
+        {
+          description: 'wallet_connectors.rabby.extension.step1.description',
+          step: 'install',
+          title: 'wallet_connectors.rabby.extension.step1.title',
+        },
+        {
+          description: 'wallet_connectors.rabby.extension.step2.description',
+          step: 'create',
+          title: 'wallet_connectors.rabby.extension.step2.title',
+        },
+        {
+          description: 'wallet_connectors.rabby.extension.step3.description',
+          step: 'refresh',
+          title: 'wallet_connectors.rabby.extension.step3.title',
+        },
+      ],
     },
-  }),
+  },
+  createConnector: getInjectedConnector({ flag: 'isRabby' }),
 });
diff --git a/packages/rainbowkit/src/wallets/walletConnectors/rainbowWallet/rainbowWallet.ts b/packages/rainbowkit/src/wallets/walletConnectors/rainbowWallet/rainbowWallet.ts
index 1faf937f2c..3df2494e91 100644
--- a/packages/rainbowkit/src/wallets/walletConnectors/rainbowWallet/rainbowWallet.ts
+++ b/packages/rainbowkit/src/wallets/walletConnectors/rainbowWallet/rainbowWallet.ts
@@ -1,30 +1,34 @@
-import { Chain } from '../../../components/RainbowKitProvider/RainbowKitChainContext';
-import { getWalletConnectUri } from '../../../utils/getWalletConnectUri';
 import { isAndroid, isIOS } from '../../../utils/isMobile';
-import { Wallet } from '../../Wallet';
+import { DefaultWalletOptions, Wallet } from '../../Wallet';
 import {
   getInjectedConnector,
   hasInjectedProvider,
 } from '../../getInjectedConnector';
 import { getWalletConnectConnector } from '../../getWalletConnectConnector';
-import type { WalletConnectConnectorOptions } from '../../getWalletConnectConnector';
 
-export interface RainbowWalletOptions {
-  projectId: string;
-  chains: Chain[];
-  walletConnectOptions?: WalletConnectConnectorOptions;
-}
+export type RainbowWalletOptions = DefaultWalletOptions;
 
 export const rainbowWallet = ({
-  chains,
   projectId,
-  walletConnectOptions,
+  walletConnectParameters,
 }: RainbowWalletOptions): Wallet => {
   const isRainbowInjected = hasInjectedProvider({ flag: 'isRainbow' });
   const shouldUseWalletConnect = !isRainbowInjected;
+
+  const getUri = (uri: string) => {
+    return isAndroid()
+      ? uri
+      : isIOS()
+        ? `rainbow://wc?uri=${encodeURIComponent(uri)}&connector=rainbowkit`
+        : `https://rnbwapp.com/wc?uri=${encodeURIComponent(
+            uri,
+          )}&connector=rainbowkit`;
+  };
+
   return {
     id: 'rainbow',
     name: 'Rainbow',
+    rdns: 'me.rainbow',
     iconUrl: async () => (await import('./rainbowWallet.svg')).default,
     iconBackground: '#0c2f78',
     installed: !shouldUseWalletConnect ? isRainbowInjected : undefined,
@@ -37,59 +41,42 @@ export const rainbowWallet = ({
         'https://rainbow.download?utm_source=rainbowkit&utm_medium=qrcode',
       browserExtension: 'https://rainbow.me/extension?utm_source=rainbowkit',
     },
-    createConnector: () => {
-      const connector = shouldUseWalletConnect
-        ? getWalletConnectConnector({
-            projectId,
-            chains,
-            options: walletConnectOptions,
-          })
-        : getInjectedConnector({ flag: 'isRainbow', chains });
-
-      const getUri = async () => {
-        const uri = await getWalletConnectUri(connector);
-        return isAndroid()
-          ? uri
-          : isIOS()
-            ? `rainbow://wc?uri=${encodeURIComponent(uri)}&connector=rainbowkit`
-            : `https://rnbwapp.com/wc?uri=${encodeURIComponent(
-                uri,
-              )}&connector=rainbowkit`;
-      };
-
-      return {
-        connector,
-        mobile: { getUri: shouldUseWalletConnect ? getUri : undefined },
-        qrCode: shouldUseWalletConnect
-          ? {
-              getUri,
-              instructions: {
-                learnMoreUrl:
-                  'https://learn.rainbow.me/connect-to-a-website-or-app?utm_source=rainbowkit&utm_medium=connector&utm_campaign=learnmore',
-                steps: [
-                  {
-                    description:
-                      'wallet_connectors.rainbow.qr_code.step1.description',
-                    step: 'install',
-                    title: 'wallet_connectors.rainbow.qr_code.step1.title',
-                  },
-                  {
-                    description:
-                      'wallet_connectors.rainbow.qr_code.step2.description',
-                    step: 'create',
-                    title: 'wallet_connectors.rainbow.qr_code.step2.title',
-                  },
-                  {
-                    description:
-                      'wallet_connectors.rainbow.qr_code.step3.description',
-                    step: 'scan',
-                    title: 'wallet_connectors.rainbow.qr_code.step3.title',
-                  },
-                ],
+    mobile: { getUri: shouldUseWalletConnect ? getUri : undefined },
+    qrCode: shouldUseWalletConnect
+      ? {
+          getUri,
+          instructions: {
+            learnMoreUrl:
+              'https://learn.rainbow.me/connect-to-a-website-or-app?utm_source=rainbowkit&utm_medium=connector&utm_campaign=learnmore',
+            steps: [
+              {
+                description:
+                  'wallet_connectors.rainbow.qr_code.step1.description',
+                step: 'install',
+                title: 'wallet_connectors.rainbow.qr_code.step1.title',
               },
-            }
-          : undefined,
-      };
-    },
+              {
+                description:
+                  'wallet_connectors.rainbow.qr_code.step2.description',
+                step: 'create',
+                title: 'wallet_connectors.rainbow.qr_code.step2.title',
+              },
+              {
+                description:
+                  'wallet_connectors.rainbow.qr_code.step3.description',
+                step: 'scan',
+                title: 'wallet_connectors.rainbow.qr_code.step3.title',
+              },
+            ],
+          },
+        }
+      : undefined,
+
+    createConnector: shouldUseWalletConnect
+      ? getWalletConnectConnector({
+          projectId,
+          walletConnectParameters,
+        })
+      : getInjectedConnector({ flag: 'isRainbow' }),
   };
 };
diff --git a/packages/rainbowkit/src/wallets/walletConnectors/safeWallet/safeWallet.ts b/packages/rainbowkit/src/wallets/walletConnectors/safeWallet/safeWallet.ts
index d3f005259f..3614247009 100644
--- a/packages/rainbowkit/src/wallets/walletConnectors/safeWallet/safeWallet.ts
+++ b/packages/rainbowkit/src/wallets/walletConnectors/safeWallet/safeWallet.ts
@@ -1,21 +1,8 @@
-import type { SafeConnectorOptions } from 'wagmi/connectors/safe';
-import { SafeConnector } from 'wagmi/connectors/safe';
-import { Chain } from '../../../components/RainbowKitProvider/RainbowKitChainContext';
-import { Wallet } from '../../Wallet';
+import { createConnector } from 'wagmi';
+import { safe } from 'wagmi/connectors';
+import { Wallet, WalletDetailsParams } from '../../Wallet';
 
-/**
- * @protected `safeWallet` interface`
- */
-export interface SafeWalletOptions {
-  chains: Chain[];
-}
-
-/**
- * @protected Safe Browser wallet connector
- */
-export const safeWallet = ({
-  chains,
-}: SafeWalletOptions & SafeConnectorOptions): Wallet => ({
+export const safeWallet = (): Wallet => ({
   id: 'safe',
   name: 'Safe',
   iconAccent: '#12ff80',
@@ -30,7 +17,10 @@ export const safeWallet = ({
     // already running as a Safe App within the context of the Safe browser,
     // since it's unlikely to be a desired behavior for users.
   },
-  createConnector: () => ({
-    connector: new SafeConnector({ chains }),
-  }),
+  createConnector: (walletDetails: WalletDetailsParams) => {
+    return createConnector((config) => ({
+      ...safe()(config),
+      ...walletDetails,
+    }));
+  },
 });
diff --git a/packages/rainbowkit/src/wallets/walletConnectors/safeheronWallet/safeheronWallet.ts b/packages/rainbowkit/src/wallets/walletConnectors/safeheronWallet/safeheronWallet.ts
index 21f6485f11..2952def40a 100644
--- a/packages/rainbowkit/src/wallets/walletConnectors/safeheronWallet/safeheronWallet.ts
+++ b/packages/rainbowkit/src/wallets/walletConnectors/safeheronWallet/safeheronWallet.ts
@@ -1,17 +1,10 @@
-import { Chain } from '../../../components/RainbowKitProvider/RainbowKitChainContext';
 import { Wallet } from '../../Wallet';
 import {
   getInjectedConnector,
   hasInjectedProvider,
 } from '../../getInjectedConnector';
 
-export interface SafeheronWalletOptions {
-  chains: Chain[];
-}
-
-export const safeheronWallet = ({
-  chains,
-}: SafeheronWalletOptions): Wallet => ({
+export const safeheronWallet = (): Wallet => ({
   id: 'safeheron',
   name: 'Safeheron',
   installed: hasInjectedProvider({
@@ -25,36 +18,33 @@ export const safeheronWallet = ({
       'https://chrome.google.com/webstore/detail/safeheron/aiaghdjafpiofpainifbgfgjfpclngoh',
     browserExtension: 'https://www.safeheron.com/',
   },
-  createConnector: () => ({
-    connector: getInjectedConnector({
-      chains,
-      namespace: 'safeheron',
-      flag: 'isSafeheron',
-    }),
-    extension: {
-      instructions: {
-        learnMoreUrl: 'https://www.safeheron.com/',
-        steps: [
-          {
-            description:
-              'wallet_connectors.safeheron.extension.step1.description',
-            step: 'install',
-            title: 'wallet_connectors.safeheron.extension.step1.title',
-          },
-          {
-            description:
-              'wallet_connectors.safeheron.extension.step2.description',
-            step: 'create',
-            title: 'wallet_connectors.safeheron.extension.step2.title',
-          },
-          {
-            description:
-              'wallet_connectors.safeheron.extension.step3.description',
-            step: 'refresh',
-            title: 'wallet_connectors.safeheron.extension.step3.title',
-          },
-        ],
-      },
+  extension: {
+    instructions: {
+      learnMoreUrl: 'https://www.safeheron.com/',
+      steps: [
+        {
+          description:
+            'wallet_connectors.safeheron.extension.step1.description',
+          step: 'install',
+          title: 'wallet_connectors.safeheron.extension.step1.title',
+        },
+        {
+          description:
+            'wallet_connectors.safeheron.extension.step2.description',
+          step: 'create',
+          title: 'wallet_connectors.safeheron.extension.step2.title',
+        },
+        {
+          description:
+            'wallet_connectors.safeheron.extension.step3.description',
+          step: 'refresh',
+          title: 'wallet_connectors.safeheron.extension.step3.title',
+        },
+      ],
     },
+  },
+  createConnector: getInjectedConnector({
+    namespace: 'safeheron',
+    flag: 'isSafeheron',
   }),
 });
diff --git a/packages/rainbowkit/src/wallets/walletConnectors/safepalWallet/safepalWallet.ts b/packages/rainbowkit/src/wallets/walletConnectors/safepalWallet/safepalWallet.ts
index 3d8552c957..28f3847d88 100644
--- a/packages/rainbowkit/src/wallets/walletConnectors/safepalWallet/safepalWallet.ts
+++ b/packages/rainbowkit/src/wallets/walletConnectors/safepalWallet/safepalWallet.ts
@@ -1,23 +1,19 @@
-import { Chain } from '../../../components/RainbowKitProvider/RainbowKitChainContext';
-import { getWalletConnectUri } from '../../../utils/getWalletConnectUri';
-import { InstructionStepName, Wallet } from '../../Wallet';
+import {
+  DefaultWalletOptions,
+  InstructionStepName,
+  Wallet,
+} from '../../Wallet';
 import {
   getInjectedConnector,
   hasInjectedProvider,
 } from '../../getInjectedConnector';
 import { getWalletConnectConnector } from '../../getWalletConnectConnector';
-import type { WalletConnectConnectorOptions } from '../../getWalletConnectConnector';
 
-export interface SafepalWalletOptions {
-  projectId: string;
-  chains: Chain[];
-  walletConnectOptions?: WalletConnectConnectorOptions;
-}
+export type SafepalWalletOptions = DefaultWalletOptions;
 
 export const safepalWallet = ({
-  chains,
   projectId,
-  walletConnectOptions,
+  walletConnectParameters,
 }: SafepalWalletOptions): Wallet => {
   const isSafePalWalletInjected = hasInjectedProvider({
     namespace: 'safepalProvider',
@@ -25,6 +21,69 @@ export const safepalWallet = ({
   });
   const shouldUseWalletConnect = !isSafePalWalletInjected;
 
+  const getUriMobile = (uri: string) => {
+    return `safepalwallet://wc?uri=${encodeURIComponent(uri)}`;
+  };
+
+  const getUriQR = async (uri: string) => {
+    return uri;
+  };
+
+  const mobileConnector = {
+    getUri: shouldUseWalletConnect ? getUriMobile : undefined,
+  };
+
+  let qrConnector = undefined;
+
+  if (shouldUseWalletConnect) {
+    qrConnector = {
+      getUri: getUriQR,
+      instructions: {
+        learnMoreUrl: 'https://safepal.com/',
+        steps: [
+          {
+            description: 'wallet_connectors.safepal.qr_code.step1.description',
+            step: 'install' as InstructionStepName,
+            title: 'wallet_connectors.safepal.qr_code.step1.title',
+          },
+          {
+            description: 'wallet_connectors.safepal.qr_code.step2.description',
+            step: 'create' as InstructionStepName,
+            title: 'wallet_connectors.safepal.qr_code.step2.title',
+          },
+          {
+            description: 'wallet_connectors.safepal.qr_code.step3.description',
+            step: 'scan' as InstructionStepName,
+            title: 'wallet_connectors.safepal.qr_code.step3.title',
+          },
+        ],
+      },
+    };
+  }
+
+  const extensionConnector = {
+    instructions: {
+      learnMoreUrl: 'https://www.safepal.com/download?product=2',
+      steps: [
+        {
+          description: 'wallet_connectors.safepal.extension.step1.description',
+          step: 'install' as InstructionStepName,
+          title: 'wallet_connectors.safepal.extension.step1.title',
+        },
+        {
+          description: 'wallet_connectors.safepal.extension.step2.description',
+          step: 'create' as InstructionStepName,
+          title: 'wallet_connectors.safepal.extension.step2.title',
+        },
+        {
+          description: 'wallet_connectors.safepal.extension.step3.description',
+          step: 'refresh' as InstructionStepName,
+          title: 'wallet_connectors.safepal.extension.step3.title',
+        },
+      ],
+    },
+  };
+
   return {
     id: 'safepal',
     name: 'SafePal Wallet',
@@ -32,7 +91,7 @@ export const safepalWallet = ({
     // Note that we never resolve `installed` to `false` because the
     // SafePal Wallet provider falls back to other connection methods if
     // the injected connector isn't available
-    installed: isSafePalWalletInjected || undefined,
+    installed: isSafePalWalletInjected,
     iconAccent: '#3375BB',
     iconBackground: '#fff',
     downloadUrls: {
@@ -45,98 +104,17 @@ export const safepalWallet = ({
         'https://chrome.google.com/webstore/detail/safepal-extension-wallet/lgmpcpglpngdoalbgeoldeajfclnhafa',
       browserExtension: 'https://www.safepal.com/download?product=2',
     },
-    createConnector: () => {
-      const getUriMobile = async () => {
-        const uri = await getWalletConnectUri(connector);
-
-        return `safepalwallet://wc?uri=${encodeURIComponent(uri)}`;
-      };
-
-      const getUriQR = async () => {
-        const uri = await getWalletConnectUri(connector);
-
-        return uri;
-      };
-
-      const connector = shouldUseWalletConnect
-        ? getWalletConnectConnector({
-            projectId,
-            chains,
-            options: walletConnectOptions,
-          })
-        : getInjectedConnector({
-            chains,
-            namespace: 'safepalProvider',
-            flag: 'isSafePal',
-          });
-
-      const mobileConnector = {
-        getUri: shouldUseWalletConnect ? getUriMobile : undefined,
-      };
-
-      let qrConnector = undefined;
-
-      if (shouldUseWalletConnect) {
-        qrConnector = {
-          getUri: getUriQR,
-          instructions: {
-            learnMoreUrl: 'https://safepal.com/',
-            steps: [
-              {
-                description:
-                  'wallet_connectors.safepal.qr_code.step1.description',
-                step: 'install' as InstructionStepName,
-                title: 'wallet_connectors.safepal.qr_code.step1.title',
-              },
-              {
-                description:
-                  'wallet_connectors.safepal.qr_code.step2.description',
-                step: 'create' as InstructionStepName,
-                title: 'wallet_connectors.safepal.qr_code.step2.title',
-              },
-              {
-                description:
-                  'wallet_connectors.safepal.qr_code.step3.description',
-                step: 'scan' as InstructionStepName,
-                title: 'wallet_connectors.safepal.qr_code.step3.title',
-              },
-            ],
-          },
-        };
-      }
-
-      const extensionConnector = {
-        instructions: {
-          learnMoreUrl: 'https://www.safepal.com/download?product=2',
-          steps: [
-            {
-              description:
-                'wallet_connectors.safepal.extension.step1.description',
-              step: 'install' as InstructionStepName,
-              title: 'wallet_connectors.safepal.extension.step1.title',
-            },
-            {
-              description:
-                'wallet_connectors.safepal.extension.step2.description',
-              step: 'create' as InstructionStepName,
-              title: 'wallet_connectors.safepal.extension.step2.title',
-            },
-            {
-              description:
-                'wallet_connectors.safepal.extension.step3.description',
-              step: 'refresh' as InstructionStepName,
-              title: 'wallet_connectors.safepal.extension.step3.title',
-            },
-          ],
-        },
-      };
-
-      return {
-        connector,
-        mobile: mobileConnector,
-        qrCode: qrConnector,
-        extension: extensionConnector,
-      };
-    },
+    mobile: mobileConnector,
+    ...(qrConnector ? qrConnector : {}),
+    extension: extensionConnector,
+    createConnector: shouldUseWalletConnect
+      ? getWalletConnectConnector({
+          projectId,
+          walletConnectParameters,
+        })
+      : getInjectedConnector({
+          namespace: 'safepalProvider',
+          flag: 'isSafePal',
+        }),
   };
 };
diff --git a/packages/rainbowkit/src/wallets/walletConnectors/subWallet/subWallet.ts b/packages/rainbowkit/src/wallets/walletConnectors/subWallet/subWallet.ts
index 6b2b2051b7..40f40fd69d 100644
--- a/packages/rainbowkit/src/wallets/walletConnectors/subWallet/subWallet.ts
+++ b/packages/rainbowkit/src/wallets/walletConnectors/subWallet/subWallet.ts
@@ -1,29 +1,92 @@
-import { Chain } from '../../../components/RainbowKitProvider/RainbowKitChainContext';
-import { getWalletConnectUri } from '../../../utils/getWalletConnectUri';
-import { InstructionStepName, Wallet } from '../../Wallet';
+import {
+  DefaultWalletOptions,
+  InstructionStepName,
+  Wallet,
+} from '../../Wallet';
 import {
   getInjectedConnector,
   hasInjectedProvider,
 } from '../../getInjectedConnector';
-import {
-  WalletConnectConnectorOptions,
-  getWalletConnectConnector,
-} from '../../getWalletConnectConnector';
+import { getWalletConnectConnector } from '../../getWalletConnectConnector';
 
-export interface SubWalletOptions {
-  projectId: string;
-  chains: Chain[];
-  walletConnectOptions?: WalletConnectConnectorOptions;
-}
+export type SubWalletOptions = DefaultWalletOptions;
 
 export const subWallet = ({
-  chains,
   projectId,
-  walletConnectOptions,
+  walletConnectParameters,
 }: SubWalletOptions): Wallet => {
   const isSubWalletInjected = hasInjectedProvider({ namespace: 'SubWallet' });
   const shouldUseWalletConnect = !isSubWalletInjected;
 
+  const getUriMobile = (uri: string) => {
+    return `subwallet://wc?uri=${encodeURIComponent(uri)}`;
+  };
+
+  const getUriQR = (uri: string) => {
+    return uri;
+  };
+
+  const mobileConnector = {
+    getUri: shouldUseWalletConnect ? getUriMobile : undefined,
+  };
+
+  let qrConnector = undefined;
+
+  if (shouldUseWalletConnect) {
+    qrConnector = {
+      getUri: getUriQR,
+      instructions: {
+        learnMoreUrl: 'https://www.subwallet.app/',
+        steps: [
+          {
+            description:
+              'wallet_connectors.subwallet.qr_code.step1.description',
+            step: 'install' as InstructionStepName,
+            title: 'wallet_connectors.subwallet.qr_code.step1.title',
+          },
+          {
+            description:
+              'wallet_connectors.subwallet.qr_code.step2.description',
+            step: 'create' as InstructionStepName,
+            title: 'wallet_connectors.subwallet.qr_code.step2.title',
+          },
+          {
+            description:
+              'wallet_connectors.subwallet.qr_code.step3.description',
+            step: 'scan' as InstructionStepName,
+            title: 'wallet_connectors.subwallet.qr_code.step3.title',
+          },
+        ],
+      },
+    };
+  }
+
+  const extensionConnector = {
+    instructions: {
+      learnMoreUrl: 'https://www.subwallet.app/',
+      steps: [
+        {
+          description:
+            'wallet_connectors.subwallet.extension.step1.description',
+          step: 'install' as InstructionStepName,
+          title: 'wallet_connectors.subwallet.extension.step1.title',
+        },
+        {
+          description:
+            'wallet_connectors.subwallet.extension.step2.description',
+          step: 'create' as InstructionStepName,
+          title: 'wallet_connectors.subwallet.extension.step2.title',
+        },
+        {
+          description:
+            'wallet_connectors.subwallet.extension.step3.description',
+          step: 'refresh' as InstructionStepName,
+          title: 'wallet_connectors.subwallet.extension.step3.title',
+        },
+      ],
+    },
+  };
+
   return {
     id: 'subwallet',
     name: 'SubWallet',
@@ -42,92 +105,14 @@ export const subWallet = ({
       ios: 'https://apps.apple.com/us/app/subwallet-polkadot-wallet/id1633050285',
       qrCode: 'https://www.subwallet.app/download',
     },
-    createConnector: () => {
-      const connector = shouldUseWalletConnect
-        ? getWalletConnectConnector({
-            projectId,
-            chains,
-            options: walletConnectOptions,
-          })
-        : getInjectedConnector({ chains, namespace: 'SubWallet' });
-
-      const getUriMobile = async () => {
-        const uri = await getWalletConnectUri(connector);
-
-        return `subwallet://wc?uri=${encodeURIComponent(uri)}`;
-      };
-
-      const getUriQR = async () => {
-        return await getWalletConnectUri(connector);
-      };
-
-      const mobileConnector = {
-        getUri: shouldUseWalletConnect ? getUriMobile : undefined,
-      };
-
-      let qrConnector = undefined;
-
-      if (shouldUseWalletConnect) {
-        qrConnector = {
-          getUri: getUriQR,
-          instructions: {
-            learnMoreUrl: 'https://www.subwallet.app/',
-            steps: [
-              {
-                description:
-                  'wallet_connectors.subwallet.qr_code.step1.description',
-                step: 'install' as InstructionStepName,
-                title: 'wallet_connectors.subwallet.qr_code.step1.title',
-              },
-              {
-                description:
-                  'wallet_connectors.subwallet.qr_code.step2.description',
-                step: 'create' as InstructionStepName,
-                title: 'wallet_connectors.subwallet.qr_code.step2.title',
-              },
-              {
-                description:
-                  'wallet_connectors.subwallet.qr_code.step3.description',
-                step: 'scan' as InstructionStepName,
-                title: 'wallet_connectors.subwallet.qr_code.step3.title',
-              },
-            ],
-          },
-        };
-      }
-
-      const extensionConnector = {
-        instructions: {
-          learnMoreUrl: 'https://www.subwallet.app/',
-          steps: [
-            {
-              description:
-                'wallet_connectors.subwallet.extension.step1.description',
-              step: 'install' as InstructionStepName,
-              title: 'wallet_connectors.subwallet.extension.step1.title',
-            },
-            {
-              description:
-                'wallet_connectors.subwallet.extension.step2.description',
-              step: 'create' as InstructionStepName,
-              title: 'wallet_connectors.subwallet.extension.step2.title',
-            },
-            {
-              description:
-                'wallet_connectors.subwallet.extension.step3.description',
-              step: 'refresh' as InstructionStepName,
-              title: 'wallet_connectors.subwallet.extension.step3.title',
-            },
-          ],
-        },
-      };
-
-      return {
-        connector,
-        mobile: mobileConnector,
-        qrCode: qrConnector,
-        extension: extensionConnector,
-      };
-    },
+    mobile: mobileConnector,
+    qrCode: qrConnector,
+    extension: extensionConnector,
+    createConnector: shouldUseWalletConnect
+      ? getWalletConnectConnector({
+          projectId,
+          walletConnectParameters,
+        })
+      : getInjectedConnector({ namespace: 'SubWallet' }),
   };
 };
diff --git a/packages/rainbowkit/src/wallets/walletConnectors/tahoWallet/tahoWallet.ts b/packages/rainbowkit/src/wallets/walletConnectors/tahoWallet/tahoWallet.ts
index 17b536dfce..233ed3b067 100644
--- a/packages/rainbowkit/src/wallets/walletConnectors/tahoWallet/tahoWallet.ts
+++ b/packages/rainbowkit/src/wallets/walletConnectors/tahoWallet/tahoWallet.ts
@@ -1,55 +1,47 @@
-import { Chain } from '../../../components/RainbowKitProvider/RainbowKitChainContext';
 import { Wallet } from '../../Wallet';
 import {
   getInjectedConnector,
   hasInjectedProvider,
 } from '../../getInjectedConnector';
 
-export interface TahoWalletOptions {
-  chains: Chain[];
-}
-
-export const tahoWallet = ({ chains }: TahoWalletOptions): Wallet => ({
-  id: 'taho',
-  name: 'Taho',
-  iconBackground: '#d08d57',
-  iconUrl: async () => (await import('./tahoWallet.svg')).default,
-  downloadUrls: {
-    chrome:
-      'https://chrome.google.com/webstore/detail/taho/eajafomhmkipbjmfmhebemolkcicgfmd',
-    browserExtension: 'https://taho.xyz',
-  },
-  installed: hasInjectedProvider({ namespace: 'tally', flag: 'isTally' }),
-  createConnector: () => {
-    return {
-      connector: getInjectedConnector({
-        chains,
-        namespace: 'tally',
-        flag: 'isTally',
-      }),
-      extension: {
-        instructions: {
-          learnMoreUrl:
-            'https://tahowallet.notion.site/Taho-Knowledge-Base-4d95ed5439c64d6db3d3d27abf1fdae5',
-          steps: [
-            {
-              description: 'wallet_connectors.taho.extension.step1.description',
-              step: 'install',
-              title: 'wallet_connectors.taho.extension.step1.title',
-            },
-            {
-              description: 'wallet_connectors.taho.extension.step2.description',
-              step: 'create',
-              title: 'wallet_connectors.taho.extension.step2.title',
-            },
-            {
-              description: 'wallet_connectors.taho.extension.step3.description',
-              step: 'refresh',
-              title: 'wallet_connectors.taho.extension.step3.title',
-            },
-          ],
-        },
+export const tahoWallet = (): Wallet => {
+  return {
+    id: 'taho',
+    name: 'Taho',
+    iconBackground: '#d08d57',
+    iconUrl: async () => (await import('./tahoWallet.svg')).default,
+    downloadUrls: {
+      chrome:
+        'https://chrome.google.com/webstore/detail/taho/eajafomhmkipbjmfmhebemolkcicgfmd',
+      browserExtension: 'https://taho.xyz',
+    },
+    installed: hasInjectedProvider({ namespace: 'tally', flag: 'isTally' }),
+    extension: {
+      instructions: {
+        learnMoreUrl:
+          'https://tahowallet.notion.site/Taho-Knowledge-Base-4d95ed5439c64d6db3d3d27abf1fdae5',
+        steps: [
+          {
+            description: 'wallet_connectors.taho.extension.step1.description',
+            step: 'install',
+            title: 'wallet_connectors.taho.extension.step1.title',
+          },
+          {
+            description: 'wallet_connectors.taho.extension.step2.description',
+            step: 'create',
+            title: 'wallet_connectors.taho.extension.step2.title',
+          },
+          {
+            description: 'wallet_connectors.taho.extension.step3.description',
+            step: 'refresh',
+            title: 'wallet_connectors.taho.extension.step3.title',
+          },
+        ],
       },
-    };
-  },
-});
+    },
+    createConnector: getInjectedConnector({
+      namespace: 'tally',
+      flag: 'isTally',
+    }),
+  };
+};
diff --git a/packages/rainbowkit/src/wallets/walletConnectors/talismanWallet/talismanWallet.ts b/packages/rainbowkit/src/wallets/walletConnectors/talismanWallet/talismanWallet.ts
index 1edf2bda2f..a5e4c64cc8 100644
--- a/packages/rainbowkit/src/wallets/walletConnectors/talismanWallet/talismanWallet.ts
+++ b/packages/rainbowkit/src/wallets/walletConnectors/talismanWallet/talismanWallet.ts
@@ -1,17 +1,13 @@
-import { Chain } from '../../../components/RainbowKitProvider/RainbowKitChainContext';
 import { Wallet } from '../../Wallet';
 import {
   getInjectedConnector,
   hasInjectedProvider,
 } from '../../getInjectedConnector';
 
-export interface TalismanWalletOptions {
-  chains: Chain[];
-}
-
-export const talismanWallet = ({ chains }: TalismanWalletOptions): Wallet => ({
+export const talismanWallet = (): Wallet => ({
   id: 'talisman',
   name: 'Talisman',
+  rdns: 'xyz.talisman',
   iconUrl: async () => (await import('./talismanWallet.svg')).default,
   iconBackground: '#fff',
   installed: hasInjectedProvider({
@@ -25,36 +21,30 @@ export const talismanWallet = ({ chains }: TalismanWalletOptions): Wallet => ({
       'https://addons.mozilla.org/en-US/firefox/addon/talisman-wallet-extension/',
     browserExtension: 'https://talisman.xyz/download',
   },
-  createConnector: () => ({
-    connector: getInjectedConnector({
-      chains,
-      namespace: 'talismanEth',
-      flag: 'isTalisman',
-    }),
-    extension: {
-      instructions: {
-        learnMoreUrl: 'https://talisman.xyz/',
-        steps: [
-          {
-            description:
-              'wallet_connectors.talisman.extension.step1.description',
-            step: 'install',
-            title: 'wallet_connectors.talisman.extension.step1.title',
-          },
-          {
-            description:
-              'wallet_connectors.talisman.extension.step2.description',
-            step: 'create',
-            title: 'wallet_connectors.talisman.extension.step2.title',
-          },
-          {
-            description:
-              'wallet_connectors.talisman.extension.step3.description',
-            step: 'refresh',
-            title: 'wallet_connectors.talisman.extension.step3.title',
-          },
-        ],
-      },
+  extension: {
+    instructions: {
+      learnMoreUrl: 'https://talisman.xyz/',
+      steps: [
+        {
+          description: 'wallet_connectors.talisman.extension.step1.description',
+          step: 'install',
+          title: 'wallet_connectors.talisman.extension.step1.title',
+        },
+        {
+          description: 'wallet_connectors.talisman.extension.step2.description',
+          step: 'create',
+          title: 'wallet_connectors.talisman.extension.step2.title',
+        },
+        {
+          description: 'wallet_connectors.talisman.extension.step3.description',
+          step: 'refresh',
+          title: 'wallet_connectors.talisman.extension.step3.title',
+        },
+      ],
     },
+  },
+  createConnector: getInjectedConnector({
+    namespace: 'talismanEth',
+    flag: 'isTalisman',
   }),
 });
diff --git a/packages/rainbowkit/src/wallets/walletConnectors/tokenPocketWallet/tokenPocketWallet.ts b/packages/rainbowkit/src/wallets/walletConnectors/tokenPocketWallet/tokenPocketWallet.ts
index dfabc425bb..188e3af33e 100644
--- a/packages/rainbowkit/src/wallets/walletConnectors/tokenPocketWallet/tokenPocketWallet.ts
+++ b/packages/rainbowkit/src/wallets/walletConnectors/tokenPocketWallet/tokenPocketWallet.ts
@@ -1,31 +1,28 @@
-import type { Chain } from '../../../components/RainbowKitProvider/RainbowKitChainContext';
-import { getWalletConnectUri } from '../../../utils/getWalletConnectUri';
 import { isMobile } from '../../../utils/isMobile';
-import type { Wallet } from '../../Wallet';
+import type { DefaultWalletOptions, Wallet } from '../../Wallet';
 import {
   getInjectedConnector,
   hasInjectedProvider,
 } from '../../getInjectedConnector';
-import type { WalletConnectConnectorOptions } from '../../getWalletConnectConnector';
 import { getWalletConnectConnector } from '../../getWalletConnectConnector';
 
-export interface TokenPocketWalletOptions {
-  projectId: string;
-  chains: Chain[];
-  walletConnectOptions?: WalletConnectConnectorOptions;
-}
+export type TokenPocketWalletOptions = DefaultWalletOptions;
 
 export const tokenPocketWallet = ({
-  chains,
   projectId,
-  walletConnectOptions,
+  walletConnectParameters,
 }: TokenPocketWalletOptions): Wallet => {
   const isTokenPocketInjected = hasInjectedProvider({ flag: 'isTokenPocket' });
   const shouldUseWalletConnect = !isTokenPocketInjected;
 
+  const getUri = (uri: string) => {
+    return isMobile() ? `tpoutside://wc?uri=${encodeURIComponent(uri)}` : uri;
+  };
+
   return {
     id: 'tokenPocket',
     name: 'TokenPocket',
+    rdns: 'pro.tokenpocket',
     iconUrl: async () => (await import('./tokenPocketWallet.svg')).default,
     iconBackground: '#2980FE',
     installed: !shouldUseWalletConnect ? isTokenPocketInjected : undefined,
@@ -39,82 +36,68 @@ export const tokenPocketWallet = ({
       qrCode: 'https://tokenpocket.pro/en/download/app',
       mobile: 'https://tokenpocket.pro/en/download/app',
     },
-    createConnector: () => {
-      const connector = shouldUseWalletConnect
-        ? getWalletConnectConnector({
-            chains,
-            projectId,
-            options: walletConnectOptions,
-          })
-        : getInjectedConnector({ chains, flag: 'isTokenPocket' });
-
-      const getUri = async () => {
-        const uri = await getWalletConnectUri(connector);
-        return isMobile()
-          ? `tpoutside://wc?uri=${encodeURIComponent(uri)}`
-          : uri;
-      };
-
-      return {
-        connector,
-        mobile: {
-          getUri: shouldUseWalletConnect ? getUri : undefined,
-        },
-        qrCode: shouldUseWalletConnect
-          ? {
-              getUri,
-              instructions: {
-                learnMoreUrl: 'https://help.tokenpocket.pro/en/',
-                steps: [
-                  {
-                    description:
-                      'wallet_connectors.token_pocket.qr_code.step1.description',
-                    step: 'install',
-                    title: 'wallet_connectors.token_pocket.qr_code.step1.title',
-                  },
-                  {
-                    description:
-                      'wallet_connectors.token_pocket.qr_code.step2.description',
-                    step: 'create',
-                    title: 'wallet_connectors.token_pocket.qr_code.step2.title',
-                  },
-                  {
-                    description:
-                      'wallet_connectors.token_pocket.qr_code.step3.description',
-                    step: 'scan',
-                    title: 'wallet_connectors.token_pocket.qr_code.step3.title',
-                  },
-                ],
-              },
-            }
-          : undefined,
-        extension: {
+    mobile: {
+      getUri: shouldUseWalletConnect ? getUri : undefined,
+    },
+    qrCode: shouldUseWalletConnect
+      ? {
+          getUri,
           instructions: {
-            learnMoreUrl:
-              'https://help.tokenpocket.pro/en/extension-wallet/faq/installation-tutorial',
+            learnMoreUrl: 'https://help.tokenpocket.pro/en/',
             steps: [
               {
                 description:
-                  'wallet_connectors.token_pocket.extension.step1.description',
+                  'wallet_connectors.token_pocket.qr_code.step1.description',
                 step: 'install',
-                title: 'wallet_connectors.token_pocket.extension.step1.title',
+                title: 'wallet_connectors.token_pocket.qr_code.step1.title',
               },
               {
                 description:
-                  'wallet_connectors.token_pocket.extension.step2.description',
+                  'wallet_connectors.token_pocket.qr_code.step2.description',
                 step: 'create',
-                title: 'wallet_connectors.token_pocket.extension.step2.title',
+                title: 'wallet_connectors.token_pocket.qr_code.step2.title',
               },
               {
                 description:
-                  'wallet_connectors.token_pocket.extension.step3.description',
-                step: 'refresh',
-                title: 'wallet_connectors.token_pocket.extension.step3.title',
+                  'wallet_connectors.token_pocket.qr_code.step3.description',
+                step: 'scan',
+                title: 'wallet_connectors.token_pocket.qr_code.step3.title',
               },
             ],
           },
-        },
-      };
+        }
+      : undefined,
+    extension: {
+      instructions: {
+        learnMoreUrl:
+          'https://help.tokenpocket.pro/en/extension-wallet/faq/installation-tutorial',
+        steps: [
+          {
+            description:
+              'wallet_connectors.token_pocket.extension.step1.description',
+            step: 'install',
+            title: 'wallet_connectors.token_pocket.extension.step1.title',
+          },
+          {
+            description:
+              'wallet_connectors.token_pocket.extension.step2.description',
+            step: 'create',
+            title: 'wallet_connectors.token_pocket.extension.step2.title',
+          },
+          {
+            description:
+              'wallet_connectors.token_pocket.extension.step3.description',
+            step: 'refresh',
+            title: 'wallet_connectors.token_pocket.extension.step3.title',
+          },
+        ],
+      },
     },
+    createConnector: shouldUseWalletConnect
+      ? getWalletConnectConnector({
+          projectId,
+          walletConnectParameters,
+        })
+      : getInjectedConnector({ flag: 'isTokenPocket' }),
   };
 };
diff --git a/packages/rainbowkit/src/wallets/walletConnectors/tokenaryWallet/tokenaryWallet.ts b/packages/rainbowkit/src/wallets/walletConnectors/tokenaryWallet/tokenaryWallet.ts
index 8400bfdb69..05d1392122 100644
--- a/packages/rainbowkit/src/wallets/walletConnectors/tokenaryWallet/tokenaryWallet.ts
+++ b/packages/rainbowkit/src/wallets/walletConnectors/tokenaryWallet/tokenaryWallet.ts
@@ -1,4 +1,3 @@
-import { Chain } from '../../../components/RainbowKitProvider/RainbowKitChainContext';
 import { isSafari } from '../../../utils/browsers';
 import { Wallet } from '../../Wallet';
 import {
@@ -6,11 +5,7 @@ import {
   hasInjectedProvider,
 } from '../../getInjectedConnector';
 
-export interface TokenaryWalletOptions {
-  chains: Chain[];
-}
-
-export const tokenaryWallet = ({ chains }: TokenaryWalletOptions): Wallet => ({
+export const tokenaryWallet = (): Wallet => ({
   id: 'tokenary',
   name: 'Tokenary',
   iconUrl: async () => (await import('./tokenaryWallet.svg')).default,
@@ -24,7 +19,5 @@ export const tokenaryWallet = ({ chains }: TokenaryWalletOptions): Wallet => ({
     safari: 'https://tokenary.io/get',
     browserExtension: 'https://tokenary.io/get',
   },
-  createConnector: () => ({
-    connector: getInjectedConnector({ chains, flag: 'isTokenary' }),
-  }),
+  createConnector: getInjectedConnector({ flag: 'isTokenary' }),
 });
diff --git a/packages/rainbowkit/src/wallets/walletConnectors/trustWallet/trustWallet.ts b/packages/rainbowkit/src/wallets/walletConnectors/trustWallet/trustWallet.ts
index cde311a6ac..378101238f 100644
--- a/packages/rainbowkit/src/wallets/walletConnectors/trustWallet/trustWallet.ts
+++ b/packages/rainbowkit/src/wallets/walletConnectors/trustWallet/trustWallet.ts
@@ -1,33 +1,93 @@
-import { Chain } from '../../../components/RainbowKitProvider/RainbowKitChainContext';
-import { getWalletConnectUri } from '../../../utils/getWalletConnectUri';
 import { isMobile } from '../../../utils/isMobile';
-import { InstructionStepName, Wallet } from '../../Wallet';
+import {
+  DefaultWalletOptions,
+  InstructionStepName,
+  Wallet,
+} from '../../Wallet';
 import {
   getInjectedConnector,
   hasInjectedProvider,
 } from '../../getInjectedConnector';
 import { getWalletConnectConnector } from '../../getWalletConnectConnector';
-import type { WalletConnectConnectorOptions } from '../../getWalletConnectConnector';
 
-export interface TrustWalletOptions {
-  chains: Chain[];
-  projectId: string;
-  walletConnectOptions?: WalletConnectConnectorOptions;
-}
+export type TrustWalletOptions = DefaultWalletOptions;
 
 export const trustWallet = ({
-  chains,
   projectId,
-  walletConnectOptions,
+  walletConnectParameters,
 }: TrustWalletOptions): Wallet => {
   const isTrustWalletInjected = isMobile()
     ? hasInjectedProvider({ flag: 'isTrust' })
     : hasInjectedProvider({ flag: 'isTrustWallet' });
   const shouldUseWalletConnect = !isTrustWalletInjected;
 
+  const getUriMobile = (uri: string) => {
+    return `trust://wc?uri=${encodeURIComponent(uri)}`;
+  };
+
+  const getUriQR = (uri: string) => {
+    return uri;
+  };
+
+  const mobileConnector = {
+    getUri: shouldUseWalletConnect ? getUriMobile : undefined,
+  };
+
+  let qrConnector = undefined;
+
+  if (shouldUseWalletConnect) {
+    qrConnector = {
+      getUri: getUriQR,
+      instructions: {
+        learnMoreUrl: 'https://trustwallet.com/',
+        steps: [
+          {
+            description: 'wallet_connectors.trust.qr_code.step1.description',
+            step: 'install' as InstructionStepName,
+            title: 'wallet_connectors.trust.qr_code.step1.title',
+          },
+          {
+            description: 'wallet_connectors.trust.qr_code.step2.description',
+            step: 'create' as InstructionStepName,
+            title: 'wallet_connectors.trust.qr_code.step2.title',
+          },
+          {
+            description: 'wallet_connectors.trust.qr_code.step3.description',
+            step: 'scan' as InstructionStepName,
+            title: 'wallet_connectors.trust.qr_code.step3.title',
+          },
+        ],
+      },
+    };
+  }
+
+  const extensionConnector = {
+    instructions: {
+      learnMoreUrl: 'https://trustwallet.com/browser-extension',
+      steps: [
+        {
+          description: 'wallet_connectors.trust.extension.step1.description',
+          step: 'install' as InstructionStepName,
+          title: 'wallet_connectors.trust.extension.step1.title',
+        },
+        {
+          description: 'wallet_connectors.trust.extension.step2.description',
+          step: 'create' as InstructionStepName,
+          title: 'wallet_connectors.trust.extension.step2.title',
+        },
+        {
+          description: 'wallet_connectors.trust.extension.step3.description',
+          step: 'refresh' as InstructionStepName,
+          title: 'wallet_connectors.trust.extension.step3.title',
+        },
+      ],
+    },
+  };
+
   return {
     id: 'trust',
     name: 'Trust Wallet',
+    rdns: 'com.trustwallet.app',
     iconUrl: async () => (await import('./trustWallet.svg')).default,
     // Note that we never resolve `installed` to `false` because the
     // Trust Wallet provider falls back to other connection methods if
@@ -45,96 +105,16 @@ export const trustWallet = ({
         'https://chrome.google.com/webstore/detail/trust-wallet/egjidjbpglichdcondbcbdnbeeppgdph',
       browserExtension: 'https://trustwallet.com/browser-extension',
     },
-    createConnector: () => {
-      const getUriMobile = async () => {
-        const uri = await getWalletConnectUri(connector);
-
-        return `trust://wc?uri=${encodeURIComponent(uri)}`;
-      };
-
-      const getUriQR = async () => {
-        const uri = await getWalletConnectUri(connector);
-
-        return uri;
-      };
-
-      const connector = shouldUseWalletConnect
-        ? getWalletConnectConnector({
-            projectId,
-            chains,
-            options: walletConnectOptions,
-          })
-        : isMobile()
-          ? getInjectedConnector({ flag: 'isTrust', chains })
-          : getInjectedConnector({ flag: 'isTrustWallet', chains });
-
-      const mobileConnector = {
-        getUri: shouldUseWalletConnect ? getUriMobile : undefined,
-      };
-
-      let qrConnector = undefined;
-
-      if (shouldUseWalletConnect) {
-        qrConnector = {
-          getUri: getUriQR,
-          instructions: {
-            learnMoreUrl: 'https://trustwallet.com/',
-            steps: [
-              {
-                description:
-                  'wallet_connectors.trust.qr_code.step1.description',
-                step: 'install' as InstructionStepName,
-                title: 'wallet_connectors.trust.qr_code.step1.title',
-              },
-              {
-                description:
-                  'wallet_connectors.trust.qr_code.step2.description',
-                step: 'create' as InstructionStepName,
-                title: 'wallet_connectors.trust.qr_code.step2.title',
-              },
-              {
-                description:
-                  'wallet_connectors.trust.qr_code.step3.description',
-                step: 'scan' as InstructionStepName,
-                title: 'wallet_connectors.trust.qr_code.step3.title',
-              },
-            ],
-          },
-        };
-      }
-
-      const extensionConnector = {
-        instructions: {
-          learnMoreUrl: 'https://trustwallet.com/browser-extension',
-          steps: [
-            {
-              description:
-                'wallet_connectors.trust.extension.step1.description',
-              step: 'install' as InstructionStepName,
-              title: 'wallet_connectors.trust.extension.step1.title',
-            },
-            {
-              description:
-                'wallet_connectors.trust.extension.step2.description',
-              step: 'create' as InstructionStepName,
-              title: 'wallet_connectors.trust.extension.step2.title',
-            },
-            {
-              description:
-                'wallet_connectors.trust.extension.step3.description',
-              step: 'refresh' as InstructionStepName,
-              title: 'wallet_connectors.trust.extension.step3.title',
-            },
-          ],
-        },
-      };
-
-      return {
-        connector,
-        mobile: mobileConnector,
-        qrCode: qrConnector,
-        extension: extensionConnector,
-      };
-    },
+    mobile: mobileConnector,
+    qrCode: qrConnector,
+    extension: extensionConnector,
+    createConnector: shouldUseWalletConnect
+      ? getWalletConnectConnector({
+          projectId,
+          walletConnectParameters,
+        })
+      : isMobile()
+        ? getInjectedConnector({ flag: 'isTrust' })
+        : getInjectedConnector({ flag: 'isTrustWallet' }),
   };
 };
diff --git a/packages/rainbowkit/src/wallets/walletConnectors/uniswapWallet/uniswapWallet.ts b/packages/rainbowkit/src/wallets/walletConnectors/uniswapWallet/uniswapWallet.ts
index 0ee3b4d732..74b9cc8d8b 100644
--- a/packages/rainbowkit/src/wallets/walletConnectors/uniswapWallet/uniswapWallet.ts
+++ b/packages/rainbowkit/src/wallets/walletConnectors/uniswapWallet/uniswapWallet.ts
@@ -1,19 +1,12 @@
-import { Chain } from '../../../components/RainbowKitProvider/RainbowKitChainContext';
-import { getWalletConnectUri } from '../../../utils/getWalletConnectUri';
 import { Wallet } from '../../Wallet';
 import { getWalletConnectConnector } from '../../getWalletConnectConnector';
-import type { WalletConnectConnectorOptions } from '../../getWalletConnectConnector';
+import { DefaultWalletOptions } from './../../Wallet';
 
-export interface UniswapWalletOptions {
-  projectId: string;
-  chains: Chain[];
-  walletConnectOptions?: WalletConnectConnectorOptions;
-}
+export type UniswapWalletOptions = DefaultWalletOptions;
 
 export const uniswapWallet = ({
-  chains,
   projectId,
-  walletConnectOptions,
+  walletConnectParameters,
 }: UniswapWalletOptions): Wallet => ({
   id: 'uniswap',
   name: 'Uniswap Wallet',
@@ -24,47 +17,38 @@ export const uniswapWallet = ({
     mobile: 'https://wallet.uniswap.org/',
     qrCode: 'https://wallet.uniswap.org/',
   },
-  createConnector: () => {
-    const connector = getWalletConnectConnector({
-      projectId,
-      chains,
-      options: walletConnectOptions,
-    });
 
-    return {
-      connector,
-      mobile: {
-        getUri: async () => {
-          const uri = await getWalletConnectUri(connector);
-          return `uniswap://wc?uri=${encodeURIComponent(uri)}`;
+  mobile: {
+    getUri: (uri: string) => {
+      return `uniswap://wc?uri=${encodeURIComponent(uri)}`;
+    },
+  },
+  qrCode: {
+    getUri: (uri: string) => uri,
+    instructions: {
+      learnMoreUrl: 'https://wallet.uniswap.org/',
+      steps: [
+        {
+          description: 'wallet_connectors.uniswap.qr_code.step1.description',
+          step: 'install',
+          title: 'wallet_connectors.uniswap.qr_code.step1.title',
+        },
+        {
+          description: 'wallet_connectors.uniswap.qr_code.step2.description',
+          step: 'create',
+          title: 'wallet_connectors.uniswap.qr_code.step2.title',
         },
-      },
-      qrCode: {
-        getUri: async () => getWalletConnectUri(connector),
-        instructions: {
-          learnMoreUrl: 'https://wallet.uniswap.org/',
-          steps: [
-            {
-              description:
-                'wallet_connectors.uniswap.qr_code.step1.description',
-              step: 'install',
-              title: 'wallet_connectors.uniswap.qr_code.step1.title',
-            },
-            {
-              description:
-                'wallet_connectors.uniswap.qr_code.step2.description',
-              step: 'create',
-              title: 'wallet_connectors.uniswap.qr_code.step2.title',
-            },
-            {
-              description:
-                'wallet_connectors.uniswap.qr_code.step3.description',
-              step: 'scan',
-              title: 'wallet_connectors.uniswap.qr_code.step3.title',
-            },
-          ],
+        {
+          description: 'wallet_connectors.uniswap.qr_code.step3.description',
+          step: 'scan',
+          title: 'wallet_connectors.uniswap.qr_code.step3.title',
         },
-      },
-    };
+      ],
+    },
   },
+
+  createConnector: getWalletConnectConnector({
+    projectId,
+    walletConnectParameters,
+  }),
 });
diff --git a/packages/rainbowkit/src/wallets/walletConnectors/walletConnectWallet/walletConnectWallet.test.ts b/packages/rainbowkit/src/wallets/walletConnectors/walletConnectWallet/walletConnectWallet.test.ts
index 7a793a5adb..4313aa7fcf 100644
--- a/packages/rainbowkit/src/wallets/walletConnectors/walletConnectWallet/walletConnectWallet.test.ts
+++ b/packages/rainbowkit/src/wallets/walletConnectors/walletConnectWallet/walletConnectWallet.test.ts
@@ -1,56 +1,39 @@
 import { describe, expect, expectTypeOf, it } from 'vitest';
-import { mainnet } from 'wagmi/chains';
-import { WalletConnectConnector } from 'wagmi/connectors/walletConnect';
+import { Wallet } from '../../Wallet';
 import { walletConnectWallet } from './walletConnectWallet';
 
 describe('walletConnectWallet', () => {
-  const chains = [mainnet];
   const projectId = 'test-project-id';
 
   it('without projectId', () => {
-    // @ts-ignore - intentionally missing projectId for v2 default
-    const wallet = walletConnectWallet({ chains });
-    expect(() => wallet.createConnector()).toThrowError();
+    expect(() =>
+      // @ts-ignore
+      walletConnectWallet({
+        /* no project id */
+      }),
+    ).toThrowError();
   });
 
   it('with projectId', () => {
-    const wallet = walletConnectWallet({ chains, projectId });
-    const { connector } = wallet.createConnector();
-    expect(connector.id).toBe('walletConnect');
-    expectTypeOf(connector).toMatchTypeOf<WalletConnectConnector>();
+    const wallet = walletConnectWallet({ projectId });
+
+    expect(wallet.id).toBe('walletConnect');
+    expectTypeOf(wallet.createConnector).toMatchTypeOf<
+      Wallet['createConnector']
+    >();
   });
 
   it('v2 options', () => {
     const wallet = walletConnectWallet({
-      chains,
-      projectId,
       options: {
-        showQrModal: true,
+        isNewChainsStale: true,
       },
-    });
-    const { connector } = wallet.createConnector();
-
-    expect(connector.id).toBe('walletConnect');
-    expectTypeOf(connector).toMatchTypeOf<WalletConnectConnector>();
-
-    expect(connector.options.qrcode).toBe(undefined);
-    expect(connector.options.showQrModal).toBe(true);
-  });
-
-  it('v2 walletConnectOptions', () => {
-    const wallet = walletConnectWallet({
-      chains,
       projectId,
-      options: {
-        showQrModal: true,
-      },
     });
-    const { connector } = wallet.createConnector();
-
-    expect(connector.id).toBe('walletConnect');
-    expectTypeOf(connector).toMatchTypeOf<WalletConnectConnector>();
 
-    expect(connector.options.qrcode).toBe(undefined);
-    expect(connector.options.showQrModal).toBe(true);
+    expect(wallet.id).toBe('walletConnect');
+    expectTypeOf(wallet.createConnector).toMatchTypeOf<
+      Wallet['createConnector']
+    >();
   });
 });
diff --git a/packages/rainbowkit/src/wallets/walletConnectors/walletConnectWallet/walletConnectWallet.ts b/packages/rainbowkit/src/wallets/walletConnectors/walletConnectWallet/walletConnectWallet.ts
index 571abc9e8f..a949b7990c 100644
--- a/packages/rainbowkit/src/wallets/walletConnectors/walletConnectWallet/walletConnectWallet.ts
+++ b/packages/rainbowkit/src/wallets/walletConnectors/walletConnectWallet/walletConnectWallet.ts
@@ -1,47 +1,27 @@
-import { Chain } from '../../../components/RainbowKitProvider/RainbowKitChainContext';
-import { getWalletConnectUri } from '../../../utils/getWalletConnectUri';
-import { isIOS } from '../../../utils/isMobile';
-import { Wallet } from '../../Wallet';
+import { RainbowKitWalletConnectParameters, Wallet } from '../../Wallet';
 import { getWalletConnectConnector } from '../../getWalletConnectConnector';
-import type { WalletConnectConnectorOptions } from '../../getWalletConnectConnector';
 
 export interface WalletConnectWalletOptions {
   projectId: string;
-  chains: Chain[];
-  options?: WalletConnectConnectorOptions;
+  options?: RainbowKitWalletConnectParameters;
 }
 
 export const walletConnectWallet = ({
-  chains,
-  options,
   projectId,
-}: WalletConnectWalletOptions): Wallet => ({
-  id: 'walletConnect',
-  name: 'WalletConnect',
-  iconUrl: async () => (await import('./walletConnectWallet.svg')).default,
-  iconBackground: '#3b99fc',
-  createConnector: () => {
-    const ios = isIOS();
+  options,
+}: WalletConnectWalletOptions): Wallet => {
+  const getUri = (uri: string) => uri;
 
-    const connector = getWalletConnectConnector({
-      chains,
+  return {
+    id: 'walletConnect',
+    name: 'WalletConnect',
+    installed: undefined,
+    iconUrl: async () => (await import('./walletConnectWallet.svg')).default,
+    iconBackground: '#3b99fc',
+    qrCode: { getUri },
+    createConnector: getWalletConnectConnector({
       projectId,
-      options: {
-        showQrModal: ios,
-        ...options,
-      },
-    });
-
-    const getUri = async () => getWalletConnectUri(connector);
-
-    return {
-      connector,
-      ...(ios
-        ? {}
-        : {
-            mobile: { getUri },
-            qrCode: { getUri },
-          }),
-    };
-  },
-});
+      walletConnectParameters: options,
+    }),
+  };
+};
diff --git a/packages/rainbowkit/src/wallets/walletConnectors/xdefiWallet/xdefiWallet.ts b/packages/rainbowkit/src/wallets/walletConnectors/xdefiWallet/xdefiWallet.ts
index 5ad37cc9c0..88d6d3b31a 100644
--- a/packages/rainbowkit/src/wallets/walletConnectors/xdefiWallet/xdefiWallet.ts
+++ b/packages/rainbowkit/src/wallets/walletConnectors/xdefiWallet/xdefiWallet.ts
@@ -1,27 +1,22 @@
-import { Chain } from '../../../components/RainbowKitProvider/RainbowKitChainContext';
 import { Wallet } from '../../Wallet';
 import {
   getInjectedConnector,
   hasInjectedProvider,
 } from '../../getInjectedConnector';
 
-export interface XDEFIWalletOptions {
-  chains: Chain[];
-}
-
-export const xdefiWallet = ({ chains }: XDEFIWalletOptions): Wallet => ({
-  id: 'xdefi',
-  name: 'XDEFI Wallet',
-  installed: hasInjectedProvider({ namespace: 'xfi.ethereum' }),
-  iconUrl: async () => (await import('./xdefiWallet.svg')).default,
-  iconBackground: '#fff',
-  downloadUrls: {
-    chrome:
-      'https://chrome.google.com/webstore/detail/xdefi-wallet/hmeobnfnfcmdkdcmlblgagmfpfboieaf',
-    browserExtension: 'https://xdefi.io',
-  },
-  createConnector: () => ({
-    connector: getInjectedConnector({ namespace: 'xfi.ethereum', chains }),
+export const xdefiWallet = (): Wallet => {
+  return {
+    id: 'xdefi',
+    name: 'XDEFI Wallet',
+    rdns: 'io.xdefi',
+    installed: hasInjectedProvider({ namespace: 'xfi.ethereum' }),
+    iconUrl: async () => (await import('./xdefiWallet.svg')).default,
+    iconBackground: '#fff',
+    downloadUrls: {
+      chrome:
+        'https://chrome.google.com/webstore/detail/xdefi-wallet/hmeobnfnfcmdkdcmlblgagmfpfboieaf',
+      browserExtension: 'https://xdefi.io',
+    },
     extension: {
       instructions: {
         learnMoreUrl: 'https://xdefi.io/support-categories/xdefi-wallet/',
@@ -44,5 +39,6 @@ export const xdefiWallet = ({ chains }: XDEFIWalletOptions): Wallet => ({
         ],
       },
     },
-  }),
-});
+    createConnector: getInjectedConnector({ namespace: 'xfi.ethereum' }),
+  };
+};
diff --git a/packages/rainbowkit/src/wallets/walletConnectors/zealWallet/zealWallet.ts b/packages/rainbowkit/src/wallets/walletConnectors/zealWallet/zealWallet.ts
index 69395abdf6..90fff40f3e 100644
--- a/packages/rainbowkit/src/wallets/walletConnectors/zealWallet/zealWallet.ts
+++ b/packages/rainbowkit/src/wallets/walletConnectors/zealWallet/zealWallet.ts
@@ -1,15 +1,10 @@
-import { Chain } from '../../../components/RainbowKitProvider/RainbowKitChainContext';
 import { Wallet } from '../../Wallet';
 import {
   getInjectedConnector,
   hasInjectedProvider,
 } from '../../getInjectedConnector';
 
-export interface ZealWalletOptions {
-  chains: Chain[];
-}
-
-export const zealWallet = ({ chains }: ZealWalletOptions): Wallet => ({
+export const zealWallet = (): Wallet => ({
   id: 'zeal',
   name: 'Zeal',
   iconUrl: async () => (await import('./zealWallet.svg')).default,
@@ -18,29 +13,27 @@ export const zealWallet = ({ chains }: ZealWalletOptions): Wallet => ({
   downloadUrls: {
     browserExtension: 'https://zeal.app',
   },
-  createConnector: () => ({
-    connector: getInjectedConnector({ chains, flag: 'isZeal' }),
-    extension: {
-      instructions: {
-        learnMoreUrl: 'https://zeal.app/',
-        steps: [
-          {
-            description: 'wallet_connectors.zeal.extension.step1.description',
-            step: 'install',
-            title: 'wallet_connectors.zeal.extension.step1.title',
-          },
-          {
-            description: 'wallet_connectors.zeal.extension.step2.description',
-            step: 'create',
-            title: 'wallet_connectors.zeal.extension.step2.title',
-          },
-          {
-            description: 'wallet_connectors.zeal.extension.step3.description',
-            step: 'refresh',
-            title: 'wallet_connectors.zeal.extension.step3.title',
-          },
-        ],
-      },
+  extension: {
+    instructions: {
+      learnMoreUrl: 'https://zeal.app/',
+      steps: [
+        {
+          description: 'wallet_connectors.zeal.extension.step1.description',
+          step: 'install',
+          title: 'wallet_connectors.zeal.extension.step1.title',
+        },
+        {
+          description: 'wallet_connectors.zeal.extension.step2.description',
+          step: 'create',
+          title: 'wallet_connectors.zeal.extension.step2.title',
+        },
+        {
+          description: 'wallet_connectors.zeal.extension.step3.description',
+          step: 'refresh',
+          title: 'wallet_connectors.zeal.extension.step3.title',
+        },
+      ],
     },
-  }),
+  },
+  createConnector: getInjectedConnector({ flag: 'isZeal' }),
 });
diff --git a/packages/rainbowkit/src/wallets/walletConnectors/zerionWallet/zerionWallet.ts b/packages/rainbowkit/src/wallets/walletConnectors/zerionWallet/zerionWallet.ts
index 535fd0733c..f5f8e855b3 100644
--- a/packages/rainbowkit/src/wallets/walletConnectors/zerionWallet/zerionWallet.ts
+++ b/packages/rainbowkit/src/wallets/walletConnectors/zerionWallet/zerionWallet.ts
@@ -1,5 +1,3 @@
-import { Chain } from '../../../components/RainbowKitProvider/RainbowKitChainContext';
-import { getWalletConnectUri } from '../../../utils/getWalletConnectUri';
 import { isIOS } from '../../../utils/isMobile';
 import { Wallet } from '../../Wallet';
 import {
@@ -7,18 +5,13 @@ import {
   hasInjectedProvider,
 } from '../../getInjectedConnector';
 import { getWalletConnectConnector } from '../../getWalletConnectConnector';
-import type { WalletConnectConnectorOptions } from '../../getWalletConnectConnector';
+import { DefaultWalletOptions } from './../../Wallet';
 
-export interface ZerionWalletOptions {
-  projectId: string;
-  chains: Chain[];
-  walletConnectOptions?: WalletConnectConnectorOptions;
-}
+export type ZerionWalletOptions = DefaultWalletOptions;
 
 export const zerionWallet = ({
-  chains,
   projectId,
-  walletConnectOptions,
+  walletConnectParameters,
 }: ZerionWalletOptions): Wallet => {
   const isZerionInjected = hasInjectedProvider({
     namespace: 'zerionWallet',
@@ -26,9 +19,14 @@ export const zerionWallet = ({
   });
   const shouldUseWalletConnect = !isZerionInjected;
 
+  const getUri = (uri: string) => {
+    return isIOS() ? `zerion://wc?uri=${encodeURIComponent(uri)}` : uri;
+  };
+
   return {
     id: 'zerion',
     name: 'Zerion',
+    rdns: 'io.zerion.wallet',
     iconUrl: async () => (await import('./zerionWallet.svg')).default,
     iconAccent: '#2962ef',
     iconBackground: '#2962ef',
@@ -43,84 +41,68 @@ export const zerionWallet = ({
         'https://chrome.google.com/webstore/detail/klghhnkeealcohjjanjjdaeeggmfmlpl',
       browserExtension: 'https://zerion.io/extension',
     },
-    createConnector: () => {
-      const connector = shouldUseWalletConnect
-        ? getWalletConnectConnector({
-            projectId,
-            chains,
-            options: walletConnectOptions,
-          })
-        : getInjectedConnector({
-            chains,
-            namespace: 'zerionWallet',
-            flag: 'isZerion',
-          });
-
-      const getUri = async () => {
-        const uri = await getWalletConnectUri(connector);
-        return isIOS() ? `zerion://wc?uri=${encodeURIComponent(uri)}` : uri;
-      };
-
-      return {
-        connector,
-        mobile: {
-          getUri: shouldUseWalletConnect ? getUri : undefined,
-        },
-        qrCode: shouldUseWalletConnect
-          ? {
-              getUri,
-              instructions: {
-                learnMoreUrl:
-                  'https://zerion.io/blog/announcing-the-zerion-smart-wallet/',
-                steps: [
-                  {
-                    description:
-                      'wallet_connectors.zerion.qr_code.step1.description',
-                    step: 'install',
-                    title: 'wallet_connectors.zerion.qr_code.step1.title',
-                  },
-                  {
-                    description:
-                      'wallet_connectors.zerion.qr_code.step2.description',
-                    step: 'create',
-                    title: 'wallet_connectors.zerion.qr_code.step2.title',
-                  },
-                  {
-                    description:
-                      'wallet_connectors.zerion.qr_code.step3.description',
-                    step: 'scan',
-                    title: 'wallet_connectors.zerion.qr_code.step3.title',
-                  },
-                ],
-              },
-            }
-          : undefined,
-        extension: {
+    mobile: {
+      getUri: shouldUseWalletConnect ? getUri : undefined,
+    },
+    qrCode: shouldUseWalletConnect
+      ? {
+          getUri,
           instructions: {
-            learnMoreUrl: 'https://help.zerion.io/en/',
+            learnMoreUrl:
+              'https://zerion.io/blog/announcing-the-zerion-smart-wallet/',
             steps: [
               {
                 description:
-                  'wallet_connectors.zerion.extension.step1.description',
+                  'wallet_connectors.zerion.qr_code.step1.description',
                 step: 'install',
-                title: 'wallet_connectors.zerion.extension.step1.title',
+                title: 'wallet_connectors.zerion.qr_code.step1.title',
               },
               {
                 description:
-                  'wallet_connectors.zerion.extension.step2.description',
+                  'wallet_connectors.zerion.qr_code.step2.description',
                 step: 'create',
-                title: 'wallet_connectors.zerion.extension.step2.title',
+                title: 'wallet_connectors.zerion.qr_code.step2.title',
               },
               {
                 description:
-                  'wallet_connectors.zerion.extension.step3.description',
-                step: 'refresh',
-                title: 'wallet_connectors.zerion.extension.step3.title',
+                  'wallet_connectors.zerion.qr_code.step3.description',
+                step: 'scan',
+                title: 'wallet_connectors.zerion.qr_code.step3.title',
               },
             ],
           },
-        },
-      };
+        }
+      : undefined,
+    extension: {
+      instructions: {
+        learnMoreUrl: 'https://help.zerion.io/en/',
+        steps: [
+          {
+            description: 'wallet_connectors.zerion.extension.step1.description',
+            step: 'install',
+            title: 'wallet_connectors.zerion.extension.step1.title',
+          },
+          {
+            description: 'wallet_connectors.zerion.extension.step2.description',
+            step: 'create',
+            title: 'wallet_connectors.zerion.extension.step2.title',
+          },
+          {
+            description: 'wallet_connectors.zerion.extension.step3.description',
+            step: 'refresh',
+            title: 'wallet_connectors.zerion.extension.step3.title',
+          },
+        ],
+      },
     },
+    createConnector: shouldUseWalletConnect
+      ? getWalletConnectConnector({
+          projectId,
+          walletConnectParameters,
+        })
+      : getInjectedConnector({
+          namespace: 'zerionWallet',
+          flag: 'isZerion',
+        }),
   };
 };
diff --git a/packages/rainbowkit/test/index.tsx b/packages/rainbowkit/test/index.tsx
index 44d0829d19..57063294c5 100644
--- a/packages/rainbowkit/test/index.tsx
+++ b/packages/rainbowkit/test/index.tsx
@@ -1,81 +1,77 @@
+import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
 import { render } from '@testing-library/react';
 import React, { ReactElement } from 'react';
-import { http, createWalletClient } from 'viem';
-import { privateKeyToAccount } from 'viem/accounts';
-import { WagmiConfig, configureChains, createConfig } from 'wagmi';
-import type { Chain } from 'wagmi';
+import { http, type Chain } from 'viem';
+import { WagmiProvider, createConfig } from 'wagmi';
 import { arbitrum, base, mainnet, optimism, polygon, zora } from 'wagmi/chains';
-import { MockConnector } from 'wagmi/connectors/mock';
-import { alchemyProvider } from 'wagmi/providers/alchemy';
-import { publicProvider } from 'wagmi/providers/public';
+import { MockParameters, mock } from 'wagmi/connectors';
 import { RainbowKitProvider } from '../src/components/RainbowKitProvider/RainbowKitProvider';
 import type { RainbowKitProviderProps } from '../src/components/RainbowKitProvider/RainbowKitProvider';
+import { connectorsForWallets } from '../src/wallets/connectorsForWallets';
 import { getDefaultWallets } from '../src/wallets/getDefaultWallets';
 
-const defaultChains = [mainnet, polygon, optimism, arbitrum, base, zora];
+const defaultChains: readonly [Chain, ...Chain[]] = [
+  mainnet,
+  polygon,
+  optimism,
+  arbitrum,
+  base,
+  zora,
+];
 
-type MockConnectorOptions = ConstructorParameters<
-  typeof MockConnector
->[0]['options'];
+const queryClient = new QueryClient();
 
 export function renderWithProviders(
   component: ReactElement,
   options?: {
-    chains?: Chain[];
+    chains?: readonly [Chain, ...Chain[]];
     mock?: boolean;
-    mockOptions?: MockConnectorOptions;
+    mockFeatures?: MockParameters['features'];
     props?: Omit<RainbowKitProviderProps, 'children'>;
   },
 ) {
-  const supportedChains: Chain[] = options?.chains || defaultChains;
-  const firstChain = supportedChains[0];
+  const supportedChains = options?.chains || defaultChains;
 
-  const account = privateKeyToAccount(
-    '0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80',
-  ); // first anvil pk
+  const { wallets } = getDefaultWallets();
 
-  const client = createWalletClient({
-    account,
-    chain: firstChain,
-    transport: http(),
-  });
-
-  const { chains, publicClient } = configureChains(supportedChains, [
-    alchemyProvider({ apiKey: process.env.ALCHEMY_ID ?? '' }),
-    publicProvider(),
-  ]);
-
-  const { connectors } = getDefaultWallets({
-    appName: 'My RainbowKit App',
-    chains,
-    projectId: process.env.WALLETCONNECT_PROJECT_ID ?? 'YOUR_PROJECT_ID',
-  });
-
-  const mockConnector = new MockConnector({
-    chains,
-    options: {
-      chainId: firstChain.id,
-      flags: { isAuthorized: true },
-      walletClient: client,
-      ...options?.mockOptions,
+  const config = createConfig({
+    chains: supportedChains,
+    connectors: options?.mock
+      ? [
+          mock({
+            ...(options?.mockFeatures
+              ? { features: options?.mockFeatures }
+              : {}),
+            accounts: [
+              '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266',
+              '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
+              '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
+            ],
+          }),
+        ]
+      : connectorsForWallets(wallets, {
+          appName: 'rainbowkit.com',
+          projectId: process.env.WALLETCONNECT_PROJECT_ID ?? 'YOUR_PROJECT_ID',
+        }),
+    transports: {
+      [mainnet.id]: http(),
+      [polygon.id]: http(),
+      [optimism.id]: http(),
+      [arbitrum.id]: http(),
+      [base.id]: http(),
+      [zora.id]: http(),
     },
   });
 
-  const wagmiConfig = createConfig({
-    autoConnect: true,
-    connectors: options?.mock ? [mockConnector] : connectors,
-    publicClient,
-  });
-
   return render(component, {
     wrapper: ({ children }) => (
-      <WagmiConfig config={wagmiConfig}>
-        <RainbowKitProvider
-          chains={chains}
-          children={children}
-          {...options?.props}
-        />
-      </WagmiConfig>
+      <WagmiProvider config={config}>
+        <QueryClientProvider client={queryClient}>
+          <RainbowKitProvider {...options?.props}>
+            {children}
+          </RainbowKitProvider>
+        </QueryClientProvider>
+      </WagmiProvider>
     ),
   });
 }
diff --git a/packages/rainbowkit/tsconfig.json b/packages/rainbowkit/tsconfig.json
index 99394ebd79..94a9a5b3d7 100644
--- a/packages/rainbowkit/tsconfig.json
+++ b/packages/rainbowkit/tsconfig.json
@@ -3,6 +3,7 @@
   "compilerOptions": {
     "module": "ESNext",
     "target": "ES2019",
+    "preserveSymlinks": false,
     "declaration": true,
     "declarationDir": "dist",
     "jsx": "react",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 6baed101d8..fe88667ebe 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -26,12 +26,9 @@ importers:
       '@lavamoat/preinstall-always-fail':
         specifier: ^2.0.0
         version: 2.0.0
-      '@tanstack/query-core':
-        specifier: ^4.28.0
-        version: 4.29.5
       '@tanstack/react-query':
-        specifier: ^4.28.0
-        version: 4.29.5(react-dom@18.2.0)(react@18.2.0)
+        specifier: ^5.17.9
+        version: 5.17.9(react@18.2.0)
       '@testing-library/jest-dom':
         specifier: ^6.2.0
         version: 6.2.0(vitest@0.33.0)
@@ -105,14 +102,14 @@ importers:
         specifier: ^5.0.4
         version: 5.0.4
       viem:
-        specifier: ~1.21.4
-        version: 1.21.4(typescript@5.0.4)
+        specifier: ^2.4.1
+        version: 2.4.1(typescript@5.0.4)
       vitest:
         specifier: ^0.33.0
         version: 0.33.0(jsdom@23.0.1)
       wagmi:
-        specifier: ~1.4.13
-        version: 1.4.13(@types/react@18.2.46)(react-dom@18.2.0)(react@18.2.0)(typescript@5.0.4)(viem@1.21.4)
+        specifier: ^2.3.1
+        version: 2.3.1(@tanstack/react-query@5.17.9)(@types/react@18.2.46)(react-dom@18.2.0)(react-native@0.73.1)(react@18.2.0)(typescript@5.0.4)(viem@2.4.1)
 
   packages/create-rainbowkit:
     dependencies:
@@ -185,12 +182,15 @@ importers:
       '@rainbow-me/rainbowkit-siwe-next-auth':
         specifier: workspace:*
         version: link:../rainbowkit-siwe-next-auth
+      '@tanstack/react-query':
+        specifier: ^5.17.9
+        version: 5.17.9(react@18.2.0)
       ethers:
         specifier: ^5.6.8
         version: 5.6.8
       next:
         specifier: ^14.0.4
-        version: 14.0.4(@babel/core@7.22.9)(react-dom@18.2.0)(react@18.2.0)
+        version: 14.0.4(@babel/core@7.23.7)(react-dom@18.2.0)(react@18.2.0)
       next-auth:
         specifier: 4.24.5
         version: 4.24.5(next@14.0.4)(react-dom@18.2.0)(react@18.2.0)
@@ -204,11 +204,11 @@ importers:
         specifier: ^2.1.4
         version: 2.1.4(ethers@5.6.8)
       viem:
-        specifier: ~1.21.4
-        version: 1.21.4(typescript@5.0.4)
+        specifier: ^2.4.1
+        version: 2.4.1(typescript@5.0.4)
       wagmi:
-        specifier: ~1.4.13
-        version: 1.4.13(@types/react@18.2.46)(react-dom@18.2.0)(react@18.2.0)(typescript@5.0.4)(viem@1.21.4)
+        specifier: ^2.3.1
+        version: 2.3.1(@tanstack/react-query@5.17.9)(@types/react@18.2.46)(react-dom@18.2.0)(react-native@0.73.1)(react@18.2.0)(typescript@5.0.4)(viem@2.4.1)
 
   packages/rainbow-button:
     dependencies:
@@ -222,11 +222,11 @@ importers:
         specifier: '>=17'
         version: 18.2.0(react@18.2.0)
       viem:
-        specifier: ~0.3.19 || ^1.0.0
-        version: 1.19.4(typescript@5.0.4)
+        specifier: 2.x
+        version: 2.4.1(typescript@5.0.4)
       wagmi:
-        specifier: ~1.0.1 || ~1.1.0 || ~1.2.0 || ~1.3.0 || ~1.4.0
-        version: 1.4.7(@types/react@18.2.46)(lokijs@1.5.12)(react-dom@18.2.0)(react@18.2.0)(typescript@5.0.4)(viem@1.19.4)
+        specifier: 2.x
+        version: 2.3.1(@tanstack/react-query@5.17.9)(@types/react@18.2.46)(react-dom@18.2.0)(react-native@0.73.1)(react@18.2.0)(typescript@5.0.4)(viem@2.4.1)
 
   packages/rainbowkit:
     dependencies:
@@ -257,6 +257,12 @@ importers:
       ua-parser-js:
         specifier: ^1.0.37
         version: 1.0.37
+      viem:
+        specifier: 2.x
+        version: 2.4.1(typescript@5.0.4)
+      wagmi:
+        specifier: 2.x
+        version: 2.3.1(@tanstack/react-query@5.17.9)(@types/react@18.2.46)(react-dom@18.2.0)(react-native@0.73.1)(react@18.2.0)(typescript@5.0.4)(viem@2.4.1)
     devDependencies:
       '@testing-library/jest-dom':
         specifier: ^6.2.0
@@ -297,15 +303,9 @@ importers:
       react:
         specifier: ^18.2.0
         version: 18.2.0
-      viem:
-        specifier: ~1.21.4
-        version: 1.21.4(typescript@5.0.4)
       vitest:
         specifier: ^0.33.0
         version: 0.33.0(jsdom@23.0.1)
-      wagmi:
-        specifier: ~1.4.13
-        version: 1.4.13(@types/react@18.2.46)(react-dom@18.2.0)(react@18.2.0)(typescript@5.0.4)(viem@1.21.4)
 
   packages/rainbowkit-siwe-next-auth:
     dependencies:
@@ -351,7 +351,10 @@ importers:
         version: 9.4.4(@react-three/fiber@8.0.12)(react@18.2.0)(three@0.139.2)
       '@react-three/fiber':
         specifier: ^8.0.12
-        version: 8.0.12(react-dom@18.2.0)(react@18.2.0)(three@0.139.2)
+        version: 8.0.12(react-dom@18.2.0)(react-native@0.73.1)(react@18.2.0)(three@0.139.2)
+      '@tanstack/react-query':
+        specifier: ^5.17.9
+        version: 5.17.9(react@18.2.0)
       '@vanilla-extract/css':
         specifier: 1.14.0
         version: 1.14.0
@@ -422,11 +425,11 @@ importers:
         specifier: 4.1.0
         version: 4.1.0
       viem:
-        specifier: ~1.21.4
-        version: 1.21.4(typescript@5.0.4)
+        specifier: ^2.4.1
+        version: 2.4.1(typescript@5.0.4)
       wagmi:
-        specifier: ~1.4.13
-        version: 1.4.13(@types/react@18.2.46)(react-dom@18.2.0)(react@18.2.0)(typescript@5.0.4)(viem@1.21.4)
+        specifier: ^2.3.1
+        version: 2.3.1(@tanstack/react-query@5.17.9)(@types/react@18.2.46)(react-dom@18.2.0)(react-native@0.73.1)(react@18.2.0)(typescript@5.0.4)(viem@2.4.1)
     devDependencies:
       contentlayer:
         specifier: 0.2.9
@@ -565,45 +568,46 @@ packages:
       '@jridgewell/gen-mapping': 0.3.3
       '@jridgewell/trace-mapping': 0.3.18
 
-  /@babel/code-frame@7.21.4:
-    resolution: {integrity: sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==}
-    engines: {node: '>=6.9.0'}
-    dependencies:
-      '@babel/highlight': 7.22.5
-
   /@babel/code-frame@7.22.5:
     resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==}
     engines: {node: '>=6.9.0'}
     dependencies:
       '@babel/highlight': 7.22.5
 
-  /@babel/compat-data@7.21.7:
-    resolution: {integrity: sha512-KYMqFYTaenzMK4yUtf4EW9wc4N9ef80FsbMtkwool5zpwl4YrT1SdWYSTRcT94KO4hannogdS+LxY7L+arP3gA==}
+  /@babel/code-frame@7.23.5:
+    resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==}
     engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/highlight': 7.23.4
+      chalk: 2.4.2
 
   /@babel/compat-data@7.22.9:
     resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==}
     engines: {node: '>=6.9.0'}
 
+  /@babel/compat-data@7.23.5:
+    resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==}
+    engines: {node: '>=6.9.0'}
+
   /@babel/core@7.21.8:
     resolution: {integrity: sha512-YeM22Sondbo523Sz0+CirSPnbj9bG3P0CdHcBZdqUuaeOaYEFbOLoGU7lebvGP6P5J/WE9wOn7u7C4J9HvS1xQ==}
     engines: {node: '>=6.9.0'}
     dependencies:
       '@ampproject/remapping': 2.2.1
-      '@babel/code-frame': 7.21.4
-      '@babel/generator': 7.21.5
-      '@babel/helper-compilation-targets': 7.21.5(@babel/core@7.21.8)
-      '@babel/helper-module-transforms': 7.21.5
-      '@babel/helpers': 7.21.5
-      '@babel/parser': 7.21.8
-      '@babel/template': 7.20.7
-      '@babel/traverse': 7.21.5
-      '@babel/types': 7.21.5
+      '@babel/code-frame': 7.22.5
+      '@babel/generator': 7.22.9
+      '@babel/helper-compilation-targets': 7.22.9(@babel/core@7.21.8)
+      '@babel/helper-module-transforms': 7.22.9(@babel/core@7.21.8)
+      '@babel/helpers': 7.22.6
+      '@babel/parser': 7.22.7
+      '@babel/template': 7.22.5
+      '@babel/traverse': 7.22.8
+      '@babel/types': 7.22.5
       convert-source-map: 1.9.0
       debug: 4.3.4
       gensync: 1.0.0-beta.2
       json5: 2.2.3
-      semver: 6.3.0
+      semver: 6.3.1
     transitivePeerDependencies:
       - supports-color
 
@@ -629,14 +633,27 @@ packages:
     transitivePeerDependencies:
       - supports-color
 
-  /@babel/generator@7.21.5:
-    resolution: {integrity: sha512-SrKK/sRv8GesIW1bDagf9cCG38IOMYZusoe1dfg0D8aiUe3Amvoj1QtjTPAWcfrZFvIwlleLb0gxzQidL9w14w==}
+  /@babel/core@7.23.7:
+    resolution: {integrity: sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw==}
     engines: {node: '>=6.9.0'}
     dependencies:
-      '@babel/types': 7.21.5
-      '@jridgewell/gen-mapping': 0.3.3
-      '@jridgewell/trace-mapping': 0.3.18
-      jsesc: 2.5.2
+      '@ampproject/remapping': 2.2.1
+      '@babel/code-frame': 7.23.5
+      '@babel/generator': 7.23.6
+      '@babel/helper-compilation-targets': 7.23.6
+      '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.7)
+      '@babel/helpers': 7.23.7
+      '@babel/parser': 7.23.6
+      '@babel/template': 7.22.15
+      '@babel/traverse': 7.23.7
+      '@babel/types': 7.23.6
+      convert-source-map: 2.0.0
+      debug: 4.3.4
+      gensync: 1.0.0-beta.2
+      json5: 2.2.3
+      semver: 6.3.1
+    transitivePeerDependencies:
+      - supports-color
 
   /@babel/generator@7.22.9:
     resolution: {integrity: sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==}
@@ -647,16 +664,37 @@ packages:
       '@jridgewell/trace-mapping': 0.3.18
       jsesc: 2.5.2
 
-  /@babel/helper-compilation-targets@7.21.5(@babel/core@7.21.8):
-    resolution: {integrity: sha512-1RkbFGUKex4lvsB9yhIfWltJM5cZKUftB2eNajaDv3dCMEp49iBG0K14uH8NnX9IPux2+mK7JGEOB0jn48/J6w==}
+  /@babel/generator@7.23.6:
+    resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==}
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/types': 7.23.6
+      '@jridgewell/gen-mapping': 0.3.3
+      '@jridgewell/trace-mapping': 0.3.18
+      jsesc: 2.5.2
+
+  /@babel/helper-annotate-as-pure@7.22.5:
+    resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==}
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/types': 7.23.6
+
+  /@babel/helper-builder-binary-assignment-operator-visitor@7.22.15:
+    resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==}
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/types': 7.23.6
+
+  /@babel/helper-compilation-targets@7.22.9(@babel/core@7.21.8):
+    resolution: {integrity: sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw==}
     engines: {node: '>=6.9.0'}
     peerDependencies:
       '@babel/core': ^7.0.0
     dependencies:
-      '@babel/compat-data': 7.21.7
+      '@babel/compat-data': 7.22.9
       '@babel/core': 7.21.8
-      '@babel/helper-validator-option': 7.21.0
-      browserslist: 4.21.9
+      '@babel/helper-validator-option': 7.22.5
+      browserslist: 4.22.2
       lru-cache: 5.1.1
       semver: 6.3.1
 
@@ -669,195 +707,1963 @@ packages:
       '@babel/compat-data': 7.22.9
       '@babel/core': 7.22.9
       '@babel/helper-validator-option': 7.22.5
-      browserslist: 4.21.9
+      browserslist: 4.22.2
+      lru-cache: 5.1.1
+      semver: 6.3.1
+
+  /@babel/helper-compilation-targets@7.23.6:
+    resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==}
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/compat-data': 7.23.5
+      '@babel/helper-validator-option': 7.23.5
+      browserslist: 4.22.2
       lru-cache: 5.1.1
       semver: 6.3.1
 
-  /@babel/helper-environment-visitor@7.21.5:
-    resolution: {integrity: sha512-IYl4gZ3ETsWocUWgsFZLM5i1BYx9SoemminVEXadgLBa9TdeorzgLKm8wWLA6J1N/kT3Kch8XIk1laNzYoHKvQ==}
+  /@babel/helper-create-class-features-plugin@7.23.7(@babel/core@7.21.8):
+    resolution: {integrity: sha512-xCoqR/8+BoNnXOY7RVSgv6X+o7pmT5q1d+gGcRlXYkI+9B31glE4jeejhKVpA04O1AtzOt7OSQ6VYKP5FcRl9g==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-annotate-as-pure': 7.22.5
+      '@babel/helper-environment-visitor': 7.22.20
+      '@babel/helper-function-name': 7.23.0
+      '@babel/helper-member-expression-to-functions': 7.23.0
+      '@babel/helper-optimise-call-expression': 7.22.5
+      '@babel/helper-replace-supers': 7.22.20(@babel/core@7.21.8)
+      '@babel/helper-skip-transparent-expression-wrappers': 7.22.5
+      '@babel/helper-split-export-declaration': 7.22.6
+      semver: 6.3.1
+    dev: false
+
+  /@babel/helper-create-class-features-plugin@7.23.7(@babel/core@7.23.7):
+    resolution: {integrity: sha512-xCoqR/8+BoNnXOY7RVSgv6X+o7pmT5q1d+gGcRlXYkI+9B31glE4jeejhKVpA04O1AtzOt7OSQ6VYKP5FcRl9g==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-annotate-as-pure': 7.22.5
+      '@babel/helper-environment-visitor': 7.22.20
+      '@babel/helper-function-name': 7.23.0
+      '@babel/helper-member-expression-to-functions': 7.23.0
+      '@babel/helper-optimise-call-expression': 7.22.5
+      '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.7)
+      '@babel/helper-skip-transparent-expression-wrappers': 7.22.5
+      '@babel/helper-split-export-declaration': 7.22.6
+      semver: 6.3.1
+
+  /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.21.8):
+    resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-annotate-as-pure': 7.22.5
+      regexpu-core: 5.3.2
+      semver: 6.3.1
+    dev: false
+
+  /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.23.7):
+    resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-annotate-as-pure': 7.22.5
+      regexpu-core: 5.3.2
+      semver: 6.3.1
+
+  /@babel/helper-define-polyfill-provider@0.4.4(@babel/core@7.21.8):
+    resolution: {integrity: sha512-QcJMILQCu2jm5TFPGA3lCpJJTeEP+mqeXooG/NZbg/h5FTFi6V0+99ahlRsW8/kRLyb24LZVCCiclDedhLKcBA==}
+    peerDependencies:
+      '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-compilation-targets': 7.23.6
+      '@babel/helper-plugin-utils': 7.22.5
+      debug: 4.3.4
+      lodash.debounce: 4.0.8
+      resolve: 1.22.8
+    transitivePeerDependencies:
+      - supports-color
+    dev: false
+
+  /@babel/helper-define-polyfill-provider@0.4.4(@babel/core@7.23.7):
+    resolution: {integrity: sha512-QcJMILQCu2jm5TFPGA3lCpJJTeEP+mqeXooG/NZbg/h5FTFi6V0+99ahlRsW8/kRLyb24LZVCCiclDedhLKcBA==}
+    peerDependencies:
+      '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-compilation-targets': 7.23.6
+      '@babel/helper-plugin-utils': 7.22.5
+      debug: 4.3.4
+      lodash.debounce: 4.0.8
+      resolve: 1.22.8
+    transitivePeerDependencies:
+      - supports-color
+
+  /@babel/helper-environment-visitor@7.22.20:
+    resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==}
     engines: {node: '>=6.9.0'}
 
   /@babel/helper-environment-visitor@7.22.5:
     resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==}
     engines: {node: '>=6.9.0'}
 
-  /@babel/helper-function-name@7.21.0:
-    resolution: {integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==}
+  /@babel/helper-function-name@7.22.5:
+    resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==}
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/template': 7.22.5
+      '@babel/types': 7.22.5
+
+  /@babel/helper-function-name@7.23.0:
+    resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==}
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/template': 7.22.15
+      '@babel/types': 7.23.6
+
+  /@babel/helper-hoist-variables@7.22.5:
+    resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==}
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/types': 7.22.5
+
+  /@babel/helper-member-expression-to-functions@7.23.0:
+    resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==}
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/types': 7.23.6
+
+  /@babel/helper-module-imports@7.22.15:
+    resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==}
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/types': 7.23.6
+
+  /@babel/helper-module-imports@7.22.5:
+    resolution: {integrity: sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==}
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/types': 7.22.5
+
+  /@babel/helper-module-transforms@7.22.9(@babel/core@7.21.8):
+    resolution: {integrity: sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-environment-visitor': 7.22.5
+      '@babel/helper-module-imports': 7.22.5
+      '@babel/helper-simple-access': 7.22.5
+      '@babel/helper-split-export-declaration': 7.22.6
+      '@babel/helper-validator-identifier': 7.22.5
+
+  /@babel/helper-module-transforms@7.22.9(@babel/core@7.22.9):
+    resolution: {integrity: sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0
+    dependencies:
+      '@babel/core': 7.22.9
+      '@babel/helper-environment-visitor': 7.22.5
+      '@babel/helper-module-imports': 7.22.5
+      '@babel/helper-simple-access': 7.22.5
+      '@babel/helper-split-export-declaration': 7.22.6
+      '@babel/helper-validator-identifier': 7.22.5
+
+  /@babel/helper-module-transforms@7.23.3(@babel/core@7.21.8):
+    resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-environment-visitor': 7.22.20
+      '@babel/helper-module-imports': 7.22.15
+      '@babel/helper-simple-access': 7.22.5
+      '@babel/helper-split-export-declaration': 7.22.6
+      '@babel/helper-validator-identifier': 7.22.20
+    dev: false
+
+  /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-environment-visitor': 7.22.20
+      '@babel/helper-module-imports': 7.22.15
+      '@babel/helper-simple-access': 7.22.5
+      '@babel/helper-split-export-declaration': 7.22.6
+      '@babel/helper-validator-identifier': 7.22.20
+
+  /@babel/helper-optimise-call-expression@7.22.5:
+    resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==}
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/types': 7.23.6
+
+  /@babel/helper-plugin-utils@7.22.5:
+    resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==}
+    engines: {node: '>=6.9.0'}
+
+  /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.21.8):
+    resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-annotate-as-pure': 7.22.5
+      '@babel/helper-environment-visitor': 7.22.20
+      '@babel/helper-wrap-function': 7.22.20
+    dev: false
+
+  /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.23.7):
+    resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-annotate-as-pure': 7.22.5
+      '@babel/helper-environment-visitor': 7.22.20
+      '@babel/helper-wrap-function': 7.22.20
+
+  /@babel/helper-replace-supers@7.22.20(@babel/core@7.21.8):
+    resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-environment-visitor': 7.22.20
+      '@babel/helper-member-expression-to-functions': 7.23.0
+      '@babel/helper-optimise-call-expression': 7.22.5
+    dev: false
+
+  /@babel/helper-replace-supers@7.22.20(@babel/core@7.23.7):
+    resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-environment-visitor': 7.22.20
+      '@babel/helper-member-expression-to-functions': 7.23.0
+      '@babel/helper-optimise-call-expression': 7.22.5
+
+  /@babel/helper-simple-access@7.22.5:
+    resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==}
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/types': 7.22.5
+
+  /@babel/helper-skip-transparent-expression-wrappers@7.22.5:
+    resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==}
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/types': 7.23.6
+
+  /@babel/helper-split-export-declaration@7.22.6:
+    resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==}
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/types': 7.22.5
+
+  /@babel/helper-string-parser@7.22.5:
+    resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==}
+    engines: {node: '>=6.9.0'}
+
+  /@babel/helper-string-parser@7.23.4:
+    resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==}
+    engines: {node: '>=6.9.0'}
+
+  /@babel/helper-validator-identifier@7.22.20:
+    resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==}
+    engines: {node: '>=6.9.0'}
+
+  /@babel/helper-validator-identifier@7.22.5:
+    resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==}
+    engines: {node: '>=6.9.0'}
+
+  /@babel/helper-validator-option@7.22.5:
+    resolution: {integrity: sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==}
+    engines: {node: '>=6.9.0'}
+
+  /@babel/helper-validator-option@7.23.5:
+    resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==}
+    engines: {node: '>=6.9.0'}
+
+  /@babel/helper-wrap-function@7.22.20:
+    resolution: {integrity: sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==}
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/helper-function-name': 7.23.0
+      '@babel/template': 7.22.15
+      '@babel/types': 7.23.6
+
+  /@babel/helpers@7.22.6:
+    resolution: {integrity: sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==}
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/template': 7.22.5
+      '@babel/traverse': 7.22.8
+      '@babel/types': 7.22.5
+    transitivePeerDependencies:
+      - supports-color
+
+  /@babel/helpers@7.23.7:
+    resolution: {integrity: sha512-6AMnjCoC8wjqBzDHkuqpa7jAKwvMo4dC+lr/TFBz+ucfulO1XMpDnwWPGBNwClOKZ8h6xn5N81W/R5OrcKtCbQ==}
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/template': 7.22.15
+      '@babel/traverse': 7.23.7
+      '@babel/types': 7.23.6
+    transitivePeerDependencies:
+      - supports-color
+
+  /@babel/highlight@7.22.5:
+    resolution: {integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==}
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/helper-validator-identifier': 7.22.5
+      chalk: 2.4.2
+      js-tokens: 4.0.0
+
+  /@babel/highlight@7.23.4:
+    resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==}
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/helper-validator-identifier': 7.22.20
+      chalk: 2.4.2
+      js-tokens: 4.0.0
+
+  /@babel/parser@7.22.7:
+    resolution: {integrity: sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==}
+    engines: {node: '>=6.0.0'}
+    dependencies:
+      '@babel/types': 7.22.5
+
+  /@babel/parser@7.23.6:
+    resolution: {integrity: sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==}
+    engines: {node: '>=6.0.0'}
+    hasBin: true
+    dependencies:
+      '@babel/types': 7.23.6
+
+  /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+
+  /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.13.0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/helper-skip-transparent-expression-wrappers': 7.22.5
+      '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.7)
+
+  /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.7(@babel/core@7.23.7):
+    resolution: {integrity: sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-environment-visitor': 7.22.20
+      '@babel/helper-plugin-utils': 7.22.5
+
+  /@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.21.8):
+    resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==}
+    engines: {node: '>=6.9.0'}
+    deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead.
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-environment-visitor': 7.22.20
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.21.8)
+      '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.21.8)
+    dev: false
+
+  /@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.23.7):
+    resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==}
+    engines: {node: '>=6.9.0'}
+    deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead.
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-environment-visitor': 7.22.20
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.7)
+      '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.7)
+
+  /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.21.8):
+    resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==}
+    engines: {node: '>=6.9.0'}
+    deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-create-class-features-plugin': 7.23.7(@babel/core@7.21.8)
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: false
+
+  /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.23.7):
+    resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==}
+    engines: {node: '>=6.9.0'}
+    deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-create-class-features-plugin': 7.23.7(@babel/core@7.23.7)
+      '@babel/helper-plugin-utils': 7.22.5
+
+  /@babel/plugin-proposal-export-default-from@7.23.3(@babel/core@7.21.8):
+    resolution: {integrity: sha512-Q23MpLZfSGZL1kU7fWqV262q65svLSCIP5kZ/JCW/rKTCm/FrLjpvEd2kfUYMVeHh4QhV/xzyoRAHWrAZJrE3Q==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/plugin-syntax-export-default-from': 7.23.3(@babel/core@7.21.8)
+    dev: false
+
+  /@babel/plugin-proposal-export-default-from@7.23.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-Q23MpLZfSGZL1kU7fWqV262q65svLSCIP5kZ/JCW/rKTCm/FrLjpvEd2kfUYMVeHh4QhV/xzyoRAHWrAZJrE3Q==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/plugin-syntax-export-default-from': 7.23.3(@babel/core@7.23.7)
+
+  /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.21.8):
+    resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==}
+    engines: {node: '>=6.9.0'}
+    deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead.
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.21.8)
+    dev: false
+
+  /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.23.7):
+    resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==}
+    engines: {node: '>=6.9.0'}
+    deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead.
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.7)
+
+  /@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.21.8):
+    resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==}
+    engines: {node: '>=6.9.0'}
+    deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead.
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.21.8)
+    dev: false
+
+  /@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.23.7):
+    resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==}
+    engines: {node: '>=6.9.0'}
+    deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead.
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.7)
+
+  /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.21.8):
+    resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==}
+    engines: {node: '>=6.9.0'}
+    deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead.
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/compat-data': 7.23.5
+      '@babel/core': 7.21.8
+      '@babel/helper-compilation-targets': 7.23.6
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.21.8)
+      '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.21.8)
+    dev: false
+
+  /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.23.7):
+    resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==}
+    engines: {node: '>=6.9.0'}
+    deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead.
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/compat-data': 7.23.5
+      '@babel/core': 7.23.7
+      '@babel/helper-compilation-targets': 7.23.6
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.7)
+
+  /@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.21.8):
+    resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==}
+    engines: {node: '>=6.9.0'}
+    deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-catch-binding instead.
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.21.8)
+    dev: false
+
+  /@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.23.7):
+    resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==}
+    engines: {node: '>=6.9.0'}
+    deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-catch-binding instead.
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.7)
+
+  /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.21.8):
+    resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==}
+    engines: {node: '>=6.9.0'}
+    deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead.
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/helper-skip-transparent-expression-wrappers': 7.22.5
+      '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.21.8)
+    dev: false
+
+  /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.23.7):
+    resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==}
+    engines: {node: '>=6.9.0'}
+    deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead.
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/helper-skip-transparent-expression-wrappers': 7.22.5
+      '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.7)
+
+  /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.7):
+    resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+
+  /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.21.8):
+    resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: false
+
+  /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.7):
+    resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+
+  /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.21.8):
+    resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: false
+
+  /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.7):
+    resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+
+  /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.23.7):
+    resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+
+  /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.21.8):
+    resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: false
+
+  /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+
+  /@babel/plugin-syntax-export-default-from@7.23.3(@babel/core@7.21.8):
+    resolution: {integrity: sha512-KeENO5ck1IeZ/l2lFZNy+mpobV3D2Zy5C1YFnWm+YuY5mQiAWc4yAp13dqgguwsBsFVLh4LPCEqCa5qW13N+hw==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: false
+
+  /@babel/plugin-syntax-export-default-from@7.23.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-KeENO5ck1IeZ/l2lFZNy+mpobV3D2Zy5C1YFnWm+YuY5mQiAWc4yAp13dqgguwsBsFVLh4LPCEqCa5qW13N+hw==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+
+  /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+
+  /@babel/plugin-syntax-flow@7.23.3(@babel/core@7.21.8):
+    resolution: {integrity: sha512-YZiAIpkJAwQXBJLIQbRFayR5c+gJ35Vcz3bg954k7cd73zqjvhacJuL9RbrzPz8qPmZdgqP6EUKwy0PCNhaaPA==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: false
+
+  /@babel/plugin-syntax-flow@7.23.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-YZiAIpkJAwQXBJLIQbRFayR5c+gJ35Vcz3bg954k7cd73zqjvhacJuL9RbrzPz8qPmZdgqP6EUKwy0PCNhaaPA==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+
+  /@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+
+  /@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+
+  /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.7):
+    resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+
+  /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+
+  /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.21.8):
+    resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: false
+
+  /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+
+  /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.7):
+    resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+
+  /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.21.8):
+    resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: false
+
+  /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+
+  /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.21.8):
+    resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: false
+
+  /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.7):
+    resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+
+  /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.21.8):
+    resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: false
+
+  /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+
+  /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.21.8):
+    resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: false
+
+  /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+
+  /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.21.8):
+    resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: false
+
+  /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+
+  /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.21.8):
+    resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: false
+
+  /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.23.7):
+    resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+
+  /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.7):
+    resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+
+  /@babel/plugin-syntax-typescript@7.21.4(@babel/core@7.21.8):
+    resolution: {integrity: sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: false
+
+  /@babel/plugin-syntax-typescript@7.21.4(@babel/core@7.22.9):
+    resolution: {integrity: sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.22.9
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: true
+
+  /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.21.8):
+    resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: false
+
+  /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+
+  /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.23.7):
+    resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7)
+      '@babel/helper-plugin-utils': 7.22.5
+
+  /@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.21.8):
+    resolution: {integrity: sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: false
+
+  /@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+
+  /@babel/plugin-transform-async-generator-functions@7.23.7(@babel/core@7.23.7):
+    resolution: {integrity: sha512-PdxEpL71bJp1byMG0va5gwQcXHxuEYC/BgI/e88mGTtohbZN28O5Yit0Plkkm/dBzCF/BxmbNcses1RH1T+urA==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-environment-visitor': 7.22.20
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.7)
+      '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.7)
+
+  /@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.21.8):
+    resolution: {integrity: sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-module-imports': 7.22.15
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.21.8)
+    dev: false
+
+  /@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-module-imports': 7.22.15
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.7)
+
+  /@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.21.8):
+    resolution: {integrity: sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: false
+
+  /@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+
+  /@babel/plugin-transform-block-scoping@7.23.4(@babel/core@7.21.8):
+    resolution: {integrity: sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: false
+
+  /@babel/plugin-transform-block-scoping@7.23.4(@babel/core@7.23.7):
+    resolution: {integrity: sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+
+  /@babel/plugin-transform-class-properties@7.23.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-create-class-features-plugin': 7.23.7(@babel/core@7.23.7)
+      '@babel/helper-plugin-utils': 7.22.5
+
+  /@babel/plugin-transform-class-static-block@7.23.4(@babel/core@7.23.7):
+    resolution: {integrity: sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.12.0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-create-class-features-plugin': 7.23.7(@babel/core@7.23.7)
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.7)
+
+  /@babel/plugin-transform-classes@7.23.5(@babel/core@7.21.8):
+    resolution: {integrity: sha512-jvOTR4nicqYC9yzOHIhXG5emiFEOpappSJAl73SDSEDcybD+Puuze8Tnpb9p9qEyYup24tq891gkaygIFvWDqg==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-annotate-as-pure': 7.22.5
+      '@babel/helper-compilation-targets': 7.23.6
+      '@babel/helper-environment-visitor': 7.22.20
+      '@babel/helper-function-name': 7.23.0
+      '@babel/helper-optimise-call-expression': 7.22.5
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/helper-replace-supers': 7.22.20(@babel/core@7.21.8)
+      '@babel/helper-split-export-declaration': 7.22.6
+      globals: 11.12.0
+    dev: false
+
+  /@babel/plugin-transform-classes@7.23.5(@babel/core@7.23.7):
+    resolution: {integrity: sha512-jvOTR4nicqYC9yzOHIhXG5emiFEOpappSJAl73SDSEDcybD+Puuze8Tnpb9p9qEyYup24tq891gkaygIFvWDqg==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-annotate-as-pure': 7.22.5
+      '@babel/helper-compilation-targets': 7.23.6
+      '@babel/helper-environment-visitor': 7.22.20
+      '@babel/helper-function-name': 7.23.0
+      '@babel/helper-optimise-call-expression': 7.22.5
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.7)
+      '@babel/helper-split-export-declaration': 7.22.6
+      globals: 11.12.0
+
+  /@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.21.8):
+    resolution: {integrity: sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/template': 7.22.15
+    dev: false
+
+  /@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/template': 7.22.15
+
+  /@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.21.8):
+    resolution: {integrity: sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: false
+
+  /@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+
+  /@babel/plugin-transform-dotall-regex@7.23.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7)
+      '@babel/helper-plugin-utils': 7.22.5
+
+  /@babel/plugin-transform-duplicate-keys@7.23.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+
+  /@babel/plugin-transform-dynamic-import@7.23.4(@babel/core@7.23.7):
+    resolution: {integrity: sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.7)
+
+  /@babel/plugin-transform-exponentiation-operator@7.23.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15
+      '@babel/helper-plugin-utils': 7.22.5
+
+  /@babel/plugin-transform-export-namespace-from@7.23.4(@babel/core@7.23.7):
+    resolution: {integrity: sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.7)
+
+  /@babel/plugin-transform-flow-strip-types@7.23.3(@babel/core@7.21.8):
+    resolution: {integrity: sha512-26/pQTf9nQSNVJCrLB1IkHUKyPxR+lMrH2QDPG89+Znu9rAMbtrybdbWeE9bb7gzjmE5iXHEY+e0HUwM6Co93Q==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.21.8)
+    dev: false
+
+  /@babel/plugin-transform-flow-strip-types@7.23.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-26/pQTf9nQSNVJCrLB1IkHUKyPxR+lMrH2QDPG89+Znu9rAMbtrybdbWeE9bb7gzjmE5iXHEY+e0HUwM6Co93Q==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.23.7)
+
+  /@babel/plugin-transform-for-of@7.23.6(@babel/core@7.21.8):
+    resolution: {integrity: sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/helper-skip-transparent-expression-wrappers': 7.22.5
+    dev: false
+
+  /@babel/plugin-transform-for-of@7.23.6(@babel/core@7.23.7):
+    resolution: {integrity: sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/helper-skip-transparent-expression-wrappers': 7.22.5
+
+  /@babel/plugin-transform-function-name@7.23.3(@babel/core@7.21.8):
+    resolution: {integrity: sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-compilation-targets': 7.23.6
+      '@babel/helper-function-name': 7.23.0
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: false
+
+  /@babel/plugin-transform-function-name@7.23.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-compilation-targets': 7.23.6
+      '@babel/helper-function-name': 7.23.0
+      '@babel/helper-plugin-utils': 7.22.5
+
+  /@babel/plugin-transform-json-strings@7.23.4(@babel/core@7.23.7):
+    resolution: {integrity: sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.7)
+
+  /@babel/plugin-transform-literals@7.23.3(@babel/core@7.21.8):
+    resolution: {integrity: sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: false
+
+  /@babel/plugin-transform-literals@7.23.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+
+  /@babel/plugin-transform-logical-assignment-operators@7.23.4(@babel/core@7.23.7):
+    resolution: {integrity: sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.7)
+
+  /@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.21.8):
+    resolution: {integrity: sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: false
+
+  /@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+
+  /@babel/plugin-transform-modules-amd@7.23.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.7)
+      '@babel/helper-plugin-utils': 7.22.5
+
+  /@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.21.8):
+    resolution: {integrity: sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-module-transforms': 7.23.3(@babel/core@7.21.8)
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/helper-simple-access': 7.22.5
+    dev: false
+
+  /@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.7)
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/helper-simple-access': 7.22.5
+
+  /@babel/plugin-transform-modules-systemjs@7.23.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-hoist-variables': 7.22.5
+      '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.7)
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/helper-validator-identifier': 7.22.20
+
+  /@babel/plugin-transform-modules-umd@7.23.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.7)
+      '@babel/helper-plugin-utils': 7.22.5
+
+  /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.21.8):
+    resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.21.8)
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: false
+
+  /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.23.7):
+    resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7)
+      '@babel/helper-plugin-utils': 7.22.5
+
+  /@babel/plugin-transform-new-target@7.23.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+
+  /@babel/plugin-transform-nullish-coalescing-operator@7.23.4(@babel/core@7.23.7):
+    resolution: {integrity: sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.7)
+
+  /@babel/plugin-transform-numeric-separator@7.23.4(@babel/core@7.23.7):
+    resolution: {integrity: sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.7)
+
+  /@babel/plugin-transform-object-rest-spread@7.23.4(@babel/core@7.23.7):
+    resolution: {integrity: sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/compat-data': 7.23.5
+      '@babel/core': 7.23.7
+      '@babel/helper-compilation-targets': 7.23.6
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.7)
+
+  /@babel/plugin-transform-object-super@7.23.3(@babel/core@7.21.8):
+    resolution: {integrity: sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/helper-replace-supers': 7.22.20(@babel/core@7.21.8)
+    dev: false
+
+  /@babel/plugin-transform-object-super@7.23.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.7)
+
+  /@babel/plugin-transform-optional-catch-binding@7.23.4(@babel/core@7.23.7):
+    resolution: {integrity: sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.7)
+
+  /@babel/plugin-transform-optional-chaining@7.23.4(@babel/core@7.23.7):
+    resolution: {integrity: sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/helper-skip-transparent-expression-wrappers': 7.22.5
+      '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.7)
+
+  /@babel/plugin-transform-parameters@7.23.3(@babel/core@7.21.8):
+    resolution: {integrity: sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: false
+
+  /@babel/plugin-transform-parameters@7.23.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+
+  /@babel/plugin-transform-private-methods@7.23.3(@babel/core@7.21.8):
+    resolution: {integrity: sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-create-class-features-plugin': 7.23.7(@babel/core@7.21.8)
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: false
+
+  /@babel/plugin-transform-private-methods@7.23.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-create-class-features-plugin': 7.23.7(@babel/core@7.23.7)
+      '@babel/helper-plugin-utils': 7.22.5
+
+  /@babel/plugin-transform-private-property-in-object@7.23.4(@babel/core@7.21.8):
+    resolution: {integrity: sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-annotate-as-pure': 7.22.5
+      '@babel/helper-create-class-features-plugin': 7.23.7(@babel/core@7.21.8)
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.21.8)
+    dev: false
+
+  /@babel/plugin-transform-private-property-in-object@7.23.4(@babel/core@7.23.7):
+    resolution: {integrity: sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-annotate-as-pure': 7.22.5
+      '@babel/helper-create-class-features-plugin': 7.23.7(@babel/core@7.23.7)
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.7)
+
+  /@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.21.8):
+    resolution: {integrity: sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: false
+
+  /@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+
+  /@babel/plugin-transform-react-display-name@7.23.3(@babel/core@7.21.8):
+    resolution: {integrity: sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: false
+
+  /@babel/plugin-transform-react-display-name@7.23.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+
+  /@babel/plugin-transform-react-jsx-self@7.23.3(@babel/core@7.21.8):
+    resolution: {integrity: sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: false
+
+  /@babel/plugin-transform-react-jsx-self@7.23.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+
+  /@babel/plugin-transform-react-jsx-source@7.23.3(@babel/core@7.21.8):
+    resolution: {integrity: sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: false
+
+  /@babel/plugin-transform-react-jsx-source@7.23.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+
+  /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.21.8):
+    resolution: {integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-annotate-as-pure': 7.22.5
+      '@babel/helper-module-imports': 7.22.15
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.21.8)
+      '@babel/types': 7.23.6
+    dev: false
+
+  /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.23.7):
+    resolution: {integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==}
+    engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-annotate-as-pure': 7.22.5
+      '@babel/helper-module-imports': 7.22.15
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.7)
+      '@babel/types': 7.23.6
+
+  /@babel/plugin-transform-regenerator@7.23.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==}
     engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
     dependencies:
-      '@babel/template': 7.22.5
-      '@babel/types': 7.22.5
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+      regenerator-transform: 0.15.2
 
-  /@babel/helper-function-name@7.22.5:
-    resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==}
+  /@babel/plugin-transform-reserved-words@7.23.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==}
     engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
     dependencies:
-      '@babel/template': 7.22.5
-      '@babel/types': 7.22.5
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
 
-  /@babel/helper-hoist-variables@7.18.6:
-    resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==}
+  /@babel/plugin-transform-runtime@7.23.7(@babel/core@7.21.8):
+    resolution: {integrity: sha512-fa0hnfmiXc9fq/weK34MUV0drz2pOL/vfKWvN7Qw127hiUPabFCUMgAbYWcchRzMJit4o5ARsK/s+5h0249pLw==}
     engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
     dependencies:
-      '@babel/types': 7.22.5
+      '@babel/core': 7.21.8
+      '@babel/helper-module-imports': 7.22.15
+      '@babel/helper-plugin-utils': 7.22.5
+      babel-plugin-polyfill-corejs2: 0.4.7(@babel/core@7.21.8)
+      babel-plugin-polyfill-corejs3: 0.8.7(@babel/core@7.21.8)
+      babel-plugin-polyfill-regenerator: 0.5.4(@babel/core@7.21.8)
+      semver: 6.3.1
+    transitivePeerDependencies:
+      - supports-color
+    dev: false
 
-  /@babel/helper-hoist-variables@7.22.5:
-    resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==}
+  /@babel/plugin-transform-runtime@7.23.7(@babel/core@7.23.7):
+    resolution: {integrity: sha512-fa0hnfmiXc9fq/weK34MUV0drz2pOL/vfKWvN7Qw127hiUPabFCUMgAbYWcchRzMJit4o5ARsK/s+5h0249pLw==}
     engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
     dependencies:
-      '@babel/types': 7.22.5
+      '@babel/core': 7.23.7
+      '@babel/helper-module-imports': 7.22.15
+      '@babel/helper-plugin-utils': 7.22.5
+      babel-plugin-polyfill-corejs2: 0.4.7(@babel/core@7.23.7)
+      babel-plugin-polyfill-corejs3: 0.8.7(@babel/core@7.23.7)
+      babel-plugin-polyfill-regenerator: 0.5.4(@babel/core@7.23.7)
+      semver: 6.3.1
+    transitivePeerDependencies:
+      - supports-color
 
-  /@babel/helper-module-imports@7.21.4:
-    resolution: {integrity: sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==}
+  /@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.21.8):
+    resolution: {integrity: sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==}
     engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
     dependencies:
-      '@babel/types': 7.22.5
+      '@babel/core': 7.21.8
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: false
 
-  /@babel/helper-module-imports@7.22.5:
-    resolution: {integrity: sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==}
+  /@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==}
     engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
     dependencies:
-      '@babel/types': 7.22.5
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
 
-  /@babel/helper-module-transforms@7.21.5:
-    resolution: {integrity: sha512-bI2Z9zBGY2q5yMHoBvJ2a9iX3ZOAzJPm7Q8Yz6YeoUjU/Cvhmi2G4QyTNyPBqqXSgTjUxRg3L0xV45HvkNWWBw==}
+  /@babel/plugin-transform-spread@7.23.3(@babel/core@7.21.8):
+    resolution: {integrity: sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==}
     engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
     dependencies:
-      '@babel/helper-environment-visitor': 7.21.5
-      '@babel/helper-module-imports': 7.21.4
-      '@babel/helper-simple-access': 7.21.5
-      '@babel/helper-split-export-declaration': 7.18.6
-      '@babel/helper-validator-identifier': 7.19.1
-      '@babel/template': 7.20.7
-      '@babel/traverse': 7.21.5
-      '@babel/types': 7.21.5
-    transitivePeerDependencies:
-      - supports-color
+      '@babel/core': 7.21.8
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/helper-skip-transparent-expression-wrappers': 7.22.5
+    dev: false
 
-  /@babel/helper-module-transforms@7.22.9(@babel/core@7.22.9):
-    resolution: {integrity: sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==}
+  /@babel/plugin-transform-spread@7.23.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==}
     engines: {node: '>=6.9.0'}
     peerDependencies:
-      '@babel/core': ^7.0.0
+      '@babel/core': ^7.0.0-0
     dependencies:
-      '@babel/core': 7.22.9
-      '@babel/helper-environment-visitor': 7.22.5
-      '@babel/helper-module-imports': 7.22.5
-      '@babel/helper-simple-access': 7.22.5
-      '@babel/helper-split-export-declaration': 7.22.6
-      '@babel/helper-validator-identifier': 7.22.5
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/helper-skip-transparent-expression-wrappers': 7.22.5
 
-  /@babel/helper-plugin-utils@7.22.5:
-    resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==}
+  /@babel/plugin-transform-sticky-regex@7.23.3(@babel/core@7.21.8):
+    resolution: {integrity: sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==}
     engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: false
 
-  /@babel/helper-simple-access@7.21.5:
-    resolution: {integrity: sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg==}
+  /@babel/plugin-transform-sticky-regex@7.23.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==}
     engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
     dependencies:
-      '@babel/types': 7.22.5
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
 
-  /@babel/helper-simple-access@7.22.5:
-    resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==}
+  /@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.21.8):
+    resolution: {integrity: sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==}
     engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
     dependencies:
-      '@babel/types': 7.22.5
+      '@babel/core': 7.21.8
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: false
 
-  /@babel/helper-split-export-declaration@7.18.6:
-    resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==}
+  /@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==}
     engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
     dependencies:
-      '@babel/types': 7.22.5
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
 
-  /@babel/helper-split-export-declaration@7.22.6:
-    resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==}
+  /@babel/plugin-transform-typeof-symbol@7.23.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==}
     engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
     dependencies:
-      '@babel/types': 7.22.5
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
 
-  /@babel/helper-string-parser@7.21.5:
-    resolution: {integrity: sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==}
+  /@babel/plugin-transform-typescript@7.23.6(@babel/core@7.21.8):
+    resolution: {integrity: sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==}
     engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-annotate-as-pure': 7.22.5
+      '@babel/helper-create-class-features-plugin': 7.23.7(@babel/core@7.21.8)
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.21.8)
+    dev: false
 
-  /@babel/helper-string-parser@7.22.5:
-    resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==}
+  /@babel/plugin-transform-typescript@7.23.6(@babel/core@7.23.7):
+    resolution: {integrity: sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==}
     engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-annotate-as-pure': 7.22.5
+      '@babel/helper-create-class-features-plugin': 7.23.7(@babel/core@7.23.7)
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.7)
 
-  /@babel/helper-validator-identifier@7.19.1:
-    resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==}
+  /@babel/plugin-transform-unicode-escapes@7.23.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==}
     engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
 
-  /@babel/helper-validator-identifier@7.22.5:
-    resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==}
+  /@babel/plugin-transform-unicode-property-regex@7.23.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==}
     engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7)
+      '@babel/helper-plugin-utils': 7.22.5
 
-  /@babel/helper-validator-option@7.21.0:
-    resolution: {integrity: sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==}
+  /@babel/plugin-transform-unicode-regex@7.23.3(@babel/core@7.21.8):
+    resolution: {integrity: sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==}
     engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.21.8)
+      '@babel/helper-plugin-utils': 7.22.5
+    dev: false
 
-  /@babel/helper-validator-option@7.22.5:
-    resolution: {integrity: sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==}
+  /@babel/plugin-transform-unicode-regex@7.23.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==}
     engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7)
+      '@babel/helper-plugin-utils': 7.22.5
 
-  /@babel/helpers@7.21.5:
-    resolution: {integrity: sha512-BSY+JSlHxOmGsPTydUkPf1MdMQ3M81x5xGCOVgWM3G8XH77sJ292Y2oqcp0CbbgxhqBuI46iUz1tT7hqP7EfgA==}
+  /@babel/plugin-transform-unicode-sets-regex@7.23.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==}
     engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0
     dependencies:
-      '@babel/template': 7.20.7
-      '@babel/traverse': 7.21.5
-      '@babel/types': 7.21.5
-    transitivePeerDependencies:
-      - supports-color
+      '@babel/core': 7.23.7
+      '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7)
+      '@babel/helper-plugin-utils': 7.22.5
 
-  /@babel/helpers@7.22.6:
-    resolution: {integrity: sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==}
+  /@babel/preset-env@7.23.7(@babel/core@7.23.7):
+    resolution: {integrity: sha512-SY27X/GtTz/L4UryMNJ6p4fH4nsgWbz84y9FE0bQeWJP6O5BhgVCt53CotQKHCOeXJel8VyhlhujhlltKms/CA==}
     engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
     dependencies:
-      '@babel/template': 7.22.5
-      '@babel/traverse': 7.22.8
-      '@babel/types': 7.22.5
+      '@babel/compat-data': 7.23.5
+      '@babel/core': 7.23.7
+      '@babel/helper-compilation-targets': 7.23.6
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/helper-validator-option': 7.23.5
+      '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.23.7(@babel/core@7.23.7)
+      '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.7)
+      '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.7)
+      '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.7)
+      '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.7)
+      '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.7)
+      '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.7)
+      '@babel/plugin-syntax-import-assertions': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-syntax-import-attributes': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.7)
+      '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.7)
+      '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.7)
+      '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.7)
+      '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.7)
+      '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.7)
+      '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.7)
+      '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.7)
+      '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.7)
+      '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.7)
+      '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.23.7)
+      '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-async-generator-functions': 7.23.7(@babel/core@7.23.7)
+      '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.23.7)
+      '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-class-static-block': 7.23.4(@babel/core@7.23.7)
+      '@babel/plugin-transform-classes': 7.23.5(@babel/core@7.23.7)
+      '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-dotall-regex': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-duplicate-keys': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-dynamic-import': 7.23.4(@babel/core@7.23.7)
+      '@babel/plugin-transform-exponentiation-operator': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-export-namespace-from': 7.23.4(@babel/core@7.23.7)
+      '@babel/plugin-transform-for-of': 7.23.6(@babel/core@7.23.7)
+      '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-json-strings': 7.23.4(@babel/core@7.23.7)
+      '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-logical-assignment-operators': 7.23.4(@babel/core@7.23.7)
+      '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-modules-amd': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-modules-systemjs': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-modules-umd': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.7)
+      '@babel/plugin-transform-new-target': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-nullish-coalescing-operator': 7.23.4(@babel/core@7.23.7)
+      '@babel/plugin-transform-numeric-separator': 7.23.4(@babel/core@7.23.7)
+      '@babel/plugin-transform-object-rest-spread': 7.23.4(@babel/core@7.23.7)
+      '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-optional-catch-binding': 7.23.4(@babel/core@7.23.7)
+      '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.7)
+      '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-private-property-in-object': 7.23.4(@babel/core@7.23.7)
+      '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-regenerator': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-reserved-words': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-typeof-symbol': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-unicode-escapes': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-unicode-property-regex': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-unicode-sets-regex': 7.23.3(@babel/core@7.23.7)
+      '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.23.7)
+      babel-plugin-polyfill-corejs2: 0.4.7(@babel/core@7.23.7)
+      babel-plugin-polyfill-corejs3: 0.8.7(@babel/core@7.23.7)
+      babel-plugin-polyfill-regenerator: 0.5.4(@babel/core@7.23.7)
+      core-js-compat: 3.35.0
+      semver: 6.3.1
     transitivePeerDependencies:
       - supports-color
 
-  /@babel/highlight@7.22.5:
-    resolution: {integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==}
+  /@babel/preset-flow@7.23.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-7yn6hl8RIv+KNk6iIrGZ+D06VhVY35wLVf23Cz/mMu1zOr7u4MMP4j0nZ9tLf8+4ZFpnib8cFYgB/oYg9hfswA==}
     engines: {node: '>=6.9.0'}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
     dependencies:
-      '@babel/helper-validator-identifier': 7.22.5
-      chalk: 2.4.2
-      js-tokens: 4.0.0
-
-  /@babel/parser@7.21.8:
-    resolution: {integrity: sha512-6zavDGdzG3gUqAdWvlLFfk+36RilI+Pwyuuh7HItyeScCWP3k6i8vKclAQ0bM/0y/Kz/xiwvxhMv9MgTJP5gmA==}
-    engines: {node: '>=6.0.0'}
-    dependencies:
-      '@babel/types': 7.21.5
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/helper-validator-option': 7.23.5
+      '@babel/plugin-transform-flow-strip-types': 7.23.3(@babel/core@7.23.7)
 
-  /@babel/parser@7.22.7:
-    resolution: {integrity: sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==}
-    engines: {node: '>=6.0.0'}
+  /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.23.7):
+    resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0
     dependencies:
-      '@babel/types': 7.22.5
+      '@babel/core': 7.23.7
+      '@babel/helper-plugin-utils': 7.22.5
+      '@babel/types': 7.23.6
+      esutils: 2.0.3
 
-  /@babel/plugin-syntax-typescript@7.21.4(@babel/core@7.21.8):
-    resolution: {integrity: sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==}
+  /@babel/preset-typescript@7.23.3(@babel/core@7.23.7):
+    resolution: {integrity: sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==}
     engines: {node: '>=6.9.0'}
     peerDependencies:
       '@babel/core': ^7.0.0-0
     dependencies:
-      '@babel/core': 7.21.8
+      '@babel/core': 7.23.7
       '@babel/helper-plugin-utils': 7.22.5
-    dev: false
+      '@babel/helper-validator-option': 7.23.5
+      '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.23.7)
 
-  /@babel/plugin-syntax-typescript@7.21.4(@babel/core@7.22.9):
-    resolution: {integrity: sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==}
+  /@babel/register@7.23.7(@babel/core@7.23.7):
+    resolution: {integrity: sha512-EjJeB6+kvpk+Y5DAkEAmbOBEFkh9OASx0huoEkqYTFxAZHzOAX2Oh5uwAUuL2rUddqfM0SA+KPXV2TbzoZ2kvQ==}
     engines: {node: '>=6.9.0'}
     peerDependencies:
       '@babel/core': ^7.0.0-0
     dependencies:
-      '@babel/core': 7.22.9
-      '@babel/helper-plugin-utils': 7.22.5
-    dev: true
+      '@babel/core': 7.23.7
+      clone-deep: 4.0.1
+      find-cache-dir: 2.1.0
+      make-dir: 2.1.0
+      pirates: 4.0.6
+      source-map-support: 0.5.21
+
+  /@babel/regjsgen@0.8.0:
+    resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==}
 
   /@babel/runtime@7.21.5:
     resolution: {integrity: sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q==}
@@ -871,13 +2677,13 @@ packages:
     dependencies:
       regenerator-runtime: 0.14.0
 
-  /@babel/template@7.20.7:
-    resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==}
+  /@babel/template@7.22.15:
+    resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==}
     engines: {node: '>=6.9.0'}
     dependencies:
-      '@babel/code-frame': 7.21.4
-      '@babel/parser': 7.21.8
-      '@babel/types': 7.21.5
+      '@babel/code-frame': 7.23.5
+      '@babel/parser': 7.23.6
+      '@babel/types': 7.23.6
 
   /@babel/template@7.22.5:
     resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==}
@@ -887,23 +2693,6 @@ packages:
       '@babel/parser': 7.22.7
       '@babel/types': 7.22.5
 
-  /@babel/traverse@7.21.5:
-    resolution: {integrity: sha512-AhQoI3YjWi6u/y/ntv7k48mcrCXmus0t79J9qPNlk/lAsFlCiJ047RmbfMOawySTHtywXhbXgpx/8nXMYd+oFw==}
-    engines: {node: '>=6.9.0'}
-    dependencies:
-      '@babel/code-frame': 7.22.5
-      '@babel/generator': 7.22.9
-      '@babel/helper-environment-visitor': 7.21.5
-      '@babel/helper-function-name': 7.21.0
-      '@babel/helper-hoist-variables': 7.18.6
-      '@babel/helper-split-export-declaration': 7.18.6
-      '@babel/parser': 7.22.7
-      '@babel/types': 7.22.5
-      debug: 4.3.4
-      globals: 11.12.0
-    transitivePeerDependencies:
-      - supports-color
-
   /@babel/traverse@7.22.8:
     resolution: {integrity: sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw==}
     engines: {node: '>=6.9.0'}
@@ -921,13 +2710,22 @@ packages:
     transitivePeerDependencies:
       - supports-color
 
-  /@babel/types@7.21.5:
-    resolution: {integrity: sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q==}
+  /@babel/traverse@7.23.7:
+    resolution: {integrity: sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg==}
     engines: {node: '>=6.9.0'}
     dependencies:
-      '@babel/helper-string-parser': 7.21.5
-      '@babel/helper-validator-identifier': 7.19.1
-      to-fast-properties: 2.0.0
+      '@babel/code-frame': 7.23.5
+      '@babel/generator': 7.23.6
+      '@babel/helper-environment-visitor': 7.22.20
+      '@babel/helper-function-name': 7.23.0
+      '@babel/helper-hoist-variables': 7.22.5
+      '@babel/helper-split-export-declaration': 7.22.6
+      '@babel/parser': 7.23.6
+      '@babel/types': 7.23.6
+      debug: 4.3.4
+      globals: 11.12.0
+    transitivePeerDependencies:
+      - supports-color
 
   /@babel/types@7.22.5:
     resolution: {integrity: sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==}
@@ -937,6 +2735,14 @@ packages:
       '@babel/helper-validator-identifier': 7.22.5
       to-fast-properties: 2.0.0
 
+  /@babel/types@7.23.6:
+    resolution: {integrity: sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==}
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/helper-string-parser': 7.23.4
+      '@babel/helper-validator-identifier': 7.22.20
+      to-fast-properties: 2.0.0
+
   /@biomejs/biome@1.4.1:
     resolution: {integrity: sha512-JccVAwPbhi37pdxbAGmaOBjUTKEwEjWAhl7rKkVVuXHo4MLASXJ5HR8BTgrImi4/7rTBsGz1tgVD1Kwv1CHGRg==}
     engines: {node: '>=14.*'}
@@ -1179,32 +2985,20 @@ packages:
       prettier: 2.8.8
     dev: true
 
-  /@coinbase/wallet-sdk@3.6.6:
-    resolution: {integrity: sha512-vX+epj/Ttjo7XRwlr3TFUUfW5GTRMvORpERPwiu7z2jl3DSVL4rXLmHt5y6LDPlUVreas2gumdcFbu0fLRG9Jg==}
-    engines: {node: '>= 10.0.0'}
+  /@coinbase/wallet-sdk@3.9.1:
+    resolution: {integrity: sha512-cGUE8wm1/cMI8irRMVOqbFWYcnNugqCtuy2lnnHfgloBg+GRLs9RsrkOUDMdv/StfUeeKhCDyYudsXXvcL1xIA==}
     dependencies:
-      '@metamask/safe-event-emitter': 2.0.0
-      '@solana/web3.js': 1.75.0
-      bind-decorator: 1.0.11
       bn.js: 5.2.1
       buffer: 6.0.3
-      clsx: 1.1.1
-      eth-block-tracker: 6.1.0
-      eth-json-rpc-filters: 5.1.0
-      eth-rpc-errors: 4.0.2
-      json-rpc-engine: 6.1.0
+      clsx: 1.2.1
+      eth-block-tracker: 7.1.0
+      eth-json-rpc-filters: 6.0.1
+      eventemitter3: 5.0.1
       keccak: 3.0.3
-      preact: 10.13.2
-      qs: 6.11.1
-      rxjs: 6.6.7
+      preact: 10.19.3
       sha.js: 2.4.11
-      stream-browserify: 3.0.0
-      util: 0.12.4
     transitivePeerDependencies:
-      - bufferutil
-      - encoding
       - supports-color
-      - utf-8-validate
 
   /@commitlint/cli@18.4.3(typescript@5.0.4):
     resolution: {integrity: sha512-zop98yfB3A6NveYAZ3P1Mb6bIXuCeWgnUfVNkH4yhIMQpQfzFwseadazOuSn0OOfTt0lWuFauehpm9GcqM5lww==}
@@ -1573,6 +3367,30 @@ packages:
     resolution: {integrity: sha512-/crHGujo0xnuHIYNc1VgP0HGJGFSoSqq88JFXe6FmFyXPpWt8Xu39LyLg7rchsxfXFeEdA9CrIZvLV5eswXV5g==}
     dev: true
 
+  /@emotion/babel-plugin@11.11.0:
+    resolution: {integrity: sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==}
+    dependencies:
+      '@babel/helper-module-imports': 7.22.15
+      '@babel/runtime': 7.23.4
+      '@emotion/hash': 0.9.1
+      '@emotion/memoize': 0.8.1
+      '@emotion/serialize': 1.1.3
+      babel-plugin-macros: 3.1.0
+      convert-source-map: 1.9.0
+      escape-string-regexp: 4.0.0
+      find-root: 1.1.0
+      source-map: 0.5.7
+      stylis: 4.2.0
+
+  /@emotion/cache@11.11.0:
+    resolution: {integrity: sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==}
+    dependencies:
+      '@emotion/memoize': 0.8.1
+      '@emotion/sheet': 1.2.2
+      '@emotion/utils': 1.2.1
+      '@emotion/weak-memoize': 0.3.1
+      stylis: 4.2.0
+
   /@emotion/hash@0.9.1:
     resolution: {integrity: sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==}
 
@@ -1583,11 +3401,87 @@ packages:
     dev: false
     optional: true
 
+  /@emotion/is-prop-valid@1.2.1:
+    resolution: {integrity: sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==}
+    dependencies:
+      '@emotion/memoize': 0.8.1
+
   /@emotion/memoize@0.7.4:
     resolution: {integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==}
     dev: false
     optional: true
 
+  /@emotion/memoize@0.8.1:
+    resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==}
+
+  /@emotion/react@11.11.3(@types/react@18.2.46)(react@18.2.0):
+    resolution: {integrity: sha512-Cnn0kuq4DoONOMcnoVsTOR8E+AdnKFf//6kUWc4LCdnxj31pZWn7rIULd6Y7/Js1PiPHzn7SKCM9vB/jBni8eA==}
+    peerDependencies:
+      '@types/react': '*'
+      react: '>=16.8.0'
+    peerDependenciesMeta:
+      '@types/react':
+        optional: true
+    dependencies:
+      '@babel/runtime': 7.23.4
+      '@emotion/babel-plugin': 11.11.0
+      '@emotion/cache': 11.11.0
+      '@emotion/serialize': 1.1.3
+      '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0)
+      '@emotion/utils': 1.2.1
+      '@emotion/weak-memoize': 0.3.1
+      '@types/react': 18.2.46
+      hoist-non-react-statics: 3.3.2
+      react: 18.2.0
+
+  /@emotion/serialize@1.1.3:
+    resolution: {integrity: sha512-iD4D6QVZFDhcbH0RAG1uVu1CwVLMWUkCvAqqlewO/rxf8+87yIBAlt4+AxMiiKPLs5hFc0owNk/sLLAOROw3cA==}
+    dependencies:
+      '@emotion/hash': 0.9.1
+      '@emotion/memoize': 0.8.1
+      '@emotion/unitless': 0.8.1
+      '@emotion/utils': 1.2.1
+      csstype: 3.1.2
+
+  /@emotion/sheet@1.2.2:
+    resolution: {integrity: sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==}
+
+  /@emotion/styled@11.11.0(@emotion/react@11.11.3)(@types/react@18.2.46)(react@18.2.0):
+    resolution: {integrity: sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==}
+    peerDependencies:
+      '@emotion/react': ^11.0.0-rc.0
+      '@types/react': '*'
+      react: '>=16.8.0'
+    peerDependenciesMeta:
+      '@types/react':
+        optional: true
+    dependencies:
+      '@babel/runtime': 7.23.4
+      '@emotion/babel-plugin': 11.11.0
+      '@emotion/is-prop-valid': 1.2.1
+      '@emotion/react': 11.11.3(@types/react@18.2.46)(react@18.2.0)
+      '@emotion/serialize': 1.1.3
+      '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0)
+      '@emotion/utils': 1.2.1
+      '@types/react': 18.2.46
+      react: 18.2.0
+
+  /@emotion/unitless@0.8.1:
+    resolution: {integrity: sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==}
+
+  /@emotion/use-insertion-effect-with-fallbacks@1.0.1(react@18.2.0):
+    resolution: {integrity: sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==}
+    peerDependencies:
+      react: '>=16.8.0'
+    dependencies:
+      react: 18.2.0
+
+  /@emotion/utils@1.2.1:
+    resolution: {integrity: sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==}
+
+  /@emotion/weak-memoize@0.3.1:
+    resolution: {integrity: sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==}
+
   /@esbuild-plugins/node-resolve@0.1.4(esbuild@0.14.39):
     resolution: {integrity: sha512-haFQ0qhxEpqtWWY0kx1Y5oE3sMyO1PcoSiWEPrAw6tm/ZOOLXjSs6Q+v1v9eyuVF0nNt50YEvrcrvENmyoMv5g==}
     peerDependencies:
@@ -2103,6 +3997,33 @@ packages:
       - supports-color
     dev: true
 
+  /@ethereumjs/common@3.2.0:
+    resolution: {integrity: sha512-pksvzI0VyLgmuEF2FA/JR/4/y6hcPq8OUail3/AvycBaW1d5VSauOZzqGvJ3RTmR4MU35lWE8KseKOsEhrFRBA==}
+    dependencies:
+      '@ethereumjs/util': 8.1.0
+      crc-32: 1.2.2
+
+  /@ethereumjs/rlp@4.0.1:
+    resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==}
+    engines: {node: '>=14'}
+
+  /@ethereumjs/tx@4.2.0:
+    resolution: {integrity: sha512-1nc6VO4jtFd172BbSnTnDQVr9IYBFl1y4xPzZdtkrkKIncBCkdbgfdRV+MiTkJYAtTxvV12GRZLqBFT1PNK6Yw==}
+    engines: {node: '>=14'}
+    dependencies:
+      '@ethereumjs/common': 3.2.0
+      '@ethereumjs/rlp': 4.0.1
+      '@ethereumjs/util': 8.1.0
+      ethereum-cryptography: 2.1.2
+
+  /@ethereumjs/util@8.1.0:
+    resolution: {integrity: sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==}
+    engines: {node: '>=14'}
+    dependencies:
+      '@ethereumjs/rlp': 4.0.1
+      ethereum-cryptography: 2.1.2
+      micro-ftch: 0.3.1
+
   /@ethersproject/abi@5.6.3:
     resolution: {integrity: sha512-CxKTdoZY4zDJLWXG6HzNH6znWK0M79WzzxHegDoecE3+K32pzfHOzuXg2/oGSTecZynFgpkjYXNPOqXVJlqClw==}
     dependencies:
@@ -2667,6 +4588,14 @@ packages:
       yargs: 17.7.2
     dev: true
 
+  /@hapi/hoek@9.3.0:
+    resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==}
+
+  /@hapi/topo@5.1.0:
+    resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==}
+    dependencies:
+      '@hapi/hoek': 9.3.0
+
   /@humanwhocodes/config-array@0.9.5:
     resolution: {integrity: sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==}
     engines: {node: '>=10.10.0'}
@@ -2685,12 +4614,62 @@ packages:
   /@ioredis/commands@1.2.0:
     resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==}
 
-  /@jest/schemas@29.6.0:
-    resolution: {integrity: sha512-rxLjXyJBTL4LQeJW3aKo0M/+GkCOXsO+8i9Iu7eDb6KwtP65ayoDsitrdPBtujxQ88k4wI2FNYfa6TOGwSn6cQ==}
+  /@isaacs/ttlcache@1.4.1:
+    resolution: {integrity: sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==}
+    engines: {node: '>=12'}
+
+  /@jest/create-cache-key-function@29.7.0:
+    resolution: {integrity: sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==}
+    engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+    dependencies:
+      '@jest/types': 29.6.3
+
+  /@jest/environment@29.7.0:
+    resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==}
+    engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+    dependencies:
+      '@jest/fake-timers': 29.7.0
+      '@jest/types': 29.6.3
+      '@types/node': 18.19.4
+      jest-mock: 29.7.0
+
+  /@jest/fake-timers@29.7.0:
+    resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==}
+    engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+    dependencies:
+      '@jest/types': 29.6.3
+      '@sinonjs/fake-timers': 10.3.0
+      '@types/node': 18.19.4
+      jest-message-util: 29.7.0
+      jest-mock: 29.7.0
+      jest-util: 29.7.0
+
+  /@jest/schemas@29.6.3:
+    resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==}
     engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
     dependencies:
       '@sinclair/typebox': 0.27.8
-    dev: true
+
+  /@jest/types@26.6.2:
+    resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==}
+    engines: {node: '>= 10.14.2'}
+    dependencies:
+      '@types/istanbul-lib-coverage': 2.0.6
+      '@types/istanbul-reports': 3.0.4
+      '@types/node': 18.19.4
+      '@types/yargs': 15.0.19
+      chalk: 4.1.2
+
+  /@jest/types@29.6.3:
+    resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==}
+    engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+    dependencies:
+      '@jest/schemas': 29.6.3
+      '@types/istanbul-lib-coverage': 2.0.6
+      '@types/istanbul-reports': 3.0.4
+      '@types/node': 18.19.4
+      '@types/yargs': 17.0.32
+      chalk: 4.1.2
 
   /@jridgewell/gen-mapping@0.3.3:
     resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==}
@@ -2713,7 +4692,6 @@ packages:
     dependencies:
       '@jridgewell/gen-mapping': 0.3.3
       '@jridgewell/trace-mapping': 0.3.18
-    dev: false
 
   /@jridgewell/sourcemap-codec@1.4.14:
     resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==}
@@ -2740,10 +4718,6 @@ packages:
     engines: {node: ^16.20.0 || ^18.0.0 || ^20.0.0}
     dev: true
 
-  /@ledgerhq/connect-kit-loader@1.1.0:
-    resolution: {integrity: sha512-HUy12FEczoWY2FPubnsm1uOA8tkVWc0j90i47suThV3C9NL2xx69ZAIEU3Ytzs2bwLek9S1Q2S1VQJvA+3Ygkg==}
-    dev: false
-
   /@lit-labs/ssr-dom-shim@1.1.1:
     resolution: {integrity: sha512-kXOeFbfCm4fFf2A3WwVEeQj55tMZa8c8/f9AKHMobQMkzNUfUj+antR3fRPaZJawsa1aZiP/Da3ndpZrwEe4rQ==}
 
@@ -2809,15 +4783,179 @@ packages:
       - supports-color
     dev: true
 
+  /@metamask/eth-json-rpc-provider@1.0.1:
+    resolution: {integrity: sha512-whiUMPlAOrVGmX8aKYVPvlKyG4CpQXiNNyt74vE1xb5sPvmx5oA7B/kOi/JdBvhGQq97U1/AVdXEdk2zkP8qyA==}
+    engines: {node: '>=14.0.0'}
+    dependencies:
+      '@metamask/json-rpc-engine': 7.3.1
+      '@metamask/safe-event-emitter': 3.0.0
+      '@metamask/utils': 5.0.2
+    transitivePeerDependencies:
+      - supports-color
+
+  /@metamask/json-rpc-engine@7.3.1:
+    resolution: {integrity: sha512-OVxccX/IFOjPzCzSFAEceccPIAf7A7IwnvjyWjyHCkLrO+LWV4e7Tpe79JNXiORywNulHxrg+q6QrmrnGEwssQ==}
+    engines: {node: '>=16.0.0'}
+    dependencies:
+      '@metamask/rpc-errors': 6.1.0
+      '@metamask/safe-event-emitter': 3.0.0
+      '@metamask/utils': 8.2.1
+    transitivePeerDependencies:
+      - supports-color
+
+  /@metamask/object-multiplex@1.3.0:
+    resolution: {integrity: sha512-czcQeVYdSNtabd+NcYQnrM69MciiJyd1qvKH8WM2Id3C0ZiUUX5Xa/MK+/VUk633DBhVOwdNzAKIQ33lGyA+eQ==}
+    engines: {node: '>=12.0.0'}
+    dependencies:
+      end-of-stream: 1.4.4
+      once: 1.4.0
+      readable-stream: 2.3.8
+
+  /@metamask/onboarding@1.0.1:
+    resolution: {integrity: sha512-FqHhAsCI+Vacx2qa5mAFcWNSrTcVGMNjzxVgaX8ECSny/BJ9/vgXP9V7WF/8vb9DltPeQkxr+Fnfmm6GHfmdTQ==}
+    dependencies:
+      bowser: 2.11.0
+
+  /@metamask/post-message-stream@6.2.0:
+    resolution: {integrity: sha512-WunZ0bruClF862mvbKQGETn5SM0XKGmocPMQR1Ew6sYix9/FDzeoZnoI8RkXk01E+70FCdxhTE/r8kk5SFOuTw==}
+    engines: {node: '>=14.0.0'}
+    dependencies:
+      '@metamask/utils': 5.0.2
+      readable-stream: 2.3.3
+    transitivePeerDependencies:
+      - supports-color
+
+  /@metamask/providers@10.2.1:
+    resolution: {integrity: sha512-p2TXw2a1Nb8czntDGfeIYQnk4LLVbd5vlcb3GY//lylYlKdSqp+uUTegCvxiFblRDOT68jsY8Ib1VEEzVUOolA==}
+    engines: {node: '>=14.0.0'}
+    dependencies:
+      '@metamask/object-multiplex': 1.3.0
+      '@metamask/safe-event-emitter': 2.0.0
+      '@types/chrome': 0.0.136
+      detect-browser: 5.3.0
+      eth-rpc-errors: 4.0.3
+      extension-port-stream: 2.1.1
+      fast-deep-equal: 2.0.1
+      is-stream: 2.0.1
+      json-rpc-engine: 6.1.0
+      json-rpc-middleware-stream: 4.2.3
+      pump: 3.0.0
+      webextension-polyfill-ts: 0.25.0
+
+  /@metamask/rpc-errors@6.1.0:
+    resolution: {integrity: sha512-JQElKxai26FpDyRKO/yH732wI+BV90i1u6pOuDOpdADSbppB2g1pPh3AGST1zkZqEE9eIKIUw8UdBQ4rp3VTSg==}
+    engines: {node: '>=16.0.0'}
+    dependencies:
+      '@metamask/utils': 8.2.1
+      fast-safe-stringify: 2.1.1
+    transitivePeerDependencies:
+      - supports-color
+
   /@metamask/safe-event-emitter@2.0.0:
     resolution: {integrity: sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q==}
 
-  /@metamask/utils@3.6.0:
-    resolution: {integrity: sha512-9cIRrfkWvHblSiNDVXsjivqa9Ak0RYo/1H6tqTqTbAx+oBK2Sva0lWDHxGchOqA7bySGUJKAWSNJvH6gdHZ0gQ==}
+  /@metamask/safe-event-emitter@3.0.0:
+    resolution: {integrity: sha512-j6Z47VOmVyGMlnKXZmL0fyvWfEYtKWCA9yGZkU3FCsGZUT5lHGmvaV9JA5F2Y+010y7+ROtR3WMXIkvl/nVzqQ==}
+    engines: {node: '>=12.0.0'}
+
+  /@metamask/sdk-communication-layer@0.14.1:
+    resolution: {integrity: sha512-K1KhkKMdAAPi079G/bX/cIazqT6qnkRnykrs7nA1sU2BouG7BYD4qPgv7ridc3BNIewnFg9eMzzYIgOgfXzJKw==}
+    dependencies:
+      bufferutil: 4.0.8
+      cross-fetch: 3.1.5
+      date-fns: 2.30.0
+      eciesjs: 0.3.18
+      eventemitter2: 6.4.9
+      socket.io-client: 4.7.3(bufferutil@4.0.8)(utf-8-validate@6.0.3)
+      utf-8-validate: 6.0.3
+      uuid: 8.3.2
+    transitivePeerDependencies:
+      - encoding
+      - supports-color
+
+  /@metamask/sdk-install-modal-web@0.14.1(@types/react@18.2.46)(react-native@0.73.1):
+    resolution: {integrity: sha512-emT8HKbnfVwGhPxyUfMja6DWzvtJvDEBQxqCVx93H0HsyrrOzOC43iGCAosslw6o5h7gOfRKLqWmK8V7jQAS2Q==}
+    dependencies:
+      '@emotion/react': 11.11.3(@types/react@18.2.46)(react@18.2.0)
+      '@emotion/styled': 11.11.0(@emotion/react@11.11.3)(@types/react@18.2.46)(react@18.2.0)
+      i18next: 22.5.1
+      qr-code-styling: 1.6.0-rc.1
+      react: 18.2.0
+      react-dom: 18.2.0(react@18.2.0)
+      react-i18next: 13.5.0(i18next@22.5.1)(react-dom@18.2.0)(react-native@0.73.1)(react@18.2.0)
+    transitivePeerDependencies:
+      - '@types/react'
+      - react-native
+
+  /@metamask/sdk@0.14.1(@types/react@18.2.46)(react-dom@18.2.0)(react-native@0.73.1)(react@18.2.0):
+    resolution: {integrity: sha512-52kfvnlyMXRO8/oPGoQOFMevSjgkLzpl8aGG6Ivx/6jiqSv5ScuOg6YdSWXR937Ts0zWE0V8KTUBMfnGGt0S9Q==}
+    peerDependencies:
+      react: ^18.2.0
+      react-native: '*'
+    peerDependenciesMeta:
+      react:
+        optional: true
+      react-native:
+        optional: true
+    dependencies:
+      '@metamask/onboarding': 1.0.1
+      '@metamask/post-message-stream': 6.2.0
+      '@metamask/providers': 10.2.1
+      '@metamask/sdk-communication-layer': 0.14.1
+      '@metamask/sdk-install-modal-web': 0.14.1(@types/react@18.2.46)(react-native@0.73.1)
+      '@react-native-async-storage/async-storage': 1.21.0(react-native@0.73.1)
+      '@types/dom-screen-wake-lock': 1.0.3
+      bowser: 2.11.0
+      cross-fetch: 4.0.0
+      eciesjs: 0.3.18
+      eth-rpc-errors: 4.0.3
+      eventemitter2: 6.4.9
+      extension-port-stream: 2.1.1
+      i18next: 22.5.1
+      i18next-browser-languagedetector: 7.2.0
+      obj-multiplex: 1.0.0
+      pump: 3.0.0
+      qrcode-terminal-nooctal: 0.12.1
+      react: 18.2.0
+      react-i18next: 13.5.0(i18next@22.5.1)(react-dom@18.2.0)(react-native@0.73.1)(react@18.2.0)
+      react-native: 0.73.1(@babel/core@7.23.7)(@babel/preset-env@7.23.7)(react@18.2.0)
+      react-native-webview: 11.26.1(react-native@0.73.1)(react@18.2.0)
+      readable-stream: 2.3.8
+      rollup-plugin-visualizer: 5.12.0
+      socket.io-client: 4.7.3(bufferutil@4.0.8)(utf-8-validate@6.0.3)
+      util: 0.12.4
+      uuid: 8.3.2
+    transitivePeerDependencies:
+      - '@types/react'
+      - bufferutil
+      - encoding
+      - react-dom
+      - rollup
+      - supports-color
+      - utf-8-validate
+
+  /@metamask/utils@5.0.2:
+    resolution: {integrity: sha512-yfmE79bRQtnMzarnKfX7AEJBwFTxvTyw3nBQlu/5rmGXrjAeAMltoGxO62TFurxrQAFMNa/fEjIHNvungZp0+g==}
     engines: {node: '>=14.0.0'}
     dependencies:
+      '@ethereumjs/tx': 4.2.0
+      '@types/debug': 4.1.7
+      debug: 4.3.4
+      semver: 7.5.4
+      superstruct: 1.0.3
+    transitivePeerDependencies:
+      - supports-color
+
+  /@metamask/utils@8.2.1:
+    resolution: {integrity: sha512-dlnpow8r0YHDDL1xKCEwUoTGOAo9icdv+gaJG0EbgDnkD/BDqW2eH1XMtm9i7rPaiHWo/aLtcrh9WBhkCq/viw==}
+    engines: {node: '>=16.0.0'}
+    dependencies:
+      '@ethereumjs/tx': 4.2.0
+      '@noble/hashes': 1.3.2
+      '@scure/base': 1.1.3
       '@types/debug': 4.1.7
       debug: 4.3.4
+      pony-cause: 2.1.10
       semver: 7.5.4
       superstruct: 1.0.3
     transitivePeerDependencies:
@@ -2829,7 +4967,7 @@ packages:
       '@motionone/easing': 10.15.1
       '@motionone/types': 10.15.1
       '@motionone/utils': 10.15.1
-      tslib: 2.5.0
+      tslib: 2.6.2
 
   /@motionone/dom@10.16.2:
     resolution: {integrity: sha512-bnuHdNbge1FutZXv+k7xub9oPWcF0hsu8y1HTH/qg6av58YI0VufZ3ngfC7p2xhMJMnoh0LXFma2EGTgPeCkeg==}
@@ -2839,26 +4977,26 @@ packages:
       '@motionone/types': 10.15.1
       '@motionone/utils': 10.15.1
       hey-listen: 1.0.8
-      tslib: 2.5.0
+      tslib: 2.6.2
 
   /@motionone/easing@10.15.1:
     resolution: {integrity: sha512-6hIHBSV+ZVehf9dcKZLT7p5PEKHGhDwky2k8RKkmOvUoYP3S+dXsKupyZpqx5apjd9f+php4vXk4LuS+ADsrWw==}
     dependencies:
       '@motionone/utils': 10.15.1
-      tslib: 2.5.0
+      tslib: 2.6.2
 
   /@motionone/generators@10.15.1:
     resolution: {integrity: sha512-67HLsvHJbw6cIbLA/o+gsm7h+6D4Sn7AUrB/GPxvujse1cGZ38F5H7DzoH7PhX+sjvtDnt2IhFYF2Zp1QTMKWQ==}
     dependencies:
       '@motionone/types': 10.15.1
       '@motionone/utils': 10.15.1
-      tslib: 2.5.0
+      tslib: 2.6.2
 
   /@motionone/svelte@10.16.2:
     resolution: {integrity: sha512-38xsroKrfK+aHYhuQlE6eFcGy0EwrB43Q7RGjF73j/kRUTcLNu/LAaKiLLsN5lyqVzCgTBVt4TMT/ShWbTbc5Q==}
     dependencies:
       '@motionone/dom': 10.16.2
-      tslib: 2.5.0
+      tslib: 2.6.2
 
   /@motionone/types@10.15.1:
     resolution: {integrity: sha512-iIUd/EgUsRZGrvW0jqdst8st7zKTzS9EsKkP+6c6n4MPZoQHwiHuVtTQLD6Kp0bsBLhNzKIBlHXponn/SDT4hA==}
@@ -2868,13 +5006,13 @@ packages:
     dependencies:
       '@motionone/types': 10.15.1
       hey-listen: 1.0.8
-      tslib: 2.5.0
+      tslib: 2.6.2
 
   /@motionone/vue@10.16.2:
     resolution: {integrity: sha512-7/dEK/nWQXOkJ70bqb2KyNfSWbNvWqKKq1C8juj+0Mg/AorgD8O5wE3naddK0G+aXuNMqRuc4jlsYHHWHtIzVw==}
     dependencies:
       '@motionone/dom': 10.16.2
-      tslib: 2.5.0
+      tslib: 2.6.2
 
   /@next/env@13.4.19:
     resolution: {integrity: sha512-FsAT5x0jF2kkhNkKkukhsyYOrRqtSxrEhfliniIq0bwWbuXLgyt3Gv0Ml+b91XwjwArmuP7NxCiGd++GGKdNMQ==}
@@ -2952,21 +5090,24 @@ packages:
     os: [win32]
     optional: true
 
+  /@noble/curves@1.1.0:
+    resolution: {integrity: sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==}
+    dependencies:
+      '@noble/hashes': 1.3.1
+
   /@noble/curves@1.2.0:
     resolution: {integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==}
     dependencies:
       '@noble/hashes': 1.3.2
 
-  /@noble/ed25519@1.7.3:
-    resolution: {integrity: sha512-iR8GBkDt0Q3GyaVcIu7mSsVIqnFbkbRzGLWlvhwunacoLwt4J3swfKhfaM6rN6WY+TBGoYT1GtT1mIh2/jGbRQ==}
+  /@noble/hashes@1.3.1:
+    resolution: {integrity: sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==}
+    engines: {node: '>= 16'}
 
   /@noble/hashes@1.3.2:
     resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==}
     engines: {node: '>= 16'}
 
-  /@noble/secp256k1@1.7.1:
-    resolution: {integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==}
-
   /@nodelib/fs.scandir@2.1.5:
     resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
     engines: {node: '>= 8'}
@@ -3615,56 +5756,477 @@ packages:
   /@radix-ui/react-use-escape-keydown@1.0.2(react@18.2.0):
     resolution: {integrity: sha512-DXGim3x74WgUv+iMNCF+cAo8xUHHeqvjx8zs7trKf+FkQKPQXLk2sX7Gx1ysH7Q76xCpZuxIJE7HLPxRE+Q+GA==}
     peerDependencies:
-      react: ^16.8 || ^17.0 || ^18.0
+      react: ^16.8 || ^17.0 || ^18.0
+    dependencies:
+      '@babel/runtime': 7.23.4
+      '@radix-ui/react-use-callback-ref': 1.0.0(react@18.2.0)
+      react: 18.2.0
+    dev: false
+
+  /@radix-ui/react-use-layout-effect@1.0.0(react@18.2.0):
+    resolution: {integrity: sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ==}
+    peerDependencies:
+      react: ^16.8 || ^17.0 || ^18.0
+    dependencies:
+      '@babel/runtime': 7.23.4
+      react: 18.2.0
+    dev: false
+
+  /@radix-ui/react-use-previous@1.0.0(react@18.2.0):
+    resolution: {integrity: sha512-RG2K8z/K7InnOKpq6YLDmT49HGjNmrK+fr82UCVKT2sW0GYfVnYp4wZWBooT/EYfQ5faA9uIjvsuMMhH61rheg==}
+    peerDependencies:
+      react: ^16.8 || ^17.0 || ^18.0
+    dependencies:
+      '@babel/runtime': 7.21.5
+      react: 18.2.0
+    dev: false
+
+  /@radix-ui/react-use-rect@1.0.0(react@18.2.0):
+    resolution: {integrity: sha512-TB7pID8NRMEHxb/qQJpvSt3hQU4sqNPM1VCTjTRjEOa7cEop/QMuq8S6fb/5Tsz64kqSvB9WnwsDHtjnrM9qew==}
+    peerDependencies:
+      react: ^16.8 || ^17.0 || ^18.0
+    dependencies:
+      '@babel/runtime': 7.23.4
+      '@radix-ui/rect': 1.0.0
+      react: 18.2.0
+    dev: false
+
+  /@radix-ui/react-use-size@1.0.0(react@18.2.0):
+    resolution: {integrity: sha512-imZ3aYcoYCKhhgNpkNDh/aTiU05qw9hX+HHI1QDBTyIlcFjgeFlKKySNGMwTp7nYFLQg/j0VA2FmCY4WPDDHMg==}
+    peerDependencies:
+      react: ^16.8 || ^17.0 || ^18.0
+    dependencies:
+      '@babel/runtime': 7.21.5
+      '@radix-ui/react-use-layout-effect': 1.0.0(react@18.2.0)
+      react: 18.2.0
+    dev: false
+
+  /@radix-ui/rect@1.0.0:
+    resolution: {integrity: sha512-d0O68AYy/9oeEy1DdC07bz1/ZXX+DqCskRd3i4JzLSTXwefzaepQrKjXC7aNM8lTHjFLDO0pDgaEiQ7jEk+HVg==}
+    dependencies:
+      '@babel/runtime': 7.23.4
+    dev: false
+
+  /@react-native-async-storage/async-storage@1.21.0(react-native@0.73.1):
+    resolution: {integrity: sha512-JL0w36KuFHFCvnbOXRekqVAUplmOyT/OuCQkogo6X98MtpSaJOKEAeZnYO8JB0U/RIEixZaGI5px73YbRm/oag==}
+    peerDependencies:
+      react-native: ^0.0.0-0 || >=0.60 <1.0
+    dependencies:
+      merge-options: 3.0.4
+      react-native: 0.73.1(@babel/core@7.23.7)(@babel/preset-env@7.23.7)(react@18.2.0)
+
+  /@react-native-community/cli-clean@12.3.0:
+    resolution: {integrity: sha512-iAgLCOWYRGh9ukr+eVQnhkV/OqN3V2EGd/in33Ggn/Mj4uO6+oUncXFwB+yjlyaUNz6FfjudhIz09yYGSF+9sg==}
+    dependencies:
+      '@react-native-community/cli-tools': 12.3.0
+      chalk: 4.1.2
+      execa: 5.1.1
+    transitivePeerDependencies:
+      - encoding
+
+  /@react-native-community/cli-config@12.3.0:
+    resolution: {integrity: sha512-BrTn5ndFD9uOxO8kxBQ32EpbtOvAsQExGPI7SokdI4Zlve70FziLtTq91LTlTUgMq1InVZn/jJb3VIDk6BTInQ==}
+    dependencies:
+      '@react-native-community/cli-tools': 12.3.0
+      chalk: 4.1.2
+      cosmiconfig: 5.2.1
+      deepmerge: 4.3.1
+      glob: 7.2.3
+      joi: 17.11.0
+    transitivePeerDependencies:
+      - encoding
+
+  /@react-native-community/cli-debugger-ui@12.3.0:
+    resolution: {integrity: sha512-w3b0iwjQlk47GhZWHaeTG8kKH09NCMUJO729xSdMBXE8rlbm4kHpKbxQY9qKb6NlfWSJN4noGY+FkNZS2rRwnQ==}
+    dependencies:
+      serve-static: 1.15.0
+    transitivePeerDependencies:
+      - supports-color
+
+  /@react-native-community/cli-doctor@12.3.0:
+    resolution: {integrity: sha512-BPCwNNesoQMkKsxB08Ayy6URgGQ8Kndv6mMhIvJSNdST3J1+x3ehBHXzG9B9Vfi+DrTKRb8lmEl/b/7VkDlPkA==}
+    dependencies:
+      '@react-native-community/cli-config': 12.3.0
+      '@react-native-community/cli-platform-android': 12.3.0
+      '@react-native-community/cli-platform-ios': 12.3.0
+      '@react-native-community/cli-tools': 12.3.0
+      chalk: 4.1.2
+      command-exists: 1.2.9
+      deepmerge: 4.3.1
+      envinfo: 7.11.0
+      execa: 5.1.1
+      hermes-profile-transformer: 0.0.6
+      ip: 1.1.8
+      node-stream-zip: 1.15.0
+      ora: 5.4.1
+      semver: 7.5.4
+      strip-ansi: 5.2.0
+      wcwidth: 1.0.1
+      yaml: 2.2.2
+    transitivePeerDependencies:
+      - encoding
+
+  /@react-native-community/cli-hermes@12.3.0:
+    resolution: {integrity: sha512-G6FxpeZBO4AimKZwtWR3dpXRqTvsmEqlIkkxgwthdzn3LbVjDVIXKpVYU9PkR5cnT+KuAUxO0WwthrJ6Nmrrlg==}
+    dependencies:
+      '@react-native-community/cli-platform-android': 12.3.0
+      '@react-native-community/cli-tools': 12.3.0
+      chalk: 4.1.2
+      hermes-profile-transformer: 0.0.6
+      ip: 1.1.8
+    transitivePeerDependencies:
+      - encoding
+
+  /@react-native-community/cli-platform-android@12.3.0:
+    resolution: {integrity: sha512-VU1NZw63+GLU2TnyQ919bEMThpHQ/oMFju9MCfrd3pyPJz4Sn+vc3NfnTDUVA5Z5yfLijFOkHIHr4vo/C9bjnw==}
+    dependencies:
+      '@react-native-community/cli-tools': 12.3.0
+      chalk: 4.1.2
+      execa: 5.1.1
+      fast-xml-parser: 4.3.2
+      glob: 7.2.3
+      logkitty: 0.7.1
+    transitivePeerDependencies:
+      - encoding
+
+  /@react-native-community/cli-platform-ios@12.3.0:
+    resolution: {integrity: sha512-H95Sgt3wT7L8V75V0syFJDtv4YgqK5zbu69ko4yrXGv8dv2EBi6qZP0VMmkqXDamoPm9/U7tDTdbcf26ctnLfg==}
+    dependencies:
+      '@react-native-community/cli-tools': 12.3.0
+      chalk: 4.1.2
+      execa: 5.1.1
+      fast-xml-parser: 4.3.2
+      glob: 7.2.3
+      ora: 5.4.1
+    transitivePeerDependencies:
+      - encoding
+
+  /@react-native-community/cli-plugin-metro@12.3.0:
+    resolution: {integrity: sha512-tYNHIYnNmxrBcsqbE2dAnLMzlKI3Cp1p1xUgTrNaOMsGPDN1epzNfa34n6Nps3iwKElSL7Js91CzYNqgTalucA==}
+
+  /@react-native-community/cli-server-api@12.3.0:
+    resolution: {integrity: sha512-Rode8NrdyByC+lBKHHn+/W8Zu0c+DajJvLmOWbe2WY/ECvnwcd9MHHbu92hlT2EQaJ9LbLhGrSbQE3cQy9EOCw==}
+    dependencies:
+      '@react-native-community/cli-debugger-ui': 12.3.0
+      '@react-native-community/cli-tools': 12.3.0
+      compression: 1.7.4
+      connect: 3.7.0
+      errorhandler: 1.5.1
+      nocache: 3.0.4
+      pretty-format: 26.6.2
+      serve-static: 1.15.0
+      ws: 7.5.9
+    transitivePeerDependencies:
+      - bufferutil
+      - encoding
+      - supports-color
+      - utf-8-validate
+
+  /@react-native-community/cli-tools@12.3.0:
+    resolution: {integrity: sha512-2GafnCr8D88VdClwnm9KZfkEb+lzVoFdr/7ybqhdeYM0Vnt/tr2N+fM1EQzwI1DpzXiBzTYemw8GjRq+Utcz2Q==}
+    dependencies:
+      appdirsjs: 1.2.7
+      chalk: 4.1.2
+      find-up: 5.0.0
+      mime: 2.6.0
+      node-fetch: 2.7.0
+      open: 6.4.0
+      ora: 5.4.1
+      semver: 7.5.4
+      shell-quote: 1.8.1
+      sudo-prompt: 9.2.1
+    transitivePeerDependencies:
+      - encoding
+
+  /@react-native-community/cli-types@12.3.0:
+    resolution: {integrity: sha512-MgOkmrXH4zsGxhte4YqKL7d+N8ZNEd3w1wo56MZlhu5WabwCJh87wYpU5T8vyfujFLYOFuFK5jjlcbs8F4/WDw==}
+    dependencies:
+      joi: 17.11.0
+
+  /@react-native-community/cli@12.3.0:
+    resolution: {integrity: sha512-XeQohi2E+S2+MMSz97QcEZ/bWpi8sfKiQg35XuYeJkc32Til2g0b97jRpn0/+fV0BInHoG1CQYWwHA7opMsrHg==}
+    engines: {node: '>=18'}
+    hasBin: true
+    dependencies:
+      '@react-native-community/cli-clean': 12.3.0
+      '@react-native-community/cli-config': 12.3.0
+      '@react-native-community/cli-debugger-ui': 12.3.0
+      '@react-native-community/cli-doctor': 12.3.0
+      '@react-native-community/cli-hermes': 12.3.0
+      '@react-native-community/cli-plugin-metro': 12.3.0
+      '@react-native-community/cli-server-api': 12.3.0
+      '@react-native-community/cli-tools': 12.3.0
+      '@react-native-community/cli-types': 12.3.0
+      chalk: 4.1.2
+      commander: 9.5.0
+      deepmerge: 4.3.1
+      execa: 5.1.1
+      find-up: 4.1.0
+      fs-extra: 8.1.0
+      graceful-fs: 4.2.11
+      prompts: 2.4.2
+      semver: 7.5.4
+    transitivePeerDependencies:
+      - bufferutil
+      - encoding
+      - supports-color
+      - utf-8-validate
+
+  /@react-native/assets-registry@0.73.1:
+    resolution: {integrity: sha512-2FgAbU7uKM5SbbW9QptPPZx8N9Ke2L7bsHb+EhAanZjFZunA9PaYtyjUQ1s7HD+zDVqOQIvjkpXSv7Kejd2tqg==}
+    engines: {node: '>=18'}
+
+  /@react-native/babel-plugin-codegen@0.74.0(@babel/preset-env@7.23.7):
+    resolution: {integrity: sha512-xAM/eVSb5LBkKue3bDZgt76bdsGGzKeF/iEzUNbDTwRQrB3Q5GoceGNM/zVlF+z1xGAkr3jhL+ZyITZGSoIlgw==}
+    engines: {node: '>=18'}
+    dependencies:
+      '@react-native/codegen': 0.73.2(@babel/preset-env@7.23.7)
+    transitivePeerDependencies:
+      - '@babel/preset-env'
+      - supports-color
+
+  /@react-native/babel-preset@0.74.0(@babel/core@7.21.8)(@babel/preset-env@7.23.7):
+    resolution: {integrity: sha512-k+1aaYQeLn+GBmGA5Qs3NKI8uzhLvRRMML+pB/+43ZL6DvCklbuJ5KO5oqRRpF3KZ2t/VKUqqSichpXfFrXGjg==}
+    engines: {node: '>=18'}
+    peerDependencies:
+      '@babel/core': '*'
     dependencies:
-      '@babel/runtime': 7.23.4
-      '@radix-ui/react-use-callback-ref': 1.0.0(react@18.2.0)
-      react: 18.2.0
+      '@babel/core': 7.21.8
+      '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.21.8)
+      '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.21.8)
+      '@babel/plugin-proposal-export-default-from': 7.23.3(@babel/core@7.21.8)
+      '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.21.8)
+      '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.21.8)
+      '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.21.8)
+      '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.21.8)
+      '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.21.8)
+      '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.21.8)
+      '@babel/plugin-syntax-export-default-from': 7.23.3(@babel/core@7.21.8)
+      '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.21.8)
+      '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.21.8)
+      '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.21.8)
+      '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.21.8)
+      '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.21.8)
+      '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.21.8)
+      '@babel/plugin-transform-classes': 7.23.5(@babel/core@7.21.8)
+      '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.21.8)
+      '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.21.8)
+      '@babel/plugin-transform-flow-strip-types': 7.23.3(@babel/core@7.21.8)
+      '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.21.8)
+      '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.21.8)
+      '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.21.8)
+      '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.21.8)
+      '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.21.8)
+      '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.21.8)
+      '@babel/plugin-transform-private-property-in-object': 7.23.4(@babel/core@7.21.8)
+      '@babel/plugin-transform-react-display-name': 7.23.3(@babel/core@7.21.8)
+      '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.21.8)
+      '@babel/plugin-transform-react-jsx-self': 7.23.3(@babel/core@7.21.8)
+      '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.21.8)
+      '@babel/plugin-transform-runtime': 7.23.7(@babel/core@7.21.8)
+      '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.21.8)
+      '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.21.8)
+      '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.21.8)
+      '@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.21.8)
+      '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.21.8)
+      '@babel/template': 7.22.15
+      '@react-native/babel-plugin-codegen': 0.74.0(@babel/preset-env@7.23.7)
+      babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.21.8)
+      react-refresh: 0.14.0
+    transitivePeerDependencies:
+      - '@babel/preset-env'
+      - supports-color
     dev: false
 
-  /@radix-ui/react-use-layout-effect@1.0.0(react@18.2.0):
-    resolution: {integrity: sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ==}
+  /@react-native/babel-preset@0.74.0(@babel/core@7.23.7)(@babel/preset-env@7.23.7):
+    resolution: {integrity: sha512-k+1aaYQeLn+GBmGA5Qs3NKI8uzhLvRRMML+pB/+43ZL6DvCklbuJ5KO5oqRRpF3KZ2t/VKUqqSichpXfFrXGjg==}
+    engines: {node: '>=18'}
     peerDependencies:
-      react: ^16.8 || ^17.0 || ^18.0
+      '@babel/core': '*'
     dependencies:
-      '@babel/runtime': 7.23.4
-      react: 18.2.0
-    dev: false
+      '@babel/core': 7.23.7
+      '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.23.7)
+      '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.23.7)
+      '@babel/plugin-proposal-export-default-from': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.23.7)
+      '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.23.7)
+      '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.23.7)
+      '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.23.7)
+      '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.23.7)
+      '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.7)
+      '@babel/plugin-syntax-export-default-from': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.7)
+      '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.23.7)
+      '@babel/plugin-transform-classes': 7.23.5(@babel/core@7.23.7)
+      '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-flow-strip-types': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.7)
+      '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-private-property-in-object': 7.23.4(@babel/core@7.23.7)
+      '@babel/plugin-transform-react-display-name': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.7)
+      '@babel/plugin-transform-react-jsx-self': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-runtime': 7.23.7(@babel/core@7.23.7)
+      '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.23.7)
+      '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.23.7)
+      '@babel/template': 7.22.15
+      '@react-native/babel-plugin-codegen': 0.74.0(@babel/preset-env@7.23.7)
+      babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.23.7)
+      react-refresh: 0.14.0
+    transitivePeerDependencies:
+      - '@babel/preset-env'
+      - supports-color
 
-  /@radix-ui/react-use-previous@1.0.0(react@18.2.0):
-    resolution: {integrity: sha512-RG2K8z/K7InnOKpq6YLDmT49HGjNmrK+fr82UCVKT2sW0GYfVnYp4wZWBooT/EYfQ5faA9uIjvsuMMhH61rheg==}
+  /@react-native/codegen@0.73.2(@babel/preset-env@7.23.7):
+    resolution: {integrity: sha512-lfy8S7umhE3QLQG5ViC4wg5N1Z+E6RnaeIw8w1voroQsXXGPB72IBozh8dAHR3+ceTxIU0KX3A8OpJI8e1+HpQ==}
+    engines: {node: '>=18'}
     peerDependencies:
-      react: ^16.8 || ^17.0 || ^18.0
+      '@babel/preset-env': ^7.1.6
     dependencies:
-      '@babel/runtime': 7.21.5
-      react: 18.2.0
+      '@babel/parser': 7.23.6
+      '@babel/preset-env': 7.23.7(@babel/core@7.23.7)
+      flow-parser: 0.206.0
+      glob: 7.2.3
+      invariant: 2.2.4
+      jscodeshift: 0.14.0(@babel/preset-env@7.23.7)
+      mkdirp: 0.5.6
+      nullthrows: 1.1.1
+    transitivePeerDependencies:
+      - supports-color
+
+  /@react-native/community-cli-plugin@0.73.11(@babel/core@7.21.8)(@babel/preset-env@7.23.7):
+    resolution: {integrity: sha512-s0bprwljKS1Al8wOKathDDmRyF+70CcNE2G/aqZ7+L0NoOE0Uxxx/5P2BxlM2Mfht7O33B4SeMNiPdE/FqIubQ==}
+    engines: {node: '>=18'}
+    dependencies:
+      '@react-native-community/cli-server-api': 12.3.0
+      '@react-native-community/cli-tools': 12.3.0
+      '@react-native/dev-middleware': 0.73.6
+      '@react-native/metro-babel-transformer': 0.73.12(@babel/core@7.21.8)(@babel/preset-env@7.23.7)
+      chalk: 4.1.2
+      execa: 5.1.1
+      metro: 0.80.3
+      metro-config: 0.80.3
+      metro-core: 0.80.3
+      node-fetch: 2.7.0
+      readline: 1.3.0
+    transitivePeerDependencies:
+      - '@babel/core'
+      - '@babel/preset-env'
+      - bufferutil
+      - encoding
+      - supports-color
+      - utf-8-validate
     dev: false
 
-  /@radix-ui/react-use-rect@1.0.0(react@18.2.0):
-    resolution: {integrity: sha512-TB7pID8NRMEHxb/qQJpvSt3hQU4sqNPM1VCTjTRjEOa7cEop/QMuq8S6fb/5Tsz64kqSvB9WnwsDHtjnrM9qew==}
+  /@react-native/community-cli-plugin@0.73.11(@babel/core@7.23.7)(@babel/preset-env@7.23.7):
+    resolution: {integrity: sha512-s0bprwljKS1Al8wOKathDDmRyF+70CcNE2G/aqZ7+L0NoOE0Uxxx/5P2BxlM2Mfht7O33B4SeMNiPdE/FqIubQ==}
+    engines: {node: '>=18'}
+    dependencies:
+      '@react-native-community/cli-server-api': 12.3.0
+      '@react-native-community/cli-tools': 12.3.0
+      '@react-native/dev-middleware': 0.73.6
+      '@react-native/metro-babel-transformer': 0.73.12(@babel/core@7.23.7)(@babel/preset-env@7.23.7)
+      chalk: 4.1.2
+      execa: 5.1.1
+      metro: 0.80.3
+      metro-config: 0.80.3
+      metro-core: 0.80.3
+      node-fetch: 2.7.0
+      readline: 1.3.0
+    transitivePeerDependencies:
+      - '@babel/core'
+      - '@babel/preset-env'
+      - bufferutil
+      - encoding
+      - supports-color
+      - utf-8-validate
+
+  /@react-native/debugger-frontend@0.73.3:
+    resolution: {integrity: sha512-RgEKnWuoo54dh7gQhV7kvzKhXZEhpF9LlMdZolyhGxHsBqZ2gXdibfDlfcARFFifPIiaZ3lXuOVVa4ei+uPgTw==}
+    engines: {node: '>=18'}
+
+  /@react-native/dev-middleware@0.73.6:
+    resolution: {integrity: sha512-9SD7gIso+hO1Jy1Y/Glbd+JWQwyH7Xjnwebtkxdm5TMB51LQPjaGtMcwEigbIZyAtvoaDGmhWmudwbKpDlS+gA==}
+    engines: {node: '>=18'}
+    dependencies:
+      '@isaacs/ttlcache': 1.4.1
+      '@react-native/debugger-frontend': 0.73.3
+      chrome-launcher: 0.15.2
+      chromium-edge-launcher: 1.0.0
+      connect: 3.7.0
+      debug: 2.6.9
+      node-fetch: 2.7.0
+      open: 7.4.2
+      serve-static: 1.15.0
+      temp-dir: 2.0.0
+    transitivePeerDependencies:
+      - encoding
+      - supports-color
+
+  /@react-native/gradle-plugin@0.73.4:
+    resolution: {integrity: sha512-PMDnbsZa+tD55Ug+W8CfqXiGoGneSSyrBZCMb5JfiB3AFST3Uj5e6lw8SgI/B6SKZF7lG0BhZ6YHZsRZ5MlXmg==}
+    engines: {node: '>=18'}
+
+  /@react-native/js-polyfills@0.73.1:
+    resolution: {integrity: sha512-ewMwGcumrilnF87H4jjrnvGZEaPFCAC4ebraEK+CurDDmwST/bIicI4hrOAv+0Z0F7DEK4O4H7r8q9vH7IbN4g==}
+    engines: {node: '>=18'}
+
+  /@react-native/metro-babel-transformer@0.73.12(@babel/core@7.21.8)(@babel/preset-env@7.23.7):
+    resolution: {integrity: sha512-VmxN5aaoOprzDzUR+8c3XYhG0FoMOO6n0ToylCW6EeZCuf5RTY7HWVOhacabGoB1mHrWzJ0wWEsqX+eD4iFxoA==}
+    engines: {node: '>=18'}
     peerDependencies:
-      react: ^16.8 || ^17.0 || ^18.0
+      '@babel/core': '*'
     dependencies:
-      '@babel/runtime': 7.23.4
-      '@radix-ui/rect': 1.0.0
-      react: 18.2.0
+      '@babel/core': 7.21.8
+      '@react-native/babel-preset': 0.74.0(@babel/core@7.21.8)(@babel/preset-env@7.23.7)
+      babel-preset-fbjs: 3.4.0(@babel/core@7.21.8)
+      hermes-parser: 0.15.0
+      nullthrows: 1.1.1
+    transitivePeerDependencies:
+      - '@babel/preset-env'
+      - supports-color
     dev: false
 
-  /@radix-ui/react-use-size@1.0.0(react@18.2.0):
-    resolution: {integrity: sha512-imZ3aYcoYCKhhgNpkNDh/aTiU05qw9hX+HHI1QDBTyIlcFjgeFlKKySNGMwTp7nYFLQg/j0VA2FmCY4WPDDHMg==}
+  /@react-native/metro-babel-transformer@0.73.12(@babel/core@7.23.7)(@babel/preset-env@7.23.7):
+    resolution: {integrity: sha512-VmxN5aaoOprzDzUR+8c3XYhG0FoMOO6n0ToylCW6EeZCuf5RTY7HWVOhacabGoB1mHrWzJ0wWEsqX+eD4iFxoA==}
+    engines: {node: '>=18'}
     peerDependencies:
-      react: ^16.8 || ^17.0 || ^18.0
+      '@babel/core': '*'
     dependencies:
-      '@babel/runtime': 7.21.5
-      '@radix-ui/react-use-layout-effect': 1.0.0(react@18.2.0)
-      react: 18.2.0
-    dev: false
+      '@babel/core': 7.23.7
+      '@react-native/babel-preset': 0.74.0(@babel/core@7.23.7)(@babel/preset-env@7.23.7)
+      babel-preset-fbjs: 3.4.0(@babel/core@7.23.7)
+      hermes-parser: 0.15.0
+      nullthrows: 1.1.1
+    transitivePeerDependencies:
+      - '@babel/preset-env'
+      - supports-color
 
-  /@radix-ui/rect@1.0.0:
-    resolution: {integrity: sha512-d0O68AYy/9oeEy1DdC07bz1/ZXX+DqCskRd3i4JzLSTXwefzaepQrKjXC7aNM8lTHjFLDO0pDgaEiQ7jEk+HVg==}
+  /@react-native/normalize-colors@0.73.2:
+    resolution: {integrity: sha512-bRBcb2T+I88aG74LMVHaKms2p/T8aQd8+BZ7LuuzXlRfog1bMWWn/C5i0HVuvW4RPtXQYgIlGiXVDy9Ir1So/w==}
+
+  /@react-native/virtualized-lists@0.73.4(react-native@0.73.1):
+    resolution: {integrity: sha512-HpmLg1FrEiDtrtAbXiwCgXFYyloK/dOIPIuWW3fsqukwJEWAiTzm1nXGJ7xPU5XTHiWZ4sKup5Ebaj8z7iyWog==}
+    engines: {node: '>=18'}
+    peerDependencies:
+      react-native: '*'
     dependencies:
-      '@babel/runtime': 7.23.4
-    dev: false
+      invariant: 2.2.4
+      nullthrows: 1.1.1
+      react-native: 0.73.1(@babel/core@7.23.7)(@babel/preset-env@7.23.7)(react@18.2.0)
 
   /@react-spring/animated@9.4.5(react@18.2.0):
     resolution: {integrity: sha512-KWqrtvJSMx6Fj9nMJkhTwM9r6LIriExDRV6YHZV9HKQsaolUFppgkOXpC+rsL1JEtEvKv6EkLLmSqHTnuYjiIA==}
@@ -3713,7 +6275,7 @@ packages:
       '@react-spring/core': 9.4.5(react@18.2.0)
       '@react-spring/shared': 9.4.5(react@18.2.0)
       '@react-spring/types': 9.4.5
-      '@react-three/fiber': 8.0.12(react-dom@18.2.0)(react@18.2.0)(three@0.139.2)
+      '@react-three/fiber': 8.0.12(react-dom@18.2.0)(react-native@0.73.1)(react@18.2.0)(three@0.139.2)
       react: 18.2.0
       three: 0.139.2
     dev: false
@@ -3722,7 +6284,7 @@ packages:
     resolution: {integrity: sha512-mpRIamoHwql0ogxEUh9yr4TP0xU5CWyZxVQeccGkHHF8kPMErtDXJlxyo0lj+telRF35XNihtPTWoflqtyARmg==}
     dev: false
 
-  /@react-three/fiber@8.0.12(react-dom@18.2.0)(react@18.2.0)(three@0.139.2):
+  /@react-three/fiber@8.0.12(react-dom@18.2.0)(react-native@0.73.1)(react@18.2.0)(three@0.139.2):
     resolution: {integrity: sha512-McYcJDlkksn9LlIhE2A4Y2scZOtKfX1ia3+7EvpFjFozFJx0Ecszi7atlizOvesIa9nG9VQWQCvjQxu9L0/TmA==}
     peerDependencies:
       expo: '>=43.0'
@@ -3749,6 +6311,7 @@ packages:
       react: 18.2.0
       react-dom: 18.2.0(react@18.2.0)
       react-merge-refs: 1.1.0
+      react-native: 0.73.1(@babel/core@7.21.8)(@babel/preset-env@7.23.7)(react@18.2.0)
       react-reconciler: 0.27.0(react@18.2.0)
       react-use-measure: 2.1.1(react-dom@18.2.0)(react@18.2.0)
       scheduler: 0.21.0
@@ -3852,19 +6415,6 @@ packages:
     resolution: {integrity: sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA==}
     dev: true
 
-  /@safe-global/safe-apps-provider@0.17.1(typescript@5.0.4):
-    resolution: {integrity: sha512-lYfRqrbbK1aKU1/UGkYWc/X7PgySYcumXKc5FB2uuwAs2Ghj8uETuW5BrwPqyjBknRxutFbTv+gth/JzjxAhdQ==}
-    dependencies:
-      '@safe-global/safe-apps-sdk': 8.0.0(typescript@5.0.4)
-      events: 3.3.0
-    transitivePeerDependencies:
-      - bufferutil
-      - encoding
-      - typescript
-      - utf-8-validate
-      - zod
-    dev: false
-
   /@safe-global/safe-apps-provider@0.18.1(typescript@5.0.4):
     resolution: {integrity: sha512-V4a05A3EgJcriqtDoJklDz1BOinWhC6P0hjUSxshA4KOZM7rGPCTto/usXs09zr1vvL28evl/NldSTv97j2bmg==}
     dependencies:
@@ -3877,19 +6427,6 @@ packages:
       - utf-8-validate
       - zod
 
-  /@safe-global/safe-apps-sdk@8.0.0(typescript@5.0.4):
-    resolution: {integrity: sha512-gYw0ki/EAuV1oSyMxpqandHjnthZjYYy+YWpTAzf8BqfXM3ItcZLpjxfg+3+mXW8HIO+3jw6T9iiqEXsqHaMMw==}
-    dependencies:
-      '@safe-global/safe-gateway-typescript-sdk': 3.7.3
-      viem: 1.21.4(typescript@5.0.4)
-    transitivePeerDependencies:
-      - bufferutil
-      - encoding
-      - typescript
-      - utf-8-validate
-      - zod
-    dev: false
-
   /@safe-global/safe-apps-sdk@8.1.0(typescript@5.0.4):
     resolution: {integrity: sha512-XJbEPuaVc7b9n23MqlF6c+ToYIS3f7P2Sel8f3cSBQ9WORE4xrSuvhMpK9fDSFqJ7by/brc+rmJR/5HViRr0/w==}
     dependencies:
@@ -3912,6 +6449,13 @@ packages:
   /@scure/base@1.1.3:
     resolution: {integrity: sha512-/+SgoRjLq7Xlf0CWuLHq2LUZeL/w65kfzAPG5NH9pcmBhs+nunQTn4gvdwgMTIXnt9b2C/1SeL2XiysZEyIC9Q==}
 
+  /@scure/bip32@1.3.1:
+    resolution: {integrity: sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A==}
+    dependencies:
+      '@noble/curves': 1.1.0
+      '@noble/hashes': 1.3.2
+      '@scure/base': 1.1.3
+
   /@scure/bip32@1.3.2:
     resolution: {integrity: sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA==}
     dependencies:
@@ -3925,40 +6469,32 @@ packages:
       '@noble/hashes': 1.3.2
       '@scure/base': 1.1.3
 
+  /@sideway/address@4.1.4:
+    resolution: {integrity: sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==}
+    dependencies:
+      '@hapi/hoek': 9.3.0
+
+  /@sideway/formula@3.0.1:
+    resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==}
+
+  /@sideway/pinpoint@2.0.0:
+    resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==}
+
   /@sinclair/typebox@0.27.8:
     resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
-    dev: true
 
-  /@solana/buffer-layout@4.0.1:
-    resolution: {integrity: sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==}
-    engines: {node: '>=5.10'}
+  /@sinonjs/commons@3.0.0:
+    resolution: {integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==}
     dependencies:
-      buffer: 6.0.3
+      type-detect: 4.0.8
 
-  /@solana/web3.js@1.75.0:
-    resolution: {integrity: sha512-rHQgdo1EWfb+nPUpHe4O7i8qJPELHKNR5PAZRK+a7XxiykqOfbaAlPt5boDWAGPnYbSv0ziWZv5mq9DlFaQCxg==}
+  /@sinonjs/fake-timers@10.3.0:
+    resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==}
     dependencies:
-      '@babel/runtime': 7.23.4
-      '@noble/ed25519': 1.7.3
-      '@noble/hashes': 1.3.2
-      '@noble/secp256k1': 1.7.1
-      '@solana/buffer-layout': 4.0.1
-      agentkeepalive: 4.3.0
-      bigint-buffer: 1.1.5
-      bn.js: 5.2.1
-      borsh: 0.7.0
-      bs58: 4.0.1
-      buffer: 6.0.3
-      fast-stable-stringify: 1.0.0
-      jayson: 3.7.0
-      node-fetch: 2.6.11
-      rpc-websockets: 7.5.1
-      superstruct: 0.14.2
-    transitivePeerDependencies:
-      - bufferutil
-      - encoding
-      - supports-color
-      - utf-8-validate
+      '@sinonjs/commons': 3.0.0
+
+  /@socket.io/component-emitter@3.1.0:
+    resolution: {integrity: sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==}
 
   /@spruceid/siwe-parser@2.0.2:
     resolution: {integrity: sha512-9WuA0ios2537cWYu39MMeH0O2KdrMKgKlOBUTWRTXQjCYu5B+mHCA0JkCbFaJ/0EjxoVIcYCXIW/DoPEpw+PqA==}
@@ -4071,43 +6607,16 @@ packages:
     dependencies:
       tslib: 2.5.0
 
-  /@tanstack/query-core@4.29.5:
-    resolution: {integrity: sha512-xXIiyQ/4r9KfaJ3k6kejqcaqFXXBTzN2aOJ5H1J6aTJE9hl/nbgAdfF6oiIu0CD5xowejJEJ6bBg8TO7BN4NuQ==}
-
-  /@tanstack/query-persist-client-core@4.29.5:
-    resolution: {integrity: sha512-IjLtEZiEUnzpcFVdHoZGqtjv2g0smLK5WOWk8hP/2ndlXe5kaSbtCKWO2WFbw7yWPYVMM2m9zyglZqg5kU1DMA==}
-    dependencies:
-      '@tanstack/query-core': 4.29.5
-
-  /@tanstack/query-sync-storage-persister@4.29.5:
-    resolution: {integrity: sha512-A5K2owrQ1z/Ipndt/thv3vMXjRPOT02jwlXM51OV5IHg4FLQ9vlXvImYWlBoHmY1MMl91x9bqRgz0gX6hnr14g==}
-    dependencies:
-      '@tanstack/query-persist-client-core': 4.29.5
-
-  /@tanstack/react-query-persist-client@4.29.5(@tanstack/react-query@4.29.5):
-    resolution: {integrity: sha512-zvQChSqO/HpRHWjCn+4L4M45Yr2eslogJcQr2HFxRw27Wj/5WlFYhnQFo5SCCR+gZh09tMnkzD+zFhN76wMEGw==}
-    peerDependencies:
-      '@tanstack/react-query': 4.29.5
-    dependencies:
-      '@tanstack/query-persist-client-core': 4.29.5
-      '@tanstack/react-query': 4.29.5(react-dom@18.2.0)(react@18.2.0)
+  /@tanstack/query-core@5.17.9:
+    resolution: {integrity: sha512-8xcvpWIPaRMDNLMvG9ugcUJMgFK316ZsqkPPbsI+TMZsb10N9jk0B6XgPk4/kgWC2ziHyWR7n7wUhxmD0pChQw==}
 
-  /@tanstack/react-query@4.29.5(react-dom@18.2.0)(react@18.2.0):
-    resolution: {integrity: sha512-F87cibC3s3eG0Q90g2O+hqntpCrudKFnR8P24qkH9uccEhXErnJxBC/AAI4cJRV2bfMO8IeGZQYf3WyYgmSg0w==}
+  /@tanstack/react-query@5.17.9(react@18.2.0):
+    resolution: {integrity: sha512-M5E9gwUq1Stby/pdlYjBlL24euIVuGbWKIFCbtnQxSdXI4PgzjTSdXdV3QE6fc+itF+TUvX/JPTKIwq8yuBXcg==}
     peerDependencies:
-      react: ^16.8.0 || ^17.0.0 || ^18.0.0
-      react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
-      react-native: '*'
-    peerDependenciesMeta:
-      react-dom:
-        optional: true
-      react-native:
-        optional: true
+      react: ^18.0.0
     dependencies:
-      '@tanstack/query-core': 4.29.5
+      '@tanstack/query-core': 5.17.9
       react: 18.2.0
-      react-dom: 18.2.0(react@18.2.0)
-      use-sync-external-store: 1.2.0(react@18.2.0)
 
   /@testing-library/dom@9.3.1:
     resolution: {integrity: sha512-0DGPd9AR3+iDTjGoMpxIkAsUihHZ3Ai6CneU6bRRrffXMgzCdlNk43jTrD2/5LT6CBb3MWTP8v510JzYtahD2w==}
@@ -4195,16 +6704,20 @@ packages:
     resolution: {integrity: sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==}
     dev: true
 
-  /@types/connect@3.4.35:
-    resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==}
+  /@types/chrome@0.0.136:
+    resolution: {integrity: sha512-XDEiRhLkMd+SB7Iw3ZUIj/fov3wLd4HyTdLltVszkgl1dBfc3Rb7oPMVZ2Mz2TLqnF7Ow+StbR8E7r9lqpb4DA==}
     dependencies:
-      '@types/node': 18.19.4
+      '@types/filesystem': 0.0.35
+      '@types/har-format': 1.2.15
 
   /@types/debug@4.1.7:
     resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==}
     dependencies:
       '@types/ms': 0.7.31
 
+  /@types/dom-screen-wake-lock@1.0.3:
+    resolution: {integrity: sha512-3Iten7X3Zgwvk6kh6/NRdwN7WbZ760YgFCsF5AxDifltUQzW1RaW+WRmcVtgwFzLjaNu64H+0MPJ13yRa8g3Dw==}
+
   /@types/eslint-scope@3.7.4:
     resolution: {integrity: sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==}
     dependencies:
@@ -4228,12 +6741,23 @@ packages:
   /@types/estree@1.0.1:
     resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==}
 
+  /@types/filesystem@0.0.35:
+    resolution: {integrity: sha512-1eKvCaIBdrD2mmMgy5dwh564rVvfEhZTWVQQGRNn0Nt4ZEnJ0C8oSUCzvMKRA4lGde5oEVo+q2MrTTbV/GHDCQ==}
+    dependencies:
+      '@types/filewriter': 0.0.32
+
+  /@types/filewriter@0.0.32:
+    resolution: {integrity: sha512-Kpi2GXQyYJdjL8mFclL1eDgihn1SIzorMZjD94kdPZh9E4VxGOeyjPxi5LpsM4Zku7P0reqegZTt2GxhmA9VBg==}
+
   /@types/fs-extra@9.0.13:
     resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==}
     dependencies:
       '@types/node': 17.0.35
     dev: true
 
+  /@types/har-format@1.2.15:
+    resolution: {integrity: sha512-RpQH4rXLuvTXKR0zqHq3go0RVXYv/YVqv4TnPH95VbwUxZdQlK1EtcMvQvMpDngHbt13Csh9Z4qT9AbkiQH5BA==}
+
   /@types/hast@2.3.4:
     resolution: {integrity: sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==}
     dependencies:
@@ -4243,6 +6767,19 @@ packages:
     resolution: {integrity: sha512-bSxgya4x5O+x+QhfCGckiDDE+17XGPp1TNBgBA/vfF5EwdiZC70F4cKG5QK2v44+v62oY7/t/InreRhxskulcA==}
     dev: true
 
+  /@types/istanbul-lib-coverage@2.0.6:
+    resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==}
+
+  /@types/istanbul-lib-report@3.0.3:
+    resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==}
+    dependencies:
+      '@types/istanbul-lib-coverage': 2.0.6
+
+  /@types/istanbul-reports@3.0.4:
+    resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==}
+    dependencies:
+      '@types/istanbul-lib-report': 3.0.3
+
   /@types/json-schema@7.0.11:
     resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==}
     dev: false
@@ -4273,6 +6810,7 @@ packages:
 
   /@types/node@12.20.55:
     resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==}
+    dev: true
 
   /@types/node@17.0.35:
     resolution: {integrity: sha512-vu1SrqBjbbZ3J6vwY17jBs8Sr/BKA+/a/WtjRG+whKg1iuLFOosq872EXS0eXWILdO36DHQQeku/ZcL6hz2fpg==}
@@ -4297,6 +6835,9 @@ packages:
     resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==}
     dev: true
 
+  /@types/parse-json@4.0.2:
+    resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==}
+
   /@types/prismjs@1.26.0:
     resolution: {integrity: sha512-ZTaqn/qSqUuAq1YwvOFQfVW1AR/oQJlLSZVustdjwI+GZ8kr0MSHBj0tsXPW1EqHubx50gtBEjbPGsdZwQwCjQ==}
     dev: false
@@ -4348,10 +6889,18 @@ packages:
   /@types/scheduler@0.16.3:
     resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==}
 
+  /@types/secp256k1@4.0.6:
+    resolution: {integrity: sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==}
+    dependencies:
+      '@types/node': 18.19.4
+
   /@types/semver@7.5.0:
     resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==}
     dev: true
 
+  /@types/stack-utils@2.0.3:
+    resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==}
+
   /@types/trusted-types@2.0.3:
     resolution: {integrity: sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==}
 
@@ -4366,10 +6915,18 @@ packages:
     resolution: {integrity: sha512-dLhCHEIjf9++/vHaHCo/ngJzGqGGbPh/f7HKwznEk3WFL64t/VKuRiVpyQH4afX93YkCV94I9M0Cx+DBLk1Dsg==}
     dev: true
 
-  /@types/ws@7.4.7:
-    resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==}
+  /@types/yargs-parser@21.0.3:
+    resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==}
+
+  /@types/yargs@15.0.19:
+    resolution: {integrity: sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==}
     dependencies:
-      '@types/node': 18.19.4
+      '@types/yargs-parser': 21.0.3
+
+  /@types/yargs@17.0.32:
+    resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==}
+    dependencies:
+      '@types/yargs-parser': 21.0.3
 
   /@typescript-eslint/parser@5.59.5(eslint@8.15.0)(typescript@5.0.4):
     resolution: {integrity: sha512-NJXQC4MRnF9N9yWqQE2/KLRSOLvrrlZb48NGVfBa+RuPMN6B7ZcK5jZOvhuygv4D64fRKnZI4L4p8+M+rfeQuw==}
@@ -4642,7 +7199,7 @@ packages:
     dependencies:
       magic-string: 0.30.3
       pathe: 1.1.1
-      pretty-format: 29.6.0
+      pretty-format: 29.7.0
     dev: true
 
   /@vitest/spy@0.33.0:
@@ -4656,98 +7213,28 @@ packages:
     dependencies:
       diff-sequences: 29.4.3
       loupe: 2.3.6
-      pretty-format: 29.6.0
+      pretty-format: 29.7.0
     dev: true
 
-  /@wagmi/connectors@3.1.11(@types/react@18.2.46)(react@18.2.0)(typescript@5.0.4)(viem@1.21.4):
-    resolution: {integrity: sha512-wzxp9f9PtSUFjDUP/QDjc1t7HON4D8wrVKsw35ejdO8hToDpx1gU9lwH/47Zo/1zExGezQc392sjoHSszYd7OA==}
+  /@wagmi/connectors@4.1.6(@types/react@18.2.46)(@wagmi/core@2.3.1)(react-dom@18.2.0)(react-native@0.73.1)(react@18.2.0)(typescript@5.0.4)(viem@2.4.1):
+    resolution: {integrity: sha512-Kew/4K3AFMF4eNwg5ZEDMDu0R2MaLWwkgzWTPNwIp3Jjm8jtxSJ2Qyg23wS0YxaaGGefXX4/9K9MAN2Vjpsowg==}
     peerDependencies:
+      '@wagmi/core': 2.3.1
       typescript: '>=5.0.4'
-      viem: '>=0.3.35'
+      viem: 2.x
     peerDependenciesMeta:
       typescript:
         optional: true
     dependencies:
-      '@coinbase/wallet-sdk': 3.6.6
+      '@coinbase/wallet-sdk': 3.9.1
+      '@metamask/sdk': 0.14.1(@types/react@18.2.46)(react-dom@18.2.0)(react-native@0.73.1)(react@18.2.0)
       '@safe-global/safe-apps-provider': 0.18.1(typescript@5.0.4)
       '@safe-global/safe-apps-sdk': 8.1.0(typescript@5.0.4)
+      '@wagmi/core': 2.3.1(@types/react@18.2.46)(react@18.2.0)(typescript@5.0.4)(viem@2.4.1)
       '@walletconnect/ethereum-provider': 2.11.0(@types/react@18.2.46)(react@18.2.0)
-      '@walletconnect/legacy-provider': 2.0.0
-      '@walletconnect/modal': 2.6.2(@types/react@18.2.46)(react@18.2.0)
-      '@walletconnect/utils': 2.11.0
-      abitype: 0.8.7(typescript@5.0.4)
-      eventemitter3: 4.0.7
-      typescript: 5.0.4
-      viem: 1.21.4(typescript@5.0.4)
-    transitivePeerDependencies:
-      - '@azure/app-configuration'
-      - '@azure/cosmos'
-      - '@azure/data-tables'
-      - '@azure/identity'
-      - '@azure/keyvault-secrets'
-      - '@azure/storage-blob'
-      - '@capacitor/preferences'
-      - '@netlify/blobs'
-      - '@planetscale/database'
-      - '@react-native-async-storage/async-storage'
-      - '@types/react'
-      - '@upstash/redis'
-      - '@vercel/kv'
-      - bufferutil
-      - encoding
-      - react
-      - supports-color
-      - utf-8-validate
-      - zod
-
-  /@wagmi/connectors@3.1.5(@types/react@18.2.46)(lokijs@1.5.12)(react@18.2.0)(typescript@5.0.4)(viem@1.19.4):
-    resolution: {integrity: sha512-aE4rWZbivqWa9HqjiLDPtwROH2b1Az+lBVMeZ3o/aFxGNGNEkdrSAMOUG15/UFy3VnN6HqGOtTobOBZ10JhfNQ==}
-    peerDependencies:
-      typescript: '>=5.0.4'
-      viem: '>=0.3.35'
-    peerDependenciesMeta:
-      typescript:
-        optional: true
-    dependencies:
-      '@coinbase/wallet-sdk': 3.6.6
-      '@ledgerhq/connect-kit-loader': 1.1.0
-      '@safe-global/safe-apps-provider': 0.17.1(typescript@5.0.4)
-      '@safe-global/safe-apps-sdk': 8.0.0(typescript@5.0.4)
-      '@walletconnect/ethereum-provider': 2.10.2(@walletconnect/modal@2.6.2)(lokijs@1.5.12)
-      '@walletconnect/legacy-provider': 2.0.0
       '@walletconnect/modal': 2.6.2(@types/react@18.2.46)(react@18.2.0)
-      '@walletconnect/utils': 2.10.2(lokijs@1.5.12)
-      abitype: 0.8.7(typescript@5.0.4)
-      eventemitter3: 4.0.7
-      typescript: 5.0.4
-      viem: 1.19.4(typescript@5.0.4)
-    transitivePeerDependencies:
-      - '@react-native-async-storage/async-storage'
-      - '@types/react'
-      - bufferutil
-      - encoding
-      - lokijs
-      - react
-      - supports-color
-      - utf-8-validate
-      - zod
-    dev: false
-
-  /@wagmi/core@1.4.13(@types/react@18.2.46)(react@18.2.0)(typescript@5.0.4)(viem@1.21.4):
-    resolution: {integrity: sha512-ytMCvXbBOgfDu9Qw67279wq/jNEe7EZLjLyekX7ROnvHRADqFr3lwZI6ih41UmtRZAmXAx8Ghyuqy154EjB5mQ==}
-    peerDependencies:
-      typescript: '>=5.0.4'
-      viem: '>=0.3.35'
-    peerDependenciesMeta:
-      typescript:
-        optional: true
-    dependencies:
-      '@wagmi/connectors': 3.1.11(@types/react@18.2.46)(react@18.2.0)(typescript@5.0.4)(viem@1.21.4)
-      abitype: 0.8.7(typescript@5.0.4)
-      eventemitter3: 4.0.7
       typescript: 5.0.4
-      viem: 1.21.4(typescript@5.0.4)
-      zustand: 4.3.8(react@18.2.0)
+      viem: 2.4.1(typescript@5.0.4)
     transitivePeerDependencies:
       - '@azure/app-configuration'
       - '@azure/cosmos'
@@ -4764,65 +7251,38 @@ packages:
       - '@vercel/kv'
       - bufferutil
       - encoding
-      - immer
       - react
+      - react-dom
+      - react-native
+      - rollup
       - supports-color
       - utf-8-validate
       - zod
 
-  /@wagmi/core@1.4.7(@types/react@18.2.46)(lokijs@1.5.12)(react@18.2.0)(typescript@5.0.4)(viem@1.19.4):
-    resolution: {integrity: sha512-PiOIGni8ArQoPmuDylHX38zMt2nPnTYRIluIqiduKyGCM61X/tf10a0rafUMOOphDPudZu1TacNDhCSeoh/LEA==}
+  /@wagmi/core@2.3.1(@types/react@18.2.46)(react@18.2.0)(typescript@5.0.4)(viem@2.4.1):
+    resolution: {integrity: sha512-vpD5el6E8s2gmTDFPr1ghRuQCBTe45QSOSxAPkImCXWXiAh4xoCfwPH8lBUBpRJouu2eVBPVaCpGQNGO8yD1xw==}
     peerDependencies:
+      '@tanstack/query-core': '>=5.0.0'
       typescript: '>=5.0.4'
-      viem: '>=0.3.35'
-    peerDependenciesMeta:
-      typescript:
-        optional: true
-    dependencies:
-      '@wagmi/connectors': 3.1.5(@types/react@18.2.46)(lokijs@1.5.12)(react@18.2.0)(typescript@5.0.4)(viem@1.19.4)
-      abitype: 0.8.7(typescript@5.0.4)
-      eventemitter3: 4.0.7
-      typescript: 5.0.4
-      viem: 1.19.4(typescript@5.0.4)
-      zustand: 4.3.8(react@18.2.0)
-    transitivePeerDependencies:
-      - '@react-native-async-storage/async-storage'
-      - '@types/react'
-      - bufferutil
-      - encoding
-      - immer
-      - lokijs
-      - react
-      - supports-color
-      - utf-8-validate
-      - zod
-    dev: false
-
-  /@walletconnect/core@2.10.2(lokijs@1.5.12):
-    resolution: {integrity: sha512-JQz/xp3SLEpTeRQctdck2ugSBVEpMxoSE+lFi2voJkZop1hv6P+uqr6E4PzjFluAjeAnKlT1xvra0aFWjPWVcw==}
-    dependencies:
-      '@walletconnect/heartbeat': 1.2.1
-      '@walletconnect/jsonrpc-provider': 1.0.13
-      '@walletconnect/jsonrpc-types': 1.0.3
-      '@walletconnect/jsonrpc-utils': 1.0.8
-      '@walletconnect/jsonrpc-ws-connection': 1.0.13
-      '@walletconnect/keyvaluestorage': 1.0.2(lokijs@1.5.12)
-      '@walletconnect/logger': 2.0.1
-      '@walletconnect/relay-api': 1.0.9
-      '@walletconnect/relay-auth': 1.0.4
-      '@walletconnect/safe-json': 1.0.2
-      '@walletconnect/time': 1.0.2
-      '@walletconnect/types': 2.10.2(lokijs@1.5.12)
-      '@walletconnect/utils': 2.10.2(lokijs@1.5.12)
-      events: 3.3.0
-      lodash.isequal: 4.5.0
-      uint8arrays: 3.1.1
+      viem: 2.x
+    peerDependenciesMeta:
+      '@tanstack/query-core':
+        optional: true
+      typescript:
+        optional: true
+    dependencies:
+      eventemitter3: 5.0.1
+      mipd: 0.0.5(typescript@5.0.4)
+      typescript: 5.0.4
+      viem: 2.4.1(typescript@5.0.4)
+      zustand: 4.4.1(@types/react@18.2.46)(react@18.2.0)
     transitivePeerDependencies:
-      - '@react-native-async-storage/async-storage'
+      - '@types/react'
       - bufferutil
-      - lokijs
+      - immer
+      - react
       - utf-8-validate
-    dev: false
+      - zod
 
   /@walletconnect/core@2.11.0:
     resolution: {integrity: sha512-2Tjp5BCevI7dbmqo/OrCjX4tqgMqwJNQLlQAlphqPfvwlF9+tIu6pGcVbSN3U9zyXzWIZCeleqEaWUeSeET4Ew==}
@@ -4862,54 +7322,11 @@ packages:
       - supports-color
       - utf-8-validate
 
-  /@walletconnect/crypto@1.0.3:
-    resolution: {integrity: sha512-+2jdORD7XQs76I2Odgr3wwrtyuLUXD/kprNVsjWRhhhdO9Mt6WqVzOPu0/t7OHSmgal8k7SoBQzUc5hu/8zL/g==}
-    dependencies:
-      '@walletconnect/encoding': 1.0.2
-      '@walletconnect/environment': 1.0.1
-      '@walletconnect/randombytes': 1.0.3
-      aes-js: 3.1.2
-      hash.js: 1.1.7
-      tslib: 1.14.1
-
-  /@walletconnect/encoding@1.0.2:
-    resolution: {integrity: sha512-CrwSBrjqJ7rpGQcTL3kU+Ief+Bcuu9PH6JLOb+wM6NITX1GTxR/MfNwnQfhLKK6xpRAyj2/nM04OOH6wS8Imag==}
-    dependencies:
-      is-typedarray: 1.0.0
-      tslib: 1.14.1
-      typedarray-to-buffer: 3.1.5
-
   /@walletconnect/environment@1.0.1:
     resolution: {integrity: sha512-T426LLZtHj8e8rYnKfzsw1aG6+M0BT1ZxayMdv/p8yM0MU+eJDISqNY3/bccxRr4LrF9csq02Rhqt08Ibl0VRg==}
     dependencies:
       tslib: 1.14.1
 
-  /@walletconnect/ethereum-provider@2.10.2(@walletconnect/modal@2.6.2)(lokijs@1.5.12):
-    resolution: {integrity: sha512-QMYFZ6+rVq2CJLdIPdKK0j1Qm66UA27oQU5V2SrL8EVwl7wFfm0Bq7fnL+qAWeDpn612dNeNErpk/ROa1zWlWg==}
-    peerDependencies:
-      '@walletconnect/modal': '>=2'
-    peerDependenciesMeta:
-      '@walletconnect/modal':
-        optional: true
-    dependencies:
-      '@walletconnect/jsonrpc-http-connection': 1.0.7
-      '@walletconnect/jsonrpc-provider': 1.0.13
-      '@walletconnect/jsonrpc-types': 1.0.3
-      '@walletconnect/jsonrpc-utils': 1.0.8
-      '@walletconnect/modal': 2.6.2(@types/react@18.2.46)(react@18.2.0)
-      '@walletconnect/sign-client': 2.10.2(lokijs@1.5.12)
-      '@walletconnect/types': 2.10.2(lokijs@1.5.12)
-      '@walletconnect/universal-provider': 2.10.2(lokijs@1.5.12)
-      '@walletconnect/utils': 2.10.2(lokijs@1.5.12)
-      events: 3.3.0
-    transitivePeerDependencies:
-      - '@react-native-async-storage/async-storage'
-      - bufferutil
-      - encoding
-      - lokijs
-      - utf-8-validate
-    dev: false
-
   /@walletconnect/ethereum-provider@2.11.0(@types/react@18.2.46)(react@18.2.0):
     resolution: {integrity: sha512-YrTeHVjuSuhlUw7SQ6xBJXDuJ6iAC+RwINm9nVhoKYJSHAy3EVSJZOofMKrnecL0iRMtD29nj57mxAInIBRuZA==}
     dependencies:
@@ -4986,19 +7403,6 @@ packages:
       '@walletconnect/jsonrpc-types': 1.0.3
       tslib: 1.14.1
 
-  /@walletconnect/jsonrpc-ws-connection@1.0.13:
-    resolution: {integrity: sha512-mfOM7uFH4lGtQxG+XklYuFBj6dwVvseTt5/ahOkkmpcAEgz2umuzu7fTR+h5EmjQBdrmYyEBOWADbeaFNxdySg==}
-    dependencies:
-      '@walletconnect/jsonrpc-utils': 1.0.8
-      '@walletconnect/safe-json': 1.0.2
-      events: 3.3.0
-      tslib: 1.14.1
-      ws: 7.5.9
-    transitivePeerDependencies:
-      - bufferutil
-      - utf-8-validate
-    dev: false
-
   /@walletconnect/jsonrpc-ws-connection@1.0.14:
     resolution: {integrity: sha512-Jsl6fC55AYcbkNVkwNM6Jo+ufsuCQRqViOQ8ZBPH9pRREHH9welbBiszuTLqEJiQcO/6XfFDl6bzCJIkrEi8XA==}
     dependencies:
@@ -5010,22 +7414,6 @@ packages:
       - bufferutil
       - utf-8-validate
 
-  /@walletconnect/keyvaluestorage@1.0.2(lokijs@1.5.12):
-    resolution: {integrity: sha512-U/nNG+VLWoPFdwwKx0oliT4ziKQCEoQ27L5Hhw8YOFGA2Po9A9pULUYNWhDgHkrb0gYDNt//X7wABcEWWBd3FQ==}
-    peerDependencies:
-      '@react-native-async-storage/async-storage': 1.x
-      lokijs: 1.x
-    peerDependenciesMeta:
-      '@react-native-async-storage/async-storage':
-        optional: true
-      lokijs:
-        optional: true
-    dependencies:
-      lokijs: 1.5.12
-      safe-json-utils: 1.1.1
-      tslib: 1.14.1
-    dev: false
-
   /@walletconnect/keyvaluestorage@1.1.1:
     resolution: {integrity: sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA==}
     peerDependencies:
@@ -5051,58 +7439,6 @@ packages:
       - '@vercel/kv'
       - supports-color
 
-  /@walletconnect/legacy-client@2.0.0:
-    resolution: {integrity: sha512-v5L7rYk9loVnfvUf0mF+76bUPFaU5/Vh7mzL6/950CD/yoGdzYZ3Kj+L7mkC6HPMEGeQsBP1+sqBuiVGZ/aODA==}
-    dependencies:
-      '@walletconnect/crypto': 1.0.3
-      '@walletconnect/encoding': 1.0.2
-      '@walletconnect/jsonrpc-utils': 1.0.8
-      '@walletconnect/legacy-types': 2.0.0
-      '@walletconnect/legacy-utils': 2.0.0
-      '@walletconnect/safe-json': 1.0.2
-      '@walletconnect/window-getters': 1.0.1
-      '@walletconnect/window-metadata': 1.0.1
-      detect-browser: 5.3.0
-      query-string: 6.14.1
-
-  /@walletconnect/legacy-modal@2.0.0:
-    resolution: {integrity: sha512-jckNd8lMhm4X7dX9TDdxM3bXKJnaqkRs6K2Mo5j6GmbIF9Eyx40jZ5+q457RVxvM6ciZEDT5s1wBHWdWoOo+9Q==}
-    dependencies:
-      '@walletconnect/legacy-types': 2.0.0
-      '@walletconnect/legacy-utils': 2.0.0
-      copy-to-clipboard: 3.3.3
-      preact: 10.13.2
-      qrcode: 1.5.3
-
-  /@walletconnect/legacy-provider@2.0.0:
-    resolution: {integrity: sha512-A8xPebMI1A+50HbWwTpFCbwP7G+1NGKdTKyg8BUUg3h3Y9JucpC1W6w/x0v1Xw7qFEqQnz74LoIN/A3ytH9xrQ==}
-    dependencies:
-      '@walletconnect/jsonrpc-http-connection': 1.0.7
-      '@walletconnect/jsonrpc-provider': 1.0.13
-      '@walletconnect/legacy-client': 2.0.0
-      '@walletconnect/legacy-modal': 2.0.0
-      '@walletconnect/legacy-types': 2.0.0
-      '@walletconnect/legacy-utils': 2.0.0
-    transitivePeerDependencies:
-      - encoding
-
-  /@walletconnect/legacy-types@2.0.0:
-    resolution: {integrity: sha512-sOVrA7HUdbI1OwKyPOQU0/DdvTSVFlsXWpAk2K2WvP2erTkBWPMTJq6cv2BmKdoJ3p6gLApT7sd+jHi3OF71uw==}
-    dependencies:
-      '@walletconnect/jsonrpc-types': 1.0.3
-
-  /@walletconnect/legacy-utils@2.0.0:
-    resolution: {integrity: sha512-CPWxSVVXw0kgNCxvU126g4GiV3mzXmC8IPJ15twE46aJ1FX+RHEIfAzFMFz2F2+fEhBxL63A7dwNQKDXorRPcQ==}
-    dependencies:
-      '@walletconnect/encoding': 1.0.2
-      '@walletconnect/jsonrpc-utils': 1.0.8
-      '@walletconnect/legacy-types': 2.0.0
-      '@walletconnect/safe-json': 1.0.2
-      '@walletconnect/window-getters': 1.0.1
-      '@walletconnect/window-metadata': 1.0.1
-      detect-browser: 5.3.0
-      query-string: 6.14.1
-
   /@walletconnect/logger@2.0.1:
     resolution: {integrity: sha512-SsTKdsgWm+oDTBeNE/zHxxr5eJfZmE9/5yp/Ku+zJtcTAjELb3DXueWkDXmE9h8uHIbJzIb5wj5lPdzyrjT6hQ==}
     dependencies:
@@ -5137,14 +7473,6 @@ packages:
       - '@types/react'
       - react
 
-  /@walletconnect/randombytes@1.0.3:
-    resolution: {integrity: sha512-35lpzxcHFbTN3ABefC9W+uBpNZl1GC4Wpx0ed30gibfO/y9oLdy1NznbV96HARQKSBV9J9M/rrtIvf6a23jfYw==}
-    dependencies:
-      '@walletconnect/encoding': 1.0.2
-      '@walletconnect/environment': 1.0.1
-      randombytes: 2.1.0
-      tslib: 1.14.1
-
   /@walletconnect/relay-api@1.0.9:
     resolution: {integrity: sha512-Q3+rylJOqRkO1D9Su0DPE3mmznbAalYapJ9qmzDgK28mYF9alcP3UwG/og5V7l7CFOqzCLi7B8BvcBUrpDj0Rg==}
     dependencies:
@@ -5166,25 +7494,6 @@ packages:
     dependencies:
       tslib: 1.14.1
 
-  /@walletconnect/sign-client@2.10.2(lokijs@1.5.12):
-    resolution: {integrity: sha512-vviSLV3f92I0bReX+OLr1HmbH0uIzYEQQFd1MzIfDk9PkfFT/LLAHhUnDaIAMkIdippqDcJia+5QEtT4JihL3Q==}
-    dependencies:
-      '@walletconnect/core': 2.10.2(lokijs@1.5.12)
-      '@walletconnect/events': 1.0.1
-      '@walletconnect/heartbeat': 1.2.1
-      '@walletconnect/jsonrpc-utils': 1.0.8
-      '@walletconnect/logger': 2.0.1
-      '@walletconnect/time': 1.0.2
-      '@walletconnect/types': 2.10.2(lokijs@1.5.12)
-      '@walletconnect/utils': 2.10.2(lokijs@1.5.12)
-      events: 3.3.0
-    transitivePeerDependencies:
-      - '@react-native-async-storage/async-storage'
-      - bufferutil
-      - lokijs
-      - utf-8-validate
-    dev: false
-
   /@walletconnect/sign-client@2.11.0:
     resolution: {integrity: sha512-H2ukscibBS+6WrzQWh+WyVBqO5z4F5et12JcwobdwgHnJSlqIoZxqnUYYWNCI5rUR5UKsKWaUyto4AE9N5dw4Q==}
     dependencies:
@@ -5220,20 +7529,6 @@ packages:
     dependencies:
       tslib: 1.14.1
 
-  /@walletconnect/types@2.10.2(lokijs@1.5.12):
-    resolution: {integrity: sha512-luNV+07Wdla4STi9AejseCQY31tzWKQ5a7C3zZZaRK/di+rFaAAb7YW04OP4klE7tw/mJRGPTlekZElmHxO8kQ==}
-    dependencies:
-      '@walletconnect/events': 1.0.1
-      '@walletconnect/heartbeat': 1.2.1
-      '@walletconnect/jsonrpc-types': 1.0.3
-      '@walletconnect/keyvaluestorage': 1.0.2(lokijs@1.5.12)
-      '@walletconnect/logger': 2.0.1
-      events: 3.3.0
-    transitivePeerDependencies:
-      - '@react-native-async-storage/async-storage'
-      - lokijs
-    dev: false
-
   /@walletconnect/types@2.11.0:
     resolution: {integrity: sha512-AB5b1lrEbCGHxqS2vqfCkIoODieH+ZAUp9rA1O2ftrhnqDJiJK983Df87JhYhECsQUBHHfALphA8ydER0q+9sw==}
     dependencies:
@@ -5258,26 +7553,6 @@ packages:
       - '@vercel/kv'
       - supports-color
 
-  /@walletconnect/universal-provider@2.10.2(lokijs@1.5.12):
-    resolution: {integrity: sha512-wFgI0LbQ3D56sgaUMsgOHCM5m8WLxiC71BGuCKQfApgsbNMVKugYVy2zWHyUyi8sqTQHI+uSaVpDev4UHq9LEw==}
-    dependencies:
-      '@walletconnect/jsonrpc-http-connection': 1.0.7
-      '@walletconnect/jsonrpc-provider': 1.0.13
-      '@walletconnect/jsonrpc-types': 1.0.3
-      '@walletconnect/jsonrpc-utils': 1.0.8
-      '@walletconnect/logger': 2.0.1
-      '@walletconnect/sign-client': 2.10.2(lokijs@1.5.12)
-      '@walletconnect/types': 2.10.2(lokijs@1.5.12)
-      '@walletconnect/utils': 2.10.2(lokijs@1.5.12)
-      events: 3.3.0
-    transitivePeerDependencies:
-      - '@react-native-async-storage/async-storage'
-      - bufferutil
-      - encoding
-      - lokijs
-      - utf-8-validate
-    dev: false
-
   /@walletconnect/universal-provider@2.11.0:
     resolution: {integrity: sha512-zgJv8jDvIMP4Qse/D9oIRXGdfoNqonsrjPZanQ/CHNe7oXGOBiQND2IIeX+tS0H7uNA0TPvctljCLiIN9nw4eA==}
     dependencies:
@@ -5308,28 +7583,6 @@ packages:
       - supports-color
       - utf-8-validate
 
-  /@walletconnect/utils@2.10.2(lokijs@1.5.12):
-    resolution: {integrity: sha512-syxXRpc2yhSknMu3IfiBGobxOY7fLfLTJuw+ppKaeO6WUdZpIit3wfuGOcc0Ms3ZPFCrGfyGOoZsCvgdXtptRg==}
-    dependencies:
-      '@stablelib/chacha20poly1305': 1.0.1
-      '@stablelib/hkdf': 1.0.1
-      '@stablelib/random': 1.0.2
-      '@stablelib/sha256': 1.0.1
-      '@stablelib/x25519': 1.0.3
-      '@walletconnect/relay-api': 1.0.9
-      '@walletconnect/safe-json': 1.0.2
-      '@walletconnect/time': 1.0.2
-      '@walletconnect/types': 2.10.2(lokijs@1.5.12)
-      '@walletconnect/window-getters': 1.0.1
-      '@walletconnect/window-metadata': 1.0.1
-      detect-browser: 5.3.0
-      query-string: 7.1.3
-      uint8arrays: 3.1.1
-    transitivePeerDependencies:
-      - '@react-native-async-storage/async-storage'
-      - lokijs
-    dev: false
-
   /@walletconnect/utils@2.11.0:
     resolution: {integrity: sha512-hxkHPlTlDQILHfIKXlmzgNJau/YcSBC3XHUSuZuKZbNEw3duFT6h6pm3HT/1+j1a22IG05WDsNBuTCRkwss+BQ==}
     dependencies:
@@ -5492,23 +7745,26 @@ packages:
     dependencies:
       jsonparse: 1.3.1
       through: 2.3.8
+    dev: true
 
-  /abitype@0.8.7(typescript@5.0.4):
-    resolution: {integrity: sha512-wQ7hV8Yg/yKmGyFpqrNZufCxbszDe5es4AZGYPBitocfSqXtjrTG9JMWFcc4N30ukl2ve48aBTwt7NJxVQdU3w==}
+  /abitype@0.9.8(typescript@5.0.4):
+    resolution: {integrity: sha512-puLifILdm+8sjyss4S+fsUN09obiT1g2YW6CtcQF+QDzxR0euzgEB29MZujC6zMk2a6SVmtttq1fc6+YFA7WYQ==}
     peerDependencies:
       typescript: '>=5.0.4'
       zod: ^3 >=3.19.1
     peerDependenciesMeta:
+      typescript:
+        optional: true
       zod:
         optional: true
     dependencies:
       typescript: 5.0.4
 
-  /abitype@0.9.8(typescript@5.0.4):
-    resolution: {integrity: sha512-puLifILdm+8sjyss4S+fsUN09obiT1g2YW6CtcQF+QDzxR0euzgEB29MZujC6zMk2a6SVmtttq1fc6+YFA7WYQ==}
+  /abitype@1.0.0(typescript@5.0.4):
+    resolution: {integrity: sha512-NMeMah//6bJ56H5XRj8QCV4AwuW6hB6zqz2LnhhLdcWVQOsXki6/Pn3APeqxCma62nXIcmZWdu1DlHWS74umVQ==}
     peerDependencies:
       typescript: '>=5.0.4'
-      zod: ^3 >=3.19.1
+      zod: ^3 >=3.22.0
     peerDependenciesMeta:
       typescript:
         optional: true
@@ -5517,6 +7773,19 @@ packages:
     dependencies:
       typescript: 5.0.4
 
+  /abort-controller@3.0.0:
+    resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==}
+    engines: {node: '>=6.5'}
+    dependencies:
+      event-target-shim: 5.0.1
+
+  /accepts@1.3.8:
+    resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==}
+    engines: {node: '>= 0.6'}
+    dependencies:
+      mime-types: 2.1.35
+      negotiator: 0.6.3
+
   /acorn-import-assertions@1.8.0(acorn@8.10.0):
     resolution: {integrity: sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==}
     peerDependencies:
@@ -5545,9 +7814,6 @@ packages:
   /aes-js@3.0.0:
     resolution: {integrity: sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==}
 
-  /aes-js@3.1.2:
-    resolution: {integrity: sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==}
-
   /agent-base@7.1.0:
     resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==}
     engines: {node: '>= 14'}
@@ -5557,16 +7823,6 @@ packages:
       - supports-color
     dev: true
 
-  /agentkeepalive@4.3.0:
-    resolution: {integrity: sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg==}
-    engines: {node: '>= 8.0.0'}
-    dependencies:
-      debug: 4.3.4
-      depd: 2.0.0
-      humanize-ms: 1.2.1
-    transitivePeerDependencies:
-      - supports-color
-
   /aggregate-error@4.0.1:
     resolution: {integrity: sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==}
     engines: {node: '>=12'}
@@ -5619,11 +7875,25 @@ packages:
       '@algolia/transporter': 4.17.0
     dev: false
 
+  /anser@1.4.10:
+    resolution: {integrity: sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==}
+
   /ansi-colors@4.1.3:
     resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==}
     engines: {node: '>=6'}
     dev: true
 
+  /ansi-fragments@0.2.1:
+    resolution: {integrity: sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==}
+    dependencies:
+      colorette: 1.4.0
+      slice-ansi: 2.1.0
+      strip-ansi: 5.2.0
+
+  /ansi-regex@4.1.1:
+    resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==}
+    engines: {node: '>=6'}
+
   /ansi-regex@5.0.1:
     resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
     engines: {node: '>=8'}
@@ -5643,7 +7913,6 @@ packages:
   /ansi-styles@5.2.0:
     resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==}
     engines: {node: '>=10'}
-    dev: true
 
   /anymatch@3.1.3:
     resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
@@ -5655,6 +7924,9 @@ packages:
   /apg-js@4.1.3:
     resolution: {integrity: sha512-XYyDcoBho8OpnWPRnedMwyL+76ovCtsESerHZEfY39dO4IrEqN97mdEYkOyHa0XTX5+3+U5FmpqPLttK0f7n6g==}
 
+  /appdirsjs@1.2.7:
+    resolution: {integrity: sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==}
+
   /arch@2.2.0:
     resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==}
 
@@ -5662,7 +7934,6 @@ packages:
     resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
     dependencies:
       sprintf-js: 1.0.3
-    dev: true
 
   /argparse@2.0.1:
     resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
@@ -5782,6 +8053,9 @@ packages:
     engines: {node: '>=12'}
     dev: false
 
+  /asap@2.0.6:
+    resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==}
+
   /assertion-error@1.1.0:
     resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==}
     dev: true
@@ -5790,14 +8064,27 @@ packages:
     resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==}
     dev: true
 
+  /ast-types@0.15.2:
+    resolution: {integrity: sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==}
+    engines: {node: '>=4'}
+    dependencies:
+      tslib: 2.6.2
+
+  /astral-regex@1.0.0:
+    resolution: {integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==}
+    engines: {node: '>=4'}
+
   /astring@1.8.4:
     resolution: {integrity: sha512-97a+l2LBU3Op3bBQEff79i/E4jMD2ZLFD8rHx9B6mXyB2uQwhJQYfiDqUwtfjF4QA1F2qs//N6Cw8LetMbQjcw==}
     dev: true
 
+  /async-limiter@1.0.1:
+    resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==}
+
   /async-mutex@0.2.6:
     resolution: {integrity: sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw==}
     dependencies:
-      tslib: 2.5.0
+      tslib: 2.6.2
 
   /asynciterator.prototype@1.0.0:
     resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==}
@@ -5843,17 +8130,182 @@ packages:
       dequal: 2.0.3
     dev: true
 
+  /babel-core@7.0.0-bridge.0(@babel/core@7.23.7):
+    resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==}
+    peerDependencies:
+      '@babel/core': ^7.0.0-0
+    dependencies:
+      '@babel/core': 7.23.7
+
+  /babel-plugin-macros@3.1.0:
+    resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==}
+    engines: {node: '>=10', npm: '>=6'}
+    dependencies:
+      '@babel/runtime': 7.23.4
+      cosmiconfig: 7.1.0
+      resolve: 1.22.8
+
+  /babel-plugin-polyfill-corejs2@0.4.7(@babel/core@7.21.8):
+    resolution: {integrity: sha512-LidDk/tEGDfuHW2DWh/Hgo4rmnw3cduK6ZkOI1NPFceSK3n/yAGeOsNT7FLnSGHkXj3RHGSEVkN3FsCTY6w2CQ==}
+    peerDependencies:
+      '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
+    dependencies:
+      '@babel/compat-data': 7.23.5
+      '@babel/core': 7.21.8
+      '@babel/helper-define-polyfill-provider': 0.4.4(@babel/core@7.21.8)
+      semver: 6.3.1
+    transitivePeerDependencies:
+      - supports-color
+    dev: false
+
+  /babel-plugin-polyfill-corejs2@0.4.7(@babel/core@7.23.7):
+    resolution: {integrity: sha512-LidDk/tEGDfuHW2DWh/Hgo4rmnw3cduK6ZkOI1NPFceSK3n/yAGeOsNT7FLnSGHkXj3RHGSEVkN3FsCTY6w2CQ==}
+    peerDependencies:
+      '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
+    dependencies:
+      '@babel/compat-data': 7.23.5
+      '@babel/core': 7.23.7
+      '@babel/helper-define-polyfill-provider': 0.4.4(@babel/core@7.23.7)
+      semver: 6.3.1
+    transitivePeerDependencies:
+      - supports-color
+
+  /babel-plugin-polyfill-corejs3@0.8.7(@babel/core@7.21.8):
+    resolution: {integrity: sha512-KyDvZYxAzkC0Aj2dAPyDzi2Ym15e5JKZSK+maI7NAwSqofvuFglbSsxE7wUOvTg9oFVnHMzVzBKcqEb4PJgtOA==}
+    peerDependencies:
+      '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-define-polyfill-provider': 0.4.4(@babel/core@7.21.8)
+      core-js-compat: 3.35.0
+    transitivePeerDependencies:
+      - supports-color
+    dev: false
+
+  /babel-plugin-polyfill-corejs3@0.8.7(@babel/core@7.23.7):
+    resolution: {integrity: sha512-KyDvZYxAzkC0Aj2dAPyDzi2Ym15e5JKZSK+maI7NAwSqofvuFglbSsxE7wUOvTg9oFVnHMzVzBKcqEb4PJgtOA==}
+    peerDependencies:
+      '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-define-polyfill-provider': 0.4.4(@babel/core@7.23.7)
+      core-js-compat: 3.35.0
+    transitivePeerDependencies:
+      - supports-color
+
+  /babel-plugin-polyfill-regenerator@0.5.4(@babel/core@7.21.8):
+    resolution: {integrity: sha512-S/x2iOCvDaCASLYsOOgWOq4bCfKYVqvO/uxjkaYyZ3rVsVE3CeAI/c84NpyuBBymEgNvHgjEot3a9/Z/kXvqsg==}
+    peerDependencies:
+      '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/helper-define-polyfill-provider': 0.4.4(@babel/core@7.21.8)
+    transitivePeerDependencies:
+      - supports-color
+    dev: false
+
+  /babel-plugin-polyfill-regenerator@0.5.4(@babel/core@7.23.7):
+    resolution: {integrity: sha512-S/x2iOCvDaCASLYsOOgWOq4bCfKYVqvO/uxjkaYyZ3rVsVE3CeAI/c84NpyuBBymEgNvHgjEot3a9/Z/kXvqsg==}
+    peerDependencies:
+      '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/helper-define-polyfill-provider': 0.4.4(@babel/core@7.23.7)
+    transitivePeerDependencies:
+      - supports-color
+
+  /babel-plugin-syntax-trailing-function-commas@7.0.0-beta.0:
+    resolution: {integrity: sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==}
+
+  /babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.21.8):
+    resolution: {integrity: sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==}
+    dependencies:
+      '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.21.8)
+    transitivePeerDependencies:
+      - '@babel/core'
+    dev: false
+
+  /babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.23.7):
+    resolution: {integrity: sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==}
+    dependencies:
+      '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.23.7)
+    transitivePeerDependencies:
+      - '@babel/core'
+
+  /babel-preset-fbjs@3.4.0(@babel/core@7.21.8):
+    resolution: {integrity: sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==}
+    peerDependencies:
+      '@babel/core': ^7.0.0
+    dependencies:
+      '@babel/core': 7.21.8
+      '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.21.8)
+      '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.21.8)
+      '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.21.8)
+      '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.21.8)
+      '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.21.8)
+      '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.21.8)
+      '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.21.8)
+      '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.21.8)
+      '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.21.8)
+      '@babel/plugin-transform-classes': 7.23.5(@babel/core@7.21.8)
+      '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.21.8)
+      '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.21.8)
+      '@babel/plugin-transform-flow-strip-types': 7.23.3(@babel/core@7.21.8)
+      '@babel/plugin-transform-for-of': 7.23.6(@babel/core@7.21.8)
+      '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.21.8)
+      '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.21.8)
+      '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.21.8)
+      '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.21.8)
+      '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.21.8)
+      '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.21.8)
+      '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.21.8)
+      '@babel/plugin-transform-react-display-name': 7.23.3(@babel/core@7.21.8)
+      '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.21.8)
+      '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.21.8)
+      '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.21.8)
+      '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.21.8)
+      babel-plugin-syntax-trailing-function-commas: 7.0.0-beta.0
+    dev: false
+
+  /babel-preset-fbjs@3.4.0(@babel/core@7.23.7):
+    resolution: {integrity: sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==}
+    peerDependencies:
+      '@babel/core': ^7.0.0
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.23.7)
+      '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.23.7)
+      '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.7)
+      '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.23.7)
+      '@babel/plugin-transform-classes': 7.23.5(@babel/core@7.23.7)
+      '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-flow-strip-types': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-for-of': 7.23.6(@babel/core@7.23.7)
+      '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-react-display-name': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.7)
+      '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.23.7)
+      '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.23.7)
+      babel-plugin-syntax-trailing-function-commas: 7.0.0-beta.0
+
   /bail@2.0.2:
     resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==}
 
   /balanced-match@1.0.2:
     resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
-    dev: true
-
-  /base-x@3.0.9:
-    resolution: {integrity: sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==}
-    dependencies:
-      safe-buffer: 5.2.1
 
   /base64-js@1.5.1:
     resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
@@ -5877,12 +8329,6 @@ packages:
     resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==}
     dev: false
 
-  /bigint-buffer@1.1.5:
-    resolution: {integrity: sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==}
-    engines: {node: '>= 10.0.0'}
-    dependencies:
-      bindings: 1.5.0
-
   /bignumber.js@9.1.2:
     resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==}
     dev: false
@@ -5891,13 +8337,12 @@ packages:
     resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
     engines: {node: '>=8'}
 
-  /bind-decorator@1.0.11:
-    resolution: {integrity: sha512-yzkH0uog6Vv/vQ9+rhSKxecnqGUZHYncg7qS7voz3Q76+TAi1SGiOKk2mlOvusQnFz9Dc4BC/NMkeXu11YgjJg==}
-
-  /bindings@1.5.0:
-    resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==}
+  /bl@4.1.0:
+    resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==}
     dependencies:
-      file-uri-to-path: 1.0.0
+      buffer: 5.7.1
+      inherits: 2.0.4
+      readable-stream: 3.6.2
 
   /bn.js@4.12.0:
     resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==}
@@ -5905,12 +8350,8 @@ packages:
   /bn.js@5.2.1:
     resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==}
 
-  /borsh@0.7.0:
-    resolution: {integrity: sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==}
-    dependencies:
-      bn.js: 5.2.1
-      bs58: 4.0.1
-      text-encoding-utf-8: 1.0.2
+  /bowser@2.11.0:
+    resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==}
 
   /bplist-parser@0.2.0:
     resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==}
@@ -5924,7 +8365,6 @@ packages:
     dependencies:
       balanced-match: 1.0.2
       concat-map: 0.0.1
-    dev: true
 
   /braces@3.0.2:
     resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
@@ -5961,42 +8401,37 @@ packages:
       update-browserslist-db: 1.0.11(browserslist@4.21.5)
     dev: false
 
-  /browserslist@4.21.9:
-    resolution: {integrity: sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==}
-    engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
-    dependencies:
-      caniuse-lite: 1.0.30001563
-      electron-to-chromium: 1.4.475
-      node-releases: 2.0.13
-      update-browserslist-db: 1.0.11(browserslist@4.21.9)
-
   /browserslist@4.22.2:
     resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==}
     engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
-    hasBin: true
     dependencies:
       caniuse-lite: 1.0.30001568
       electron-to-chromium: 1.4.610
       node-releases: 2.0.14
       update-browserslist-db: 1.0.13(browserslist@4.22.2)
-    dev: false
 
-  /bs58@4.0.1:
-    resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==}
+  /bser@2.1.1:
+    resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==}
     dependencies:
-      base-x: 3.0.9
+      node-int64: 0.4.0
 
   /buffer-from@1.1.2:
     resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
 
+  /buffer@5.7.1:
+    resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==}
+    dependencies:
+      base64-js: 1.5.1
+      ieee754: 1.2.1
+
   /buffer@6.0.3:
     resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==}
     dependencies:
       base64-js: 1.5.1
       ieee754: 1.2.1
 
-  /bufferutil@4.0.7:
-    resolution: {integrity: sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==}
+  /bufferutil@4.0.8:
+    resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==}
     engines: {node: '>=6.14.2'}
     dependencies:
       node-gyp-build: 4.6.0
@@ -6020,6 +8455,10 @@ packages:
     dependencies:
       streamsearch: 1.1.0
 
+  /bytes@3.0.0:
+    resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==}
+    engines: {node: '>= 0.8'}
+
   /cac@6.7.14:
     resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
     engines: {node: '>=8'}
@@ -6036,12 +8475,26 @@ packages:
       function-bind: 1.1.2
       get-intrinsic: 1.2.2
       set-function-length: 1.1.1
-    dev: true
+
+  /caller-callsite@2.0.0:
+    resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==}
+    engines: {node: '>=4'}
+    dependencies:
+      callsites: 2.0.0
+
+  /caller-path@2.0.0:
+    resolution: {integrity: sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==}
+    engines: {node: '>=4'}
+    dependencies:
+      caller-callsite: 2.0.0
+
+  /callsites@2.0.0:
+    resolution: {integrity: sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==}
+    engines: {node: '>=4'}
 
   /callsites@3.1.0:
     resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
     engines: {node: '>=6'}
-    dev: true
 
   /camel-case@4.1.2:
     resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==}
@@ -6063,12 +8516,17 @@ packages:
     resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==}
     engines: {node: '>=6'}
 
+  /camelcase@6.3.0:
+    resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==}
+    engines: {node: '>=10'}
+
   /caniuse-lite@1.0.30001527:
     resolution: {integrity: sha512-YkJi7RwPgWtXVSgK4lG9AHH57nSzvvOp9MesgXmw4Q7n0C3H04L0foHqfxcmSAm5AcWb8dW9AYj2tR7/5GnddQ==}
     dev: true
 
   /caniuse-lite@1.0.30001563:
     resolution: {integrity: sha512-na2WUmOxnwIZtwnFI2CZ/3er0wdNzU7hN+cPYz/z2ajHThnkWjNBOpEPP4n+4r2WPM847JaMotaJE3bnfzjyKw==}
+    dev: true
 
   /caniuse-lite@1.0.30001568:
     resolution: {integrity: sha512-vSUkH84HontZJ88MiNrOau1EBrCqEQYgkC5gIySiDlpsm8sGVrhU7Kx4V6h0tnqaHzIHZv08HlJIwPbL4XL9+A==}
@@ -6151,15 +8609,41 @@ packages:
     optionalDependencies:
       fsevents: 2.3.3
 
+  /chrome-launcher@0.15.2:
+    resolution: {integrity: sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==}
+    engines: {node: '>=12.13.0'}
+    hasBin: true
+    dependencies:
+      '@types/node': 18.19.4
+      escape-string-regexp: 4.0.0
+      is-wsl: 2.2.0
+      lighthouse-logger: 1.4.2
+    transitivePeerDependencies:
+      - supports-color
+
   /chrome-trace-event@1.0.3:
     resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==}
     engines: {node: '>=6.0'}
     dev: false
 
+  /chromium-edge-launcher@1.0.0:
+    resolution: {integrity: sha512-pgtgjNKZ7i5U++1g1PWv75umkHvhVTDOQIZ+sjeUX9483S7Y6MUvO0lrd7ShGlQlFHMN4SwKTCq/X8hWrbv2KA==}
+    dependencies:
+      '@types/node': 18.19.4
+      escape-string-regexp: 4.0.0
+      is-wsl: 2.2.0
+      lighthouse-logger: 1.4.2
+      mkdirp: 1.0.4
+      rimraf: 3.0.2
+    transitivePeerDependencies:
+      - supports-color
+
+  /ci-info@2.0.0:
+    resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==}
+
   /ci-info@3.8.0:
     resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==}
     engines: {node: '>=8'}
-    dev: true
 
   /citty@0.1.5:
     resolution: {integrity: sha512-AS7n5NSc0OQVMV9v6wt3ByujNIrne0/cTjiC2MYqhvao57VNfiuVksTSr2p17nVOhEr2KtqiAkGwHcgMC/qUuQ==}
@@ -6173,6 +8657,16 @@ packages:
       escape-string-regexp: 5.0.0
     dev: false
 
+  /cli-cursor@3.1.0:
+    resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==}
+    engines: {node: '>=8'}
+    dependencies:
+      restore-cursor: 3.1.0
+
+  /cli-spinners@2.9.2:
+    resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==}
+    engines: {node: '>=6'}
+
   /client-only@0.0.1:
     resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==}
 
@@ -6214,15 +8708,21 @@ packages:
       string-width: 4.2.3
       strip-ansi: 6.0.1
       wrap-ansi: 7.0.0
-    dev: true
+
+  /clone-deep@4.0.1:
+    resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==}
+    engines: {node: '>=6'}
+    dependencies:
+      is-plain-object: 2.0.4
+      kind-of: 6.0.3
+      shallow-clone: 3.0.1
 
   /clone@1.0.4:
     resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==}
     engines: {node: '>=0.8'}
-    dev: true
 
-  /clsx@1.1.1:
-    resolution: {integrity: sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==}
+  /clsx@1.2.1:
+    resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==}
     engines: {node: '>=6'}
 
   /clsx@2.1.0:
@@ -6251,6 +8751,9 @@ packages:
   /color-name@1.1.4:
     resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
 
+  /colorette@1.4.0:
+    resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==}
+
   /combined-stream@1.0.8:
     resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
     engines: {node: '>= 0.8'}
@@ -6261,6 +8764,9 @@ packages:
   /comma-separated-tokens@2.0.3:
     resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==}
 
+  /command-exists@1.2.9:
+    resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==}
+
   /commander@2.20.3:
     resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
 
@@ -6269,6 +8775,10 @@ packages:
     engines: {node: ^12.20.0 || >=14}
     dev: false
 
+  /commander@9.5.0:
+    resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==}
+    engines: {node: ^12.20.0 || >=14}
+
   /comment-json@4.2.3:
     resolution: {integrity: sha512-SsxdiOf064DWoZLH799Ata6u7iV658A11PlWtZATDlXPpKGJnbJZ5Z24ybixAi+LUUqJ/GKowAejtC5GFUG7Tw==}
     engines: {node: '>= 6'}
@@ -6280,6 +8790,9 @@ packages:
       repeat-string: 1.6.1
     dev: true
 
+  /commondir@1.0.1:
+    resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==}
+
   /compare-func@2.0.0:
     resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==}
     dependencies:
@@ -6287,9 +8800,39 @@ packages:
       dot-prop: 5.3.0
     dev: true
 
+  /compressible@2.0.18:
+    resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==}
+    engines: {node: '>= 0.6'}
+    dependencies:
+      mime-db: 1.52.0
+
+  /compression@1.7.4:
+    resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==}
+    engines: {node: '>= 0.8.0'}
+    dependencies:
+      accepts: 1.3.8
+      bytes: 3.0.0
+      compressible: 2.0.18
+      debug: 2.6.9
+      on-headers: 1.0.2
+      safe-buffer: 5.1.2
+      vary: 1.1.2
+    transitivePeerDependencies:
+      - supports-color
+
   /concat-map@0.0.1:
     resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
-    dev: true
+
+  /connect@3.7.0:
+    resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==}
+    engines: {node: '>= 0.10.0'}
+    dependencies:
+      debug: 2.6.9
+      finalhandler: 1.1.2
+      parseurl: 1.3.3
+      utils-merge: 1.0.1
+    transitivePeerDependencies:
+      - supports-color
 
   /consola@3.2.3:
     resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==}
@@ -6339,6 +8882,9 @@ packages:
   /convert-source-map@1.9.0:
     resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==}
 
+  /convert-source-map@2.0.0:
+    resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
+
   /cookie-es@1.0.0:
     resolution: {integrity: sha512-mWYvfOLrfEc996hlKcdABeIiPHUPC6DM2QYZdGGOvhOTbA3tjm2eBwqlJpoFdjC89NI4Qt6h0Pu06Mp+1Pj5OQ==}
 
@@ -6352,14 +8898,13 @@ packages:
       toggle-selection: 1.0.6
     dev: false
 
-  /copy-to-clipboard@3.3.3:
-    resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==}
+  /core-js-compat@3.35.0:
+    resolution: {integrity: sha512-5blwFAddknKeNgsjBzilkdQ0+YK8L1PfqPYq40NOYMYFSS38qj+hpTcLLWwpIwA2A5bje/x5jmVn2tzUMg9IVw==}
     dependencies:
-      toggle-selection: 1.0.6
+      browserslist: 4.22.2
 
   /core-util-is@1.0.3:
     resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
-    dev: true
 
   /cosmiconfig-typescript-loader@5.0.0(@types/node@18.19.4)(cosmiconfig@8.3.6)(typescript@5.0.4):
     resolution: {integrity: sha512-+8cK7jRAReYkMwMiG+bxhcNKiHJDM6bR9FD/nGBXOWdMLuYawjF5cGrtLilJ+LGd3ZjCXnJjR5DkfWPoIVlqJA==}
@@ -6375,6 +8920,25 @@ packages:
       typescript: 5.0.4
     dev: true
 
+  /cosmiconfig@5.2.1:
+    resolution: {integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==}
+    engines: {node: '>=4'}
+    dependencies:
+      import-fresh: 2.0.0
+      is-directory: 0.3.1
+      js-yaml: 3.14.1
+      parse-json: 4.0.0
+
+  /cosmiconfig@7.1.0:
+    resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==}
+    engines: {node: '>=10'}
+    dependencies:
+      '@types/parse-json': 4.0.2
+      import-fresh: 3.3.0
+      parse-json: 5.2.0
+      path-type: 4.0.0
+      yaml: 1.10.2
+
   /cosmiconfig@8.3.6(typescript@5.0.4):
     resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==}
     engines: {node: '>=14'}
@@ -6415,6 +8979,10 @@ packages:
       p-map: 5.5.0
     dev: false
 
+  /crc-32@1.2.2:
+    resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==}
+    engines: {node: '>=0.8'}
+
   /cross-fetch@3.1.5:
     resolution: {integrity: sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==}
     dependencies:
@@ -6422,6 +8990,13 @@ packages:
     transitivePeerDependencies:
       - encoding
 
+  /cross-fetch@4.0.0:
+    resolution: {integrity: sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==}
+    dependencies:
+      node-fetch: 2.7.0
+    transitivePeerDependencies:
+      - encoding
+
   /cross-spawn@5.1.0:
     resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==}
     dependencies:
@@ -6504,10 +9079,29 @@ packages:
       whatwg-url: 14.0.0
     dev: true
 
+  /date-fns@2.30.0:
+    resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==}
+    engines: {node: '>=0.11'}
+    dependencies:
+      '@babel/runtime': 7.23.4
+
+  /dayjs@1.11.10:
+    resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==}
+
   /debounce@1.2.1:
     resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==}
     dev: false
 
+  /debug@2.6.9:
+    resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
+    peerDependencies:
+      supports-color: '*'
+    peerDependenciesMeta:
+      supports-color:
+        optional: true
+    dependencies:
+      ms: 2.0.0
+
   /debug@3.2.7:
     resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
     peerDependencies:
@@ -6596,6 +9190,10 @@ packages:
     resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==}
     engines: {node: '>=0.10.0'}
 
+  /deepmerge@4.3.1:
+    resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
+    engines: {node: '>=0.10.0'}
+
   /default-browser-id@3.0.0:
     resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==}
     engines: {node: '>=12'}
@@ -6618,7 +9216,6 @@ packages:
     resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==}
     dependencies:
       clone: 1.0.4
-    dev: true
 
   /define-data-property@1.1.1:
     resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==}
@@ -6627,7 +9224,10 @@ packages:
       get-intrinsic: 1.2.2
       gopd: 1.0.1
       has-property-descriptors: 1.0.0
-    dev: true
+
+  /define-lazy-prop@2.0.0:
+    resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==}
+    engines: {node: '>=8'}
 
   /define-lazy-prop@3.0.0:
     resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==}
@@ -6654,15 +9254,14 @@ packages:
   /defu@6.1.3:
     resolution: {integrity: sha512-Vy2wmG3NTkmHNg/kzpuvHhkqeIx3ODWqasgCRbKtbXEN0G+HpEEv9BtJLp7ZG1CZloFaC41Ah3ZFbq7aqCqMeQ==}
 
-  /delay@5.0.0:
-    resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==}
-    engines: {node: '>=10'}
-
   /delayed-stream@1.0.0:
     resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
     engines: {node: '>=0.4.0'}
     dev: true
 
+  /denodeify@1.2.1:
+    resolution: {integrity: sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg==}
+
   /denque@2.1.0:
     resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==}
     engines: {node: '>=0.10'}
@@ -6671,6 +9270,14 @@ packages:
     resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==}
     engines: {node: '>= 0.8'}
 
+  /deprecated-react-native-prop-types@5.0.0:
+    resolution: {integrity: sha512-cIK8KYiiGVOFsKdPMmm1L3tA/Gl+JopXL6F5+C7x39MyPsQYnP57Im/D6bNUzcborD7fcMwiwZqcBdBXXZucYQ==}
+    engines: {node: '>=18'}
+    dependencies:
+      '@react-native/normalize-colors': 0.73.2
+      invariant: 2.2.4
+      prop-types: 15.8.1
+
   /dequal@2.0.3:
     resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
     engines: {node: '>=6'}
@@ -6679,6 +9286,10 @@ packages:
   /destr@2.0.2:
     resolution: {integrity: sha512-65AlobnZMiCET00KaFFjUefxDX0khFA/E4myqZ7a6Sq1yZtR8+FVIvilVX66vF2uobSumxooYZChiRPCKNqhmg==}
 
+  /destroy@1.2.0:
+    resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==}
+    engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
+
   /detect-browser@5.3.0:
     resolution: {integrity: sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==}
 
@@ -6751,20 +9362,26 @@ packages:
       readable-stream: 3.6.2
       stream-shift: 1.0.1
 
+  /eciesjs@0.3.18:
+    resolution: {integrity: sha512-RQhegEtLSyIiGJmFTZfvCTHER/fymipXFVx6OwSRYD6hOuy+6Kjpk0dGvIfP9kxn/smBpxQy71uxpGO406ITCw==}
+    dependencies:
+      '@types/secp256k1': 4.0.6
+      futoin-hkdf: 1.5.3
+      secp256k1: 5.0.0
+
+  /ee-first@1.1.1:
+    resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
+
   /electron-to-chromium@1.4.387:
     resolution: {integrity: sha512-tutLf+alr1/0YqJwKPdstVvDLmxmLb5xNyDLNS0RZmenHcEYk9qKfpKDCVZEKJ00JVbnayJm1MZAbYhYDFpcOw==}
     dev: false
 
-  /electron-to-chromium@1.4.475:
-    resolution: {integrity: sha512-mTye5u5P98kSJO2n7zYALhpJDmoSQejIGya0iR01GpoRady8eK3bw7YHHnjA1Rfi4ZSLdpuzlAC7Zw+1Zu7Z6A==}
-
   /electron-to-chromium@1.4.508:
     resolution: {integrity: sha512-FFa8QKjQK/A5QuFr2167myhMesGrhlOBD+3cYNxO9/S4XzHEXesyTD/1/xF644gC8buFPz3ca6G1LOQD0tZrrg==}
     dev: true
 
   /electron-to-chromium@1.4.610:
     resolution: {integrity: sha512-mqi2oL1mfeHYtOdCxbPQYV/PL7YrQlxbvFEZ0Ee8GbDdShimqt2/S6z2RWqysuvlwdOrQdqvE0KZrBTipAeJzg==}
-    dev: false
 
   /elliptic@6.5.4:
     resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==}
@@ -6792,11 +9409,32 @@ packages:
   /encode-utf8@1.0.3:
     resolution: {integrity: sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==}
 
+  /encodeurl@1.0.2:
+    resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==}
+    engines: {node: '>= 0.8'}
+
   /end-of-stream@1.4.4:
     resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==}
     dependencies:
       once: 1.4.0
 
+  /engine.io-client@6.5.3(bufferutil@4.0.8)(utf-8-validate@6.0.3):
+    resolution: {integrity: sha512-9Z0qLB0NIisTRt1DZ/8U2k12RJn8yls/nXMZLn+/N8hANT3TcYjKFKcwbw5zFQiN4NTde3TSY9zb79e1ij6j9Q==}
+    dependencies:
+      '@socket.io/component-emitter': 3.1.0
+      debug: 4.3.4
+      engine.io-parser: 5.2.1
+      ws: 8.11.0(bufferutil@4.0.8)(utf-8-validate@6.0.3)
+      xmlhttprequest-ssl: 2.0.0
+    transitivePeerDependencies:
+      - bufferutil
+      - supports-color
+      - utf-8-validate
+
+  /engine.io-parser@5.2.1:
+    resolution: {integrity: sha512-9JktcM3u18nU9N2Lz3bWeBgxVgOKpw7yhRaoxQA3FUDZzzw+9WlA6p4G4u0RixNkg14fH7EfEc/RhpurtiROTQ==}
+    engines: {node: '>=10.0.0'}
+
   /enhanced-resolve@5.13.0:
     resolution: {integrity: sha512-eyV8f0y1+bzyfh8xAwW/WTSZpLbjhqc4ne9eGSH4Zo2ejdyiNG9pU6mf9DG8a7+Auk6MFTlNOT4Y2y/9k8GKVg==}
     engines: {node: '>=10.13.0'}
@@ -6816,11 +9454,27 @@ packages:
     engines: {node: '>=0.12'}
     dev: true
 
+  /envinfo@7.11.0:
+    resolution: {integrity: sha512-G9/6xF1FPbIw0TtalAMaVPpiq2aDEuKLXM314jPVAO9r2fo2a4BLqMNkmRS7O/xPPZ+COAhGIz3ETvHEV3eUcg==}
+    engines: {node: '>=4'}
+    hasBin: true
+
   /error-ex@1.3.2:
     resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
     dependencies:
       is-arrayish: 0.2.1
-    dev: true
+
+  /error-stack-parser@2.1.4:
+    resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==}
+    dependencies:
+      stackframe: 1.3.4
+
+  /errorhandler@1.5.1:
+    resolution: {integrity: sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==}
+    engines: {node: '>= 0.8'}
+    dependencies:
+      accepts: 1.3.8
+      escape-html: 1.0.3
 
   /es-abstract@1.21.2:
     resolution: {integrity: sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==}
@@ -6968,14 +9622,6 @@ packages:
       is-symbol: 1.0.4
     dev: true
 
-  /es6-promise@4.2.8:
-    resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==}
-
-  /es6-promisify@5.0.0:
-    resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==}
-    dependencies:
-      es6-promise: 4.2.8
-
   /esbuild-android-64@0.14.39:
     resolution: {integrity: sha512-EJOu04p9WgZk0UoKTqLId9VnIsotmI/Z98EXrKURGb3LPNunkeffqQIkjS2cAvidh+OK5uVrXaIP229zK6GvhQ==}
     engines: {node: '>=12'}
@@ -7238,14 +9884,20 @@ packages:
     resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
     engines: {node: '>=6'}
 
+  /escape-html@1.0.3:
+    resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
+
   /escape-string-regexp@1.0.5:
     resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
     engines: {node: '>=0.8.0'}
 
+  /escape-string-regexp@2.0.0:
+    resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==}
+    engines: {node: '>=8'}
+
   /escape-string-regexp@4.0.0:
     resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
     engines: {node: '>=10'}
-    dev: true
 
   /escape-string-regexp@5.0.0:
     resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
@@ -7526,7 +10178,6 @@ packages:
   /esprima@4.0.1:
     resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
     engines: {node: '>=4'}
-    dev: true
 
   /esquery@1.5.0:
     resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==}
@@ -7603,24 +10254,28 @@ packages:
   /esutils@2.0.3:
     resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
     engines: {node: '>=0.10.0'}
-    dev: true
 
-  /eth-block-tracker@6.1.0:
-    resolution: {integrity: sha512-K9SY8+/xMBi4M5HHTDdxnpEqEEGjbNpzHFqvxyjMZej8InV/B+CkFRKM6W+uvrFJ7m8Zd1E0qUkseU3vdIDFYQ==}
+  /etag@1.8.1:
+    resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==}
+    engines: {node: '>= 0.6'}
+
+  /eth-block-tracker@7.1.0:
+    resolution: {integrity: sha512-8YdplnuE1IK4xfqpf4iU7oBxnOYAc35934o083G8ao+8WM8QQtt/mVlAY6yIAdY1eMeLqg4Z//PZjJGmWGPMRg==}
     engines: {node: '>=14.0.0'}
     dependencies:
-      '@metamask/safe-event-emitter': 2.0.0
-      '@metamask/utils': 3.6.0
+      '@metamask/eth-json-rpc-provider': 1.0.1
+      '@metamask/safe-event-emitter': 3.0.0
+      '@metamask/utils': 5.0.2
       json-rpc-random-id: 1.0.1
       pify: 3.0.0
     transitivePeerDependencies:
       - supports-color
 
-  /eth-json-rpc-filters@5.1.0:
-    resolution: {integrity: sha512-fos+9xmoa1A2Ytsc9eYof17r81BjdJOUcGcgZn4K/tKdCCTb+a8ytEtwlu1op5qsXFDlgGmstTELFrDEc89qEQ==}
+  /eth-json-rpc-filters@6.0.1:
+    resolution: {integrity: sha512-ITJTvqoCw6OVMLs7pI8f4gG92n/St6x80ACtHodeS+IXmO0w+t1T5OOzfSt7KLSMLRkVUoexV7tztLgDxg+iig==}
     engines: {node: '>=14.0.0'}
     dependencies:
-      '@metamask/safe-event-emitter': 2.0.0
+      '@metamask/safe-event-emitter': 3.0.0
       async-mutex: 0.2.6
       eth-query: 2.1.2
       json-rpc-engine: 6.1.0
@@ -7632,11 +10287,19 @@ packages:
       json-rpc-random-id: 1.0.1
       xtend: 4.0.2
 
-  /eth-rpc-errors@4.0.2:
-    resolution: {integrity: sha512-n+Re6Gu8XGyfFy1it0AwbD1x0MUzspQs0D5UiPs1fFPCr6WAwZM+vbIhXheBFrpgosqN9bs5PqlB4Q61U/QytQ==}
+  /eth-rpc-errors@4.0.3:
+    resolution: {integrity: sha512-Z3ymjopaoft7JDoxZcEb3pwdGh7yiYMhOwm2doUt6ASXlMavpNlK6Cre0+IMl2VSGyEU9rkiperQhp5iRxn5Pg==}
     dependencies:
       fast-safe-stringify: 2.1.1
 
+  /ethereum-cryptography@2.1.2:
+    resolution: {integrity: sha512-Z5Ba0T0ImZ8fqXrJbpHcbpAvIswRte2wGNR/KePnu8GbbvgJ47lMxT/ZZPG6i9Jaht4azPDop4HaM00J0J59ug==}
+    dependencies:
+      '@noble/curves': 1.1.0
+      '@noble/hashes': 1.3.1
+      '@scure/bip32': 1.3.1
+      '@scure/bip39': 1.2.1
+
   /ethers@5.6.8:
     resolution: {integrity: sha512-YxIGaltAOdvBFPZwIkyHnXbW40f1r8mHUgapW6dxkO+6t7H6wY8POUn0Kbxrd/N7I4hHxyi7YCddMAH/wmho2w==}
     dependencies:
@@ -7689,12 +10352,15 @@ packages:
       require-like: 0.1.2
     dev: true
 
-  /eventemitter3@4.0.7:
-    resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==}
+  /event-target-shim@5.0.1:
+    resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==}
+    engines: {node: '>=6'}
+
+  /eventemitter2@6.4.9:
+    resolution: {integrity: sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==}
 
   /eventemitter3@5.0.1:
     resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==}
-    dev: true
 
   /events@3.3.0:
     resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
@@ -7758,6 +10424,12 @@ packages:
     resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==}
     dev: true
 
+  /extension-port-stream@2.1.1:
+    resolution: {integrity: sha512-qknp5o5rj2J9CRKfVB8KJr+uXQlrojNZzdESUPhKYLXf97TPcGf6qWWKmpsNNtUyOdzFhab1ON0jzouNxHHvow==}
+    engines: {node: '>=12.0.0'}
+    dependencies:
+      webextension-polyfill: 0.10.0
+
   /external-editor@3.1.0:
     resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==}
     engines: {node: '>=4'}
@@ -7767,9 +10439,8 @@ packages:
       tmp: 0.0.33
     dev: true
 
-  /eyes@0.1.8:
-    resolution: {integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==}
-    engines: {node: '> 0.1.90'}
+  /fast-deep-equal@2.0.1:
+    resolution: {integrity: sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==}
 
   /fast-deep-equal@3.1.3:
     resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
@@ -7798,8 +10469,11 @@ packages:
   /fast-safe-stringify@2.1.1:
     resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==}
 
-  /fast-stable-stringify@1.0.0:
-    resolution: {integrity: sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==}
+  /fast-xml-parser@4.3.2:
+    resolution: {integrity: sha512-rmrXUXwbJedoXkStenj1kkljNF7ugn5ZjR9FJcwmCfcCbtOMDghPajbc+Tck6vE6F5XsDmx+Pr2le9fw8+pXBg==}
+    hasBin: true
+    dependencies:
+      strnum: 1.0.5
 
   /fastq@1.15.0:
     resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==}
@@ -7812,6 +10486,11 @@ packages:
       format: 0.2.2
     dev: true
 
+  /fb-watchman@2.0.2:
+    resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==}
+    dependencies:
+      bser: 2.1.1
+
   /fetch-blob@3.2.0:
     resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==}
     engines: {node: ^12.20 || >= 14.13}
@@ -7827,9 +10506,6 @@ packages:
       flat-cache: 3.0.4
     dev: true
 
-  /file-uri-to-path@1.0.0:
-    resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==}
-
   /fill-range@7.0.1:
     resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
     engines: {node: '>=8'}
@@ -7840,6 +10516,37 @@ packages:
     resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==}
     engines: {node: '>=0.10.0'}
 
+  /finalhandler@1.1.2:
+    resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==}
+    engines: {node: '>= 0.8'}
+    dependencies:
+      debug: 2.6.9
+      encodeurl: 1.0.2
+      escape-html: 1.0.3
+      on-finished: 2.3.0
+      parseurl: 1.3.3
+      statuses: 1.5.0
+      unpipe: 1.0.0
+    transitivePeerDependencies:
+      - supports-color
+
+  /find-cache-dir@2.1.0:
+    resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==}
+    engines: {node: '>=6'}
+    dependencies:
+      commondir: 1.0.1
+      make-dir: 2.1.0
+      pkg-dir: 3.0.0
+
+  /find-root@1.1.0:
+    resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==}
+
+  /find-up@3.0.0:
+    resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==}
+    engines: {node: '>=6'}
+    dependencies:
+      locate-path: 3.0.0
+
   /find-up@4.1.0:
     resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
     engines: {node: '>=8'}
@@ -7873,6 +10580,13 @@ packages:
     resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==}
     dev: true
 
+  /flow-enums-runtime@0.0.6:
+    resolution: {integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==}
+
+  /flow-parser@0.206.0:
+    resolution: {integrity: sha512-HVzoK3r6Vsg+lKvlIZzaWNBVai+FXTX1wdYhz/wVlH13tb/gOdLXmlTqy6odmTBhT5UoWUbq0k8263Qhr9d88w==}
+    engines: {node: '>=0.4.0'}
+
   /for-each@0.3.3:
     resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
     dependencies:
@@ -7926,6 +10640,10 @@ packages:
       tslib: 2.5.0
     dev: false
 
+  /fresh@0.5.2:
+    resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==}
+    engines: {node: '>= 0.6'}
+
   /fs-extra@10.1.0:
     resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==}
     engines: {node: '>=12'}
@@ -7960,11 +10678,9 @@ packages:
       graceful-fs: 4.2.11
       jsonfile: 4.0.0
       universalify: 0.1.2
-    dev: true
 
   /fs.realpath@1.0.0:
     resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
-    dev: true
 
   /fsevents@2.3.3:
     resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
@@ -7977,7 +10693,6 @@ packages:
 
   /function-bind@1.1.2:
     resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
-    dev: true
 
   /function.prototype.name@1.1.5:
     resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==}
@@ -8007,6 +10722,10 @@ packages:
     resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
     dev: true
 
+  /futoin-hkdf@1.5.3:
+    resolution: {integrity: sha512-SewY5KdMpaoCeh7jachEWFsh1nNlaDjNHZXWqL5IGwtpEYHTgkr2+AMCgNwKWkcc0wpSYrZfR7he4WdmHFtDxQ==}
+    engines: {node: '>=8'}
+
   /gensync@1.0.0-beta.2:
     resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
     engines: {node: '>=6.9.0'}
@@ -8033,7 +10752,6 @@ packages:
       has-proto: 1.0.1
       has-symbols: 1.0.3
       hasown: 2.0.0
-    dev: true
 
   /get-nonce@1.0.1:
     resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==}
@@ -8110,7 +10828,6 @@ packages:
       minimatch: 3.1.2
       once: 1.4.0
       path-is-absolute: 1.0.1
-    dev: true
 
   /global-dirs@0.1.1:
     resolution: {integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==}
@@ -8219,12 +10936,10 @@ packages:
     resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==}
     dependencies:
       get-intrinsic: 1.2.0
-    dev: true
 
   /has-proto@1.0.1:
     resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==}
     engines: {node: '>= 0.4'}
-    dev: true
 
   /has-symbols@1.0.3:
     resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
@@ -8257,7 +10972,6 @@ packages:
     engines: {node: '>= 0.4'}
     dependencies:
       function-bind: 1.1.2
-    dev: true
 
   /hast-util-from-parse5@7.1.2:
     resolution: {integrity: sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw==}
@@ -8338,6 +11052,28 @@ packages:
       space-separated-tokens: 2.0.2
     dev: false
 
+  /hermes-estree@0.15.0:
+    resolution: {integrity: sha512-lLYvAd+6BnOqWdnNbP/Q8xfl8LOGw4wVjfrNd9Gt8eoFzhNBRVD95n4l2ksfMVOoxuVyegs85g83KS9QOsxbVQ==}
+
+  /hermes-estree@0.18.2:
+    resolution: {integrity: sha512-KoLsoWXJ5o81nit1wSyEZnWUGy9cBna9iYMZBR7skKh7okYAYKqQ9/OczwpMHn/cH0hKDyblulGsJ7FknlfVxQ==}
+
+  /hermes-parser@0.15.0:
+    resolution: {integrity: sha512-Q1uks5rjZlE9RjMMjSUCkGrEIPI5pKJILeCtK1VmTj7U4pf3wVPoo+cxfu+s4cBAPy2JzikIIdCZgBoR6x7U1Q==}
+    dependencies:
+      hermes-estree: 0.15.0
+
+  /hermes-parser@0.18.2:
+    resolution: {integrity: sha512-1eQfvib+VPpgBZ2zYKQhpuOjw1tH+Emuib6QmjkJWJMhyjM8xnXMvA+76o9LhF0zOAJDZgPfQhg43cyXEyl5Ew==}
+    dependencies:
+      hermes-estree: 0.18.2
+
+  /hermes-profile-transformer@0.0.6:
+    resolution: {integrity: sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==}
+    engines: {node: '>=8'}
+    dependencies:
+      source-map: 0.7.4
+
   /hey-listen@1.0.8:
     resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==}
 
@@ -8348,6 +11084,11 @@ packages:
       minimalistic-assert: 1.0.1
       minimalistic-crypto-utils: 1.0.1
 
+  /hoist-non-react-statics@3.3.2:
+    resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==}
+    dependencies:
+      react-is: 16.13.1
+
   /hosted-git-info@2.8.9:
     resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==}
     dev: true
@@ -8366,9 +11107,24 @@ packages:
       whatwg-encoding: 3.1.1
     dev: true
 
+  /html-parse-stringify@3.0.1:
+    resolution: {integrity: sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==}
+    dependencies:
+      void-elements: 3.1.0
+
   /html-void-elements@2.0.1:
     resolution: {integrity: sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==}
 
+  /http-errors@2.0.0:
+    resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==}
+    engines: {node: '>= 0.8'}
+    dependencies:
+      depd: 2.0.0
+      inherits: 2.0.4
+      setprototypeof: 1.2.0
+      statuses: 2.0.1
+      toidentifier: 1.0.1
+
   /http-proxy-agent@7.0.0:
     resolution: {integrity: sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==}
     engines: {node: '>= 14'}
@@ -8411,11 +11167,6 @@ packages:
     engines: {node: '>=14.18.0'}
     dev: true
 
-  /humanize-ms@1.2.1:
-    resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==}
-    dependencies:
-      ms: 2.1.3
-
   /husky@8.0.3:
     resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==}
     engines: {node: '>=14'}
@@ -8429,6 +11180,16 @@ packages:
       make-plural: 7.3.0
     dev: false
 
+  /i18next-browser-languagedetector@7.2.0:
+    resolution: {integrity: sha512-U00DbDtFIYD3wkWsr2aVGfXGAj2TgnELzOX9qv8bT0aJtvPV9CRO77h+vgmHFBMe7LAxdwvT/7VkCWGya6L3tA==}
+    dependencies:
+      '@babel/runtime': 7.23.4
+
+  /i18next@22.5.1:
+    resolution: {integrity: sha512-8TGPgM3pAD+VRsMtUMNknRz3kzqwp/gPALrWMsDnmC1mKqJwpWyooQRLMcbTwq8z8YwSmuj+ZYvc+xCuEpkssA==}
+    dependencies:
+      '@babel/runtime': 7.23.4
+
   /iconv-lite@0.4.24:
     resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
     engines: {node: '>=0.10.0'}
@@ -8453,23 +11214,35 @@ packages:
     resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==}
     engines: {node: '>= 4'}
 
+  /image-size@1.1.1:
+    resolution: {integrity: sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==}
+    engines: {node: '>=16.x'}
+    hasBin: true
+    dependencies:
+      queue: 6.0.2
+
   /imagescript@1.2.16:
     resolution: {integrity: sha512-hhy8OVNymU+cYYj8IwCbdNlXJRoMr4HRd7+efkH32eBVfybVU/5SbzDYf3ZSiiF9ye/ghfBrI/ujec/nwl+fOQ==}
     engines: {node: '>=14.0.0'}
     dev: true
 
+  /import-fresh@2.0.0:
+    resolution: {integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==}
+    engines: {node: '>=4'}
+    dependencies:
+      caller-path: 2.0.0
+      resolve-from: 3.0.0
+
   /import-fresh@3.3.0:
     resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
     engines: {node: '>=6'}
     dependencies:
       parent-module: 1.0.1
       resolve-from: 4.0.0
-    dev: true
 
   /imurmurhash@0.1.4:
     resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
     engines: {node: '>=0.8.19'}
-    dev: true
 
   /indent-string@4.0.0:
     resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==}
@@ -8491,7 +11264,6 @@ packages:
     dependencies:
       once: 1.4.0
       wrappy: 1.0.2
-    dev: true
 
   /inherits@2.0.4:
     resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
@@ -8526,7 +11298,6 @@ packages:
     resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==}
     dependencies:
       loose-envify: 1.4.0
-    dev: false
 
   /ioredis@5.3.2:
     resolution: {integrity: sha512-1DKMMzlIHM02eBBVOFQ1+AolGjs6+xEcM4PDL7NqOS6szq7H9jSaEkIUH6/a5Hl241LzW6JLSiAbNvTQjUupUA==}
@@ -8544,6 +11315,9 @@ packages:
     transitivePeerDependencies:
       - supports-color
 
+  /ip@1.1.8:
+    resolution: {integrity: sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==}
+
   /iron-webcrypto@1.0.0:
     resolution: {integrity: sha512-anOK1Mktt8U1Xi7fCM3RELTuYbnFikQY5VtrDj7kPgpejV7d43tWKhzgioO0zpkazLEL/j/iayRqnJhrGfqUsg==}
 
@@ -8573,7 +11347,6 @@ packages:
 
   /is-arrayish@0.2.1:
     resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
-    dev: true
 
   /is-async-function@2.0.0:
     resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==}
@@ -8620,7 +11393,6 @@ packages:
     resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==}
     dependencies:
       hasown: 2.0.0
-    dev: true
 
   /is-date-object@1.0.5:
     resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==}
@@ -8632,6 +11404,10 @@ packages:
   /is-decimal@2.0.1:
     resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==}
 
+  /is-directory@0.3.1:
+    resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==}
+    engines: {node: '>=0.10.0'}
+
   /is-docker@2.2.1:
     resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==}
     engines: {node: '>=8'}
@@ -8656,6 +11432,10 @@ packages:
       call-bind: 1.0.5
     dev: true
 
+  /is-fullwidth-code-point@2.0.0:
+    resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==}
+    engines: {node: '>=4'}
+
   /is-fullwidth-code-point@3.0.0:
     resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
     engines: {node: '>=8'}
@@ -8682,6 +11462,10 @@ packages:
       is-docker: 3.0.0
     dev: true
 
+  /is-interactive@1.0.0:
+    resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==}
+    engines: {node: '>=8'}
+
   /is-map@2.0.2:
     resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==}
     dev: true
@@ -8712,6 +11496,10 @@ packages:
     engines: {node: '>=0.10.0'}
     dev: true
 
+  /is-plain-obj@2.1.0:
+    resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==}
+    engines: {node: '>=8'}
+
   /is-plain-obj@3.0.0:
     resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==}
     engines: {node: '>=10'}
@@ -8721,6 +11509,12 @@ packages:
     resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==}
     engines: {node: '>=12'}
 
+  /is-plain-object@2.0.4:
+    resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==}
+    engines: {node: '>=0.10.0'}
+    dependencies:
+      isobject: 3.0.1
+
   /is-potential-custom-element-name@1.0.1:
     resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==}
     dev: true
@@ -8794,16 +11588,17 @@ packages:
       for-each: 0.3.3
       gopd: 1.0.1
       has-tostringtag: 1.0.0
+    dev: true
 
   /is-typed-array@1.1.12:
     resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==}
     engines: {node: '>= 0.4'}
     dependencies:
       which-typed-array: 1.1.13
-    dev: true
 
-  /is-typedarray@1.0.0:
-    resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==}
+  /is-unicode-supported@0.1.0:
+    resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==}
+    engines: {node: '>=10'}
 
   /is-weakmap@2.0.1:
     resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==}
@@ -8827,12 +11622,19 @@ packages:
     engines: {node: '>=0.10.0'}
     dev: true
 
+  /is-wsl@1.1.0:
+    resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==}
+    engines: {node: '>=4'}
+
   /is-wsl@2.2.0:
     resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==}
     engines: {node: '>=8'}
     dependencies:
       is-docker: 2.2.1
 
+  /isarray@1.0.0:
+    resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
+
   /isarray@2.0.5:
     resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
     dev: true
@@ -8840,21 +11642,18 @@ packages:
   /isexe@2.0.0:
     resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
 
+  /isobject@3.0.1:
+    resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==}
+    engines: {node: '>=0.10.0'}
+
   /isomorphic-unfetch@3.1.0:
     resolution: {integrity: sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==}
     dependencies:
-      node-fetch: 2.6.11
+      node-fetch: 2.7.0
       unfetch: 4.2.0
     transitivePeerDependencies:
       - encoding
 
-  /isomorphic-ws@4.0.1(ws@7.5.9):
-    resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==}
-    peerDependencies:
-      ws: '*'
-    dependencies:
-      ws: 7.5.9
-
   /isows@1.0.3(ws@8.13.0):
     resolution: {integrity: sha512-2cKei4vlmg2cxEjm3wVSqn8pcoRF/LX/wpifuuNquFO4SQmPwarClT+SUCA2lt+l581tTeZIPIZuIDo2jWN1fg==}
     peerDependencies:
@@ -8875,26 +11674,64 @@ packages:
   /javascript-stringify@2.1.0:
     resolution: {integrity: sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==}
 
-  /jayson@3.7.0:
-    resolution: {integrity: sha512-tfy39KJMrrXJ+mFcMpxwBvFDetS8LAID93+rycFglIQM4kl3uNR3W4lBLE/FFhsoUCEox5Dt2adVpDm/XtebbQ==}
-    engines: {node: '>=8'}
+  /jest-environment-node@29.7.0:
+    resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==}
+    engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
     dependencies:
-      '@types/connect': 3.4.35
-      '@types/node': 12.20.55
-      '@types/ws': 7.4.7
-      JSONStream: 1.3.5
-      commander: 2.20.3
-      delay: 5.0.0
-      es6-promisify: 5.0.0
-      eyes: 0.1.8
-      isomorphic-ws: 4.0.1(ws@7.5.9)
-      json-stringify-safe: 5.0.1
-      lodash: 4.17.21
-      uuid: 8.3.2
-      ws: 7.5.9
-    transitivePeerDependencies:
-      - bufferutil
-      - utf-8-validate
+      '@jest/environment': 29.7.0
+      '@jest/fake-timers': 29.7.0
+      '@jest/types': 29.6.3
+      '@types/node': 18.19.4
+      jest-mock: 29.7.0
+      jest-util: 29.7.0
+
+  /jest-get-type@29.6.3:
+    resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==}
+    engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+  /jest-message-util@29.7.0:
+    resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==}
+    engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+    dependencies:
+      '@babel/code-frame': 7.23.5
+      '@jest/types': 29.6.3
+      '@types/stack-utils': 2.0.3
+      chalk: 4.1.2
+      graceful-fs: 4.2.11
+      micromatch: 4.0.5
+      pretty-format: 29.7.0
+      slash: 3.0.0
+      stack-utils: 2.0.6
+
+  /jest-mock@29.7.0:
+    resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==}
+    engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+    dependencies:
+      '@jest/types': 29.6.3
+      '@types/node': 18.19.4
+      jest-util: 29.7.0
+
+  /jest-util@29.7.0:
+    resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==}
+    engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+    dependencies:
+      '@jest/types': 29.6.3
+      '@types/node': 18.19.4
+      chalk: 4.1.2
+      ci-info: 3.8.0
+      graceful-fs: 4.2.11
+      picomatch: 2.3.1
+
+  /jest-validate@29.7.0:
+    resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==}
+    engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+    dependencies:
+      '@jest/types': 29.6.3
+      camelcase: 6.3.0
+      chalk: 4.1.2
+      jest-get-type: 29.6.3
+      leven: 3.1.0
+      pretty-format: 29.7.0
 
   /jest-worker@27.5.1:
     resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==}
@@ -8905,9 +11742,27 @@ packages:
       supports-color: 8.1.1
     dev: false
 
+  /jest-worker@29.7.0:
+    resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==}
+    engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+    dependencies:
+      '@types/node': 18.19.4
+      jest-util: 29.7.0
+      merge-stream: 2.0.0
+      supports-color: 8.1.1
+
   /jiti@1.21.0:
     resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==}
 
+  /joi@17.11.0:
+    resolution: {integrity: sha512-NgB+lZLNoqISVy1rZocE9PZI36bL/77ie924Ri43yEvi9GUUMPeyVIr8KdFTMUlby1p0PBYMk9spIxEUQYqrJQ==}
+    dependencies:
+      '@hapi/hoek': 9.3.0
+      '@hapi/topo': 5.1.0
+      '@sideway/address': 4.1.4
+      '@sideway/formula': 3.0.1
+      '@sideway/pinpoint': 2.0.0
+
   /jose@4.14.4:
     resolution: {integrity: sha512-j8GhLiKmUAh+dsFXlX1aJCbt5KMibuKb+d7j1JaOJG6s2UjX1PQlW+OKB/sD4a/5ZYF4RcmYmLSndOoU3Lt/3g==}
 
@@ -8922,7 +11777,6 @@ packages:
     dependencies:
       argparse: 1.0.10
       esprima: 4.0.1
-    dev: true
 
   /js-yaml@4.1.0:
     resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
@@ -8934,6 +11788,41 @@ packages:
     resolution: {integrity: sha512-SnZNcinB4RIcnEyZqFPdGPVgrg2AcnykiBy0sHVJQKHYeaLUvi3Exj+iaPpLnFVkDPZIV4U0yvgC9/R4uEAZ9g==}
     dev: true
 
+  /jsc-android@250231.0.0:
+    resolution: {integrity: sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw==}
+
+  /jsc-safe-url@0.2.4:
+    resolution: {integrity: sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==}
+
+  /jscodeshift@0.14.0(@babel/preset-env@7.23.7):
+    resolution: {integrity: sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==}
+    hasBin: true
+    peerDependencies:
+      '@babel/preset-env': ^7.1.6
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/parser': 7.23.6
+      '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.23.7)
+      '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.23.7)
+      '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.23.7)
+      '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.7)
+      '@babel/preset-env': 7.23.7(@babel/core@7.23.7)
+      '@babel/preset-flow': 7.23.3(@babel/core@7.23.7)
+      '@babel/preset-typescript': 7.23.3(@babel/core@7.23.7)
+      '@babel/register': 7.23.7(@babel/core@7.23.7)
+      babel-core: 7.0.0-bridge.0(@babel/core@7.23.7)
+      chalk: 4.1.2
+      flow-parser: 0.206.0
+      graceful-fs: 4.2.11
+      micromatch: 4.0.5
+      neo-async: 2.6.2
+      node-dir: 0.1.17
+      recast: 0.21.5
+      temp: 0.8.4
+      write-file-atomic: 2.4.3
+    transitivePeerDependencies:
+      - supports-color
+
   /jsdom@23.0.1:
     resolution: {integrity: sha512-2i27vgvlUsGEBO9+/kJQRbtqtm+191b5zAZrU/UezVmnC2dlDAFLgDYJvAEi94T4kjsRKkezEtLQTgsNEsW2lQ==}
     engines: {node: '>=18'}
@@ -8962,7 +11851,7 @@ packages:
       whatwg-encoding: 3.1.1
       whatwg-mimetype: 4.0.0
       whatwg-url: 14.0.0
-      ws: 8.15.0(bufferutil@4.0.7)(utf-8-validate@5.0.10)
+      ws: 8.15.0
       xml-name-validator: 5.0.0
     transitivePeerDependencies:
       - bufferutil
@@ -8970,10 +11859,17 @@ packages:
       - utf-8-validate
     dev: true
 
+  /jsesc@0.5.0:
+    resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==}
+    hasBin: true
+
   /jsesc@2.5.2:
     resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
     engines: {node: '>=4'}
 
+  /json-parse-better-errors@1.0.2:
+    resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==}
+
   /json-parse-even-better-errors@2.3.1:
     resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
 
@@ -8982,7 +11878,15 @@ packages:
     engines: {node: '>=10.0.0'}
     dependencies:
       '@metamask/safe-event-emitter': 2.0.0
-      eth-rpc-errors: 4.0.2
+      eth-rpc-errors: 4.0.3
+
+  /json-rpc-middleware-stream@4.2.3:
+    resolution: {integrity: sha512-4iFb0yffm5vo3eFKDbQgke9o17XBcLQ2c3sONrXSbcOLzP8LTojqo8hRGVgtJShhm5q4ZDSNq039fAx9o65E1w==}
+    engines: {node: '>=14.0.0'}
+    dependencies:
+      '@metamask/safe-event-emitter': 3.0.0
+      json-rpc-engine: 6.1.0
+      readable-stream: 2.3.8
 
   /json-rpc-random-id@1.0.1:
     resolution: {integrity: sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA==}
@@ -9000,6 +11904,7 @@ packages:
 
   /json-stringify-safe@5.0.1:
     resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==}
+    dev: true
 
   /json5@1.0.2:
     resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==}
@@ -9018,7 +11923,6 @@ packages:
     resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==}
     optionalDependencies:
       graceful-fs: 4.2.11
-    dev: true
 
   /jsonfile@6.1.0:
     resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
@@ -9030,6 +11934,7 @@ packages:
   /jsonparse@1.3.1:
     resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==}
     engines: {'0': node >= 0.2.0}
+    dev: true
 
   /jsx-ast-utils@3.3.5:
     resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==}
@@ -9060,12 +11965,10 @@ packages:
   /kind-of@6.0.3:
     resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==}
     engines: {node: '>=0.10.0'}
-    dev: true
 
   /kleur@3.0.3:
     resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==}
     engines: {node: '>=6'}
-    dev: false
 
   /kleur@4.1.5:
     resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
@@ -9083,6 +11986,10 @@ packages:
       language-subtag-registry: 0.3.22
     dev: true
 
+  /leven@3.1.0:
+    resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==}
+    engines: {node: '>=6'}
+
   /levn@0.4.1:
     resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
     engines: {node: '>= 0.8.0'}
@@ -9091,6 +11998,14 @@ packages:
       type-check: 0.4.0
     dev: true
 
+  /lighthouse-logger@1.4.2:
+    resolution: {integrity: sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==}
+    dependencies:
+      debug: 2.6.9
+      marky: 1.2.5
+    transitivePeerDependencies:
+      - supports-color
+
   /lilconfig@2.1.0:
     resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==}
     engines: {node: '>=10'}
@@ -9098,7 +12013,6 @@ packages:
 
   /lines-and-columns@1.2.4:
     resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
-    dev: true
 
   /listhen@1.5.5:
     resolution: {integrity: sha512-LXe8Xlyh3gnxdv4tSjTjscD1vpr/2PRpzq8YIaMJgyKzRG8wdISlWVWnGThJfHnlJ6hmLt2wq1yeeix0TEbuoA==}
@@ -9169,6 +12083,13 @@ packages:
     engines: {node: '>=14'}
     dev: true
 
+  /locate-path@3.0.0:
+    resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==}
+    engines: {node: '>=6'}
+    dependencies:
+      p-locate: 3.0.0
+      path-exists: 3.0.0
+
   /locate-path@5.0.0:
     resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
     engines: {node: '>=8'}
@@ -9185,6 +12106,9 @@ packages:
     resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==}
     dev: true
 
+  /lodash.debounce@4.0.8:
+    resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==}
+
   /lodash.defaults@4.2.0:
     resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==}
 
@@ -9222,6 +12146,9 @@ packages:
     resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==}
     dev: true
 
+  /lodash.throttle@4.1.1:
+    resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==}
+
   /lodash.uniq@4.5.0:
     resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==}
     dev: true
@@ -9233,8 +12160,24 @@ packages:
   /lodash@4.17.21:
     resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
 
+  /log-symbols@4.1.0:
+    resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==}
+    engines: {node: '>=10'}
+    dependencies:
+      chalk: 4.1.2
+      is-unicode-supported: 0.1.0
+
+  /logkitty@0.7.1:
+    resolution: {integrity: sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==}
+    hasBin: true
+    dependencies:
+      ansi-fragments: 0.2.1
+      dayjs: 1.11.10
+      yargs: 15.4.1
+
   /lokijs@1.5.12:
     resolution: {integrity: sha512-Q5ALD6JiS6xAUWCwX3taQmgwxyveCtIIuL08+ml0nHwT3k0S/GIFJN+Hd38b1qYIMaE5X++iqsqWVksz7SYW+Q==}
+    dev: true
 
   /long@4.0.0:
     resolution: {integrity: sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==}
@@ -9304,6 +12247,13 @@ packages:
       '@jridgewell/sourcemap-codec': 1.4.15
     dev: true
 
+  /make-dir@2.1.0:
+    resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==}
+    engines: {node: '>=6'}
+    dependencies:
+      pify: 4.0.1
+      semver: 5.7.1
+
   /make-dir@3.1.0:
     resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==}
     engines: {node: '>=8'}
@@ -9315,6 +12265,11 @@ packages:
     resolution: {integrity: sha512-/K3BC0KIsO+WK2i94LkMPv3wslMrazrQhfi5We9fMbLlLjzoOSJWr7TAdupLlDWaJcWxwoNosBkhFDejiu5VDw==}
     dev: false
 
+  /makeerror@1.0.12:
+    resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==}
+    dependencies:
+      tmpl: 1.0.5
+
   /map-obj@1.0.1:
     resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==}
     engines: {node: '>=0.10.0'}
@@ -9330,6 +12285,9 @@ packages:
     engines: {node: '>=0.10.0'}
     dev: true
 
+  /marky@1.2.5:
+    resolution: {integrity: sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==}
+
   /mdast-util-definitions@5.1.2:
     resolution: {integrity: sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==}
     dependencies:
@@ -9483,6 +12441,9 @@ packages:
     dependencies:
       '@babel/runtime': 7.23.4
 
+  /memoize-one@5.2.1:
+    resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==}
+
   /meow@12.1.1:
     resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==}
     engines: {node: '>=16.10'}
@@ -9522,6 +12483,12 @@ packages:
       yargs-parser: 20.2.9
     dev: true
 
+  /merge-options@3.0.4:
+    resolution: {integrity: sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==}
+    engines: {node: '>=10'}
+    dependencies:
+      is-plain-obj: 2.1.0
+
   /merge-stream@2.0.0:
     resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
 
@@ -9529,6 +12496,206 @@ packages:
     resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
     engines: {node: '>= 8'}
 
+  /metro-babel-transformer@0.80.3:
+    resolution: {integrity: sha512-Si1GO9fhiLi3DfHseFDaZcU+Y6iYHx54rszILnBIx80aas3pRZpL3z/UsEZ7coTQZTFsblt2QDIE+Izxlq4mwQ==}
+    engines: {node: '>=18'}
+    dependencies:
+      '@babel/core': 7.23.7
+      hermes-parser: 0.18.2
+      nullthrows: 1.1.1
+    transitivePeerDependencies:
+      - supports-color
+
+  /metro-cache-key@0.80.3:
+    resolution: {integrity: sha512-WNrtDpbhtW2Yqjp1t0WxJhKNR/Zbo1LZ4WvHsdv/PraAs2mr+SaM5bbiptBSKOOGJkV/FIQveW5riZi53JnCbw==}
+    engines: {node: '>=18'}
+
+  /metro-cache@0.80.3:
+    resolution: {integrity: sha512-7gHcOIXdAHCBzsovF4b+VgcfIZtCpCIFiT2zx9amU58xrmkx+PRIl1KZDIUfRBbGrO9HJtZxH7lr7/hoiLIUWA==}
+    engines: {node: '>=18'}
+    dependencies:
+      metro-core: 0.80.3
+      rimraf: 3.0.2
+
+  /metro-config@0.80.3:
+    resolution: {integrity: sha512-cE7KPT1Usdrd2nLEVpzukKWmeBU1PufHPkuD9BjjtoABbzdj35gMLDnK+mhjSq9km2vF2QEPtE0M+WKvq9pXfQ==}
+    engines: {node: '>=18'}
+    dependencies:
+      connect: 3.7.0
+      cosmiconfig: 5.2.1
+      jest-validate: 29.7.0
+      metro: 0.80.3
+      metro-cache: 0.80.3
+      metro-core: 0.80.3
+      metro-runtime: 0.80.3
+    transitivePeerDependencies:
+      - bufferutil
+      - encoding
+      - supports-color
+      - utf-8-validate
+
+  /metro-core@0.80.3:
+    resolution: {integrity: sha512-X2ZfAvR55TdD/Rv9i4gYVI68JpRPHcpKpkr6IVtidFPoNjf4Fodh1qH7gEAJUnO5FL3a1JyPffbW6eFaXPxkFw==}
+    engines: {node: '>=18'}
+    dependencies:
+      lodash.throttle: 4.1.1
+      metro-resolver: 0.80.3
+
+  /metro-file-map@0.80.3:
+    resolution: {integrity: sha512-4qu1ABPZRvboGGB8Q2RlQ26kZRWRCMDiktgCCrX/57V6cnWgdbdTrpnsgmU3i0Q7iiw+FevOGlfD4HqdauQ59g==}
+    engines: {node: '>=18'}
+    dependencies:
+      anymatch: 3.1.3
+      debug: 2.6.9
+      fb-watchman: 2.0.2
+      graceful-fs: 4.2.11
+      invariant: 2.2.4
+      jest-worker: 29.7.0
+      micromatch: 4.0.5
+      node-abort-controller: 3.1.1
+      nullthrows: 1.1.1
+      walker: 1.0.8
+    optionalDependencies:
+      fsevents: 2.3.3
+    transitivePeerDependencies:
+      - supports-color
+
+  /metro-minify-terser@0.80.3:
+    resolution: {integrity: sha512-gVFwoL86emFoYbI2DZKk1Ved2CklYv//huWriF0UpLJHmVEO9ii2ajTx3aIxgSeuxFLPJhdp8RgUB2EDCooaJw==}
+    engines: {node: '>=18'}
+    dependencies:
+      terser: 5.17.2
+
+  /metro-resolver@0.80.3:
+    resolution: {integrity: sha512-zwa0i32rj/TI3NivcvMXHJwTG2gUgo2dXdcnAJlhEKKQvyN+7AfhNdQSlDdDqMQmU7FaLRdeWORnQJbYCrprQQ==}
+    engines: {node: '>=18'}
+
+  /metro-runtime@0.80.3:
+    resolution: {integrity: sha512-16RKcwpxriNnPdE5eKWJu7/KLgxE+AaDAdYthoS6zbzjaOu7RiY2zPM1Elz175Rw//74kOwtKXgxTW8ADHB8SQ==}
+    engines: {node: '>=18'}
+    dependencies:
+      '@babel/runtime': 7.23.4
+
+  /metro-source-map@0.80.3:
+    resolution: {integrity: sha512-5DYcOLPjDLx84ZCZ1i0DuWSPU7AY5G/7tR+u/WN6CZNxLyYEe3TwUBdIUgQj4HgZJl/zZ/7bGYJQOHd7ubuO0w==}
+    engines: {node: '>=18'}
+    dependencies:
+      '@babel/traverse': 7.23.7
+      '@babel/types': 7.23.6
+      invariant: 2.2.4
+      metro-symbolicate: 0.80.3
+      nullthrows: 1.1.1
+      ob1: 0.80.3
+      source-map: 0.5.7
+      vlq: 1.0.1
+    transitivePeerDependencies:
+      - supports-color
+
+  /metro-symbolicate@0.80.3:
+    resolution: {integrity: sha512-baIt8Ss2vTGbxolRTa5yg+tKVAIAB1OpwMzJ0FSUjLs+HDAzaOtSpGbNd3DPc+pzX8Gj/rdbDOA0wPuOhVsHKQ==}
+    engines: {node: '>=18'}
+    hasBin: true
+    dependencies:
+      invariant: 2.2.4
+      metro-source-map: 0.80.3
+      nullthrows: 1.1.1
+      source-map: 0.5.7
+      through2: 2.0.5
+      vlq: 1.0.1
+    transitivePeerDependencies:
+      - supports-color
+
+  /metro-transform-plugins@0.80.3:
+    resolution: {integrity: sha512-/2hGGRdJPrNfB9lz8unukaqQpGpDhYwNM0Odfh37OVFjygMB30Ffd8neQ4FNqnHnFxhl5j8VTcopUg6QhygMGQ==}
+    engines: {node: '>=18'}
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/generator': 7.23.6
+      '@babel/template': 7.22.15
+      '@babel/traverse': 7.23.7
+      nullthrows: 1.1.1
+    transitivePeerDependencies:
+      - supports-color
+
+  /metro-transform-worker@0.80.3:
+    resolution: {integrity: sha512-10ZwMDuSWyHwqNnZ50baNtHNuHhOnqThbTOgv03PsrmPHWmSv4/rrmm7711tEyLUxptY3A1hEgJ+LKYyOIQiUA==}
+    engines: {node: '>=18'}
+    dependencies:
+      '@babel/core': 7.23.7
+      '@babel/generator': 7.23.6
+      '@babel/parser': 7.23.6
+      '@babel/types': 7.23.6
+      metro: 0.80.3
+      metro-babel-transformer: 0.80.3
+      metro-cache: 0.80.3
+      metro-cache-key: 0.80.3
+      metro-source-map: 0.80.3
+      metro-transform-plugins: 0.80.3
+      nullthrows: 1.1.1
+    transitivePeerDependencies:
+      - bufferutil
+      - encoding
+      - supports-color
+      - utf-8-validate
+
+  /metro@0.80.3:
+    resolution: {integrity: sha512-7u6HjWVQR7wA/HbxzB0n6iQ0GI9s/fr49N++dZQ41BcrcFxrguIGaRe4W8VI5DtYifCVCjXDIFw6e9+MAccx/Q==}
+    engines: {node: '>=18'}
+    hasBin: true
+    dependencies:
+      '@babel/code-frame': 7.23.5
+      '@babel/core': 7.23.7
+      '@babel/generator': 7.23.6
+      '@babel/parser': 7.23.6
+      '@babel/template': 7.22.15
+      '@babel/traverse': 7.23.7
+      '@babel/types': 7.23.6
+      accepts: 1.3.8
+      chalk: 4.1.2
+      ci-info: 2.0.0
+      connect: 3.7.0
+      debug: 2.6.9
+      denodeify: 1.2.1
+      error-stack-parser: 2.1.4
+      graceful-fs: 4.2.11
+      hermes-parser: 0.18.2
+      image-size: 1.1.1
+      invariant: 2.2.4
+      jest-worker: 29.7.0
+      jsc-safe-url: 0.2.4
+      lodash.throttle: 4.1.1
+      metro-babel-transformer: 0.80.3
+      metro-cache: 0.80.3
+      metro-cache-key: 0.80.3
+      metro-config: 0.80.3
+      metro-core: 0.80.3
+      metro-file-map: 0.80.3
+      metro-minify-terser: 0.80.3
+      metro-resolver: 0.80.3
+      metro-runtime: 0.80.3
+      metro-source-map: 0.80.3
+      metro-symbolicate: 0.80.3
+      metro-transform-plugins: 0.80.3
+      metro-transform-worker: 0.80.3
+      mime-types: 2.1.35
+      node-fetch: 2.7.0
+      nullthrows: 1.1.1
+      rimraf: 3.0.2
+      serialize-error: 2.1.0
+      source-map: 0.5.7
+      strip-ansi: 6.0.1
+      throat: 5.0.0
+      ws: 7.5.9
+      yargs: 17.7.2
+    transitivePeerDependencies:
+      - bufferutil
+      - encoding
+      - supports-color
+      - utf-8-validate
+
+  /micro-ftch@0.3.1:
+    resolution: {integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==}
+
   /micromark-core-commonmark@1.0.6:
     resolution: {integrity: sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA==}
     dependencies:
@@ -9814,6 +12981,16 @@ packages:
     dependencies:
       mime-db: 1.52.0
 
+  /mime@1.6.0:
+    resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
+    engines: {node: '>=4'}
+    hasBin: true
+
+  /mime@2.6.0:
+    resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==}
+    engines: {node: '>=4.0.0'}
+    hasBin: true
+
   /mime@3.0.0:
     resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==}
     engines: {node: '>=10.0.0'}
@@ -9841,7 +13018,6 @@ packages:
     resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
     dependencies:
       brace-expansion: 1.1.11
-    dev: true
 
   /minimist-options@4.1.0:
     resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==}
@@ -9854,13 +13030,38 @@ packages:
 
   /minimist@1.2.8:
     resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
-    dev: true
+
+  /mipd@0.0.5(typescript@5.0.4):
+    resolution: {integrity: sha512-gbKA784D2WKb5H/GtqEv+Ofd1S9Zj+Z/PGDIl1u1QAbswkxD28BQ5bSXQxkeBzPBABg1iDSbiwGG1XqlOxRspA==}
+    peerDependencies:
+      typescript: '>=5.0.4'
+    peerDependenciesMeta:
+      typescript:
+        optional: true
+    dependencies:
+      typescript: 5.0.4
+      viem: 1.21.4(typescript@5.0.4)
+    transitivePeerDependencies:
+      - bufferutil
+      - utf-8-validate
+      - zod
 
   /mixme@0.5.9:
     resolution: {integrity: sha512-VC5fg6ySUscaWUpI4gxCBTQMH2RdUpNrk+MsbpCYtIvf9SBJdiUey4qE7BXviJsJR4nDQxCZ+3yaYNW3guz/Pw==}
     engines: {node: '>= 8.0.0'}
     dev: true
 
+  /mkdirp@0.5.6:
+    resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==}
+    hasBin: true
+    dependencies:
+      minimist: 1.2.8
+
+  /mkdirp@1.0.4:
+    resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==}
+    engines: {node: '>=10'}
+    hasBin: true
+
   /mlly@1.2.0:
     resolution: {integrity: sha512-+c7A3CV0KGdKcylsI6khWyts/CYrGTrRVo4R/I7u/cUsy0Conxa6LUhiEzVKIw14lc2L5aiO4+SeVe4TeGRKww==}
     dependencies:
@@ -9903,6 +13104,9 @@ packages:
     resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
     engines: {node: '>=4'}
 
+  /ms@2.0.0:
+    resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
+
   /ms@2.1.2:
     resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
 
@@ -9930,11 +13134,9 @@ packages:
   /negotiator@0.6.3:
     resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==}
     engines: {node: '>= 0.6'}
-    dev: false
 
   /neo-async@2.6.2:
     resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==}
-    dev: false
 
   /nested-error-stacks@2.1.1:
     resolution: {integrity: sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==}
@@ -9955,7 +13157,7 @@ packages:
       '@panva/hkdf': 1.1.1
       cookie: 0.5.0
       jose: 4.14.4
-      next: 14.0.4(@babel/core@7.22.9)(react-dom@18.2.0)(react@18.2.0)
+      next: 14.0.4(@babel/core@7.23.7)(react-dom@18.2.0)(react@18.2.0)
       oauth: 0.9.15
       openid-client: 5.4.2
       preact: 10.13.2
@@ -10015,7 +13217,46 @@ packages:
       next: 14.0.4(@babel/core@7.21.8)(@opentelemetry/api@1.1.0)(react-dom@18.2.0)(react@18.2.0)
     dev: true
 
-  /next@14.0.4(@babel/core@7.21.8)(@opentelemetry/api@1.1.0)(react-dom@18.2.0)(react@18.2.0):
+  /next@14.0.4(@babel/core@7.21.8)(@opentelemetry/api@1.1.0)(react-dom@18.2.0)(react@18.2.0):
+    resolution: {integrity: sha512-qbwypnM7327SadwFtxXnQdGiKpkuhaRLE2uq62/nRul9cj9KhQ5LhHmlziTNqUidZotw/Q1I9OjirBROdUJNgA==}
+    engines: {node: '>=18.17.0'}
+    peerDependencies:
+      '@opentelemetry/api': ^1.1.0
+      react: ^18.2.0
+      react-dom: ^18.2.0
+      sass: ^1.3.0
+    peerDependenciesMeta:
+      '@opentelemetry/api':
+        optional: true
+      sass:
+        optional: true
+    dependencies:
+      '@next/env': 14.0.4
+      '@opentelemetry/api': 1.1.0
+      '@swc/helpers': 0.5.2
+      busboy: 1.6.0
+      caniuse-lite: 1.0.30001568
+      graceful-fs: 4.2.11
+      postcss: 8.4.31
+      react: 18.2.0
+      react-dom: 18.2.0(react@18.2.0)
+      styled-jsx: 5.1.1(@babel/core@7.21.8)(react@18.2.0)
+      watchpack: 2.4.0
+    optionalDependencies:
+      '@next/swc-darwin-arm64': 14.0.4
+      '@next/swc-darwin-x64': 14.0.4
+      '@next/swc-linux-arm64-gnu': 14.0.4
+      '@next/swc-linux-arm64-musl': 14.0.4
+      '@next/swc-linux-x64-gnu': 14.0.4
+      '@next/swc-linux-x64-musl': 14.0.4
+      '@next/swc-win32-arm64-msvc': 14.0.4
+      '@next/swc-win32-ia32-msvc': 14.0.4
+      '@next/swc-win32-x64-msvc': 14.0.4
+    transitivePeerDependencies:
+      - '@babel/core'
+      - babel-plugin-macros
+
+  /next@14.0.4(@babel/core@7.22.9)(react-dom@18.2.0)(react@18.2.0):
     resolution: {integrity: sha512-qbwypnM7327SadwFtxXnQdGiKpkuhaRLE2uq62/nRul9cj9KhQ5LhHmlziTNqUidZotw/Q1I9OjirBROdUJNgA==}
     engines: {node: '>=18.17.0'}
     peerDependencies:
@@ -10030,7 +13271,6 @@ packages:
         optional: true
     dependencies:
       '@next/env': 14.0.4
-      '@opentelemetry/api': 1.1.0
       '@swc/helpers': 0.5.2
       busboy: 1.6.0
       caniuse-lite: 1.0.30001568
@@ -10038,7 +13278,7 @@ packages:
       postcss: 8.4.31
       react: 18.2.0
       react-dom: 18.2.0(react@18.2.0)
-      styled-jsx: 5.1.1(@babel/core@7.21.8)(react@18.2.0)
+      styled-jsx: 5.1.1(@babel/core@7.22.9)(react@18.2.0)
       watchpack: 2.4.0
     optionalDependencies:
       '@next/swc-darwin-arm64': 14.0.4
@@ -10053,8 +13293,9 @@ packages:
     transitivePeerDependencies:
       - '@babel/core'
       - babel-plugin-macros
+    dev: true
 
-  /next@14.0.4(@babel/core@7.22.9)(react-dom@18.2.0)(react@18.2.0):
+  /next@14.0.4(@babel/core@7.23.7)(react-dom@18.2.0)(react@18.2.0):
     resolution: {integrity: sha512-qbwypnM7327SadwFtxXnQdGiKpkuhaRLE2uq62/nRul9cj9KhQ5LhHmlziTNqUidZotw/Q1I9OjirBROdUJNgA==}
     engines: {node: '>=18.17.0'}
     peerDependencies:
@@ -10076,7 +13317,7 @@ packages:
       postcss: 8.4.31
       react: 18.2.0
       react-dom: 18.2.0(react@18.2.0)
-      styled-jsx: 5.1.1(@babel/core@7.22.9)(react@18.2.0)
+      styled-jsx: 5.1.1(@babel/core@7.23.7)(react@18.2.0)
       watchpack: 2.4.0
     optionalDependencies:
       '@next/swc-darwin-arm64': 14.0.4
@@ -10099,6 +13340,10 @@ packages:
       tslib: 2.5.0
     dev: true
 
+  /nocache@3.0.4:
+    resolution: {integrity: sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==}
+    engines: {node: '>=12.0.0'}
+
   /nock@13.4.0:
     resolution: {integrity: sha512-W8NVHjO/LCTNA64yxAPHV/K47LpGYcVzgKd3Q0n6owhwvD0Dgoterc25R4rnZbckJEb6Loxz1f5QMuJpJnbSyQ==}
     engines: {node: '>= 10.13'}
@@ -10110,12 +13355,24 @@ packages:
       - supports-color
     dev: true
 
+  /node-abort-controller@3.1.1:
+    resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==}
+
   /node-addon-api@2.0.2:
     resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==}
 
+  /node-addon-api@5.1.0:
+    resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==}
+
   /node-addon-api@7.0.0:
     resolution: {integrity: sha512-vgbBJTS4m5/KkE16t5Ly0WW9hz46swAstv0hYYwMtbG7AznRhNyfLRe8HZAiWIpcHzoO7HxhLuBQj9rJ/Ho0ZA==}
 
+  /node-dir@0.1.17:
+    resolution: {integrity: sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==}
+    engines: {node: '>= 0.10.5'}
+    dependencies:
+      minimatch: 3.1.2
+
   /node-domexception@1.0.0:
     resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==}
     engines: {node: '>=10.5.0'}
@@ -10124,8 +13381,8 @@ packages:
   /node-fetch-native@1.4.1:
     resolution: {integrity: sha512-NsXBU0UgBxo2rQLOeWNZqS3fvflWePMECr8CoSWoSTqCqGbVVsvl9vZu1HfQicYN0g5piV9Gh8RTEvo/uP752w==}
 
-  /node-fetch@2.6.11:
-    resolution: {integrity: sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==}
+  /node-fetch@2.6.7:
+    resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==}
     engines: {node: 4.x || >=6.0.0}
     peerDependencies:
       encoding: ^0.1.0
@@ -10135,8 +13392,8 @@ packages:
     dependencies:
       whatwg-url: 5.0.0
 
-  /node-fetch@2.6.7:
-    resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==}
+  /node-fetch@2.7.0:
+    resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==}
     engines: {node: 4.x || >=6.0.0}
     peerDependencies:
       encoding: ^0.1.0
@@ -10162,16 +13419,23 @@ packages:
   /node-gyp-build@4.6.0:
     resolution: {integrity: sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==}
 
+  /node-int64@0.4.0:
+    resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==}
+
   /node-releases@2.0.10:
     resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==}
     dev: false
 
   /node-releases@2.0.13:
     resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==}
+    dev: true
 
   /node-releases@2.0.14:
     resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==}
-    dev: false
+
+  /node-stream-zip@1.15.0:
+    resolution: {integrity: sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==}
+    engines: {node: '>=0.12.0'}
 
   /normalize-package-data@2.5.0:
     resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==}
@@ -10213,6 +13477,9 @@ packages:
     dependencies:
       path-key: 4.0.0
 
+  /nullthrows@1.1.1:
+    resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==}
+
   /nwsapi@2.2.7:
     resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==}
     dev: true
@@ -10220,10 +13487,20 @@ packages:
   /oauth@0.9.15:
     resolution: {integrity: sha512-a5ERWK1kh38ExDEfoO6qUHJb32rd7aYmPHuyCu3Fta/cnICvYmgd2uhuKXvPD+PXB+gCEYYEaQdIRAjCOwAKNA==}
 
+  /ob1@0.80.3:
+    resolution: {integrity: sha512-lKJ/Wp6eSyYKYKYds1lgiDRtD2j9nNhrhx4hwegxYXTBkWz4dqermZV+Bq0iw0SszUIb+fC+btNSXwc4AG1lBQ==}
+    engines: {node: '>=18'}
+
+  /obj-multiplex@1.0.0:
+    resolution: {integrity: sha512-0GNJAOsHoBHeNTvl5Vt6IWnpUEcc3uSRxzBri7EDyIcMgYvnY2JL2qdeV5zTMjWQX5OHcD5amcW2HFfDh0gjIA==}
+    dependencies:
+      end-of-stream: 1.4.4
+      once: 1.4.0
+      readable-stream: 2.3.8
+
   /object-assign@4.1.1:
     resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
     engines: {node: '>=0.10.0'}
-    dev: true
 
   /object-hash@2.2.0:
     resolution: {integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==}
@@ -10231,6 +13508,7 @@ packages:
 
   /object-inspect@1.12.3:
     resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==}
+    dev: true
 
   /object-inspect@1.13.1:
     resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==}
@@ -10316,6 +13594,22 @@ packages:
   /on-exit-leak-free@0.2.0:
     resolution: {integrity: sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==}
 
+  /on-finished@2.3.0:
+    resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==}
+    engines: {node: '>= 0.8'}
+    dependencies:
+      ee-first: 1.1.1
+
+  /on-finished@2.4.1:
+    resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==}
+    engines: {node: '>= 0.8'}
+    dependencies:
+      ee-first: 1.1.1
+
+  /on-headers@1.0.2:
+    resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==}
+    engines: {node: '>= 0.8'}
+
   /once@1.4.0:
     resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
     dependencies:
@@ -10338,6 +13632,27 @@ packages:
     engines: {node: '>= 14.6.0'}
     dev: true
 
+  /open@6.4.0:
+    resolution: {integrity: sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==}
+    engines: {node: '>=8'}
+    dependencies:
+      is-wsl: 1.1.0
+
+  /open@7.4.2:
+    resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==}
+    engines: {node: '>=8'}
+    dependencies:
+      is-docker: 2.2.1
+      is-wsl: 2.2.0
+
+  /open@8.4.2:
+    resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==}
+    engines: {node: '>=12'}
+    dependencies:
+      define-lazy-prop: 2.0.0
+      is-docker: 2.2.1
+      is-wsl: 2.2.0
+
   /open@9.1.0:
     resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==}
     engines: {node: '>=14.16'}
@@ -10368,6 +13683,20 @@ packages:
       word-wrap: 1.2.5
     dev: true
 
+  /ora@5.4.1:
+    resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==}
+    engines: {node: '>=10'}
+    dependencies:
+      bl: 4.1.0
+      chalk: 4.1.2
+      cli-cursor: 3.1.0
+      cli-spinners: 2.9.2
+      is-interactive: 1.0.0
+      is-unicode-supported: 0.1.0
+      log-symbols: 4.1.0
+      strip-ansi: 6.0.1
+      wcwidth: 1.0.1
+
   /os-tmpdir@1.0.2:
     resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==}
     engines: {node: '>=0.10.0'}
@@ -10425,6 +13754,12 @@ packages:
       yocto-queue: 1.0.0
     dev: true
 
+  /p-locate@3.0.0:
+    resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==}
+    engines: {node: '>=6'}
+    dependencies:
+      p-limit: 2.3.0
+
   /p-locate@4.1.0:
     resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==}
     engines: {node: '>=8'}
@@ -10465,7 +13800,6 @@ packages:
     engines: {node: '>=6'}
     dependencies:
       callsites: 3.1.0
-    dev: true
 
   /parse-entities@4.0.1:
     resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==}
@@ -10479,6 +13813,13 @@ packages:
       is-decimal: 2.0.1
       is-hexadecimal: 2.0.1
 
+  /parse-json@4.0.0:
+    resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==}
+    engines: {node: '>=4'}
+    dependencies:
+      error-ex: 1.3.2
+      json-parse-better-errors: 1.0.2
+
   /parse-json@5.2.0:
     resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
     engines: {node: '>=8'}
@@ -10487,7 +13828,6 @@ packages:
       error-ex: 1.3.2
       json-parse-even-better-errors: 2.3.1
       lines-and-columns: 1.2.4
-    dev: true
 
   /parse-numeric-range@1.3.0:
     resolution: {integrity: sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==}
@@ -10503,6 +13843,10 @@ packages:
       entities: 4.5.0
     dev: true
 
+  /parseurl@1.3.3:
+    resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
+    engines: {node: '>= 0.8'}
+
   /pascal-case@3.1.2:
     resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==}
     dependencies:
@@ -10510,6 +13854,10 @@ packages:
       tslib: 2.5.0
     dev: true
 
+  /path-exists@3.0.0:
+    resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==}
+    engines: {node: '>=4'}
+
   /path-exists@4.0.0:
     resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
     engines: {node: '>=8'}
@@ -10517,7 +13865,6 @@ packages:
   /path-is-absolute@1.0.1:
     resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
     engines: {node: '>=0.10.0'}
-    dev: true
 
   /path-key@3.1.1:
     resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
@@ -10529,7 +13876,6 @@ packages:
 
   /path-parse@1.0.7:
     resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
-    dev: true
 
   /path-type@4.0.0:
     resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
@@ -10564,7 +13910,6 @@ packages:
   /pify@4.0.1:
     resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==}
     engines: {node: '>=6'}
-    dev: true
 
   /pify@5.0.0:
     resolution: {integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==}
@@ -10594,6 +13939,16 @@ packages:
       sonic-boom: 2.8.0
       thread-stream: 0.15.2
 
+  /pirates@4.0.6:
+    resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
+    engines: {node: '>= 6'}
+
+  /pkg-dir@3.0.0:
+    resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==}
+    engines: {node: '>=6'}
+    dependencies:
+      find-up: 3.0.0
+
   /pkg-dir@4.2.0:
     resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==}
     engines: {node: '>=8'}
@@ -10612,6 +13967,10 @@ packages:
     resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==}
     engines: {node: '>=10.13.0'}
 
+  /pony-cause@2.1.10:
+    resolution: {integrity: sha512-3IKLNXclQgkU++2fSi93sQ6BznFuxSLB11HdvZQ6JW/spahf/P1pAHBQEahr20rs0htZW0UDkM1HmA+nZkXKsw==}
+    engines: {node: '>=12.0.0'}
+
   /popmotion@11.0.3:
     resolution: {integrity: sha512-Y55FLdj3UxkR7Vl3s7Qr4e9m0onSnP8W7d/xQLsoJM40vs6UKHFdygs6SWryasTZYqugMjm3BepCF4CWXDiHgA==}
     dependencies:
@@ -10677,6 +14036,9 @@ packages:
   /preact@10.13.2:
     resolution: {integrity: sha512-q44QFLhOhty2Bd0Y46fnYW0gD/cbVM9dUVtNTDKPcdXSMA7jfY+Jpd6rk3GB0lcQss0z5s/6CmVP0Z/hV+g6pw==}
 
+  /preact@10.19.3:
+    resolution: {integrity: sha512-nHHTeFVBTHRGxJXKkKu5hT8C/YWBkPso4/Gad6xuj5dbptt9iF9NZr9pHbPhBrnT2klheu7mHTxTZ/LjwJiEiQ==}
+
   /preferred-pm@3.0.3:
     resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==}
     engines: {node: '>=10'}
@@ -10697,6 +14059,15 @@ packages:
     engines: {node: '>=10.13.0'}
     dev: true
 
+  /pretty-format@26.6.2:
+    resolution: {integrity: sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==}
+    engines: {node: '>= 10'}
+    dependencies:
+      '@jest/types': 26.6.2
+      ansi-regex: 5.0.1
+      ansi-styles: 4.3.0
+      react-is: 17.0.2
+
   /pretty-format@27.5.1:
     resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==}
     engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
@@ -10706,14 +14077,13 @@ packages:
       react-is: 17.0.2
     dev: true
 
-  /pretty-format@29.6.0:
-    resolution: {integrity: sha512-XH+D4n7Ey0iSR6PdAnBs99cWMZdGsdKrR33iUHQNr79w1szKTCIZDVdXuccAsHVwDBp0XeWPfNEoaxP9EZgRmQ==}
+  /pretty-format@29.7.0:
+    resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==}
     engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
     dependencies:
-      '@jest/schemas': 29.6.0
+      '@jest/schemas': 29.6.3
       ansi-styles: 5.2.0
       react-is: 18.2.0
-    dev: true
 
   /pretty-format@3.8.0:
     resolution: {integrity: sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew==}
@@ -10723,16 +14093,26 @@ packages:
     engines: {node: '>=6'}
     dev: false
 
+  /process-nextick-args@1.0.7:
+    resolution: {integrity: sha512-yN0WQmuCX63LP/TMvAg31nvT6m4vDqJEiiv2CAZqWOGNWutc9DfDk1NPYYmKUFmaVM2UwDowH4u5AHWYP/jxKw==}
+
+  /process-nextick-args@2.0.1:
+    resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
+
   /process-warning@1.0.0:
     resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==}
 
+  /promise@8.3.0:
+    resolution: {integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==}
+    dependencies:
+      asap: 2.0.6
+
   /prompts@2.4.2:
     resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==}
     engines: {node: '>= 6'}
     dependencies:
       kleur: 3.0.3
       sisteransi: 1.0.5
-    dev: false
 
   /prop-types@15.8.1:
     resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
@@ -10740,7 +14120,6 @@ packages:
       loose-envify: 1.4.0
       object-assign: 4.1.1
       react-is: 16.13.1
-    dev: true
 
   /propagate@2.0.1:
     resolution: {integrity: sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==}
@@ -10797,6 +14176,12 @@ packages:
     resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==}
     dev: true
 
+  /pump@3.0.0:
+    resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==}
+    dependencies:
+      end-of-stream: 1.4.4
+      once: 1.4.0
+
   /punycode@2.3.0:
     resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==}
     engines: {node: '>=6'}
@@ -10806,6 +14191,17 @@ packages:
     engines: {node: '>=6'}
     dev: true
 
+  /qr-code-styling@1.6.0-rc.1:
+    resolution: {integrity: sha512-ModRIiW6oUnsP18QzrRYZSc/CFKFKIdj7pUs57AEVH20ajlglRpN3HukjHk0UbNMTlKGuaYl7Gt6/O5Gg2NU2Q==}
+    dependencies:
+      qrcode-generator: 1.4.4
+
+  /qrcode-generator@1.4.4:
+    resolution: {integrity: sha512-HM7yY8O2ilqhmULxGMpcHSF1EhJJ9yBj8gvDEuZ6M+KGJ0YY2hKpnXvRD+hZPLrDVck3ExIGhmPtSdcjC+guuw==}
+
+  /qrcode-terminal-nooctal@0.12.1:
+    resolution: {integrity: sha512-jy/kkD0iIMDjTucB+5T6KBsnirlhegDH47vHgrj5MejchSQmi/EAMM0xMFeePgV9CJkkAapNakpVUWYgHvtdKg==}
+
   /qrcode@1.5.3:
     resolution: {integrity: sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==}
     engines: {node: '>=10.13.0'}
@@ -10815,21 +14211,6 @@ packages:
       pngjs: 5.0.0
       yargs: 15.4.1
 
-  /qs@6.11.1:
-    resolution: {integrity: sha512-0wsrzgTz/kAVIeuxSjnpGC56rzYtr6JT/2BwEvMaPhFIoYa1aGO8LbzuU1R0uUYQkLpWBTOj0l/CLAJB64J6nQ==}
-    engines: {node: '>=0.6'}
-    dependencies:
-      side-channel: 1.0.4
-
-  /query-string@6.14.1:
-    resolution: {integrity: sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==}
-    engines: {node: '>=6'}
-    dependencies:
-      decode-uri-component: 0.2.2
-      filter-obj: 1.1.0
-      split-on-first: 1.1.0
-      strict-uri-encode: 2.0.0
-
   /query-string@7.1.3:
     resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==}
     engines: {node: '>=6'}
@@ -10846,6 +14227,11 @@ packages:
   /queue-microtask@1.2.3:
     resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
 
+  /queue@6.0.2:
+    resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==}
+    dependencies:
+      inherits: 2.0.4
+
   /quick-format-unescaped@4.0.4:
     resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==}
 
@@ -10861,6 +14247,20 @@ packages:
     resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==}
     dependencies:
       safe-buffer: 5.2.1
+    dev: false
+
+  /range-parser@1.2.1:
+    resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==}
+    engines: {node: '>= 0.6'}
+
+  /react-devtools-core@4.28.5:
+    resolution: {integrity: sha512-cq/o30z9W2Wb4rzBefjv5fBalHU0rJGZCHAkf/RHSBWSSYwh8PlQTqqOJmgIIbBtpj27T6FIPXeomIjZtCNVqA==}
+    dependencies:
+      shell-quote: 1.8.1
+      ws: 7.5.9
+    transitivePeerDependencies:
+      - bufferutil
+      - utf-8-validate
 
   /react-dom@18.2.0(react@18.2.0):
     resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==}
@@ -10871,22 +14271,157 @@ packages:
       react: 18.2.0
       scheduler: 0.23.0
 
+  /react-i18next@13.5.0(i18next@22.5.1)(react-dom@18.2.0)(react-native@0.73.1)(react@18.2.0):
+    resolution: {integrity: sha512-CFJ5NDGJ2MUyBohEHxljOq/39NQ972rh1ajnadG9BjTk+UXbHLq4z5DKEbEQBDoIhUmmbuS/fIMJKo6VOax1HA==}
+    peerDependencies:
+      i18next: '>= 23.2.3'
+      react: '>= 16.8.0'
+      react-dom: '*'
+      react-native: '*'
+    peerDependenciesMeta:
+      react-dom:
+        optional: true
+      react-native:
+        optional: true
+    dependencies:
+      '@babel/runtime': 7.23.4
+      html-parse-stringify: 3.0.1
+      i18next: 22.5.1
+      react: 18.2.0
+      react-dom: 18.2.0(react@18.2.0)
+      react-native: 0.73.1(@babel/core@7.23.7)(@babel/preset-env@7.23.7)(react@18.2.0)
+
   /react-is@16.13.1:
     resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
-    dev: true
 
   /react-is@17.0.2:
     resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==}
-    dev: true
 
   /react-is@18.2.0:
     resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==}
-    dev: true
 
   /react-merge-refs@1.1.0:
     resolution: {integrity: sha512-alTKsjEL0dKH/ru1Iyn7vliS2QRcBp9zZPGoWxUOvRGWPUYgjo+V01is7p04It6KhgrzhJGnIj9GgX8W4bZoCQ==}
     dev: false
 
+  /react-native-webview@11.26.1(react-native@0.73.1)(react@18.2.0):
+    resolution: {integrity: sha512-hC7BkxOpf+z0UKhxFSFTPAM4shQzYmZHoELa6/8a/MspcjEP7ukYKpuSUTLDywQditT8yI9idfcKvfZDKQExGw==}
+    peerDependencies:
+      react: '*'
+      react-native: '*'
+    dependencies:
+      escape-string-regexp: 2.0.0
+      invariant: 2.2.4
+      react: 18.2.0
+      react-native: 0.73.1(@babel/core@7.23.7)(@babel/preset-env@7.23.7)(react@18.2.0)
+
+  /react-native@0.73.1(@babel/core@7.21.8)(@babel/preset-env@7.23.7)(react@18.2.0):
+    resolution: {integrity: sha512-nLl9O2yKRh1nMXwsk4SUiD0ddd19RqlKgNU9AU8bTK/zD2xwnVOG56YK1/22SN67niWyoeG83vVg1eTk+S6ReA==}
+    engines: {node: '>=18'}
+    hasBin: true
+    peerDependencies:
+      react: 18.2.0
+    dependencies:
+      '@jest/create-cache-key-function': 29.7.0
+      '@react-native-community/cli': 12.3.0
+      '@react-native-community/cli-platform-android': 12.3.0
+      '@react-native-community/cli-platform-ios': 12.3.0
+      '@react-native/assets-registry': 0.73.1
+      '@react-native/codegen': 0.73.2(@babel/preset-env@7.23.7)
+      '@react-native/community-cli-plugin': 0.73.11(@babel/core@7.21.8)(@babel/preset-env@7.23.7)
+      '@react-native/gradle-plugin': 0.73.4
+      '@react-native/js-polyfills': 0.73.1
+      '@react-native/normalize-colors': 0.73.2
+      '@react-native/virtualized-lists': 0.73.4(react-native@0.73.1)
+      abort-controller: 3.0.0
+      anser: 1.4.10
+      ansi-regex: 5.0.1
+      base64-js: 1.5.1
+      deprecated-react-native-prop-types: 5.0.0
+      event-target-shim: 5.0.1
+      flow-enums-runtime: 0.0.6
+      invariant: 2.2.4
+      jest-environment-node: 29.7.0
+      jsc-android: 250231.0.0
+      memoize-one: 5.2.1
+      metro-runtime: 0.80.3
+      metro-source-map: 0.80.3
+      mkdirp: 0.5.6
+      nullthrows: 1.1.1
+      pretty-format: 26.6.2
+      promise: 8.3.0
+      react: 18.2.0
+      react-devtools-core: 4.28.5
+      react-refresh: 0.14.0
+      react-shallow-renderer: 16.15.0(react@18.2.0)
+      regenerator-runtime: 0.13.11
+      scheduler: 0.24.0-canary-efb381bbf-20230505
+      stacktrace-parser: 0.1.10
+      whatwg-fetch: 3.6.20
+      ws: 6.2.2
+      yargs: 17.7.2
+    transitivePeerDependencies:
+      - '@babel/core'
+      - '@babel/preset-env'
+      - bufferutil
+      - encoding
+      - supports-color
+      - utf-8-validate
+    dev: false
+
+  /react-native@0.73.1(@babel/core@7.23.7)(@babel/preset-env@7.23.7)(react@18.2.0):
+    resolution: {integrity: sha512-nLl9O2yKRh1nMXwsk4SUiD0ddd19RqlKgNU9AU8bTK/zD2xwnVOG56YK1/22SN67niWyoeG83vVg1eTk+S6ReA==}
+    engines: {node: '>=18'}
+    hasBin: true
+    peerDependencies:
+      react: 18.2.0
+    dependencies:
+      '@jest/create-cache-key-function': 29.7.0
+      '@react-native-community/cli': 12.3.0
+      '@react-native-community/cli-platform-android': 12.3.0
+      '@react-native-community/cli-platform-ios': 12.3.0
+      '@react-native/assets-registry': 0.73.1
+      '@react-native/codegen': 0.73.2(@babel/preset-env@7.23.7)
+      '@react-native/community-cli-plugin': 0.73.11(@babel/core@7.23.7)(@babel/preset-env@7.23.7)
+      '@react-native/gradle-plugin': 0.73.4
+      '@react-native/js-polyfills': 0.73.1
+      '@react-native/normalize-colors': 0.73.2
+      '@react-native/virtualized-lists': 0.73.4(react-native@0.73.1)
+      abort-controller: 3.0.0
+      anser: 1.4.10
+      ansi-regex: 5.0.1
+      base64-js: 1.5.1
+      deprecated-react-native-prop-types: 5.0.0
+      event-target-shim: 5.0.1
+      flow-enums-runtime: 0.0.6
+      invariant: 2.2.4
+      jest-environment-node: 29.7.0
+      jsc-android: 250231.0.0
+      memoize-one: 5.2.1
+      metro-runtime: 0.80.3
+      metro-source-map: 0.80.3
+      mkdirp: 0.5.6
+      nullthrows: 1.1.1
+      pretty-format: 26.6.2
+      promise: 8.3.0
+      react: 18.2.0
+      react-devtools-core: 4.28.5
+      react-refresh: 0.14.0
+      react-shallow-renderer: 16.15.0(react@18.2.0)
+      regenerator-runtime: 0.13.11
+      scheduler: 0.24.0-canary-efb381bbf-20230505
+      stacktrace-parser: 0.1.10
+      whatwg-fetch: 3.6.20
+      ws: 6.2.2
+      yargs: 17.7.2
+    transitivePeerDependencies:
+      - '@babel/core'
+      - '@babel/preset-env'
+      - bufferutil
+      - encoding
+      - supports-color
+      - utf-8-validate
+
   /react-reconciler@0.27.0(react@18.2.0):
     resolution: {integrity: sha512-HmMDKciQjYmBRGuuhIaKA1ba/7a+UsM5FzOZsMO2JYHt9Jh8reCb7j1eDC95NOyUlKM9KRyvdx0flBuDvYSBoA==}
     engines: {node: '>=0.10.0'}
@@ -10898,6 +14433,10 @@ packages:
       scheduler: 0.21.0
     dev: false
 
+  /react-refresh@0.14.0:
+    resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==}
+    engines: {node: '>=0.10.0'}
+
   /react-remove-scroll-bar@2.3.4(@types/react@18.2.46)(react@18.2.0):
     resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==}
     engines: {node: '>=10'}
@@ -10952,6 +14491,15 @@ packages:
       use-sidecar: 1.1.2(@types/react@18.2.46)(react@18.2.0)
     dev: false
 
+  /react-shallow-renderer@16.15.0(react@18.2.0):
+    resolution: {integrity: sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==}
+    peerDependencies:
+      react: ^16.0.0 || ^17.0.0 || ^18.0.0
+    dependencies:
+      object-assign: 4.1.1
+      react: 18.2.0
+      react-is: 18.2.0
+
   /react-style-singleton@2.2.1(@types/react@18.2.46)(react@18.2.0):
     resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==}
     engines: {node: '>=10'}
@@ -11015,6 +14563,28 @@ packages:
       strip-bom: 3.0.0
     dev: true
 
+  /readable-stream@2.3.3:
+    resolution: {integrity: sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==}
+    dependencies:
+      core-util-is: 1.0.3
+      inherits: 2.0.4
+      isarray: 1.0.0
+      process-nextick-args: 1.0.7
+      safe-buffer: 5.1.2
+      string_decoder: 1.0.3
+      util-deprecate: 1.0.2
+
+  /readable-stream@2.3.8:
+    resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==}
+    dependencies:
+      core-util-is: 1.0.3
+      inherits: 2.0.4
+      isarray: 1.0.0
+      process-nextick-args: 2.0.1
+      safe-buffer: 5.1.2
+      string_decoder: 1.1.1
+      util-deprecate: 1.0.2
+
   /readable-stream@3.6.2:
     resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
     engines: {node: '>= 6'}
@@ -11029,10 +14599,22 @@ packages:
     dependencies:
       picomatch: 2.3.1
 
+  /readline@1.3.0:
+    resolution: {integrity: sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==}
+
   /real-require@0.1.0:
     resolution: {integrity: sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg==}
     engines: {node: '>= 12.13.0'}
 
+  /recast@0.21.5:
+    resolution: {integrity: sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==}
+    engines: {node: '>= 4'}
+    dependencies:
+      ast-types: 0.15.2
+      esprima: 4.0.1
+      source-map: 0.6.1
+      tslib: 2.6.2
+
   /recursive-readdir-files@2.3.1:
     resolution: {integrity: sha512-BQfYr6RUl1wdla4+F8gTFzItE52/GpYssMiq+wHIN77n8mF9wzb1M/MndkDImZSzfFjrz5tJ/S5jdV7hGolm6g==}
     engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@@ -11078,12 +14660,26 @@ packages:
       prismjs: 1.27.0
     dev: false
 
+  /regenerate-unicode-properties@10.1.1:
+    resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==}
+    engines: {node: '>=4'}
+    dependencies:
+      regenerate: 1.4.2
+
+  /regenerate@1.4.2:
+    resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==}
+
   /regenerator-runtime@0.13.11:
     resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==}
 
   /regenerator-runtime@0.14.0:
     resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==}
 
+  /regenerator-transform@0.15.2:
+    resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==}
+    dependencies:
+      '@babel/runtime': 7.23.4
+
   /regexp.prototype.flags@1.5.0:
     resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==}
     engines: {node: '>= 0.4'}
@@ -11107,6 +14703,23 @@ packages:
     engines: {node: '>=8'}
     dev: true
 
+  /regexpu-core@5.3.2:
+    resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==}
+    engines: {node: '>=4'}
+    dependencies:
+      '@babel/regjsgen': 0.8.0
+      regenerate: 1.4.2
+      regenerate-unicode-properties: 10.1.1
+      regjsparser: 0.9.1
+      unicode-match-property-ecmascript: 2.0.0
+      unicode-match-property-value-ecmascript: 2.1.0
+
+  /regjsparser@0.9.1:
+    resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==}
+    hasBin: true
+    dependencies:
+      jsesc: 0.5.0
+
   /rehype-parse@8.0.4:
     resolution: {integrity: sha512-MJJKONunHjoTh4kc3dsM1v3C9kGrrxvA3U8PxZlP2SjH8RNUSrb+lF7Y0KVaUDnGH2QZ5vAn7ulkiajM9ifuqg==}
     dependencies:
@@ -11206,10 +14819,13 @@ packages:
     resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==}
     dev: true
 
+  /resolve-from@3.0.0:
+    resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==}
+    engines: {node: '>=4'}
+
   /resolve-from@4.0.0:
     resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
     engines: {node: '>=4'}
-    dev: true
 
   /resolve-from@5.0.0:
     resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
@@ -11237,7 +14853,6 @@ packages:
       is-core-module: 2.13.1
       path-parse: 1.0.7
       supports-preserve-symlinks-flag: 1.0.0
-    dev: true
 
   /resolve@2.0.0-next.4:
     resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==}
@@ -11247,15 +14862,41 @@ packages:
       supports-preserve-symlinks-flag: 1.0.0
     dev: true
 
+  /restore-cursor@3.1.0:
+    resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==}
+    engines: {node: '>=8'}
+    dependencies:
+      onetime: 5.1.2
+      signal-exit: 3.0.7
+
   /reusify@1.0.4:
     resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
     engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
 
+  /rimraf@2.6.3:
+    resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==}
+    hasBin: true
+    dependencies:
+      glob: 7.2.3
+
   /rimraf@3.0.2:
     resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
     dependencies:
       glob: 7.2.3
-    dev: true
+
+  /rollup-plugin-visualizer@5.12.0:
+    resolution: {integrity: sha512-8/NU9jXcHRs7Nnj07PF2o4gjxmm9lXIrZ8r175bT9dK8qoLlvKTwRMArRCMgpMGlq8CTLugRvEmyMeMXIU2pNQ==}
+    engines: {node: '>=14'}
+    peerDependencies:
+      rollup: 2.x || 3.x || 4.x
+    peerDependenciesMeta:
+      rollup:
+        optional: true
+    dependencies:
+      open: 8.4.2
+      picomatch: 2.3.1
+      source-map: 0.7.4
+      yargs: 17.7.2
 
   /rollup@3.26.3:
     resolution: {integrity: sha512-7Tin0C8l86TkpcMtXvQu6saWH93nhG3dGQ1/+l5V2TDMceTxO7kDiK6GzbfLWNNxqJXm591PcEZUozZm51ogwQ==}
@@ -11284,17 +14925,6 @@ packages:
       fsevents: 2.3.3
     dev: true
 
-  /rpc-websockets@7.5.1:
-    resolution: {integrity: sha512-kGFkeTsmd37pHPMaHIgN1LVKXMi0JD782v4Ds9ZKtLlwdTKjn+CxM9A9/gLT2LaOuEcEFGL98h1QWQtlOIdW0w==}
-    dependencies:
-      '@babel/runtime': 7.23.4
-      eventemitter3: 4.0.7
-      uuid: 8.3.2
-      ws: 8.15.0(bufferutil@4.0.7)(utf-8-validate@5.0.10)
-    optionalDependencies:
-      bufferutil: 4.0.7
-      utf-8-validate: 5.0.10
-
   /rrweb-cssom@0.6.0:
     resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==}
     dev: true
@@ -11311,12 +14941,6 @@ packages:
     dependencies:
       queue-microtask: 1.2.3
 
-  /rxjs@6.6.7:
-    resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==}
-    engines: {npm: '>=2.0.0'}
-    dependencies:
-      tslib: 1.14.1
-
   /sade@1.8.1:
     resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==}
     engines: {node: '>=6'}
@@ -11334,13 +14958,12 @@ packages:
       isarray: 2.0.5
     dev: true
 
+  /safe-buffer@5.1.2:
+    resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
+
   /safe-buffer@5.2.1:
     resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
 
-  /safe-json-utils@1.1.1:
-    resolution: {integrity: sha512-SAJWGKDs50tAbiDXLf89PDwt9XYkWyANFWVzn4dTXl5QyI8t2o/bW5/OJl3lvc2WVU4MEpTo9Yz5NVFNsp+OJQ==}
-    dev: false
-
   /safe-regex-test@1.0.0:
     resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==}
     dependencies:
@@ -11375,6 +14998,11 @@ packages:
     dependencies:
       loose-envify: 1.4.0
 
+  /scheduler@0.24.0-canary-efb381bbf-20230505:
+    resolution: {integrity: sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA==}
+    dependencies:
+      loose-envify: 1.4.0
+
   /schema-utils@3.1.2:
     resolution: {integrity: sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg==}
     engines: {node: '>= 10.13.0'}
@@ -11387,6 +15015,14 @@ packages:
   /scrypt-js@3.0.1:
     resolution: {integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==}
 
+  /secp256k1@5.0.0:
+    resolution: {integrity: sha512-TKWX8xvoGHrxVdqbYeZM9w+izTF4b9z3NhSaDkdn81btvuh+ivbIMGT/zQvDtTFWhRlThpoz6LEYTr7n8A5GcA==}
+    engines: {node: '>=14.0.0'}
+    dependencies:
+      elliptic: 6.5.4
+      node-addon-api: 5.1.0
+      node-gyp-build: 4.6.0
+
   /section-matter@1.0.0:
     resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==}
     engines: {node: '>=4'}
@@ -11397,10 +15033,6 @@ packages:
 
   /semver@5.7.1:
     resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==}
-    dev: true
-
-  /semver@6.3.0:
-    resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==}
 
   /semver@6.3.1:
     resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
@@ -11418,12 +15050,47 @@ packages:
     dependencies:
       lru-cache: 6.0.0
 
+  /send@0.18.0:
+    resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==}
+    engines: {node: '>= 0.8.0'}
+    dependencies:
+      debug: 2.6.9
+      depd: 2.0.0
+      destroy: 1.2.0
+      encodeurl: 1.0.2
+      escape-html: 1.0.3
+      etag: 1.8.1
+      fresh: 0.5.2
+      http-errors: 2.0.0
+      mime: 1.6.0
+      ms: 2.1.3
+      on-finished: 2.4.1
+      range-parser: 1.2.1
+      statuses: 2.0.1
+    transitivePeerDependencies:
+      - supports-color
+
+  /serialize-error@2.1.0:
+    resolution: {integrity: sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==}
+    engines: {node: '>=0.10.0'}
+
   /serialize-javascript@6.0.1:
     resolution: {integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==}
     dependencies:
       randombytes: 2.1.0
     dev: false
 
+  /serve-static@1.15.0:
+    resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==}
+    engines: {node: '>= 0.8.0'}
+    dependencies:
+      encodeurl: 1.0.2
+      escape-html: 1.0.3
+      parseurl: 1.3.3
+      send: 0.18.0
+    transitivePeerDependencies:
+      - supports-color
+
   /set-blocking@2.0.0:
     resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==}
 
@@ -11435,7 +15102,6 @@ packages:
       get-intrinsic: 1.2.2
       gopd: 1.0.1
       has-property-descriptors: 1.0.0
-    dev: true
 
   /set-function-name@2.0.1:
     resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==}
@@ -11446,12 +15112,22 @@ packages:
       has-property-descriptors: 1.0.0
     dev: true
 
+  /setprototypeof@1.2.0:
+    resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
+
   /sha.js@2.4.11:
     resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==}
+    hasBin: true
     dependencies:
       inherits: 2.0.4
       safe-buffer: 5.2.1
 
+  /shallow-clone@3.0.1:
+    resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==}
+    engines: {node: '>=8'}
+    dependencies:
+      kind-of: 6.0.3
+
   /shebang-command@1.2.0:
     resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==}
     engines: {node: '>=0.10.0'}
@@ -11474,12 +15150,16 @@ packages:
     resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
     engines: {node: '>=8'}
 
+  /shell-quote@1.8.1:
+    resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==}
+
   /side-channel@1.0.4:
     resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==}
     dependencies:
       call-bind: 1.0.2
       get-intrinsic: 1.2.0
       object-inspect: 1.12.3
+    dev: true
 
   /siginfo@2.0.0:
     resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==}
@@ -11490,7 +15170,6 @@ packages:
 
   /sisteransi@1.0.5:
     resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}
-    dev: false
 
   /siwe@2.1.4(ethers@5.6.8):
     resolution: {integrity: sha512-Dke1Qqa3mgiLm3vjqw/+SQ7dl8WV/Pfk3AlQBF94cBFydTYhztngqYrikzE3X5UTsJ6565dfVbQptszsuYZNYg==}
@@ -11506,12 +15185,19 @@ packages:
   /slash@3.0.0:
     resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
     engines: {node: '>=8'}
-    dev: true
 
   /slash@4.0.0:
     resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==}
     engines: {node: '>=12'}
 
+  /slice-ansi@2.1.0:
+    resolution: {integrity: sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==}
+    engines: {node: '>=6'}
+    dependencies:
+      ansi-styles: 3.2.1
+      astral-regex: 1.0.0
+      is-fullwidth-code-point: 2.0.0
+
   /smartwrap@2.0.2:
     resolution: {integrity: sha512-vCsKNQxb7PnCNd2wY1WClWifAc2lwqsG8OaswpJkVJsvMGcnEntdTCDajZCkk93Ay1U3t/9puJmb525Rg5MZBA==}
     engines: {node: '>=6'}
@@ -11524,6 +15210,28 @@ packages:
       yargs: 15.4.1
     dev: true
 
+  /socket.io-client@4.7.3(bufferutil@4.0.8)(utf-8-validate@6.0.3):
+    resolution: {integrity: sha512-nU+ywttCyBitXIl9Xe0RSEfek4LneYkJxCeNnKCuhwoH4jGXO1ipIUw/VA/+Vvv2G1MTym11fzFC0SxkrcfXDw==}
+    engines: {node: '>=10.0.0'}
+    dependencies:
+      '@socket.io/component-emitter': 3.1.0
+      debug: 4.3.4
+      engine.io-client: 6.5.3(bufferutil@4.0.8)(utf-8-validate@6.0.3)
+      socket.io-parser: 4.2.4
+    transitivePeerDependencies:
+      - bufferutil
+      - supports-color
+      - utf-8-validate
+
+  /socket.io-parser@4.2.4:
+    resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==}
+    engines: {node: '>=10.0.0'}
+    dependencies:
+      '@socket.io/component-emitter': 3.1.0
+      debug: 4.3.4
+    transitivePeerDependencies:
+      - supports-color
+
   /sonic-boom@2.8.0:
     resolution: {integrity: sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==}
     dependencies:
@@ -11539,6 +15247,10 @@ packages:
       buffer-from: 1.1.2
       source-map: 0.6.1
 
+  /source-map@0.5.7:
+    resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==}
+    engines: {node: '>=0.10.0'}
+
   /source-map@0.6.1:
     resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
     engines: {node: '>=0.10.0'}
@@ -11546,7 +15258,6 @@ packages:
   /source-map@0.7.4:
     resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==}
     engines: {node: '>= 8'}
-    dev: true
 
   /sourcemap-codec@1.4.8:
     resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==}
@@ -11600,15 +15311,37 @@ packages:
 
   /sprintf-js@1.0.3:
     resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
-    dev: true
+
+  /stack-utils@2.0.6:
+    resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==}
+    engines: {node: '>=10'}
+    dependencies:
+      escape-string-regexp: 2.0.0
 
   /stackback@0.0.2:
     resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==}
     dev: true
 
+  /stackframe@1.3.4:
+    resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==}
+
+  /stacktrace-parser@0.1.10:
+    resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==}
+    engines: {node: '>=6'}
+    dependencies:
+      type-fest: 0.7.1
+
   /standard-as-callback@2.1.0:
     resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==}
 
+  /statuses@1.5.0:
+    resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==}
+    engines: {node: '>= 0.6'}
+
+  /statuses@2.0.1:
+    resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==}
+    engines: {node: '>= 0.8'}
+
   /std-env@3.3.3:
     resolution: {integrity: sha512-Rz6yejtVyWnVjC1RFvNmYL10kgjC49EOghxWn0RFqlCHGFpQx+Xe7yW3I4ceK1SGrWIGMjD5Kbue8W/udkbMJg==}
     dev: true
@@ -11623,12 +15356,6 @@ packages:
       internal-slot: 1.0.5
     dev: true
 
-  /stream-browserify@3.0.0:
-    resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==}
-    dependencies:
-      inherits: 2.0.4
-      readable-stream: 3.6.2
-
   /stream-shift@1.0.1:
     resolution: {integrity: sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==}
 
@@ -11717,6 +15444,16 @@ packages:
       es-abstract: 1.22.3
     dev: true
 
+  /string_decoder@1.0.3:
+    resolution: {integrity: sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==}
+    dependencies:
+      safe-buffer: 5.1.2
+
+  /string_decoder@1.1.1:
+    resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
+    dependencies:
+      safe-buffer: 5.1.2
+
   /string_decoder@1.3.0:
     resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
     dependencies:
@@ -11728,6 +15465,12 @@ packages:
       character-entities-html4: 2.1.0
       character-entities-legacy: 3.0.0
 
+  /strip-ansi@5.2.0:
+    resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==}
+    engines: {node: '>=6'}
+    dependencies:
+      ansi-regex: 4.1.1
+
   /strip-ansi@6.0.1:
     resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
     engines: {node: '>=8'}
@@ -11770,6 +15513,9 @@ packages:
       acorn: 8.10.0
     dev: true
 
+  /strnum@1.0.5:
+    resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==}
+
   /style-to-object@0.4.1:
     resolution: {integrity: sha512-HFpbb5gr2ypci7Qw+IOhnP2zOU7e77b+rzM+wTzXzfi1PrtBCX0E7Pk4wL4iTLnhzZ+JgEGAhX81ebTg/aYjQw==}
     dependencies:
@@ -11816,9 +15562,30 @@ packages:
       '@babel/core': 7.22.9
       client-only: 0.0.1
       react: 18.2.0
+    dev: true
+
+  /styled-jsx@5.1.1(@babel/core@7.23.7)(react@18.2.0):
+    resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==}
+    engines: {node: '>= 12.0.0'}
+    peerDependencies:
+      '@babel/core': '*'
+      babel-plugin-macros: '*'
+      react: '>= 16.8.0 || 17.x.x || ^18.0.0-0'
+    peerDependenciesMeta:
+      '@babel/core':
+        optional: true
+      babel-plugin-macros:
+        optional: true
+    dependencies:
+      '@babel/core': 7.23.7
+      client-only: 0.0.1
+      react: 18.2.0
 
-  /superstruct@0.14.2:
-    resolution: {integrity: sha512-nPewA6m9mR3d6k7WkZ8N8zpTWfenFH3q9pA2PkuiZxINr9DKB2+40wEQf0ixn8VaGuJ78AB6iWOtStI+/4FKZQ==}
+  /stylis@4.2.0:
+    resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==}
+
+  /sudo-prompt@9.2.1:
+    resolution: {integrity: sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==}
 
   /superstruct@1.0.3:
     resolution: {integrity: sha512-8iTn3oSS8nRGn+C2pgXSKPI3jmpm6FExNazNpjvqS6ZUJQCej3PUXEKM8NjHBOs54ExM+LPW/FBRhymrdcCiSg==}
@@ -11841,12 +15608,10 @@ packages:
     engines: {node: '>=10'}
     dependencies:
       has-flag: 4.0.0
-    dev: false
 
   /supports-preserve-symlinks-flag@1.0.0:
     resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
     engines: {node: '>= 0.4'}
-    dev: true
 
   /suspend-react@0.0.8(react@18.2.0):
     resolution: {integrity: sha512-ZC3r8Hu1y0dIThzsGw0RLZplnX9yXwfItcvaIzJc2VQVi8TGyGDlu92syMB5ulybfvGLHAI5Ghzlk23UBPF8xg==}
@@ -11872,6 +15637,16 @@ packages:
     resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
     engines: {node: '>=6'}
 
+  /temp-dir@2.0.0:
+    resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==}
+    engines: {node: '>=8'}
+
+  /temp@0.8.4:
+    resolution: {integrity: sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==}
+    engines: {node: '>=6.0.0'}
+    dependencies:
+      rimraf: 2.6.3
+
   /term-size@2.2.1:
     resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==}
     engines: {node: '>=8'}
@@ -11911,10 +15686,6 @@ packages:
       acorn: 8.10.0
       commander: 2.20.3
       source-map-support: 0.5.21
-    dev: false
-
-  /text-encoding-utf-8@1.0.2:
-    resolution: {integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==}
 
   /text-extensions@2.4.0:
     resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==}
@@ -11934,6 +15705,15 @@ packages:
     resolution: {integrity: sha512-gV7q7QY8rogu7HLFZR9cWnOQAUedUhu2WXAnpr2kdXZP9YDKsG/0ychwQvWkZN5PlNw9mv5MoCTin6zNTXoONg==}
     dev: false
 
+  /throat@5.0.0:
+    resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==}
+
+  /through2@2.0.5:
+    resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==}
+    dependencies:
+      readable-stream: 2.3.8
+      xtend: 4.0.2
+
   /through2@4.0.2:
     resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==}
     dependencies:
@@ -11942,6 +15722,7 @@ packages:
 
   /through@2.3.8:
     resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
+    dev: true
 
   /tinybench@2.5.0:
     resolution: {integrity: sha512-kRwSG8Zx4tjF9ZiyH4bhaebu+EDz1BOx9hOigYHlUW4xxI/wKIUQUqo018UlU4ar6ATPBsaMrdbKZ+tmPdohFA==}
@@ -11969,6 +15750,9 @@ packages:
       os-tmpdir: 1.0.2
     dev: true
 
+  /tmpl@1.0.5:
+    resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==}
+
   /to-fast-properties@2.0.0:
     resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
     engines: {node: '>=4'}
@@ -11981,6 +15765,11 @@ packages:
 
   /toggle-selection@1.0.6:
     resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==}
+    dev: false
+
+  /toidentifier@1.0.1:
+    resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
+    engines: {node: '>=0.6'}
 
   /toml@3.0.0:
     resolution: {integrity: sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==}
@@ -12037,6 +15826,9 @@ packages:
   /tslib@2.5.0:
     resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==}
 
+  /tslib@2.6.2:
+    resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
+
   /tsutils@3.21.0(typescript@5.0.4):
     resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
     engines: {node: '>= 6'}
@@ -12074,7 +15866,6 @@ packages:
   /type-detect@4.0.8:
     resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==}
     engines: {node: '>=4'}
-    dev: true
 
   /type-fest@0.13.1:
     resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==}
@@ -12096,6 +15887,10 @@ packages:
     engines: {node: '>=8'}
     dev: true
 
+  /type-fest@0.7.1:
+    resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==}
+    engines: {node: '>=8'}
+
   /type-fest@0.8.1:
     resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==}
     engines: {node: '>=8'}
@@ -12148,11 +15943,6 @@ packages:
       is-typed-array: 1.1.10
     dev: true
 
-  /typedarray-to-buffer@3.1.5:
-    resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==}
-    dependencies:
-      is-typedarray: 1.0.0
-
   /typescript@5.0.4:
     resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==}
     engines: {node: '>=12.20'}
@@ -12199,6 +15989,25 @@ packages:
   /unfetch@4.2.0:
     resolution: {integrity: sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==}
 
+  /unicode-canonical-property-names-ecmascript@2.0.0:
+    resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==}
+    engines: {node: '>=4'}
+
+  /unicode-match-property-ecmascript@2.0.0:
+    resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==}
+    engines: {node: '>=4'}
+    dependencies:
+      unicode-canonical-property-names-ecmascript: 2.0.0
+      unicode-property-aliases-ecmascript: 2.1.0
+
+  /unicode-match-property-value-ecmascript@2.1.0:
+    resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==}
+    engines: {node: '>=4'}
+
+  /unicode-property-aliases-ecmascript@2.1.0:
+    resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==}
+    engines: {node: '>=4'}
+
   /unified@10.1.2:
     resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==}
     dependencies:
@@ -12259,7 +16068,6 @@ packages:
   /universalify@0.1.2:
     resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==}
     engines: {node: '>= 4.0.0'}
-    dev: true
 
   /universalify@0.2.0:
     resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==}
@@ -12270,6 +16078,10 @@ packages:
     resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==}
     engines: {node: '>= 10.0.0'}
 
+  /unpipe@1.0.0:
+    resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
+    engines: {node: '>= 0.8'}
+
   /unstorage@1.10.1(idb-keyval@6.2.1):
     resolution: {integrity: sha512-rWQvLRfZNBpF+x8D3/gda5nUCQL2PgXy2jNG4U7/Rc9BGEv9+CAJd0YyGCROUBKs9v49Hg8huw3aih5Bf5TAVw==}
     peerDependencies:
@@ -12358,25 +16170,14 @@ packages:
       picocolors: 1.0.0
     dev: false
 
-  /update-browserslist-db@1.0.11(browserslist@4.21.9):
-    resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==}
-    peerDependencies:
-      browserslist: '>= 4.21.0'
-    dependencies:
-      browserslist: 4.21.9
-      escalade: 3.1.1
-      picocolors: 1.0.0
-
   /update-browserslist-db@1.0.13(browserslist@4.22.2):
     resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==}
-    hasBin: true
     peerDependencies:
       browserslist: '>= 4.21.0'
     dependencies:
       browserslist: 4.22.2
       escalade: 3.1.1
       picocolors: 1.0.0
-    dev: false
 
   /uqr@0.1.2:
     resolution: {integrity: sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA==}
@@ -12455,8 +16256,8 @@ packages:
     dependencies:
       react: 18.2.0
 
-  /utf-8-validate@5.0.10:
-    resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==}
+  /utf-8-validate@6.0.3:
+    resolution: {integrity: sha512-uIuGf9TWQ/y+0Lp+KGZCMuJWc3N9BHA+l/UmHd/oUHwJJDeysyTRxNQVkbzsIWfGFbRe3OcgML/i0mvVRPOyDA==}
     engines: {node: '>=6.14.2'}
     dependencies:
       node-gyp-build: 4.6.0
@@ -12470,9 +16271,13 @@ packages:
       inherits: 2.0.4
       is-arguments: 1.1.1
       is-generator-function: 1.0.10
-      is-typed-array: 1.1.10
+      is-typed-array: 1.1.12
       safe-buffer: 5.2.1
-      which-typed-array: 1.1.9
+      which-typed-array: 1.1.13
+
+  /utils-merge@1.0.1:
+    resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==}
+    engines: {node: '>= 0.4.0'}
 
   /uuid@8.3.2:
     resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==}
@@ -12525,6 +16330,10 @@ packages:
       react: 18.2.0
       use-sync-external-store: 1.2.0(react@18.2.0)
 
+  /vary@1.1.2:
+    resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
+    engines: {node: '>= 0.8'}
+
   /vfile-location@4.1.0:
     resolution: {integrity: sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==}
     dependencies:
@@ -12545,8 +16354,8 @@ packages:
       unist-util-stringify-position: 3.0.3
       vfile-message: 3.1.4
 
-  /viem@1.19.4(typescript@5.0.4):
-    resolution: {integrity: sha512-CvAVaOzxlu3Q/cpfrYvTRMBIPDMAkLu8aFmHLqU1Bg25DyUxp9xwoF1Ljp38q7/Rosm1OPFQ4y6K64v/VwoumQ==}
+  /viem@1.21.4(typescript@5.0.4):
+    resolution: {integrity: sha512-BNVYdSaUjeS2zKQgPs+49e5JKocfo60Ib2yiXOWBT6LuVxY1I/6fFX3waEtpXvL1Xn4qu+BVitVtMh9lyThyhQ==}
     peerDependencies:
       typescript: '>=5.0.4'
     peerDependenciesMeta:
@@ -12566,10 +16375,9 @@ packages:
       - bufferutil
       - utf-8-validate
       - zod
-    dev: false
 
-  /viem@1.21.4(typescript@5.0.4):
-    resolution: {integrity: sha512-BNVYdSaUjeS2zKQgPs+49e5JKocfo60Ib2yiXOWBT6LuVxY1I/6fFX3waEtpXvL1Xn4qu+BVitVtMh9lyThyhQ==}
+  /viem@2.4.1(typescript@5.0.4):
+    resolution: {integrity: sha512-mC1L4+ilf512YPcS+NLQgOrxroKdldEauURNmWU7BaR8qmgt1vzmQVLDcJMQ0eNEqQCiG01LhLMZ5k5oI7EKUQ==}
     peerDependencies:
       typescript: '>=5.0.4'
     peerDependenciesMeta:
@@ -12581,7 +16389,7 @@ packages:
       '@noble/hashes': 1.3.2
       '@scure/bip32': 1.3.2
       '@scure/bip39': 1.2.1
-      abitype: 0.9.8(typescript@5.0.4)
+      abitype: 1.0.0(typescript@5.0.4)
       isows: 1.0.3(ws@8.13.0)
       typescript: 5.0.4
       ws: 8.13.0
@@ -12596,7 +16404,7 @@ packages:
     dependencies:
       cac: 6.7.14
       debug: 4.3.4
-      mlly: 1.4.0
+      mlly: 1.4.2
       pathe: 1.1.1
       picocolors: 1.0.0
       source-map: 0.6.1
@@ -12803,6 +16611,13 @@ packages:
       - terser
     dev: true
 
+  /vlq@1.0.1:
+    resolution: {integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==}
+
+  /void-elements@3.1.0:
+    resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==}
+    engines: {node: '>=0.10.0'}
+
   /w3c-xmlserializer@5.0.0:
     resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==}
     engines: {node: '>=18'}
@@ -12810,25 +16625,24 @@ packages:
       xml-name-validator: 5.0.0
     dev: true
 
-  /wagmi@1.4.13(@types/react@18.2.46)(react-dom@18.2.0)(react@18.2.0)(typescript@5.0.4)(viem@1.21.4):
-    resolution: {integrity: sha512-AScVYFjqNt1wMgL99Bob7MLdhoTZ3XKiOZL5HVBdy4W1sh7QodA3gQ8IsmTuUrQ7oQaTxjiXEhwg7sWNrPBvJA==}
+  /wagmi@2.3.1(@tanstack/react-query@5.17.9)(@types/react@18.2.46)(react-dom@18.2.0)(react-native@0.73.1)(react@18.2.0)(typescript@5.0.4)(viem@2.4.1):
+    resolution: {integrity: sha512-Cwc9d1aP3EY+kvbNhP1HWgOJxFwqG3i6BaFnGlpTTEmmk8IKT7oGeb8MU39IpU03QC4C2OhViZ+hYxeXIa1dYA==}
     peerDependencies:
-      react: '>=17.0.0'
+      '@tanstack/react-query': '>=5.0.0'
+      react: '>=18'
       typescript: '>=5.0.4'
-      viem: '>=0.3.35'
+      viem: 2.x
     peerDependenciesMeta:
       typescript:
         optional: true
     dependencies:
-      '@tanstack/query-sync-storage-persister': 4.29.5
-      '@tanstack/react-query': 4.29.5(react-dom@18.2.0)(react@18.2.0)
-      '@tanstack/react-query-persist-client': 4.29.5(@tanstack/react-query@4.29.5)
-      '@wagmi/core': 1.4.13(@types/react@18.2.46)(react@18.2.0)(typescript@5.0.4)(viem@1.21.4)
-      abitype: 0.8.7(typescript@5.0.4)
+      '@tanstack/react-query': 5.17.9(react@18.2.0)
+      '@wagmi/connectors': 4.1.6(@types/react@18.2.46)(@wagmi/core@2.3.1)(react-dom@18.2.0)(react-native@0.73.1)(react@18.2.0)(typescript@5.0.4)(viem@2.4.1)
+      '@wagmi/core': 2.3.1(@types/react@18.2.46)(react@18.2.0)(typescript@5.0.4)(viem@2.4.1)
       react: 18.2.0
       typescript: 5.0.4
       use-sync-external-store: 1.2.0(react@18.2.0)
-      viem: 1.21.4(typescript@5.0.4)
+      viem: 2.4.1(typescript@5.0.4)
     transitivePeerDependencies:
       - '@azure/app-configuration'
       - '@azure/cosmos'
@@ -12840,6 +16654,7 @@ packages:
       - '@netlify/blobs'
       - '@planetscale/database'
       - '@react-native-async-storage/async-storage'
+      - '@tanstack/query-core'
       - '@types/react'
       - '@upstash/redis'
       - '@vercel/kv'
@@ -12848,42 +16663,15 @@ packages:
       - immer
       - react-dom
       - react-native
+      - rollup
       - supports-color
       - utf-8-validate
       - zod
 
-  /wagmi@1.4.7(@types/react@18.2.46)(lokijs@1.5.12)(react-dom@18.2.0)(react@18.2.0)(typescript@5.0.4)(viem@1.19.4):
-    resolution: {integrity: sha512-/k8gA9S6RnwU6Qroxs630jAFvRIx+DSKpCP1owgAEGWc7D2bAJHljwRSCRTGENz48HyJ4V3R7KYV1yImxPvM3A==}
-    peerDependencies:
-      react: '>=17.0.0'
-      typescript: '>=5.0.4'
-      viem: '>=0.3.35'
-    peerDependenciesMeta:
-      typescript:
-        optional: true
+  /walker@1.0.8:
+    resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==}
     dependencies:
-      '@tanstack/query-sync-storage-persister': 4.29.5
-      '@tanstack/react-query': 4.29.5(react-dom@18.2.0)(react@18.2.0)
-      '@tanstack/react-query-persist-client': 4.29.5(@tanstack/react-query@4.29.5)
-      '@wagmi/core': 1.4.7(@types/react@18.2.46)(lokijs@1.5.12)(react@18.2.0)(typescript@5.0.4)(viem@1.19.4)
-      abitype: 0.8.7(typescript@5.0.4)
-      react: 18.2.0
-      typescript: 5.0.4
-      use-sync-external-store: 1.2.0(react@18.2.0)
-      viem: 1.19.4(typescript@5.0.4)
-    transitivePeerDependencies:
-      - '@react-native-async-storage/async-storage'
-      - '@types/react'
-      - bufferutil
-      - encoding
-      - immer
-      - lokijs
-      - react-dom
-      - react-native
-      - supports-color
-      - utf-8-validate
-      - zod
-    dev: false
+      makeerror: 1.0.12
 
   /watchpack@2.4.0:
     resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==}
@@ -12896,7 +16684,6 @@ packages:
     resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==}
     dependencies:
       defaults: 1.0.4
-    dev: true
 
   /web-namespaces@2.0.1:
     resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==}
@@ -12907,6 +16694,17 @@ packages:
     engines: {node: '>= 8'}
     dev: true
 
+  /webextension-polyfill-ts@0.25.0:
+    resolution: {integrity: sha512-ikQhwwHYkpBu00pFaUzIKY26I6L87DeRI+Q6jBT1daZUNuu8dSrg5U9l/ZbqdaQ1M/TTSPKeAa3kolP5liuedw==}
+    dependencies:
+      webextension-polyfill: 0.7.0
+
+  /webextension-polyfill@0.10.0:
+    resolution: {integrity: sha512-c5s35LgVa5tFaHhrZDnr3FpQpjj1BB+RXhLTYUxGqBVN460HkbM8TBtEqdXWbpTKfzwCcjAZVF7zXCYSKtcp9g==}
+
+  /webextension-polyfill@0.7.0:
+    resolution: {integrity: sha512-su48BkMLxqzTTvPSE1eWxKToPS2Tv5DLGxKexLEVpwFd6Po6N8hhSLIvG6acPAg7qERoEaDL+Y5HQJeJeml5Aw==}
+
   /webidl-conversions@3.0.1:
     resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
 
@@ -12967,6 +16765,9 @@ packages:
       iconv-lite: 0.6.3
     dev: true
 
+  /whatwg-fetch@3.6.20:
+    resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==}
+
   /whatwg-mimetype@4.0.0:
     resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==}
     engines: {node: '>=18'}
@@ -13043,7 +16844,6 @@ packages:
       for-each: 0.3.3
       gopd: 1.0.1
       has-tostringtag: 1.0.0
-    dev: true
 
   /which-typed-array@1.1.9:
     resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==}
@@ -13055,6 +16855,7 @@ packages:
       gopd: 1.0.1
       has-tostringtag: 1.0.0
       is-typed-array: 1.1.10
+    dev: true
 
   /which@1.3.1:
     resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==}
@@ -13096,11 +16897,30 @@ packages:
       ansi-styles: 4.3.0
       string-width: 4.2.3
       strip-ansi: 6.0.1
-    dev: true
 
   /wrappy@1.0.2:
     resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
 
+  /write-file-atomic@2.4.3:
+    resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==}
+    dependencies:
+      graceful-fs: 4.2.11
+      imurmurhash: 0.1.4
+      signal-exit: 3.0.7
+
+  /ws@6.2.2:
+    resolution: {integrity: sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==}
+    peerDependencies:
+      bufferutil: ^4.0.1
+      utf-8-validate: ^5.0.2
+    peerDependenciesMeta:
+      bufferutil:
+        optional: true
+      utf-8-validate:
+        optional: true
+    dependencies:
+      async-limiter: 1.0.1
+
   /ws@7.4.6:
     resolution: {integrity: sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==}
     engines: {node: '>=8.3.0'}
@@ -13125,6 +16945,21 @@ packages:
       utf-8-validate:
         optional: true
 
+  /ws@8.11.0(bufferutil@4.0.8)(utf-8-validate@6.0.3):
+    resolution: {integrity: sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==}
+    engines: {node: '>=10.0.0'}
+    peerDependencies:
+      bufferutil: ^4.0.1
+      utf-8-validate: ^5.0.2
+    peerDependenciesMeta:
+      bufferutil:
+        optional: true
+      utf-8-validate:
+        optional: true
+    dependencies:
+      bufferutil: 4.0.8
+      utf-8-validate: 6.0.3
+
   /ws@8.13.0:
     resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==}
     engines: {node: '>=10.0.0'}
@@ -13137,7 +16972,7 @@ packages:
       utf-8-validate:
         optional: true
 
-  /ws@8.15.0(bufferutil@4.0.7)(utf-8-validate@5.0.10):
+  /ws@8.15.0:
     resolution: {integrity: sha512-H/Z3H55mrcrgjFwI+5jKavgXvwQLtfPCUEp6pi35VhoB0pfcHnSoyuTzkBEZpzq49g1193CUEwIvmsjcotenYw==}
     engines: {node: '>=10.0.0'}
     peerDependencies:
@@ -13148,9 +16983,7 @@ packages:
         optional: true
       utf-8-validate:
         optional: true
-    dependencies:
-      bufferutil: 4.0.7
-      utf-8-validate: 5.0.10
+    dev: true
 
   /xml-name-validator@5.0.0:
     resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==}
@@ -13161,6 +16994,10 @@ packages:
     resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==}
     dev: true
 
+  /xmlhttprequest-ssl@2.0.0:
+    resolution: {integrity: sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==}
+    engines: {node: '>=0.4.0'}
+
   /xtend@4.0.2:
     resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==}
     engines: {node: '>=0.4'}
@@ -13171,7 +17008,6 @@ packages:
   /y18n@5.0.8:
     resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
     engines: {node: '>=10'}
-    dev: true
 
   /yallist@2.1.2:
     resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==}
@@ -13186,12 +17022,10 @@ packages:
   /yaml@1.10.2:
     resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
     engines: {node: '>= 6'}
-    dev: true
 
   /yaml@2.2.2:
     resolution: {integrity: sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==}
     engines: {node: '>= 14'}
-    dev: true
 
   /yargs-parser@18.1.3:
     resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==}
@@ -13208,7 +17042,6 @@ packages:
   /yargs-parser@21.1.1:
     resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
     engines: {node: '>=12'}
-    dev: true
 
   /yargs@15.4.1:
     resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==}
@@ -13250,7 +17083,6 @@ packages:
       string-width: 4.2.3
       y18n: 5.0.8
       yargs-parser: 21.1.1
-    dev: true
 
   /yocto-queue@0.1.0:
     resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
@@ -13277,18 +17109,22 @@ packages:
       react: 18.2.0
     dev: false
 
-  /zustand@4.3.8(react@18.2.0):
-    resolution: {integrity: sha512-4h28KCkHg5ii/wcFFJ5Fp+k1J3gJoasaIbppdgZFO4BPJnsNxL0mQXBSFgOgAdCdBj35aDTPvdAJReTMntFPGg==}
+  /zustand@4.4.1(@types/react@18.2.46)(react@18.2.0):
+    resolution: {integrity: sha512-QCPfstAS4EBiTQzlaGP1gmorkh/UL1Leaj2tdj+zZCZ/9bm0WS7sI2wnfD5lpOszFqWJ1DcPnGoY8RDL61uokw==}
     engines: {node: '>=12.7.0'}
     peerDependencies:
+      '@types/react': '>=16.8'
       immer: '>=9.0'
       react: '>=16.8'
     peerDependenciesMeta:
+      '@types/react':
+        optional: true
       immer:
         optional: true
       react:
         optional: true
     dependencies:
+      '@types/react': 18.2.46
       react: 18.2.0
       use-sync-external-store: 1.2.0(react@18.2.0)
 
diff --git a/site/components/Demo/WalletButton.tsx b/site/components/Demo/WalletButton.tsx
index 8336fc23ea..7bec409c90 100644
--- a/site/components/Demo/WalletButton.tsx
+++ b/site/components/Demo/WalletButton.tsx
@@ -11,7 +11,7 @@ import { walletButtons } from './WalletButton.css';
 export function WalletButtonDemo() {
   const { locale } = useRouter() as { locale: Locale };
   return (
-    <RainbowKitProvider chains={[]} locale={locale}>
+    <RainbowKitProvider locale={locale}>
       <Box className={walletButtons} id="wallet-button-demo">
         <Box alignItems={'flex-start'}>
           <RKWalletButton wallet="rainbow" />
diff --git a/site/components/Header/Header.tsx b/site/components/Header/Header.tsx
index 216f08c35f..14ad50e454 100644
--- a/site/components/Header/Header.tsx
+++ b/site/components/Header/Header.tsx
@@ -7,7 +7,6 @@ import {
 } from '@rainbow-me/rainbowkit';
 import { Badge } from 'components/Badge/Badge';
 import { Box } from 'components/Box/Box';
-import { chains } from 'components/Provider/Provider';
 import { Text } from 'components/Text/Text';
 import { vars } from 'css/vars.css';
 import NextLink from 'next/link';
@@ -63,7 +62,6 @@ export function Header({
 
         <Box style={{ marginLeft: 'auto' }}>
           <RainbowKitProvider
-            chains={chains}
             theme={
               darkMode
                 ? darkTheme({ accentColor: vars.colors.blue })
diff --git a/site/components/Playground/Playground.tsx b/site/components/Playground/Playground.tsx
index 1ad4ac9e60..4d3ac7376f 100644
--- a/site/components/Playground/Playground.tsx
+++ b/site/components/Playground/Playground.tsx
@@ -10,7 +10,6 @@ import {
 import clsx from 'clsx';
 import { Box } from 'components/Box/Box';
 import { MeshGradient } from 'components/MeshGradient/MeshGradient';
-import { Provider, chains } from 'components/Provider/Provider';
 import { Text } from 'components/Text/Text';
 import { Wrapper } from 'components/Wrapper/Wrapper';
 import { motion } from 'framer-motion';
@@ -145,68 +144,65 @@ export function Playground() {
           </Text>
         </Wrapper>
 
-        <Provider>
-          <RainbowKitProvider
-            chains={chains}
-            id="playground"
-            modalSize={modalSize}
-            theme={selectedTheme}
-            locale={locale}
+        <RainbowKitProvider
+          id="playground"
+          modalSize={modalSize}
+          theme={selectedTheme}
+          locale={locale}
+        >
+          <Box
+            marginX={{ xs: '0', md: 'auto' }}
+            marginY={{ xs: '9', md: '11' }}
+            paddingX="10"
+            style={{
+              maxWidth: 'fit-content',
+              userSelect: 'none',
+            }}
           >
             <Box
-              marginX={{ xs: '0', md: 'auto' }}
-              marginY={{ xs: '9', md: '11' }}
-              paddingX="10"
+              display={{ xs: 'none', md: 'flex' }}
               style={{
-                maxWidth: 'fit-content',
-                userSelect: 'none',
+                height: 500,
+                alignItems: 'center',
+                justifyContent: 'center',
               }}
             >
-              <Box
-                display={{ xs: 'none', md: 'flex' }}
-                style={{
-                  height: 500,
-                  alignItems: 'center',
-                  justifyContent: 'center',
-                }}
-              >
-                <div style={{ position: 'relative' }}>
-                  <div
-                    className={dialogContent}
-                    style={
-                      isCompact
-                        ? {}
-                        : {
-                            width: 712,
-                          }
-                    }
-                  >
-                    <DesktopOptions onClose={() => {}} />
-                  </div>
-                  {/* This div is placed on top of rainbowkit to make it non-interactive.
+              <div style={{ position: 'relative' }}>
+                <div
+                  className={dialogContent}
+                  style={
+                    isCompact
+                      ? {}
+                      : {
+                          width: 712,
+                        }
+                  }
+                >
+                  <DesktopOptions onClose={() => {}} />
+                </div>
+                {/* This div is placed on top of rainbowkit to make it non-interactive.
                   pointer-events: none; was forcing scrollbar to show:
                   https://linear.app/rainbow/issue/RNBW-3686/site-playground-wallet-list-showing-a-scrollbar */}
-                  <div style={{ position: 'absolute', inset: 0 }} />
-                </div>
-              </Box>
+                <div style={{ position: 'absolute', inset: 0 }} />
+              </div>
+            </Box>
 
-              <Box display={{ md: 'none' }}>
-                <div style={{ position: 'relative' }}>
-                  <div
-                    className={clsx(dialogContent)}
-                    style={{ maxWidth: '100%' }}
-                  >
-                    <DesktopOptions onClose={() => {}} />
-                  </div>
-                  {/* This div is placed on top of rainbowkit to make it non-interactive.
+            <Box display={{ md: 'none' }}>
+              <div style={{ position: 'relative' }}>
+                <div
+                  className={clsx(dialogContent)}
+                  style={{ maxWidth: '100%' }}
+                >
+                  <DesktopOptions onClose={() => {}} />
+                </div>
+                {/* This div is placed on top of rainbowkit to make it non-interactive.
                   pointer-events: none; was forcing scrollbar to show:
                   https://linear.app/rainbow/issue/RNBW-3686/site-playground-wallet-list-showing-a-scrollbar */}
-                  <div style={{ position: 'absolute', inset: 0 }} />
-                </div>
-              </Box>
+                <div style={{ position: 'absolute', inset: 0 }} />
+              </div>
             </Box>
-          </RainbowKitProvider>
-        </Provider>
+          </Box>
+        </RainbowKitProvider>
 
         <Box
           marginX={{ xs: '0', md: 'auto' }}
diff --git a/site/components/Provider/Provider.tsx b/site/components/Provider/Provider.tsx
index e6156a21e9..f6d5496a91 100644
--- a/site/components/Provider/Provider.tsx
+++ b/site/components/Provider/Provider.tsx
@@ -6,8 +6,9 @@ import {
   omniWallet,
   trustWallet,
 } from '@rainbow-me/rainbowkit/wallets';
+import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
 import React from 'react';
-import { WagmiConfig } from 'wagmi';
+import { http, WagmiProvider } from 'wagmi';
 import {
   arbitrum,
   base,
@@ -18,36 +19,47 @@ import {
   zora,
 } from 'wagmi/chains';
 
-export const chains = [mainnet, polygon, optimism, arbitrum, base, zora, bsc];
-
 const projectId =
   process.env.NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID ?? 'YOUR_PROJECT_ID';
 
-const { wallets } = getDefaultWallets({
-  appName: 'rainbowkit.com',
-  projectId,
-  chains,
-});
+const transports = {
+  [mainnet.id]: http(),
+  [polygon.id]: http(),
+  [optimism.id]: http(),
+  [arbitrum.id]: http(),
+  [base.id]: http(),
+  [zora.id]: http(),
+  [bsc.id]: http(),
+};
+
+const { wallets } = getDefaultWallets();
 
-const wagmiConfig = getDefaultConfig({
+const config = getDefaultConfig({
   appName: 'rainbowkit.com',
   projectId,
-  chains,
+  chains: [mainnet, polygon, optimism, arbitrum, base, zora, bsc],
+  transports,
   wallets: [
     ...wallets,
     {
       groupName: 'More',
       wallets: [
-        argentWallet({ chains, projectId }),
-        trustWallet({ chains, projectId }),
-        omniWallet({ chains, projectId }),
-        imTokenWallet({ chains, projectId }),
-        ledgerWallet({ chains, projectId }),
+        argentWallet,
+        trustWallet,
+        omniWallet,
+        imTokenWallet,
+        ledgerWallet,
       ],
     },
   ],
 });
 
+const client = new QueryClient();
+
 export function Provider({ children }) {
-  return <WagmiConfig config={wagmiConfig}>{children}</WagmiConfig>;
+  return (
+    <WagmiProvider config={config}>
+      <QueryClientProvider client={client}>{children}</QueryClientProvider>
+    </WagmiProvider>
+  );
 }
diff --git a/site/package.json b/site/package.json
index 2327cecc26..29e171c50e 100644
--- a/site/package.json
+++ b/site/package.json
@@ -35,8 +35,9 @@
     "three": "^0.139.2",
     "unified": "10.1.2",
     "unist-util-visit": "4.1.0",
-    "viem": "~1.21.4",
-    "wagmi": "~1.4.13"
+    "viem": "^2.4.1",
+    "wagmi": "^2.3.1",
+    "@tanstack/react-query": "^5.17.9"
   },
   "devDependencies": {
     "contentlayer": "0.2.9",
@@ -52,4 +53,4 @@
   "keywords": [],
   "author": "",
   "license": "ISC"
-}
\ No newline at end of file
+}
diff --git a/tsconfig.json b/tsconfig.json
index a363a39c62..718b449d4a 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -2,10 +2,10 @@
   "compilerOptions": {
     "module": "ESNext",
     "target": "ES2019",
+    "preserveSymlinks": false,
     "moduleResolution": "node",
     "esModuleInterop": true,
     "isolatedModules": true,
-    "preserveSymlinks": true,
     "declaration": true,
     "declarationDir": "dist",
     "jsx": "preserve",