@1llet.xyz/erc4337-gasless-sdk 0.4.57 → 0.4.58
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +19 -1
- package/dist/index.d.ts +19 -1
- package/dist/index.js +89 -3
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +89 -5
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/constants/bundler.ts","../src/chains/Evm/Base.ts","../src/chains/Evm/Gnosis.ts","../src/chains/Evm/Optimism.ts","../src/chains/Evm/Avalanche.ts","../src/chains/Evm/Binance.ts","../src/chains/Evm/Polygon.ts","../src/chains/Evm/Arbitrum.ts","../src/chains/Evm/Unichain.ts","../src/chains/Evm/Monad.ts","../src/chains/NoEvm/Stellar.ts","../src/services/StellarService.ts","../src/constants/facilitator.ts","../src/constants/abis.ts","../src/utils/cctp.ts","../src/chains/Evm/WorldChain.ts","../src/chains/index.ts","../src/constants/chainsInformation.ts","../src/services/cctp.ts","../src/services/near.ts","../src/services/stargate.ts","../src/services/TransferManager.ts","../src/constants.ts","../src/BundlerClient.ts","../src/TokenService.ts","../src/UserOpBuilder.ts","../src/AccountAbstraction.ts","../src/chains.ts","../src/chains/Evm/BaseSepolia.ts","../src/constants/chains.ts","../src/index.ts"],"names":["base","gnosis","optimism","avalanche","bsc","polygon","arbitrum","unichain","monad","STELLAR","Networks","StellarService","StellarSdk","worldchain","axios","privateKeyToAccount","createPublicClient","http","createWalletClient","maxUint256","CCTPStrategy","init_cctp","padHex","QuoteRequest","OneClickService","NearStrategy","OpenAPI","FACILITATOR_NETWORKS","TransferManager","StargateStrategy","encodeFunctionData","encodeAbiParameters","keccak256","hash","decodeErrorResult","baseSepolia","BASE_SEPOLIA","optimismSepolia"],"mappings":"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","file":"index.js","sourcesContent":["export const DEFAULT_BUNDLER_URL = \"https://bundler-erc-4337.vercel.app\";\nexport const BUNDLER_URL = process.env.NEXT_PUBLIC_BUNDLER_URL || process.env.BUNDLER_URL || DEFAULT_BUNDLER_URL;\n","import { base } from \"viem/chains\";\nimport { ChainConfig } from \"../../types/chain.js\";\nimport { BUNDLER_URL } from \"../../constants/bundler\";\n\nexport const BASE: ChainConfig = {\n assets: [\n {\n name: \"USDC\",\n decimals: 6,\n address: \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n coingeckoId: \"usd-coin\",\n supportsStargate: true\n },\n {\n name: \"ETH\",\n decimals: 18,\n address: \"0x0000000000000000000000000000000000000000\",\n coingeckoId: \"ethereum\"\n }\n ],\n evm: {\n chain: base,\n rpcUrl: \"https://base-mainnet.g.alchemy.com/v2/49fUGmuW05ynCui0VEvDN\",\n supports7702: true,\n erc4337: false,\n bundlerUrl: `${BUNDLER_URL}/rpc?chain=base`,\n entryPointAddress: \"0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789\",\n factoryAddress: \"0xe2584152891E4769025807DEa0cD611F135aDC68\",\n paymasterAddress: \"0x1e13Eb16C565E3f3FDe49A011755e50410bb1F95\"\n },\n crossChainInformation: {\n circleInformation: {\n supportCirclePaymaster: true,\n cCTPInformation: {\n supportCCTP: true,\n domain: 6,\n },\n aproxFromFee: 0,\n },\n nearIntentInformation: {\n support: true,\n assetsId: [\n {\n assetId: \"nep141:base-0x833589fcd6edb6e08f4c7c32d4f71b54bda02913.omft.near\",\n name: \"USDC\",\n decimals: 6\n },\n {\n assetId: \"nep141:base.omft.near\",\n name: \"ETH\",\n decimals: 18\n }\n ],\n needMemo: false\n },\n stargateInformation: {\n support: true,\n }\n }\n}\n","import { gnosis } from \"viem/chains\";\nimport { ChainConfig } from \"../../types/chain.js\";\nimport { BUNDLER_URL } from \"../../constants/bundler\";\n\nexport const GNOSIS: ChainConfig = {\n assets: [\n {\n name: \"USDC\",\n decimals: 6,\n address: \"0x2a22f9c3b484c3629090FeED35F17Ff8F88f76F0\",\n coingeckoId: \"usd-coin\"\n },\n {\n name: \"USDT\",\n decimals: 6,\n address: \"0x4ECaBa5870353805a9F068101A40E0f32ed605C6\",\n coingeckoId: \"tether\"\n },\n {\n name: \"EURe\",\n decimals: 18,\n address: \"0x420CA0f9B9b604cE0fd9C18EF134C705e5Fa3430\",\n coingeckoId: \"monerium-eur-money\"\n },\n {\n name: \"GNO\",\n decimals: 18,\n address: \"0x9C58BAcC331c9aa871AFD802DB6379a98e80CEdb\",\n coingeckoId: \"gnosis\"\n },\n {\n name: \"WETH\",\n decimals: 18,\n address: \"0x6A023CCd1ff6F2045C3309768eAd9E68F978f6e1\",\n coingeckoId: \"ethereum\"\n },\n {\n name: \"XDAI\",\n decimals: 18,\n address: \"0x0000000000000000000000000000000000000000\",\n coingeckoId: \"xdai\"\n }\n ],\n evm: {\n chain: gnosis,\n rpcUrl: gnosis.rpcUrls.default.http[0],\n supports7702: true,\n erc4337: true,\n bundlerUrl: `${BUNDLER_URL}/rpc?chain=gnosis`,\n entryPointAddress: \"0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789\",\n factoryAddress: \"0xC8a2Fb1f2E686417A131E09be3320cb5431CcD90\",\n paymasterAddress: \"0x4C36C70d68a7c26326711e8268bb163E3784fA96\",\n },\n crossChainInformation: {\n circleInformation: {\n supportCirclePaymaster: false,\n aproxFromFee: 0,\n cCTPInformation: {\n supportCCTP: false,\n domain: 0,\n },\n },\n nearIntentInformation: {\n support: true,\n assetsId: [\n {\n assetId: \"nep141:gnosis-0x2a22f9c3b484c3629090feed35f17ff8f88f76f0.omft.near\",\n name: \"USDC\",\n decimals: 6\n },\n {\n assetId: \"nep141:gnosis-0x4ecaba5870353805a9f068101a40e0f32ed605c6.omft.near\",\n name: \"USDT\",\n decimals: 6\n },\n {\n assetId: \"nep141:gnosis-0x420ca0f9b9b604ce0fd9c18ef134c705e5fa3430.omft.near\",\n name: \"EURe\",\n decimals: 18\n },\n {\n assetId: \"nep141:gnosis-0x9c58bacc331c9aa871afd802db6379a98e80cedb.omft.near\",\n name: \"GNO\",\n decimals: 18\n },\n {\n assetId: \"nep141:gnosis-0x6a023ccd1ff6f2045c3309768ead9e68f978f6e1.omft.near\",\n name: \"WETH\",\n decimals: 18\n },\n {\n assetId: \"nep141:gnosis.omft.near\",\n name: \"XDAI\",\n decimals: 18\n }\n ],\n needMemo: false\n }\n }\n};\n","import { optimism } from \"viem/chains\";\nimport { ChainConfig } from \"../../types/chain.js\";\nimport { BUNDLER_URL } from \"../../constants/bundler\";\n\nexport const OPTIMISM: ChainConfig = {\n assets: [\n {\n name: \"USDC\",\n decimals: 6,\n address: \"0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85\",\n coingeckoId: \"usd-coin\"\n },\n {\n name: \"USDT\",\n decimals: 6,\n address: \"0x94b008aa00579c1307b0ef2c499ad98a8ce58e58\",\n coingeckoId: \"tether\"\n },\n {\n name: \"OP\",\n decimals: 18,\n address: \"0x4200000000000000000000000000000000000042\",\n coingeckoId: \"optimism\"\n },\n {\n name: \"ETH\",\n decimals: 18,\n address: \"0x0000000000000000000000000000000000000000\",\n coingeckoId: \"ethereum\"\n }\n ],\n evm: {\n chain: optimism,\n rpcUrl: \"https://opt-mainnet.g.alchemy.com/v2/49fUGmuW05ynCui0VEvDN\",\n supports7702: false,\n erc4337: false,\n bundlerUrl: `${BUNDLER_URL}/rpc?chain=optimism`,\n entryPointAddress: \"0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789\",\n factoryAddress: \"0x3CE963866d3Be7Fe4354DBe892Aab52a0a18aeb2\",\n paymasterAddress: \"0x0dB771d11F84E8541AA651363DF14E4401d01216\",\n },\n crossChainInformation: {\n circleInformation: {\n supportCirclePaymaster: true,\n cCTPInformation: {\n supportCCTP: true,\n domain: 2,\n },\n aproxFromFee: 0,\n },\n nearIntentInformation: {\n support: true,\n assetsId: [\n {\n assetId: \"nep245:v2_1.omni.hot.tg:10_A2ewyUyDp6qsue1jqZsGypkCxRJ\",\n name: \"USDC\",\n decimals: 6\n },\n {\n assetId: \"nep245:v2_1.omni.hot.tg:10_359RPSJVdTxwTJT9TyGssr2rFoWo\",\n name: \"USDT\",\n decimals: 6\n },\n {\n assetId: \"nep245:v2_1.omni.hot.tg:10_vLAiSt9KfUGKpw5cD3vsSyNYBo7\",\n name: \"OP\",\n decimals: 18\n },\n {\n assetId: \"nep245:v2_1.omni.hot.tg:10_11111111111111111111\",\n name: \"ETH\",\n decimals: 18\n }\n ],\n needMemo: false\n }\n }\n}\n","import { BUNDLER_URL } from \"../../constants/bundler\";\nimport { avalanche } from \"viem/chains\";\nimport { ChainConfig } from \"../../types/chain.js\";\n\nexport const AVALANCHE: ChainConfig = {\n assets: [\n {\n name: \"USDC\",\n decimals: 6,\n address: \"0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E\",\n coingeckoId: \"usd-coin\",\n supportsStargate: true\n },\n {\n name: \"AVAX\",\n decimals: 18,\n address: \"0x0000000000000000000000000000000000000000\",\n coingeckoId: \"avalanche-2\"\n },\n {\n name: \"USDT\",\n decimals: 6,\n address: \"0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7\",\n coingeckoId: \"tether\"\n }\n ],\n evm: {\n chain: avalanche,\n rpcUrl: avalanche.rpcUrls.default.http[0],\n supports7702: false,\n bundlerUrl: `${BUNDLER_URL}/rpc?chain=avalanche`,\n erc4337: false,\n entryPointAddress: \"0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789\",\n factoryAddress: \"0x5D1D71FE2De5D1C52c7c11311332eC7f0CBf88aF\",\n paymasterAddress: \"0x6c0de464F2203FE089FF719Acf425dFfE6ac1EE5\",\n },\n crossChainInformation: {\n circleInformation: {\n supportCirclePaymaster: true,\n cCTPInformation: {\n supportCCTP: true,\n domain: 1,\n },\n aproxFromFee: 0,\n },\n nearIntentInformation: {\n support: true,\n assetsId: [\n {\n assetId: \"nep245:v2_1.omni.hot.tg:43114_3atVJH3r5c4GqiSYmg9fECvjc47o\",\n name: \"USDC\",\n decimals: 6\n },\n {\n assetId: \"nep245:v2_1.omni.hot.tg:43114_11111111111111111111\",\n name: \"AVAX\",\n decimals: 18\n },\n {\n assetId: \"nep245:v2_1.omni.hot.tg:43114_372BeH7ENZieCaabwkbWkBiTTgXp\",\n name: \"USDT\",\n decimals: 6\n }\n ],\n needMemo: false\n },\n stargateInformation: {\n support: true,\n }\n }\n}\n","import { BUNDLER_URL } from \"../../constants/bundler\";\nimport { bsc } from \"viem/chains\";\nimport { ChainConfig } from \"../../types/chain.js\";\n\nexport const BNB: ChainConfig = {\n assets: [\n {\n name: \"USDC\",\n decimals: 18,\n address: \"0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d\", // BSC Mainnet USDC\n coingeckoId: \"usd-coin\"\n },\n {\n name: \"USDT\",\n decimals: 18,\n address: \"0x55d398326f99059fF775485246999027B3197955\", // BSC Mainnet USDT\n coingeckoId: \"tether\"\n },\n {\n name: \"BNB\",\n decimals: 18,\n address: \"0x0000000000000000000000000000000000000000\", // Native\n coingeckoId: \"binancecoin\"\n },\n ],\n evm: {\n chain: bsc,\n rpcUrl: \"https://bsc-dataseed.binance.org\",\n supports7702: true,\n bundlerUrl: `${BUNDLER_URL}/rpc?chain=bsc`,\n erc4337: false,\n entryPointAddress: \"0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789\",\n factoryAddress: \"0x2d5dBD90d3aB35614cdf686a67A9889E56B20b27\",\n paymasterAddress: \"0x460593321DdbE4e1038666Ad07Fc1F817dfA02DB\",\n },\n crossChainInformation: {\n circleInformation: {\n supportCirclePaymaster: false,\n aproxFromFee: 0,\n cCTPInformation: {\n supportCCTP: false,\n domain: 0,\n },\n },\n nearIntentInformation: {\n support: true,\n needMemo: false,\n assetsId: [\n {\n name: \"USDC\",\n assetId: \"nep245:v2_1.omni.hot.tg:56_2w93GqMcEmQFDru84j3HZZWt557r\",\n decimals: 18,\n },\n {\n name: \"USDT\",\n assetId: \"nep245:v2_1.omni.hot.tg:56_2CMMyVTGZkeyNZTSvS5sarzfir6g\",\n decimals: 18,\n },\n {\n name: \"BNB\",\n assetId: \"nep245:v2_1.omni.hot.tg:56_11111111111111111111\",\n decimals: 18,\n }\n ],\n },\n },\n};\n","import { BUNDLER_URL } from \"../../constants/bundler\";\nimport { polygon } from \"viem/chains\";\nimport { ChainConfig } from \"../../types/chain.js\";\n\nexport const POLYGON: ChainConfig = {\n assets: [\n {\n name: \"USDC\",\n decimals: 6,\n address: \"0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359\",\n coingeckoId: \"usd-coin\"\n },\n {\n name: \"POL\",\n decimals: 18,\n address: \"0x0000000000000000000000000000000000000000\",\n coingeckoId: \"polygon-ecosystem-token\"\n },\n {\n name: \"USDT\",\n decimals: 6,\n address: \"0xc2132D05D31c914a87C6611C10748AEb04B58e8F\",\n coingeckoId: \"tether\"\n }\n ],\n evm: {\n chain: polygon,\n rpcUrl: \"https://polygon-mainnet.g.alchemy.com/v2/49fUGmuW05ynCui0VEvDN\",\n supports7702: true,\n erc4337: false,\n bundlerUrl: `${BUNDLER_URL}/rpc?chain=polygon`,\n entryPointAddress: \"0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789\",\n factoryAddress: \"0x31D1C59fcf5B78FE2a86187a53c84DcDa5B80EF6\",\n paymasterAddress: \"0x24C82C9381F4615f1a73a5CdBB0Ffd5a432fA54C\",\n },\n crossChainInformation: {\n circleInformation: {\n supportCirclePaymaster: true,\n cCTPInformation: {\n supportCCTP: true,\n domain: 7,\n },\n aproxFromFee: 0,\n },\n nearIntentInformation: {\n support: true,\n assetsId: [\n {\n assetId: \"nep245:v2_1.omni.hot.tg:137_qiStmoQJDQPTebaPjgx5VBxZv6L\",\n name: \"USDC\",\n decimals: 6\n },\n {\n assetId: \"nep245:v2_1.omni.hot.tg:137_11111111111111111111\",\n name: \"POL\",\n decimals: 18\n },\n {\n assetId: \"nep245:v2_1.omni.hot.tg:137_3hpYoaLtt8MP1Z2GH1U473DMRKgr\",\n name: \"USDT\",\n decimals: 6\n }\n ],\n needMemo: false\n }\n }\n}\n","import { BUNDLER_URL } from \"../../constants/bundler\";\nimport { arbitrum } from \"viem/chains\";\nimport { ChainConfig } from \"../../types/chain.js\";\n\nexport const ARBITRUM: ChainConfig = {\n assets: [\n {\n name: \"USDC\",\n decimals: 6,\n address: \"0xaf88d065e77c8cC2239327C5EDb3A432268e5831\",\n coingeckoId: \"usd-coin\"\n },\n {\n name: \"USDT\",\n decimals: 6,\n address: \"0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9\",\n coingeckoId: \"tether\"\n },\n {\n name: \"ARB\",\n decimals: 18,\n address: \"0x912CE59144191C1204E64559FE8253a0e49E6548\",\n coingeckoId: \"arbitrum\"\n },\n {\n name: \"ETH\",\n decimals: 18,\n address: \"0x0000000000000000000000000000000000000000\",\n coingeckoId: \"ethereum\"\n }\n ],\n evm: {\n chain: arbitrum,\n rpcUrl: \"https://arb-mainnet.g.alchemy.com/v2/49fUGmuW05ynCui0VEvDN\",\n bundlerUrl: `${BUNDLER_URL}/rpc?chain=arbitrum`,\n supports7702: true,\n erc4337: false,\n entryPointAddress: \"0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789\",\n factoryAddress: \"0xEEba846e0177CD7b2F023feaa44F9B2a9183327A\",\n paymasterAddress: \"0x41d236E76eCEC3b90554d0b504ac2EEce93A2AE1\",\n },\n crossChainInformation: {\n circleInformation: {\n supportCirclePaymaster: true,\n aproxFromFee: 0,\n cCTPInformation: {\n supportCCTP: true,\n domain: 3,\n },\n },\n nearIntentInformation: {\n support: true,\n assetsId: [\n {\n assetId: \"nep141:arb-0xaf88d065e77c8cc2239327c5edb3a432268e5831.omft.near\",\n name: \"USDC\",\n decimals: 6\n },\n {\n assetId: \"nep141:arb-0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9.omft.near\",\n name: \"USDT\",\n decimals: 6\n },\n {\n assetId: \"nep141:arb.omft.near\",\n name: \"ETH\",\n decimals: 18\n },\n {\n assetId: \"nep141:arb-0x912ce59144191c1204e64559fe8253a0e49e6548.omft.near\",\n name: \"ARB\",\n decimals: 18\n }\n ],\n needMemo: false\n }\n }\n};\n","import { BUNDLER_URL } from \"../../constants/bundler\";\nimport { unichain } from \"viem/chains\";\nimport { ChainConfig } from \"../../types/chain.js\";\n\nexport const UNICHAIN: ChainConfig = {\n assets: [\n {\n name: \"USDC\",\n decimals: 6,\n address: \"0x078D782b760474a361dDA0AF3839290b0EF57AD6\",\n coingeckoId: \"usd-coin\"\n }\n ],\n evm: {\n chain: unichain,\n rpcUrl: \"https://unichain-mainnet.g.alchemy.com/v2/49fUGmuW05ynCui0VEvDN\",\n bundlerUrl: `${BUNDLER_URL}/rpc?chain=unichain`,\n supports7702: true,\n erc4337: false,\n entryPointAddress: \"0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789\",\n factoryAddress: \"0xB2E45aCbB68f3e98C87B6df16625f22e11728556\",\n paymasterAddress: \"0x7A92b3Fee017E3E181a51D9045AACE30eC2B387D\",\n },\n crossChainInformation: {\n circleInformation: {\n supportCirclePaymaster: true,\n cCTPInformation: {\n supportCCTP: true,\n domain: 10,\n },\n aproxFromFee: 0,\n },\n nearIntentInformation: null\n }\n}\n","import { monad } from \"viem/chains\";\nimport { BUNDLER_URL } from \"../../constants/bundler\";\nimport { ChainConfig } from \"../../types/chain.js\";\n\nexport const Monad: ChainConfig = {\n assets: [\n {\n name: \"USDC\",\n decimals: 6,\n address: \"0x754704Bc059F8C67012fEd69BC8A327a5aafb603\",\n coingeckoId: \"usd-coin\"\n },\n {\n name: \"USDT\",\n decimals: 6,\n address: \"0xe7cd86e13AC4309349F30B3435a9d337750fC82D\",\n coingeckoId: \"tether\"\n },\n {\n name: \"MON\",\n decimals: 18,\n address: \"0x0000000000000000000000000000000000000000\",\n coingeckoId: \"monad\"\n }\n ],\n evm: {\n chain: monad,\n rpcUrl: monad.rpcUrls.default.http[0],\n supports7702: true,\n erc4337: false,\n bundlerUrl: `${BUNDLER_URL}/rpc?chain=monad`,\n entryPointAddress: \"0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789\",\n factoryAddress: \"0xaaeA6D8f377e62599Aad75376F0C5e4F7EBF8f84\",\n paymasterAddress: \"0xeA82B63e8dE3BFBd321A681D4511BC596E323162\",\n },\n crossChainInformation: {\n circleInformation: {\n supportCirclePaymaster: false,\n cCTPInformation: {\n supportCCTP: true,\n domain: 15,\n },\n aproxFromFee: 0,\n },\n nearIntentInformation: {\n support: true,\n assetsId: [\n {\n assetId: \"nep245:v2_1.omni.hot.tg:143_2dmLwYWkCQKyTjeUPAsGJuiVLbFx\",\n name: \"USDC\",\n decimals: 6\n },\n {\n assetId: \"nep245:v2_1.omni.hot.tg:143_4EJiJxSALvGoTZbnc8K7Ft9533et\",\n name: \"USDT\",\n decimals: 6\n },\n {\n assetId: \"nep245:v2_1.omni.hot.tg:143_11111111111111111111\",\n name: \"MON\",\n decimals: 18\n }\n ],\n needMemo: false\n }\n }\n}\n","\nimport { Networks } from \"stellar-sdk\";\nimport { ChainConfig } from \"../../types/chain.js\";\n\nexport const STELLAR: ChainConfig = {\n assets: [\n {\n name: \"USDC\",\n decimals: 7,\n address: \"GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN\",\n coingeckoId: \"usd-coin\"\n },\n {\n name: \"XLM\",\n decimals: 7,\n address: \"native\",\n coingeckoId: \"stellar\"\n }\n ],\n nonEvm: {\n networkPassphrase: Networks.PUBLIC,\n serverURL: \"https://horizon.stellar.org\",\n },\n crossChainInformation: {\n circleInformation: {\n supportCirclePaymaster: false,\n aproxFromFee: 0\n },\n nearIntentInformation: {\n support: true,\n assetsId: [\n {\n assetId: \"nep245:v2_1.omni.hot.tg:1100_111bzQBB65GxAPAVoxqmMcgYo5oS3txhqs1Uh1cgahKQUeTUq1TJu\",\n name: \"USDC\",\n decimals: 7\n },\n {\n assetId: \"nep245:v2_1.omni.hot.tg:1100_111bzQBB5v7AhLyPMDwS8uJgQV24KaAPXtwyVWu2KXbbfQU6NXRCz\",\n name: \"XLM\",\n decimals: 6\n }\n ],\n needMemo: true\n }\n }\n};\n","import * as StellarSdk from \"stellar-sdk\";\nimport { STELLAR } from \"../chains/NoEvm/Stellar\";\n\nexport class StellarService {\n server: StellarSdk.Horizon.Server;\n network: string;\n\n constructor() {\n if (!STELLAR.nonEvm?.serverURL || !STELLAR.nonEvm?.networkPassphrase) {\n throw new Error(\"Stellar Non-EVM config missing or incomplete\");\n }\n this.server = new StellarSdk.Horizon.Server(STELLAR.nonEvm.serverURL);\n this.network = STELLAR.nonEvm.networkPassphrase;\n }\n\n /**\n * Get balance for a specific token (or all if not specified)\n * Returns string representation\n */\n async getBalance(address: string, tokenName: string = \"XLM\"): Promise<string> {\n try {\n const account = await this.server.loadAccount(address);\n\n // Find asset definition\n const assetDef = STELLAR.assets.find(a => a.name === tokenName);\n if (!assetDef) throw new Error(`Asset ${tokenName} not configured`);\n\n const isNative = assetDef.address === \"native\";\n\n const balanceLine = account.balances.find((b: any) => {\n if (isNative) {\n return b.asset_type === \"native\";\n }\n return b.asset_code === tokenName && b.asset_issuer === assetDef.address;\n });\n\n return balanceLine ? balanceLine.balance : \"0\";\n } catch (e: any) {\n if (e.response && e.response.status === 404) {\n return \"0\"; // Account not active\n }\n throw e;\n }\n }\n\n /**\n * Build and Sign a Transfer Transaction\n */\n async buildTransferXdr(\n senderPk: string,\n recipient: string,\n amount: string,\n tokenName: string = \"XLM\",\n memo?: string\n ): Promise<string> {\n const keypair = StellarSdk.Keypair.fromSecret(senderPk);\n const sourceAddress = keypair.publicKey();\n\n // Check if account exists\n let account;\n try {\n account = await this.server.loadAccount(sourceAddress);\n } catch (e: any) {\n throw new Error(`Stellar Account ${sourceAddress} not valid or not active.`);\n }\n\n const asset = this.getAsset(tokenName);\n\n const txBuilder = new StellarSdk.TransactionBuilder(account, {\n fee: StellarSdk.BASE_FEE,\n networkPassphrase: this.network\n });\n\n txBuilder.addOperation(StellarSdk.Operation.payment({\n destination: recipient,\n asset: asset,\n amount: amount\n }));\n\n if (memo) {\n // Simple text memo support for now\n txBuilder.addMemo(StellarSdk.Memo.text(memo));\n }\n\n txBuilder.setTimeout(30);\n\n const builtTx = txBuilder.build();\n builtTx.sign(keypair);\n\n return builtTx.toXDR();\n }\n\n /**\n * Submit Signed XDR\n */\n async submitXdr(xdr: string) {\n // Construct transaction from XDR to submit\n const tx = StellarSdk.TransactionBuilder.fromXDR(xdr, this.network);\n return this.server.submitTransaction(tx);\n }\n\n public getAsset(tokenName: string): StellarSdk.Asset {\n const assetDef = STELLAR.assets.find(a => a.name === tokenName);\n if (!assetDef) {\n // Default fallback if not found? Or throw.\n if (tokenName === \"XLM\") return StellarSdk.Asset.native();\n throw new Error(`Asset ${tokenName} not found in configuration`);\n }\n\n if (assetDef.address === \"native\") {\n return StellarSdk.Asset.native();\n }\n\n return new StellarSdk.Asset(assetDef.name, assetDef.address);\n }\n\n public getKeypair(pk: string) {\n return StellarSdk.Keypair.fromSecret(pk);\n }\n}\n","\nimport { base, optimism, gnosis, arbitrum, polygon, unichain, avalanche, worldchain, monad } from \"viem/chains\";\nimport { ChainKey } from \"@/types/chain\";\nimport { FacilitatorNetworkConfig } from \"@/services/config\";\n\nexport type FacilitatorChainKey = ChainKey;\n\nexport const PlatformFees = {\n DEV: 0,\n EVM_TO_OTHER: 0.02,\n DEFAULT: 0.02\n};\n\n// Dummy addresses for simulation\nexport const DUMMY_EVM_ADDRESS = \"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045\"; // Vitalik (just a valid address)\nexport const DUMMY_STELLAR_ADDRESS = \"GB7BDSZU2Y27LYNLJLVEGW5TIVYQ6362DS5QZ5F6S27S227227227AAA\";\n\nexport const calculateFee = (isDev: boolean = false): number => {\n return isDev ? PlatformFees.DEV : PlatformFees.DEFAULT;\n};\n\n// Placeholder configuration. User needs to populate this.\nexport const FACILITATOR_NETWORKS: Record<string, FacilitatorNetworkConfig> = {\n Base: {\n chainId: 8453,\n chain: base,\n usdc: \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n usdcName: \"USD Coin\",\n usdcVersion: \"2\",\n domain: 6,\n tokenMessenger: \"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d\",\n messageTransmitter: \"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64\",\n rpcUrl: \"https://base-mainnet.g.alchemy.com/v2/49fUGmuW05ynCui0VEvDN\"\n },\n Optimism: {\n chainId: 10,\n chain: optimism,\n usdc: \"0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85\",\n usdcName: \"USD Coin\",\n usdcVersion: \"2\",\n domain: 2,\n tokenMessenger: \"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d\",\n messageTransmitter: \"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64\",\n rpcUrl: \"https://opt-mainnet.g.alchemy.com/v2/49fUGmuW05ynCui0VEvDN\" // Assuming same key works or public\n },\n Gnosis: {\n chainId: 100,\n chain: gnosis,\n usdc: \"0x2a22f9c3b48403ebD92cF06fF916b322a30dB834\",\n usdcName: \"USDC\",\n usdcVersion: \"2\",\n domain: 0,\n tokenMessenger: \"0x0000000000000000000000000000000000000000\",\n messageTransmitter: \"0x0000000000000000000000000000000000000000\",\n rpcUrl: \"https://rpc.gnosischain.com\"\n },\n Arbitrum: {\n chainId: 42161,\n chain: arbitrum,\n usdc: \"0xaf88d065e77c8cC2239327C5EDb3A432268e5831\",\n usdcName: \"USD Coin\",\n usdcVersion: \"2\",\n domain: 3,\n tokenMessenger: \"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d\",\n messageTransmitter: \"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64\",\n rpcUrl: \"https://arb-mainnet.g.alchemy.com/v2/49fUGmuW05ynCui0VEvDN\"\n },\n Polygon: {\n chainId: 137,\n chain: polygon,\n usdc: \"0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359\",\n usdcName: \"USD Coin\",\n usdcVersion: \"2\",\n domain: 7,\n tokenMessenger: \"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d\",\n messageTransmitter: \"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64\",\n rpcUrl: \"https://polygon-mainnet.g.alchemy.com/v2/49fUGmuW05ynCui0VEvDN\"\n },\n Unichain: {\n chainId: unichain.id,\n chain: unichain,\n usdc: \"0x078D782b760474a361dDA0AF3839290b0EF57AD6\",\n usdcName: \"USD Coin\",\n usdcVersion: \"2\",\n domain: 10,\n tokenMessenger: \"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d\",\n messageTransmitter: \"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64\",\n rpcUrl: unichain.rpcUrls.default.http[0]\n },\n Avalanche: {\n chainId: avalanche.id,\n chain: avalanche,\n usdc: \"0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E\",\n usdcName: \"USD Coin\",\n usdcVersion: \"2\",\n domain: 1,\n tokenMessenger: \"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d\",\n messageTransmitter: \"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64\",\n rpcUrl: avalanche.rpcUrls.default.http[0]\n },\n Worldchain: {\n chainId: worldchain.id,\n chain: worldchain,\n usdc: \"0x79A02482A880bCe3F13E09da970dC34dB4cD24D1\",\n usdcName: \"USD Coin\",\n usdcVersion: \"2\",\n domain: 13,\n tokenMessenger: \"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d\",\n messageTransmitter: \"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64\",\n rpcUrl: worldchain.rpcUrls.default.http[0]\n },\n Monad: {\n chainId: monad.id,\n chain: monad,\n usdc: \"0x754704Bc059F8C67012fEd69BC8A327a5aafb603\",\n usdcName: \"USD Coin\",\n usdcVersion: \"2\",\n domain: 15,\n tokenMessenger: \"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d\",\n messageTransmitter: \"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64\",\n rpcUrl: monad.rpcUrls.default.http[0]\n }\n};\n","export const usdcErc3009Abi = [\n {\n inputs: [\n { name: \"from\", type: \"address\" },\n { name: \"to\", type: \"address\" },\n { name: \"value\", type: \"uint256\" },\n { name: \"validAfter\", type: \"uint256\" },\n { name: \"validBefore\", type: \"uint256\" },\n { name: \"nonce\", type: \"bytes32\" },\n { name: \"v\", type: \"uint8\" },\n { name: \"r\", type: \"bytes32\" },\n { name: \"s\", type: \"bytes32\" },\n ],\n name: \"transferWithAuthorization\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ name: \"account\", type: \"address\" }],\n name: \"balanceOf\",\n outputs: [{ name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { name: \"spender\", type: \"address\" },\n { name: \"amount\", type: \"uint256\" },\n ],\n name: \"approve\",\n outputs: [{ name: \"\", type: \"bool\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { name: \"to\", type: \"address\" },\n { name: \"amount\", type: \"uint256\" },\n ],\n name: \"transfer\",\n outputs: [{ name: \"\", type: \"bool\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n] as const;\n\nexport const tokenMessengerAbi = [\n {\n inputs: [\n { name: \"amount\", type: \"uint256\" },\n { name: \"destinationDomain\", type: \"uint32\" },\n { name: \"mintRecipient\", type: \"bytes32\" },\n { name: \"burnToken\", type: \"address\" },\n { name: \"destinationCaller\", type: \"bytes32\" },\n { name: \"maxFee\", type: \"uint256\" }, // Suspected wrapper arg\n { name: \"minFinalityThreshold\", type: \"uint32\" } // Suspected wrapper arg\n ],\n name: \"depositForBurn\",\n outputs: [{ name: \"_nonce\", type: \"uint64\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n // Alternative overload often used:\n {\n inputs: [\n { name: \"amount\", type: \"uint256\" },\n { name: \"destinationDomain\", type: \"uint32\" },\n { name: \"mintRecipient\", type: \"bytes32\" },\n { name: \"burnToken\", type: \"address\" },\n ],\n name: \"depositForBurn\",\n outputs: [{ name: \"_nonce\", type: \"uint64\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n }\n] as const;\n\nexport const messageTransmitterAbi = [\n {\n inputs: [\n { name: \"message\", type: \"bytes\" },\n { name: \"attestation\", type: \"bytes\" },\n ],\n name: \"receiveMessage\",\n outputs: [{ name: \"success\", type: \"bool\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n] as const;\n","import axios from \"axios\";\n\nexport const createRetrieveAttestation = async (\n transactionHash: string,\n chainId: string,\n timeout = 60000\n) => {\n const baseUrl = \"https://iris-api.circle.com\";\n\n const url = `${baseUrl}/v2/messages/${chainId}?transactionHash=${transactionHash}`;\n\n const start = Date.now();\n const FIVE_SECONDS = 5000;\n\n while (true) {\n const elapsed = Date.now() - start;\n if (elapsed > timeout) {\n throw new Error(\n \"Timeout: Attestation not retrieved within the expected time.\"\n );\n }\n\n try {\n const response = await axios.get(url);\n\n const message = response.data?.messages?.[0];\n if (message?.status === \"complete\") {\n console.log(\"Attestation retrieved successfully!\");\n return message;\n }\n\n console.log(\"Waiting for attestation...\");\n } catch (error: any) {\n const status = error.response?.status;\n\n if (status === 404) {\n console.log(\"Waiting for attestation...\");\n } else {\n console.error(\"Error fetching attestation:\", error.message);\n }\n }\n\n await new Promise((resolve) => setTimeout(resolve, FIVE_SECONDS));\n }\n};\n","\nimport { worldchain } from \"viem/chains\";\nimport { Address } from \"abitype\";\nimport { ChainConfig } from \"../../types/chain.js\";\n\nexport const WORLD_CHAIN: ChainConfig = {\n assets: [\n {\n name: \"USDC\",\n decimals: 6,\n address: \"0x79A02482A880bCe3F13E09da970dC34dB4cD24D1\",\n coingeckoId: \"usd-coin\"\n }\n ],\n evm: {\n chain: worldchain,\n rpcUrl: worldchain.rpcUrls.default.http[0],\n supports7702: true,\n erc4337: false,\n },\n crossChainInformation: {\n circleInformation: {\n supportCirclePaymaster: false,\n cCTPInformation: {\n supportCCTP: true,\n domain: 14,\n },\n aproxFromFee: 0,\n },\n nearIntentInformation: null\n }\n}\n","import { OPTIMISM } from \"./Evm/Optimism.js\";\nimport { ARBITRUM } from \"./Evm/Arbitrum.js\";\nimport { BASE } from \"./Evm/Base.js\";\nimport { UNICHAIN } from \"./Evm/Unichain.js\";\nimport { POLYGON } from \"./Evm/Polygon.js\";\nimport { AVALANCHE } from \"./Evm/Avalanche.js\";\nimport { WORLD_CHAIN } from \"./Evm/WorldChain.js\";\nimport { STELLAR } from \"./NoEvm/Stellar.js\";\nimport { Monad } from \"./Evm/Monad.js\";\nimport { BNB } from \"./Evm/Binance.js\";\nimport { GNOSIS } from \"./Evm/Gnosis.js\";\n\nexport {\n OPTIMISM,\n ARBITRUM,\n BASE,\n UNICHAIN,\n POLYGON,\n AVALANCHE,\n WORLD_CHAIN,\n STELLAR,\n Monad,\n BNB,\n GNOSIS\n}","\nimport { ChainKey } from \"@/types/chain\";\nimport { ChainConfig } from \"@/types/chain\";\nimport * as Chains from \"@/chains/index\";\n\nexport const NETWORKS: Record<string, ChainConfig> = {\n Optimism: Chains.OPTIMISM,\n Arbitrum: Chains.ARBITRUM,\n Base: Chains.BASE,\n Unichain: Chains.UNICHAIN,\n Polygon: Chains.POLYGON,\n Avalanche: Chains.AVALANCHE,\n WorldChain: Chains.WORLD_CHAIN,\n Stellar: Chains.STELLAR,\n Monad: Chains.Monad,\n BNB: Chains.BNB,\n Gnosis: Chains.GNOSIS\n};\n","import {\n createPublicClient,\n createWalletClient,\n http,\n parseSignature,\n padHex,\n maxUint256,\n Address\n} from \"viem\";\nimport { privateKeyToAccount } from \"viem/accounts\";\nimport {\n FacilitatorChainKey,\n calculateFee\n} from \"@/constants/facilitator\";\nimport { FACILITATOR_NETWORKS } from \"@/constants/facilitator\";\nimport { usdcErc3009Abi } from \"@/constants/abis\";\nimport { tokenMessengerAbi, messageTransmitterAbi } from \"@/constants/abis\";\nimport { SettleResponse, FacilitatorPaymentPayload, CrossChainConfig } from \"@/services/types\";\nimport { createRetrieveAttestation } from \"@/utils/cctp\";\nimport { BridgeStrategy, BridgeContext } from \"./types\";\nimport { NETWORKS } from \"@/constants/chainsInformation\";\nimport { ChainKey } from \"@/types/chain\";\n\n\n\n/** Converts an address to bytes32 format for CCTP mintRecipient */\nconst addressToBytes32 = (address: Address): `0x${string}` => {\n return padHex(address, { size: 32 });\n};\n\nexport class CCTPStrategy implements BridgeStrategy {\n name = \"CCTP\";\n\n canHandle(context: BridgeContext): boolean {\n const { sourceChain, destChain, sourceToken, destToken } = context;\n const sourceConfig = NETWORKS[sourceChain];\n const destConfig = NETWORKS[destChain];\n\n if (!sourceConfig || !destConfig) return false;\n\n const sourceCCTP = sourceConfig.crossChainInformation?.circleInformation?.cCTPInformation?.supportCCTP;\n const destCCTP = destConfig.crossChainInformation?.circleInformation?.cCTPInformation?.supportCCTP;\n\n // Default to USDC if destToken is missing (backward compatibility) \n let targetToken = destToken;\n if (!targetToken) {\n if (sourceToken && sourceToken !== \"USDC\") {\n targetToken = sourceToken;\n } else {\n targetToken = \"USDC\";\n }\n }\n\n return !!(sourceCCTP && destCCTP && targetToken === \"USDC\" && (sourceToken === \"USDC\" || !sourceToken));\n }\n\n async execute(context: BridgeContext): Promise<SettleResponse> {\n const { paymentPayload, sourceChain, destChain, amount, recipient } = context;\n\n const destConfig = NETWORKS[destChain];\n const destinationDomain = destConfig.crossChainInformation?.circleInformation?.cCTPInformation?.domain;\n\n if (destinationDomain === undefined) {\n return {\n success: false,\n errorReason: \"Destination chain does not have CCTP domain configured\"\n };\n }\n\n const crossChainConfig: CrossChainConfig = {\n destinationChain: destChain as FacilitatorChainKey,\n destinationDomain: destinationDomain,\n mintRecipient: recipient as Address\n };\n\n return processCCTPSettlement(\n context,\n crossChainConfig\n );\n }\n}\n\nexport async function processCCTPSettlement(\n context: BridgeContext,\n crossChainConfig: CrossChainConfig\n): Promise<SettleResponse> {\n const { paymentPayload, sourceChain, amount, recipient, facilitatorPrivateKey, depositTxHash } = context;\n\n console.log(`[SDK v0.4.22] Processing CCTP. DepositHash: ${depositTxHash} (${typeof depositTxHash})`);\n\n if (!facilitatorPrivateKey) {\n return {\n success: false,\n errorReason: \"Facilitator Private Key not provided in context\"\n };\n }\n\n const networkConfig = FACILITATOR_NETWORKS[sourceChain];\n if (!networkConfig) {\n return {\n success: false,\n errorReason: `Unsupported chain: ${sourceChain}`\n };\n }\n\n // Step 1: Check Facilitator Balance or Verify Deposit (Push Model)\n const facilitatorAccount = privateKeyToAccount(facilitatorPrivateKey as `0x${string}`);\n\n const fromAddress = context.senderAddress || (paymentPayload?.authorization?.from);\n\n if (!fromAddress) {\n return { success: false, errorReason: \"Sender address is missing\" };\n }\n\n const usdcAddress = networkConfig.usdc;\n const amountBigInt = BigInt(Math.floor(parseFloat(amount) * 1_000_000)); // USDC 6 decimals\n\n const publicClient = createPublicClient({\n chain: networkConfig.chain,\n transport: http(networkConfig.rpcUrl)\n });\n\n // ... (rest of logic) ...\n\n // Step 4: Execute CCTP on Source Chain\n // If depositTxHash is verified, we proceed to fetch attestation.\n\n // Replacing the execute call argument:\n // return executeCCTPBridge(..., fromAddress as Address);\n\n // A. If depositTxHash is provided (Step 2: Verification)\n if (depositTxHash) {\n console.log(`[CCTP] Verifying deposit hash: ${depositTxHash}`);\n try {\n const receipt = await publicClient.waitForTransactionReceipt({ hash: depositTxHash as `0x${string}` });\n\n if (receipt.status !== \"success\") {\n throw new Error(\"Deposit transaction failed on-chain\");\n }\n } catch (e) {\n return {\n success: false,\n errorReason: `Invalid deposit transaction: ${e instanceof Error ? e.message : \"Unknown error\"}`\n };\n }\n\n // B. Check Balance (Wait logic) - Only check if we have a hash implying a deposit matched\n let facilitatorBalance = BigInt(0);\n const maxRetries = 5;\n\n for (let i = 0; i < maxRetries; i++) {\n facilitatorBalance = await publicClient.readContract({\n address: usdcAddress,\n abi: usdcErc3009Abi,\n functionName: \"balanceOf\",\n args: [facilitatorAccount.address]\n }) as bigint;\n\n if (facilitatorBalance >= amountBigInt) break;\n await new Promise(r => setTimeout(r, 2000));\n }\n\n if (facilitatorBalance < amountBigInt) {\n return {\n success: false,\n errorReason: \"Deposit verified but facilitator balance insufficient (Funds sent to wrong address?)\"\n };\n }\n\n } else {\n // No hash provided -> Always Prompt for Deposit (Strict Push Model)\n console.log(\"[SDK v0.4.22] No deposit hash. Returning PENDING_USER_DEPOSIT.\");\n return {\n success: true,\n data: {\n depositAddress: facilitatorAccount.address,\n amountToDeposit: amountBigInt.toString(),\n chainId: networkConfig.chainId\n },\n attestation: {\n message: \"PENDING_USER_DEPOSIT_v22\",\n attestation: \"0x\"\n },\n transactionHash: \"PENDING_USER_DEPOSIT_v22\"\n };\n }\n\n // Funds are present, proceed to bridge\n const transferHash = (depositTxHash as `0x${string}`) || \"0x0000000000000000000000000000000000000000000000000000000000000000\";\n\n return executeCCTPBridge(sourceChain, amount, crossChainConfig, facilitatorPrivateKey, recipient as Address, transferHash, fromAddress as Address);\n}\n\nexport async function executeCCTPBridge(\n sourceChain: FacilitatorChainKey,\n amount: string,\n crossChainConfig: CrossChainConfig,\n facilitatorPrivateKey: string,\n recipient: Address | undefined,\n transferHash: `0x${string}`,\n payerAddress: Address\n): Promise<SettleResponse> {\n if (!facilitatorPrivateKey) {\n return { success: false, errorReason: \"Facilitator Private Key not provided\" };\n }\n\n const networkConfig = FACILITATOR_NETWORKS[sourceChain];\n if (!networkConfig) {\n return { success: false, errorReason: `Unsupported chain: ${sourceChain}` };\n }\n\n // Setup clients\n const facilitatorAccount = privateKeyToAccount(facilitatorPrivateKey as `0x${string}`);\n const publicClient = createPublicClient({\n chain: networkConfig.chain,\n transport: http(networkConfig.rpcUrl)\n });\n const walletClient = createWalletClient({\n account: facilitatorAccount,\n chain: networkConfig.chain,\n transport: http(networkConfig.rpcUrl)\n });\n\n // Convert human readable string (e.g. \"0.01\") to atomic units (6 decimals)\n const amountBigInt = BigInt(Math.floor(parseFloat(amount) * 1_000_000));\n const feeRaw = calculateFee();\n const fee = BigInt(Math.floor(feeRaw * 1_000_000));\n const minRequired = fee;\n\n if (amountBigInt <= minRequired) {\n return {\n success: false,\n transactionHash: transferHash,\n errorReason: `Amount too small. Minimum required: ${Number(minRequired) / 1_000_000} USDC (to cover bridge fees)`\n };\n }\n\n // Re-verify Balance (Double Check)\n let facilitatorBalance = BigInt(0);\n const maxRetries = 2;\n\n for (let i = 0; i < maxRetries; i++) {\n facilitatorBalance = await publicClient.readContract({\n address: networkConfig.usdc,\n abi: usdcErc3009Abi,\n functionName: \"balanceOf\",\n args: [facilitatorAccount.address]\n }) as bigint;\n\n if (facilitatorBalance >= amountBigInt) break;\n\n console.log(`[CCTP] Balance lag detected. Retrying ${i + 1}/${maxRetries}... (Has: ${facilitatorBalance}, Needs: ${amountBigInt})`);\n await new Promise(resolve => setTimeout(resolve, 3000)); // Wait 3s\n }\n\n if (facilitatorBalance < amountBigInt) {\n return {\n success: false,\n transactionHash: transferHash,\n errorReason: `Insufficient facilitator balance after retries. Has: ${facilitatorBalance}, Needs: ${amountBigInt}`\n };\n }\n\n // Step 2: Approve TokenMessenger\n try {\n const approveHash = await walletClient.writeContract({\n chain: networkConfig.chain,\n address: networkConfig.usdc,\n abi: usdcErc3009Abi,\n functionName: \"approve\",\n args: [networkConfig.tokenMessenger, maxUint256]\n });\n await publicClient.waitForTransactionReceipt({ hash: approveHash });\n } catch (e) {\n console.error(\"Approval failed\", e);\n return {\n success: false,\n transactionHash: transferHash,\n errorReason: \"Approval failed\"\n };\n }\n\n // Step 3: DepositForBurn\n const targetRecipient = recipient || crossChainConfig.mintRecipient;\n const mintRecipient = addressToBytes32(targetRecipient);\n\n // Dynamic maxFee calculation (1%, min 200 wei)\n const maxFee = amountBigInt > BigInt(100)\n ? BigInt(Math.floor(Math.max(Number(amountBigInt) / 100, 200)))\n : BigInt(200);\n\n let burnHash: `0x${string}`;\n try {\n burnHash = await walletClient.writeContract({\n chain: networkConfig.chain,\n address: networkConfig.tokenMessenger,\n abi: tokenMessengerAbi,\n functionName: \"depositForBurn\",\n args: [\n amountBigInt - fee, // Deduct 0.02 USDC Fee\n crossChainConfig.destinationDomain,\n mintRecipient,\n networkConfig.usdc,\n \"0x0000000000000000000000000000000000000000000000000000000000000000\" as `0x${string}`,\n maxFee,\n 1000 // minFinalityThreshold\n ]\n });\n\n const burnReceipt = await publicClient.waitForTransactionReceipt({ hash: burnHash });\n if (burnReceipt.status !== \"success\") throw new Error(\"Burn execution failed\");\n\n } catch (e) {\n return {\n success: false,\n transactionHash: transferHash,\n errorReason: e instanceof Error ? e.message : \"Burn failed\"\n };\n }\n\n // Step 4: Wait for Attestation\n let attestationResponse;\n try {\n attestationResponse = await createRetrieveAttestation(\n burnHash,\n networkConfig.domain.toString(),\n 120000 // 2 min timeout\n );\n } catch (e) {\n console.warn(\"Attestation timeout\", e);\n return {\n success: true, // Functionally a \"pending\" state \n transactionHash: transferHash,\n burnTransactionHash: burnHash,\n errorReason: \"Attestation timeout. Funds burned but not minted.\"\n };\n }\n\n if (!attestationResponse) {\n return {\n success: false,\n transactionHash: transferHash,\n burnTransactionHash: burnHash,\n errorReason: \"Attestation failed to retireve\"\n };\n }\n\n\n // Step 5: Mint (receiveMessage) on Destination Chain\n let mintHash: `0x${string}` | undefined;\n try {\n const destNetworkConfig = FACILITATOR_NETWORKS[crossChainConfig.destinationChain as FacilitatorChainKey];\n if (!destNetworkConfig) throw new Error(`Unsupported destination chain: ${crossChainConfig.destinationChain}`);\n\n const destWalletClient = createWalletClient({\n account: facilitatorAccount,\n chain: destNetworkConfig.chain,\n transport: http(destNetworkConfig.rpcUrl)\n });\n\n const destPublicClient = createPublicClient({\n chain: destNetworkConfig.chain,\n transport: http(destNetworkConfig.rpcUrl)\n });\n\n console.log(`[CCTP] Minting on ${crossChainConfig.destinationChain}...`);\n\n mintHash = await destWalletClient.writeContract({\n chain: destNetworkConfig.chain,\n address: destNetworkConfig.messageTransmitter,\n abi: messageTransmitterAbi,\n functionName: \"receiveMessage\",\n args: [\n attestationResponse.message.startsWith(\"0x\")\n ? attestationResponse.message as `0x${string}`\n : `0x${attestationResponse.message}` as `0x${string}`,\n attestationResponse.attestation.startsWith(\"0x\")\n ? attestationResponse.attestation as `0x${string}`\n : `0x${attestationResponse.attestation}` as `0x${string}`\n ]\n });\n\n console.log(`[CCTP] Mint tx sent: ${mintHash}`);\n await destPublicClient.waitForTransactionReceipt({ hash: mintHash });\n console.log(`[CCTP] Mint confirmed!`);\n\n } catch (e) {\n console.error(\"Mint failed\", e);\n return {\n success: true,\n transactionHash: transferHash,\n burnTransactionHash: burnHash,\n errorReason: \"Mint execution failed (Gas error on Dest?)\"\n };\n }\n\n return {\n success: true,\n transactionHash: transferHash,\n burnTransactionHash: burnHash,\n mintTransactionHash: mintHash,\n payer: payerAddress,\n fee: fee.toString(),\n netAmount: amountBigInt.toString(),\n attestation: {\n message: attestationResponse.message,\n attestation: attestationResponse.attestation\n }\n };\n}\n","import { OpenAPI, OneClickService, QuoteRequest } from '@defuse-protocol/one-click-sdk-typescript';\nimport { NETWORKS } from \"@/constants/chainsInformation\";\nimport { ChainKey } from \"@/types/chain\";\nimport { SettleResponse, FacilitatorPaymentPayload } from \"@/services/types\";\nimport { BridgeStrategy, BridgeContext } from \"./types\";\nimport { StellarService } from \"./StellarService\";\nimport { PlatformFees, DUMMY_EVM_ADDRESS, DUMMY_STELLAR_ADDRESS, calculateFee } from \"@/constants/facilitator\";\n\n// Initialize API\nOpenAPI.BASE = 'https://1click.chaindefuser.com';\n// OpenAPI.TOKEN = process.env.ONE_CLICK_JWT; // Optional if not needed for public quotes\n\nexport class NearStrategy implements BridgeStrategy {\n name = \"NearIntents\";\n\n canHandle(context: BridgeContext): boolean {\n const { sourceChain, destChain } = context;\n // Basic check: Near support on both (Removed source===dest check to allow swaps)\n\n const sourceConfig = NETWORKS[sourceChain];\n const destConfig = NETWORKS[destChain];\n\n if (!sourceConfig || !destConfig) return false;\n\n const sourceNear = sourceConfig.crossChainInformation.nearIntentInformation?.support;\n const destNear = destConfig.crossChainInformation.nearIntentInformation?.support;\n\n return !!(sourceNear && destNear);\n }\n\n async execute(context: BridgeContext): Promise<SettleResponse> {\n const { sourceChain, destChain, amount, recipient, destToken, sourceToken, senderAddress, depositTxHash, paymentPayload } = context;\n\n // 0. Handle Stellar Source (Push)\n if (sourceChain === \"Stellar\" && paymentPayload?.signedXDR) {\n const signedXDR = paymentPayload.signedXDR;\n\n console.log(\"[NearStrategy] Submitting Stellar User -> Facilitator TX...\");\n\n try {\n const stellarService = new StellarService();\n const result = await stellarService.submitXdr(signedXDR);\n const pullHash = result.hash;\n console.log(\"[NearStrategy] Pull Success (Stellar):\", pullHash);\n\n return {\n success: true,\n transactionHash: pullHash,\n data: {\n completed: true,\n message: \"Stellar Transaction Submitted. Bridge in progress.\"\n }\n };\n } catch (e: any) {\n console.error(\"Stellar Submit Error\", e);\n return { success: false, errorReason: \"Stellar Submit Failed: \" + (e.message || \"Unknown\") };\n }\n }\n\n // 1. Verify Deposit if Hash Provided\n if (depositTxHash) {\n console.log(`[NearStrategy] Verifying deposit hash: ${depositTxHash}`);\n\n // Stellar Verification\n if (sourceChain === \"Stellar\") {\n try {\n const { StellarService } = await import(\"./StellarService\");\n const stellarService = new StellarService();\n // We need to fetch the tx\n // StellarService doesn't have `getTransaction` yet, only submit.\n // Need to check if StellarService has server access (it does, public prop).\n const tx = await stellarService.server.transactions().transaction(depositTxHash).call();\n\n if (tx.successful) {\n // Fetch operations to find the payment destination (deposit address)\n const operations = await stellarService.server.operations().forTransaction(depositTxHash).call();\n const paymentOp = operations.records.find((op: any) => op.type === 'payment' || op.type === 'path_payment_strict_send' || op.type === 'path_payment_strict_receive');\n\n let depositAddress = \"\";\n let memo = \"\";\n\n if (paymentOp) {\n // @ts-ignore\n depositAddress = paymentOp.to || paymentOp.funder || \"\"; // 'to' is standard for payment\n }\n\n if (tx.memo_type === 'text' || tx.memo_type === 'id') {\n memo = tx.memo || \"\";\n }\n\n if (depositAddress) {\n console.log(`[NearStrategy] Submitting deposit to 1-Click: ${depositTxHash} -> ${depositAddress} (Memo: ${memo})`);\n try {\n await OneClickService.submitDepositTx({\n txHash: depositTxHash,\n depositAddress: depositAddress,\n memo: memo || undefined\n });\n console.log(\"[NearStrategy] Deposit submitted successfully.\");\n } catch (e: any) {\n console.error(\"[NearStrategy] Failed to submit deposit to 1-Click:\", e.message);\n // We don't fail the whole verification if this fails, but it's risky. \n // Ideally we should retry or fail. For now log error.\n }\n } else {\n console.error(\"[NearStrategy] Could not determine deposit address from Stellar operations.\");\n }\n\n return {\n success: true,\n transactionHash: depositTxHash,\n netAmount: amount,\n data: { completed: true }\n };\n } else {\n return { success: false, errorReason: \"Stellar Transaction Failed\" };\n }\n } catch (e: any) {\n console.error(\"Stellar Verification Error\", e);\n return { success: false, errorReason: `Stellar Verification Failed: ${e.message}` };\n }\n }\n\n // We need RPC to verify. Using FACILITATOR_NETWORKS for convenience as it has clean RPCs\n const { createPublicClient, http } = await import(\"viem\");\n const { FACILITATOR_NETWORKS } = await import(\"@/constants/facilitator\");\n\n const networkConfig = FACILITATOR_NETWORKS[sourceChain];\n if (!networkConfig) {\n return { success: false, errorReason: `Unsupported source chain for verification: ${sourceChain}` };\n }\n\n const publicClient = createPublicClient({\n chain: networkConfig.chain,\n transport: http(networkConfig.rpcUrl)\n });\n\n try {\n console.log(`[NearStrategy] Waiting for receipt...`);\n // @ts-ignore\n const receipt = await publicClient.waitForTransactionReceipt({ hash: depositTxHash as `0x${string}` });\n console.log(`[NearStrategy] Receipt found. Status: ${receipt.status}`);\n\n if (receipt.status === \"success\") {\n\n // Get Transaction to find 'to' address\n const tx = await publicClient.getTransaction({ hash: depositTxHash as `0x${string}` });\n const depositAddress = tx.to;\n\n if (depositAddress) {\n console.log(`[NearStrategy] Submitting deposit to 1-Click: ${depositTxHash} -> ${depositAddress}`);\n try {\n await OneClickService.submitDepositTx({\n txHash: depositTxHash,\n depositAddress: depositAddress\n });\n console.log(\"[NearStrategy] Deposit submitted successfully.\");\n } catch (e: any) {\n console.error(\"[NearStrategy] Failed to submit deposit to 1-Click:\", e.message);\n }\n }\n\n return {\n success: true,\n transactionHash: depositTxHash,\n netAmount: amount, // rough estimate or we can re-quote if needed\n data: {\n // Info for UI\n completed: true\n }\n };\n } else {\n console.error(`[NearStrategy] Transaction failed. Status: ${receipt.status}`);\n return { success: false, errorReason: `Transaction Reverted on-chain (Status: ${receipt.status})` };\n }\n } catch (e: any) {\n console.error(`[NearStrategy] Verification Error:`, e);\n return { success: false, errorReason: `Verification Error: ${e.message}` };\n }\n }\n\n // 2. No Hash -> Get Quote & Prompt Deposit\n try {\n const quoteResult = await getNearQuote(\n sourceChain,\n destChain,\n amount,\n destToken,\n sourceToken,\n recipient,\n senderAddress // refund address\n );\n\n // Return success with the deposit address. \n return {\n success: true,\n transactionHash: \"PENDING_USER_DEPOSIT\",\n netAmount: quoteResult.amountAtomicNet,\n data: {\n depositAddress: quoteResult.depositAddress,\n amountToDeposit: quoteResult.amountAtomicNet,\n sourceToken: sourceToken || \"USDC\",\n memo: (quoteResult.quote.quote as any).depositMemo || (quoteResult.quote.quote as any).memo\n }\n } as any; // Casting as any to avoid strict type issues if SettleResponse doesn't have `data` yet\n\n } catch (e: any) {\n return { success: false, errorReason: e.message };\n }\n }\n}\n\nexport async function getNearQuote(\n sourceChain: ChainKey,\n destChain: ChainKey,\n amount: string,\n destToken?: string,\n sourceToken?: string,\n recipient?: string,\n senderAddress?: string,\n options?: { dry?: boolean }\n) {\n const sourceConfig = NETWORKS[sourceChain];\n const destConfig = NETWORKS[destChain];\n\n if (!sourceConfig || !destConfig) {\n throw new Error(\"Invalid chain configuration\");\n }\n\n const sourceAssetInfo = sourceConfig.crossChainInformation.nearIntentInformation?.assetsId.find(\n (a) => a.name === (sourceToken || \"USDC\")\n ) || sourceConfig.crossChainInformation.nearIntentInformation?.assetsId[0];\n\n const destAssetInfo = destConfig.crossChainInformation.nearIntentInformation?.assetsId.find(\n (a) => a.name === (destToken || \"USDC\")\n ) || destConfig.crossChainInformation.nearIntentInformation?.assetsId[0];\n\n const sourceAsset = sourceAssetInfo?.assetId;\n const destAsset = destAssetInfo?.assetId;\n\n if (!sourceAsset || !destAsset) {\n throw new Error(\"Near Intents not supported for these assets\");\n }\n\n const decimals = sourceAssetInfo?.decimals || (sourceChain === \"Stellar\" ? 7 : 6);\n const amountAtomicTotal = Math.floor(parseFloat(amount) * Math.pow(10, decimals));\n const isDev = process.env.NEXT_PUBLIC_ENVIROMENT === \"development\" || process.env.NODE_ENV === \"development\";\n // Fee is hardcoded here, should be dynamic or 0.02 as per previous logic\n const feeValue = isDev ? 0 : 0.02;\n\n const feeUnits = Math.floor(feeValue * Math.pow(10, decimals));\n const amountAtomicNet = (amountAtomicTotal - feeUnits).toString();\n\n if (BigInt(amountAtomicNet) <= 0) {\n throw new Error(\"Amount too small to cover fees\");\n }\n\n // Recipient on destination\n if (!recipient) {\n throw new Error(\"Recipient address is required for NEAR Quote\");\n }\n\n // Refund address on source (sender)\n const refundAddress = senderAddress || recipient;\n\n console.log(`[NearService] Requesting Quote: ${sourceChain} -> ${destChain}`, JSON.stringify({ amount, sourceAsset, destAsset, options }, null, 2));\n\n const quoteRequest: QuoteRequest = {\n dry: options?.dry || false,\n swapType: QuoteRequest.swapType.EXACT_INPUT,\n slippageTolerance: 100,\n originAsset: sourceAsset as string,\n depositType: QuoteRequest.depositType.ORIGIN_CHAIN,\n depositMode: sourceChain === \"Stellar\" ? QuoteRequest.depositMode.MEMO : undefined,\n destinationAsset: destAsset as string,\n amount: amountAtomicNet,\n refundTo: refundAddress,\n refundType: QuoteRequest.refundType.ORIGIN_CHAIN,\n recipient: recipient,\n recipientType: QuoteRequest.recipientType.DESTINATION_CHAIN,\n deadline: new Date(Date.now() + 3 * 60 * 1000).toISOString(),\n referral: \"1llet\",\n quoteWaitingTimeMs: 10000,\n };\n\n console.log(`[NearService] Final QuoteRequest:`, JSON.stringify(quoteRequest, null, 2));\n\n const quote = await OneClickService.getQuote(quoteRequest);\n\n if (!options?.dry && !quote.quote?.depositAddress) {\n throw new Error(\"No deposit address returned from 1-Click Quote\");\n }\n\n return {\n quote,\n depositAddress: quote.quote?.depositAddress || \"\",\n amountAtomicTotal: BigInt(amountAtomicTotal),\n amountAtomicNet\n };\n}\n\nexport async function getNearSimulation(\n sourceChain: ChainKey,\n destChain: ChainKey,\n amount: string,\n destToken?: string,\n sourceToken?: string\n) {\n console.log(\">>> [Bridge Quote] Simulation Request:\", { sourceChain, destChain, amount, destToken, sourceToken });\n\n if (!amount || isNaN(parseFloat(amount))) {\n throw new Error(\"Invalid amount\");\n }\n\n const amountNum = parseFloat(amount);\n const isDev = process.env.NEXT_PUBLIC_ENVIROMENT === \"development\" || process.env.NODE_ENV === \"development\";\n // User logic: const FEE = IS_DEV ? PlatformFess.DEV : PlatformFess.EVM_TO_OTHER\n const usedFee = isDev ? PlatformFees.DEV : PlatformFees.EVM_TO_OTHER;\n\n // Hardcoded min amount check as per snippet\n const MIN_AMOUNT = usedFee;\n\n // Determine decimals from config to ensure precision (e.g. Stellar USDC is 7)\n const sourceConfig = NETWORKS[sourceChain];\n const sourceAssetInfo = sourceConfig?.crossChainInformation?.nearIntentInformation?.assetsId.find(\n (a) => a.name === (sourceToken || \"USDC\")\n ) || sourceConfig?.crossChainInformation?.nearIntentInformation?.assetsId[0];\n const decimals = sourceAssetInfo?.decimals || (sourceChain === \"Stellar\" ? 7 : 6);\n\n const netAmountBridged = (amountNum - usedFee).toFixed(decimals);\n\n if (parseFloat(netAmountBridged) <= 0) {\n return {\n success: false,\n error: `Insufficient amount (${amountNum}) to cover fee (${usedFee})`,\n minAmount: MIN_AMOUNT\n };\n }\n\n const sender = sourceChain === \"Stellar\" ? DUMMY_STELLAR_ADDRESS : DUMMY_EVM_ADDRESS;\n const recipient = destChain === \"Stellar\" ? DUMMY_STELLAR_ADDRESS : DUMMY_EVM_ADDRESS;\n\n try {\n const quoteResult = await getNearQuote(\n sourceChain,\n destChain,\n amount,\n destToken,\n sourceToken,\n recipient,\n sender,\n { dry: true }\n );\n\n // console.log(\">>> [Bridge Quote] API Response:\", JSON.stringify(quoteResult.quote, null, 2));\n\n return {\n success: true,\n amountSent: amountNum,\n protocolFee: usedFee,\n netAmountBridged: parseFloat(netAmountBridged),\n // @ts-ignore - access safe property\n estimatedReceived: quoteResult.quote?.quote?.amountOutFormatted || \"0\",\n minAmount: MIN_AMOUNT\n };\n\n } catch (error: any) {\n console.error(\">>> [Bridge Quote] Error:\", error);\n return {\n success: false,\n error: error.message || \"Unknown quote error\",\n minAmount: MIN_AMOUNT\n };\n }\n}\n","import { BridgeStrategy, BridgeContext } from \"./types\";\nimport { SettleResponse } from \"@/services/types\";\nimport { NETWORKS } from \"@/constants/chainsInformation\";\n\n// Stargate API Base URL\nconst STARGATE_API_URL = \"https://stargate.finance/api/v1/quotes\";\n\nexport class StargateStrategy implements BridgeStrategy {\n name = \"StargateFinance\";\n\n canHandle(context: BridgeContext): boolean {\n const { sourceChain, destChain, sourceToken } = context;\n\n // Override: Force Stargate for Base -> Avalanche (USDC)\n if (sourceChain === \"Base\" && destChain === \"Avalanche\" && sourceToken === \"USDC\") {\n return true;\n }\n\n const sourceConfig = NETWORKS[sourceChain];\n const destConfig = NETWORKS[destChain];\n\n if (!sourceConfig || !destConfig) return false;\n\n // Check Chain Support\n const sourceStargate = sourceConfig.crossChainInformation.stargateInformation?.support;\n const destStargate = destConfig.crossChainInformation.stargateInformation?.support;\n\n if (!sourceStargate || !destStargate) return false;\n\n // Check Token Support\n // Find asset config for the token\n const sourceAsset = sourceConfig.assets.find(a => a.name === (sourceToken || \"USDC\"));\n const destAsset = destConfig.assets.find(a => a.name === (context.destToken || \"USDC\"));\n\n // Both assets must explicitly support Stargate\n return !!(sourceAsset?.supportsStargate && destAsset?.supportsStargate);\n }\n\n async execute(context: BridgeContext): Promise<SettleResponse> {\n const { sourceChain, destChain, amount, recipient, destToken, sourceToken, senderAddress } = context;\n\n console.log(`[StargateStrategy] Executing ${sourceChain} -> ${destChain} for ${amount} ${sourceToken}`);\n\n // Get configurations\n const sourceConfig = NETWORKS[sourceChain];\n const destConfig = NETWORKS[destChain];\n\n if (!sourceConfig || !destConfig) {\n return { success: false, errorReason: \"Invalid chain configuration\" };\n }\n\n const sourceAsset = sourceConfig.assets.find(a => a.name === (sourceToken || \"USDC\"));\n const destAsset = destConfig.assets.find(a => a.name === (destToken || \"USDC\"));\n\n if (!sourceAsset || !destAsset) {\n return { success: false, errorReason: \"Invalid asset configuration\" };\n }\n\n const decimals = sourceAsset.decimals;\n const amountAtomic = Math.floor(parseFloat(amount) * Math.pow(10, decimals)).toString();\n\n // 0.5% slippage default\n const minAmountAtomic = Math.floor(parseFloat(amountAtomic) * 0.995).toString();\n\n const srcChainKey = sourceChain.toLowerCase();\n const dstChainKey = destChain.toLowerCase();\n\n const url = new URL(STARGATE_API_URL);\n url.searchParams.append(\"srcToken\", sourceAsset.address as string);\n url.searchParams.append(\"dstToken\", destAsset.address as string);\n url.searchParams.append(\"srcAddress\", senderAddress || recipient);\n url.searchParams.append(\"dstAddress\", recipient);\n url.searchParams.append(\"srcChainKey\", srcChainKey);\n url.searchParams.append(\"dstChainKey\", dstChainKey);\n url.searchParams.append(\"srcAmount\", amountAtomic);\n url.searchParams.append(\"dstAmountMin\", minAmountAtomic);\n\n console.log(`[StargateStrategy] Fetching quote from: ${url.toString()}`);\n\n try {\n const response = await fetch(url.toString());\n const data = await response.json();\n\n if (!response.ok) {\n console.error(\"[StargateStrategy] API Error:\", data);\n return { success: false, errorReason: `Stargate API Error: ${JSON.stringify(data)}` };\n }\n\n console.log(\"[StargateStrategy] Quote received:\", JSON.stringify(data, null, 2));\n\n // Find a valid quote. Prefer 'taxi' (immediate), then 'bus'.\n const quotes = data.quotes || [];\n if (quotes.length === 0) {\n return { success: false, errorReason: \"No routes found from Stargate API\" };\n }\n\n const selectedQuote = quotes.find((q: any) => q.route === 'stargate/v2/taxi') || quotes[0];\n console.log(`[StargateStrategy] Selected Route: ${selectedQuote.route}`);\n\n // Extract 'bridge' step\n const bridgeStep = selectedQuote.steps.find((s: any) => s.type === 'bridge');\n if (!bridgeStep || !bridgeStep.transaction) {\n return { success: false, errorReason: \"No bridge transaction found in quote\" };\n }\n\n const txData = bridgeStep.transaction;\n const approvalTx = selectedQuote.steps.find((s: any) => s.type === 'approve')?.transaction;\n\n return {\n success: true,\n transactionHash: \"PENDING_USER_SIGNATURE\",\n netAmount: amount,\n data: {\n strategy: \"Stargate\",\n quote: selectedQuote,\n // Normalized Transaction Data for execution\n txTarget: txData.to,\n txData: txData.data,\n txValue: txData.value,\n // Metadata\n approvalRequired: approvalTx ? {\n target: approvalTx.to,\n data: approvalTx.data,\n value: approvalTx.value\n } : null\n }\n };\n\n } catch (e: any) {\n console.error(\"[StargateStrategy] Execution Error:\", e);\n return { success: false, errorReason: e.message };\n }\n }\n}\n\nexport async function getStargateSimulation(\n sourceChain: string,\n destChain: string,\n amount: string,\n recipient: string\n) {\n if (sourceChain === \"Base\" && destChain === \"Avalanche\") {\n // Proceed\n } else {\n // Simple validation or just let API fail?\n // Since we call this explicitly, we assume caller verified.\n }\n\n const { TransferManager } = await import(\"./TransferManager\");\n // We can reuse the class logic but better to just use static or duplicate\n // for separate Simulation vs Execution logic.\n // Actually, execute() returns quote data.\n\n // Let's implement standalone fetch.\n const sourceConfig = NETWORKS[sourceChain as any];\n const destConfig = NETWORKS[destChain as any];\n\n if (!sourceConfig || !destConfig) {\n return { success: false, error: \"Invalid Simulation Config\" };\n }\n\n const sourceAsset = sourceConfig.assets.find(a => a.name === \"USDC\");\n const destAsset = destConfig.assets.find(a => a.name === \"USDC\");\n\n if (!sourceAsset || !destAsset) {\n return { success: false, error: \"USDC not found on chains\" };\n }\n\n const decimals = sourceAsset.decimals;\n const amountAtomic = Math.floor(parseFloat(amount) * Math.pow(10, decimals)).toString();\n const minAmountAtomic = Math.floor(parseFloat(amountAtomic) * 0.995).toString();\n\n const srcChainKey = sourceChain.toLowerCase();\n const dstChainKey = destChain.toLowerCase();\n\n const url = new URL(STARGATE_API_URL);\n url.searchParams.append(\"srcToken\", sourceAsset.address as string);\n url.searchParams.append(\"dstToken\", destAsset.address as string);\n url.searchParams.append(\"srcAddress\", recipient || \"0x000000000000000000000000000000000000dEaD\");\n url.searchParams.append(\"dstAddress\", recipient || \"0x000000000000000000000000000000000000dEaD\");\n url.searchParams.append(\"srcChainKey\", srcChainKey);\n url.searchParams.append(\"dstChainKey\", dstChainKey);\n url.searchParams.append(\"srcAmount\", amountAtomic);\n url.searchParams.append(\"dstAmountMin\", minAmountAtomic);\n\n try {\n const response = await fetch(url.toString());\n const data = await response.json();\n\n if (!response.ok) {\n return { success: false, error: \"Stargate API Error\" };\n }\n\n const quotes = data.quotes || [];\n if (quotes.length === 0) return { success: false, error: \"No Stargate routes found\" };\n\n const selectedQuote = quotes.find((q: any) => q.route === 'stargate/v2/taxi') || quotes[0];\n\n // Stargate doesn't charge \"Protocol Fee\" in the same way (it's gas/slippage). \n // We can show Fee = (SrcAmount - DstAmount)\n const srcAmt = BigInt(selectedQuote.srcAmount);\n const dstAmt = BigInt(selectedQuote.dstAmount);\n const fees = srcAmt - dstAmt;\n const feeFormatted = (Number(fees) / Math.pow(10, decimals)).toFixed(6);\n\n const estimatedReceived = (Number(dstAmt) / Math.pow(10, destAsset.decimals)).toFixed(6);\n\n return {\n success: true,\n amountSent: parseFloat(amount),\n protocolFee: feeFormatted, // Fee in USDC\n netAmountBridged: parseFloat(amount), // Technically amount sent\n estimatedReceived: estimatedReceived,\n minAmount: \"0\"\n };\n } catch (e: any) {\n return { success: false, error: e.message };\n }\n}\n","import { BridgeStrategy, BridgeContext } from \"./types\";\nimport { CCTPStrategy } from \"./cctp\";\nimport { NearStrategy } from \"./near\";\nimport { StargateStrategy } from \"./stargate\";\nimport { SettleResponse } from \"@/services/types\";\n\nexport class TransferManager {\n private strategies: BridgeStrategy[];\n\n constructor() {\n this.strategies = [\n new CCTPStrategy(),\n new StargateStrategy(),\n new NearStrategy()\n ];\n }\n\n async execute(context: BridgeContext): Promise<SettleResponse> {\n // 1. Check Same Chain (Direct Transfer)\n if (context.sourceChain === context.destChain && context.sourceToken === context.destToken) {\n console.log(`[TransferManager] Same Chain detected. Signal Direct Transfer.`);\n // Return a signal that tells the client to execute a direct transfer\n return {\n success: true,\n transactionHash: \"DIRECT_TRANSFER_REQUIRED\",\n data: {\n action: \"DIRECT_TRANSFER\",\n amount: context.amount,\n token: context.sourceToken,\n recipient: context.recipient\n }\n };\n }\n\n const strategies = this.strategies;\n\n // 2. Check Stargate (Priority for testing Base -> Avalanche override)\n const stargateStrategy = strategies.find(s => s instanceof StargateStrategy);\n if (stargateStrategy && stargateStrategy.canHandle(context)) {\n console.log(`[TransferManager] Routing to: ${stargateStrategy.name} (Stargate)`);\n return stargateStrategy.execute(context);\n }\n\n // 3. Check CCTP (Highest Priority for Cross-Chain USDC)\n const cctpStrategy = strategies.find(s => s instanceof CCTPStrategy);\n if (cctpStrategy && cctpStrategy.canHandle(context)) {\n console.log(`[TransferManager] Routing to: ${cctpStrategy.name} (CCTP)`);\n return cctpStrategy.execute(context);\n }\n\n // 4. Check Near Intents\n const nearStrategy = strategies.find(s => s instanceof NearStrategy);\n if (nearStrategy && nearStrategy.canHandle(context)) {\n console.log(`[TransferManager] Routing to: ${nearStrategy.name} (Near)`);\n return nearStrategy.execute(context);\n }\n\n return {\n success: false,\n errorReason: `No suitable transfer strategy found for ${context.sourceChain} -> ${context.destChain}`\n };\n }\n}\n","export const factoryAbi = [\n {\n inputs: [\n { name: \"owner\", type: \"address\" },\n { name: \"salt\", type: \"uint256\" },\n ],\n name: \"getAccountAddress\",\n outputs: [{ name: \"\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { name: \"owner\", type: \"address\" },\n { name: \"salt\", type: \"uint256\" },\n ],\n name: \"isAccountDeployed\",\n outputs: [{ name: \"\", type: \"bool\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { name: \"owner\", type: \"address\" },\n { name: \"salt\", type: \"uint256\" },\n ],\n name: \"createAccount\",\n outputs: [{ name: \"account\", type: \"address\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n] as const;\n\nexport const entryPointAbi = [\n {\n inputs: [\n { name: \"sender\", type: \"address\" },\n { name: \"key\", type: \"uint192\" },\n ],\n name: \"getNonce\",\n outputs: [{ name: \"nonce\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n] as const;\n\nexport const smartAccountAbi = [\n {\n inputs: [\n { name: \"target\", type: \"address\" },\n { name: \"value\", type: \"uint256\" },\n { name: \"data\", type: \"bytes\" },\n ],\n name: \"execute\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { name: \"targets\", type: \"address[]\" },\n { name: \"values\", type: \"uint256[]\" },\n { name: \"datas\", type: \"bytes[]\" },\n ],\n name: \"executeBatch\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n] as const;\n\nexport const erc20Abi = [\n {\n inputs: [{ name: \"account\", type: \"address\" }],\n name: \"balanceOf\",\n outputs: [{ name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { name: \"to\", type: \"address\" },\n { name: \"amount\", type: \"uint256\" },\n ],\n name: \"transfer\",\n outputs: [{ name: \"\", type: \"bool\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { name: \"spender\", type: \"address\" },\n { name: \"amount\", type: \"uint256\" },\n ],\n name: \"approve\",\n outputs: [{ name: \"\", type: \"bool\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { name: \"owner\", type: \"address\" },\n { name: \"spender\", type: \"address\" },\n ],\n name: \"allowance\",\n outputs: [{ name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { name: \"from\", type: \"address\" },\n { name: \"to\", type: \"address\" },\n { name: \"amount\", type: \"uint256\" },\n ],\n name: \"transferFrom\",\n outputs: [{ name: \"\", type: \"bool\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"decimals\",\n outputs: [{ name: \"\", type: \"uint8\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n] as const;\n","import { type Address, type Hash } from \"viem\";\nimport { type ChainConfig, type EvmChainConfig, type UserOperation, type GasEstimate, type UserOpReceipt, type ApprovalSupportResult } from \"./types\";\n\nexport class BundlerClient {\n private bundlerUrl: string;\n private entryPointAddress: Address;\n\n constructor(config: EvmChainConfig, entryPointAddress: Address) {\n this.bundlerUrl = config.bundlerUrl;\n this.entryPointAddress = entryPointAddress;\n }\n\n private async call(method: string, params: any[]): Promise<any> {\n const response = await fetch(this.bundlerUrl, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n jsonrpc: \"2.0\",\n id: 1,\n method,\n params,\n }),\n });\n\n const result = await response.json();\n if (result.error) {\n throw new Error(result.error.message);\n }\n return result.result;\n }\n\n async estimateGas(userOp: Partial<UserOperation>): Promise<GasEstimate> {\n const result = await this.call(\"eth_estimateUserOperationGas\", [\n {\n sender: userOp.sender,\n nonce: userOp.nonce ? \"0x\" + userOp.nonce.toString(16) : \"0x0\",\n initCode: userOp.initCode || \"0x\",\n callData: userOp.callData || \"0x\",\n paymasterAndData: userOp.paymasterAndData || \"0x\",\n signature: \"0x\",\n },\n this.entryPointAddress,\n ]);\n\n console.log(\"DEBUG: estimateGas result:\", result);\n\n return {\n callGasLimit: result.callGasLimit,\n verificationGasLimit: result.verificationGasLimit,\n preVerificationGas: result.preVerificationGas,\n maxFeePerGas: result.maxFeePerGas,\n maxPriorityFeePerGas: result.maxPriorityFeePerGas,\n paymasterAndData: result.paymasterAndData,\n };\n }\n\n async sendUserOperation(userOp: UserOperation): Promise<Hash> {\n return await this.call(\"eth_sendUserOperation\", [\n {\n sender: userOp.sender,\n nonce: \"0x\" + userOp.nonce.toString(16),\n initCode: userOp.initCode,\n callData: userOp.callData,\n callGasLimit: \"0x\" + userOp.callGasLimit.toString(16),\n verificationGasLimit: \"0x\" + userOp.verificationGasLimit.toString(16),\n preVerificationGas: \"0x\" + userOp.preVerificationGas.toString(16),\n maxFeePerGas: \"0x\" + userOp.maxFeePerGas.toString(16),\n maxPriorityFeePerGas: \"0x\" + userOp.maxPriorityFeePerGas.toString(16),\n paymasterAndData: userOp.paymasterAndData,\n signature: userOp.signature,\n },\n this.entryPointAddress,\n ]);\n }\n\n async waitForUserOperation(userOpHash: Hash, timeout = 60000): Promise<UserOpReceipt> {\n const startTime = Date.now();\n\n while (Date.now() - startTime < timeout) {\n const result = await this.call(\"eth_getUserOperationReceipt\", [userOpHash]);\n\n if (result) {\n return result as UserOpReceipt;\n }\n\n // Wait 2 seconds before polling again\n await new Promise((resolve) => setTimeout(resolve, 2000));\n }\n\n throw new Error(\"Timeout waiting for UserOperation\");\n }\n\n async requestApprovalSupport(token: Address, owner: Address, spender: Address, amount: bigint): Promise<ApprovalSupportResult> {\n return await this.call(\"pm_requestApprovalSupport\", [\n token,\n owner,\n spender,\n amount.toString()\n ]);\n }\n}\n","import { type Address, type PublicClient, encodeFunctionData } from \"viem\";\nimport { type ChainConfig, type Token } from \"./types\";\nimport { erc20Abi } from \"./constants\";\n\nexport class TokenService {\n private tokens: Map<string, Token> = new Map();\n private publicClient: PublicClient;\n\n constructor(chainConfig: ChainConfig, publicClient: PublicClient) {\n this.publicClient = publicClient;\n\n chainConfig.tokens.forEach(token => {\n this.tokens.set(token.symbol.toUpperCase(), token);\n });\n }\n\n /**\n * Resolve token address from symbol or return address if provided\n */\n getTokenAddress(token: string | Address): Address {\n\n\n if (token.startsWith(\"0x\")) return token as Address;\n const info = this.tokens.get(token.toUpperCase());\n if (!info) throw new Error(`Token ${token} not found in chain config`);\n return info.address;\n }\n\n /**\n * Get balance of a token for an account\n */\n async getBalance(token: string | Address, account: Address): Promise<bigint> {\n const address = this.getTokenAddress(token);\n\n if (address === \"0x0000000000000000000000000000000000000000\") {\n return await this.publicClient.getBalance({ address: account });\n }\n return await this.publicClient.readContract({\n address,\n abi: erc20Abi,\n functionName: \"balanceOf\",\n args: [account],\n }) as bigint;\n }\n\n /**\n * Get allowance (ERC-20 only)\n */\n async getAllowance(token: string | Address, owner: Address, spender: Address): Promise<bigint> {\n const address = this.getTokenAddress(token);\n\n if (address === \"0x0000000000000000000000000000000000000000\") {\n return 0n;\n }\n\n return await this.publicClient.readContract({\n address,\n abi: erc20Abi,\n functionName: \"allowance\",\n args: [owner, spender],\n }) as bigint;\n }\n\n /**\n * Encode transfer data\n */\n encodeTransfer(recipient: Address, amount: bigint): `0x${string}` {\n return encodeFunctionData({\n abi: erc20Abi,\n functionName: \"transfer\",\n args: [recipient, amount]\n });\n }\n\n /**\n * Encode transferFrom data\n */\n encodeTransferFrom(sender: Address, recipient: Address, amount: bigint): `0x${string}` {\n return encodeFunctionData({\n abi: erc20Abi,\n functionName: \"transferFrom\",\n args: [sender, recipient, amount]\n });\n }\n\n /**\n * Encode approve data\n */\n encodeApprove(spender: Address, amount: bigint): `0x${string}` {\n return encodeFunctionData({\n abi: erc20Abi,\n functionName: \"approve\",\n args: [spender, amount]\n });\n }\n}\n","import {\n type Address,\n type Hex,\n type PublicClient,\n encodeFunctionData,\n encodeAbiParameters,\n keccak256\n} from \"viem\";\nimport { type ChainConfig, type UserOperation } from \"./types\";\nimport { BundlerClient } from \"./BundlerClient\";\nimport { factoryAbi, smartAccountAbi, entryPointAbi } from \"./constants\";\n\nexport class UserOpBuilder {\n private chainConfig: ChainConfig;\n private bundlerClient: BundlerClient;\n private publicClient: PublicClient;\n private entryPointAddress: Address;\n private factoryAddress: Address;\n\n constructor(\n chainConfig: ChainConfig,\n bundlerClient: BundlerClient,\n publicClient: PublicClient\n ) {\n this.chainConfig = chainConfig;\n this.bundlerClient = bundlerClient;\n this.publicClient = publicClient;\n\n this.entryPointAddress = (chainConfig as any).entryPointAddress!;\n this.factoryAddress = (chainConfig as any).factoryAddress!;\n }\n\n async getNonce(smartAccountAddress: Address): Promise<bigint> {\n return await this.publicClient.readContract({\n address: this.entryPointAddress,\n abi: entryPointAbi,\n functionName: \"getNonce\",\n args: [smartAccountAddress, 0n],\n }) as bigint;\n }\n\n buildInitCode(owner: Address): Hex {\n const createAccountData = encodeFunctionData({\n abi: factoryAbi,\n functionName: \"createAccount\",\n args: [owner, 0n],\n });\n return `${this.factoryAddress}${createAccountData.slice(2)}` as Hex;\n }\n\n async isAccountDeployed(smartAccountAddress: Address): Promise<boolean> {\n const code = await this.publicClient.getCode({\n address: smartAccountAddress,\n });\n return code !== undefined && code !== \"0x\";\n }\n\n async buildUserOperationBatch(\n owner: Address,\n smartAccountAddress: Address,\n transactions: { target: Address; value: bigint; data: Hex }[]\n ): Promise<UserOperation> {\n const isDeployed = await this.isAccountDeployed(smartAccountAddress);\n const initCode = isDeployed ? \"0x\" : this.buildInitCode(owner);\n\n const targets = transactions.map((tx) => tx.target);\n const values = transactions.map((tx) => tx.value);\n const datas = transactions.map((tx) => tx.data);\n\n const callData = encodeFunctionData({\n abi: smartAccountAbi,\n functionName: \"executeBatch\",\n args: [targets, values, datas],\n });\n\n const nonce = await this.getNonce(smartAccountAddress);\n\n const partialOp = {\n sender: smartAccountAddress,\n nonce,\n initCode: initCode as Hex,\n callData,\n paymasterAndData: ((this.chainConfig as any).paymasterAddress || \"0x\") as Hex,\n };\n\n const gasEstimate = await this.bundlerClient.estimateGas(partialOp);\n\n return {\n ...partialOp,\n callGasLimit: BigInt(gasEstimate.callGasLimit),\n verificationGasLimit: BigInt(gasEstimate.verificationGasLimit),\n preVerificationGas: BigInt(gasEstimate.preVerificationGas),\n maxFeePerGas: BigInt(gasEstimate.maxFeePerGas),\n maxPriorityFeePerGas: BigInt(gasEstimate.maxPriorityFeePerGas),\n paymasterAndData: (gasEstimate.paymasterAndData || partialOp.paymasterAndData) as Hex,\n signature: \"0x\",\n };\n }\n\n async buildDeployUserOp(\n owner: Address,\n smartAccountAddress: Address\n ): Promise<UserOperation> {\n const isDeployed = await this.isAccountDeployed(smartAccountAddress);\n if (isDeployed) throw new Error(\"Account already deployed\");\n\n const initCode = this.buildInitCode(owner);\n const callData = \"0x\";\n const nonce = await this.getNonce(smartAccountAddress);\n\n const partialOp = {\n sender: smartAccountAddress,\n nonce,\n initCode: initCode as Hex,\n callData: callData as Hex,\n paymasterAndData: ((this.chainConfig as any).paymasterAddress || \"0x\") as Hex,\n };\n\n const gasEstimate = await this.bundlerClient.estimateGas(partialOp);\n\n return {\n ...partialOp,\n callGasLimit: BigInt(gasEstimate.callGasLimit),\n verificationGasLimit: BigInt(gasEstimate.verificationGasLimit),\n preVerificationGas: BigInt(gasEstimate.preVerificationGas),\n maxFeePerGas: BigInt(gasEstimate.maxFeePerGas),\n maxPriorityFeePerGas: BigInt(gasEstimate.maxPriorityFeePerGas),\n paymasterAndData: (gasEstimate.paymasterAndData || partialOp.paymasterAndData) as Hex,\n signature: \"0x\",\n };\n }\n\n getUserOpHash(userOp: UserOperation): Hex {\n const packed = encodeAbiParameters(\n [\n { type: \"address\" },\n { type: \"uint256\" },\n { type: \"bytes32\" },\n { type: \"bytes32\" },\n { type: \"uint256\" },\n { type: \"uint256\" },\n { type: \"uint256\" },\n { type: \"uint256\" },\n { type: \"uint256\" },\n { type: \"bytes32\" },\n ],\n [\n userOp.sender,\n userOp.nonce,\n keccak256(userOp.initCode),\n keccak256(userOp.callData),\n userOp.callGasLimit,\n userOp.verificationGasLimit,\n userOp.preVerificationGas,\n userOp.maxFeePerGas,\n userOp.maxPriorityFeePerGas,\n keccak256(userOp.paymasterAndData),\n ]\n );\n\n const packedHash = keccak256(packed);\n\n return keccak256(\n encodeAbiParameters(\n [{ type: \"bytes32\" }, { type: \"address\" }, { type: \"uint256\" }],\n [packedHash, this.entryPointAddress, BigInt(this.chainConfig.chain.id)]\n )\n );\n }\n}\n","import {\n type Address,\n createPublicClient,\n createWalletClient,\n decodeErrorResult,\n type Hash,\n type Hex,\n http,\n type LocalAccount,\n type PublicClient,\n type WalletClient\n} from \"viem\";\nimport { privateKeyToAccount } from \"viem/accounts\";\nimport { factoryAbi, } from \"./constants\";\nimport { type ApprovalSupportResult, type ChainConfig, type EvmChainConfig, type UserOperation, type UserOpReceipt } from \"./types\";\nimport { BundlerClient } from \"./BundlerClient\";\nimport { TokenService } from \"./TokenService\";\nimport { UserOpBuilder } from \"./UserOpBuilder\";\n\n/**\n * ERC-4337 Account Abstraction Client\n */\nexport class AccountAbstraction {\n private owner: Address | null = null;\n private smartAccountAddress: Address | null = null;\n private chainConfig: EvmChainConfig;\n private publicClient: PublicClient;\n private bundlerClient: BundlerClient;\n private walletClient: WalletClient | null = null;\n\n // Services\n private tokenService: TokenService;\n private userOpBuilder: UserOpBuilder;\n\n // Resolved addresses\n private entryPointAddress: Address;\n private factoryAddress: Address;\n\n constructor(chainConfig: EvmChainConfig) {\n this.chainConfig = chainConfig;\n\n // Validation\n if (!chainConfig.entryPointAddress) throw new Error(\"EntryPoint address required\");\n this.entryPointAddress = chainConfig.entryPointAddress;\n if (!chainConfig.factoryAddress) throw new Error(\"Factory address required\");\n this.factoryAddress = chainConfig.factoryAddress;\n\n // Setup Clients\n const rpcUrl = chainConfig.rpcUrl || chainConfig.chain.rpcUrls.default.http[0];\n this.publicClient = createPublicClient({\n chain: chainConfig.chain,\n transport: http(rpcUrl),\n });\n\n this.bundlerClient = new BundlerClient(chainConfig, this.entryPointAddress);\n\n // Setup Services\n this.tokenService = new TokenService(chainConfig, this.publicClient);\n this.userOpBuilder = new UserOpBuilder(chainConfig, this.bundlerClient, this.publicClient);\n }\n\n async connect(signer?: Hex | WalletClient): Promise<{ owner: Address; smartAccount: Address }> {\n // Mode 1: Private Key (Local Signer)\n if (typeof signer === 'string') {\n const account: LocalAccount = privateKeyToAccount(signer);\n this.owner = account.address;\n\n const rpcUrl = this.chainConfig.rpcUrl || this.chainConfig.chain.rpcUrls.default.http[0];\n this.walletClient = createWalletClient({\n account,\n chain: this.chainConfig.chain,\n transport: http(rpcUrl)\n });\n\n } else if (signer && typeof signer === 'object') {\n // Mode 2: External Wallet Client (e.g. Wagmi)\n this.walletClient = signer as WalletClient;\n if (!this.walletClient.account) throw new Error(\"WalletClient must have an account\");\n this.owner = this.walletClient.account.address;\n\n } else {\n // Mode 3: External Provider (MetaMask window.ethereum)\n if (typeof window === \"undefined\" || !window.ethereum) {\n throw new Error(\"MetaMask is not installed and no private key provided\");\n }\n\n // Request account access\n const accounts = (await window.ethereum.request({\n method: \"eth_requestAccounts\",\n })) as string[];\n\n if (!accounts || accounts.length === 0) throw new Error(\"No accounts found\");\n\n // Check network\n const chainId = (await window.ethereum.request({\n method: \"eth_chainId\",\n })) as string;\n const targetChainId = this.chainConfig.chain.id;\n\n if (parseInt(chainId, 16) !== targetChainId) {\n try {\n await window.ethereum.request({\n method: \"wallet_switchEthereumChain\",\n params: [{ chainId: \"0x\" + targetChainId.toString(16) }],\n });\n } catch (switchError: unknown) {\n const error = switchError as { code?: number };\n if (error.code === 4902) {\n await window.ethereum.request({\n method: \"wallet_addEthereumChain\",\n params: [\n {\n chainId: \"0x\" + targetChainId.toString(16),\n chainName: this.chainConfig.chain.name,\n nativeCurrency: this.chainConfig.chain.nativeCurrency,\n rpcUrls: [this.chainConfig.rpcUrl || this.chainConfig.chain.rpcUrls.default.http[0]],\n blockExplorerUrls: this.chainConfig.chain.blockExplorers?.default?.url\n ? [this.chainConfig.chain.blockExplorers.default.url]\n : [],\n },\n ],\n });\n } else {\n throw switchError;\n }\n }\n }\n\n this.owner = accounts[0] as Address;\n // No walletClient needed, we use window.ethereum directly\n }\n\n this.smartAccountAddress = await this.getSmartAccountAddress(this.owner!);\n\n return {\n owner: this.owner!,\n smartAccount: this.smartAccountAddress,\n };\n }\n\n // --- Account Management ---\n\n async isAccountDeployed(): Promise<boolean> {\n if (!this.smartAccountAddress) return false;\n const code = await this.publicClient.getBytecode({ address: this.smartAccountAddress });\n return code !== undefined;\n }\n\n async deployAccount(): Promise<UserOpReceipt> {\n if (!this.owner || !this.smartAccountAddress) throw new Error(\"Not connected\");\n return this.sendTransaction({\n target: this.smartAccountAddress,\n value: 0n,\n data: \"0x\"\n });\n }\n\n /**\n * Get the Smart Account address for an owner\n */\n async getSmartAccountAddress(owner: Address): Promise<Address> {\n const address = await this.publicClient.readContract({\n address: this.factoryAddress,\n abi: factoryAbi,\n functionName: \"getAccountAddress\",\n args: [owner, 0n],\n }) as Address;\n return address;\n }\n\n // --- Token Methods (Delegated) ---\n\n getTokenAddress(token: string | Address): Address {\n return this.tokenService.getTokenAddress(token);\n }\n\n async getBalance(token: string | Address): Promise<bigint> {\n if (!this.smartAccountAddress) throw new Error(\"Not connected\");\n return this.tokenService.getBalance(token, this.smartAccountAddress);\n }\n\n async getEoaBalance(token: string | Address): Promise<bigint> {\n if (!this.owner) throw new Error(\"Not connected\");\n return this.tokenService.getBalance(token, this.owner);\n }\n\n\n\n async getAllowance(token: string | Address = \"USDC\"): Promise<bigint> {\n if (!this.owner || !this.smartAccountAddress) throw new Error(\"Not connected\");\n return this.tokenService.getAllowance(token, this.owner, this.smartAccountAddress);\n }\n\n /**\n * Get comprehensive state of the account for a specific token\n * Useful for UI initialization\n */\n async getAccountState(token: string | Address) {\n if (!this.owner || !this.smartAccountAddress) throw new Error(\"Not connected\");\n\n const tokenAddress = this.getTokenAddress(token);\n const isNative = tokenAddress === \"0x0000000000000000000000000000000000000000\";\n\n const [balance, eoaBalance, allowance, isDeployed] = await Promise.all([\n this.getBalance(token),\n this.getEoaBalance(token),\n isNative ? 0n : this.getAllowance(token).catch(() => 0n), // Handle native/error gracefully\n this.isAccountDeployed()\n ]);\n\n return {\n owner: this.owner,\n smartAccount: this.smartAccountAddress,\n balance,\n eoaBalance,\n allowance,\n isDeployed\n };\n }\n\n // --- Transactions ---\n\n async sendTransaction(\n tx: { target: Address; value?: bigint; data?: Hex }\n ): Promise<UserOpReceipt> {\n return this.sendBatchTransaction([tx]);\n }\n\n async sendBatchTransaction(\n txs: { target: Address; value?: bigint; data?: Hex }[]\n ): Promise<UserOpReceipt> {\n if (!this.owner || !this.smartAccountAddress) throw new Error(\"Not connected\");\n\n // Normalize\n const transactions = txs.map(tx => ({\n target: tx.target,\n value: tx.value ?? 0n,\n data: tx.data ?? \"0x\"\n }));\n\n try {\n const userOp = await this.userOpBuilder.buildUserOperationBatch(\n this.owner,\n this.smartAccountAddress,\n transactions\n );\n const signed = await this.signUserOperation(userOp);\n const hash = await this.sendUserOperation(signed);\n return await this.waitForUserOperation(hash);\n } catch (error) {\n throw this.decodeError(error);\n }\n }\n\n async deposit(amount: bigint): Promise<Hash> {\n if (!this.owner || !this.smartAccountAddress) throw new Error(\"Not connected\");\n\n if (this.walletClient) {\n return await this.walletClient.sendTransaction({\n account: this.walletClient.account!,\n to: this.smartAccountAddress,\n value: amount,\n chain: this.chainConfig.chain\n });\n }\n\n return await window.ethereum!.request({\n method: \"eth_sendTransaction\",\n params: [{\n from: this.owner,\n to: this.smartAccountAddress,\n value: \"0x\" + amount.toString(16)\n }]\n }) as Hash;\n }\n\n /**\n * Smart Transfer: Automatically chooses best method (SA vs EOA) based on balances.\n * Supports strict fee handling.\n */\n async smartTransfer(\n token: Address | string,\n recipient: Address,\n amount: bigint,\n fee?: { amount: bigint; recipient: Address }\n ): Promise<UserOpReceipt | { receipt: { transactionHash: Hash } }> {\n if (!this.owner || !this.smartAccountAddress) throw new Error(\"Not connected\");\n\n const tokenAddress = this.getTokenAddress(token);\n const isNative = tokenAddress === \"0x0000000000000000000000000000000000000000\";\n\n // Refresh State\n const [saBal, eoaBal, allowance] = await Promise.all([\n this.getBalance(token),\n this.getEoaBalance(token),\n isNative ? 0n : this.getAllowance(token).catch(() => 0n)\n ]);\n\n const totalNeeded = amount + (fee?.amount || 0n);\n\n // Strategy 1: Smart Account Pay (Preferred)\n if (saBal >= totalNeeded) {\n const txs = [];\n\n // Transfer to Recipient\n if (isNative) {\n txs.push({ target: recipient, value: amount, data: \"0x\" as Hex });\n } else {\n txs.push({ target: tokenAddress, value: 0n, data: this.tokenService.encodeTransfer(recipient, amount) });\n }\n\n // Transfer Fee\n if (fee && fee.amount > 0n) {\n if (isNative) {\n txs.push({ target: fee.recipient, value: fee.amount, data: \"0x\" as Hex });\n } else {\n txs.push({ target: tokenAddress, value: 0n, data: this.tokenService.encodeTransfer(fee.recipient, fee.amount) });\n }\n }\n console.log(\"SmartTransfer: Using Smart Account\");\n return this.sendBatchTransaction(txs);\n }\n\n // Strategy 2: EOA Pay (Fallback / Pull)\n if (eoaBal >= totalNeeded) {\n if (isNative) {\n // Native EOA Transfer (Direct)\n console.log(\"SmartTransfer: Using EOA (Native)\");\n if (this.walletClient) {\n const hash = await this.walletClient.sendTransaction({\n account: this.walletClient.account!,\n to: recipient,\n value: amount,\n chain: this.chainConfig.chain\n });\n return { receipt: { transactionHash: hash } };\n }\n const hash = await window.ethereum!.request({\n method: \"eth_sendTransaction\",\n params: [{ from: this.owner, to: recipient, value: \"0x\" + amount.toString(16) }]\n }) as Hash;\n return { receipt: { transactionHash: hash } };\n } else {\n // ERC-20 EOA Pull (TransferFrom)\n console.log(\"SmartTransfer: Using EOA (Pull)\");\n // Check allowance\n if (allowance < totalNeeded) {\n // Infinite approval standard: maxUint256\n throw new Error(`Approval required. Please approve ${token} usage.`);\n }\n\n const txs = [];\n // Pull to Recipient\n txs.push({\n target: tokenAddress,\n value: 0n,\n data: this.tokenService.encodeTransferFrom(this.owner, recipient, amount)\n });\n\n // Pull Fee\n if (fee && fee.amount > 0n) {\n txs.push({\n target: tokenAddress,\n value: 0n,\n data: this.tokenService.encodeTransferFrom(this.owner, fee.recipient, fee.amount)\n });\n }\n return this.sendBatchTransaction(txs);\n }\n }\n\n throw new Error(`Insufficient funds.`);\n }\n\n async transfer(\n token: Address | string,\n recipient: Address,\n amount: bigint\n ): Promise<UserOpReceipt> {\n const tokenAddress = this.getTokenAddress(token);\n\n if (tokenAddress === \"0x0000000000000000000000000000000000000000\") {\n return this.sendTransaction({\n target: recipient,\n value: amount,\n data: \"0x\"\n });\n }\n\n // ERC-20\n const data = this.tokenService.encodeTransfer(recipient, amount);\n return this.sendTransaction({\n target: tokenAddress,\n value: 0n,\n data\n });\n }\n\n /**\n * Approve a token for the Smart Account\n */\n async approveToken(\n token: Address,\n spender: Address,\n amount: bigint = 115792089237316195423570985008687907853269984665640564039457584007913129639935n\n ): Promise<Hash | \"NOT_NEEDED\"> {\n if (!this.owner) throw new Error(\"Not connected\");\n\n const support = await this.requestApprovalSupport(token, spender, amount);\n\n if (support.type === \"approve\") {\n const data = this.tokenService.encodeApprove(spender, amount);\n\n if (this.walletClient) {\n return await this.walletClient.sendTransaction({\n account: this.walletClient.account!,\n to: token,\n data,\n chain: this.chainConfig.chain\n });\n }\n\n return await window.ethereum!.request({\n method: \"eth_sendTransaction\",\n params: [{\n from: this.owner,\n to: token,\n data,\n }]\n }) as Hash;\n }\n\n if (support.type === \"permit\") throw new Error(\"Permit not yet supported\");\n return \"NOT_NEEDED\";\n }\n\n // --- Core Bridge to Bundler/UserOp ---\n\n async signUserOperation(userOp: UserOperation): Promise<UserOperation> {\n if (!this.owner) throw new Error(\"Not connected\");\n\n const userOpHash = this.userOpBuilder.getUserOpHash(userOp);\n let signature: Hex;\n\n if (this.walletClient) {\n signature = await this.walletClient.signMessage({\n account: this.walletClient.account!,\n message: { raw: userOpHash } // Sign hash directly\n });\n } else {\n signature = (await window.ethereum!.request({\n method: \"personal_sign\",\n params: [userOpHash, this.owner],\n })) as Hex;\n }\n\n return { ...userOp, signature };\n }\n\n async sendUserOperation(userOp: UserOperation): Promise<Hash> {\n return this.bundlerClient.sendUserOperation(userOp);\n }\n\n async waitForUserOperation(hash: Hash, timeout = 60000) {\n return this.bundlerClient.waitForUserOperation(hash, timeout);\n }\n\n // Internal but exposed via BundlerClient originally\n async requestApprovalSupport(token: Address, spender: Address, amount: bigint): Promise<ApprovalSupportResult> {\n if (!this.owner) throw new Error(\"Not connected\");\n return this.bundlerClient.requestApprovalSupport(token, this.owner, spender, amount);\n }\n\n // Error Decoding (Private)\n private decodeError(error: any): Error {\n const msg = error?.message || \"\";\n const hexMatch = msg.match(/(0x[0-9a-fA-F]+)/);\n\n if (hexMatch) {\n try {\n const decoded = decodeErrorResult({\n abi: [{ inputs: [{ name: \"message\", type: \"string\" }], name: \"Error\", type: \"error\" }],\n data: hexMatch[0] as Hex\n });\n if (decoded.errorName === \"Error\") return new Error(`Smart Account Error: ${decoded.args[0]}`);\n } catch (e) { /* ignore */ }\n }\n\n if (msg.includes(\"AA21\")) return new Error(\"Smart Account: Native transfer failed (ETH missing?)\");\n if (msg.includes(\"AA25\")) return new Error(\"Smart Account: Invalid account nonce\");\n\n return error instanceof Error ? error : new Error(String(error));\n }\n\n // Getters\n getOwner() { return this.owner; }\n getSmartAccount() { return this.smartAccountAddress; }\n}\n\n// Global window types for MetaMask\ndeclare global {\n interface Window {\n ethereum?: {\n request: (args: { method: string; params?: unknown[] }) => Promise<unknown>;\n on: (event: string, callback: (args: unknown) => void) => void;\n removeListener: (event: string, callback: (args: unknown) => void) => void;\n };\n }\n}\n","import { type ChainConfig } from \"./types\";\nimport { type ChainConfig as ChainConfigData } from \"./types/chain\";\nimport { BASE } from \"./chains/Evm/Base\";\nimport { GNOSIS } from \"./chains/Evm/Gnosis\";\nimport { OPTIMISM } from \"./chains/Evm/Optimism\";\nimport { BASE_SEPOLIA as BASE_SEPOLIA_DATA } from \"./chains/Evm/BaseSepolia\";\nimport { AVALANCHE } from \"./chains/Evm/Avalanche\";\nimport { BNB } from \"./chains/Evm/Binance\";\nimport { POLYGON } from \"./chains/Evm/Polygon\";\nimport { ARBITRUM } from \"./chains/Evm/Arbitrum\";\nimport { UNICHAIN } from \"./chains/Evm/Unichain\";\nimport { Monad as MONAD } from \"./chains/Evm/Monad\";\nimport {\n base,\n baseSepolia,\n gnosis,\n optimism,\n avalanche,\n bsc,\n polygon,\n arbitrum,\n unichain,\n monad\n} from \"viem/chains\";\n\nimport { STELLAR } from \"./chains/NoEvm/Stellar\";\n\nfunction mapToSDKConfig(data: ChainConfigData): ChainConfig {\n if (data.nonEvm) {\n return {\n chain: { id: 9000, name: \"Stellar\" }, // Custom ID for Stellar\n tokens: data.assets.map(a => ({\n symbol: a.name,\n decimals: a.decimals,\n address: a.address!\n }))\n };\n }\n if (!data.evm) throw new Error(\"Non-EVM config used in EVM SDK\");\n return {\n chain: data.evm.chain,\n rpcUrl: data.evm.rpcUrl || undefined,\n bundlerUrl: data.evm.bundlerUrl!,\n entryPointAddress: data.evm.entryPointAddress,\n factoryAddress: data.evm.factoryAddress,\n paymasterAddress: data.evm.paymasterAddress,\n tokens: data.assets.map(a => ({\n symbol: a.name,\n decimals: a.decimals,\n address: a.address as `0x${string}`\n }))\n };\n}\n\nexport const BASE_MAINNET: ChainConfig = mapToSDKConfig(BASE);\nexport const OPTIMISM_MAINNET: ChainConfig = mapToSDKConfig(OPTIMISM);\nexport const GNOSIS_MAINNET: ChainConfig = mapToSDKConfig(GNOSIS);\nexport const BASE_SEPOLIA: ChainConfig = mapToSDKConfig(BASE_SEPOLIA_DATA);\nexport const AVALANCHE_MAINNET: ChainConfig = mapToSDKConfig(AVALANCHE);\nexport const BSC_MAINNET: ChainConfig = mapToSDKConfig(BNB);\nexport const POLYGON_MAINNET: ChainConfig = mapToSDKConfig(POLYGON);\nexport const ARBITRUM_MAINNET: ChainConfig = mapToSDKConfig(ARBITRUM);\nexport const UNICHAIN_MAINNET: ChainConfig = mapToSDKConfig(UNICHAIN);\nexport const MONAD_MAINNET: ChainConfig = mapToSDKConfig(MONAD);\nexport const STELLAR_MAINNET: ChainConfig = mapToSDKConfig(STELLAR);\n\nexport const CHAIN_CONFIGS: Record<number, ChainConfig> = {\n [base.id]: BASE_MAINNET,\n [baseSepolia.id]: BASE_SEPOLIA,\n [gnosis.id]: GNOSIS_MAINNET,\n [optimism.id]: OPTIMISM_MAINNET,\n [avalanche.id]: AVALANCHE_MAINNET,\n [bsc.id]: BSC_MAINNET,\n [polygon.id]: POLYGON_MAINNET,\n [arbitrum.id]: ARBITRUM_MAINNET,\n [unichain.id]: UNICHAIN_MAINNET,\n [monad.id]: MONAD_MAINNET,\n 9000: STELLAR_MAINNET\n};\n\n","import { baseSepolia } from \"viem/chains\";\nimport { ChainConfig } from \"../../types/chain.js\";\nimport { BUNDLER_URL } from \"../../constants/bundler\";\n\nexport const BASE_SEPOLIA: ChainConfig = {\n assets: [\n {\n name: \"USDC\",\n decimals: 6,\n address: \"0x036CbD53842c5426634e7929541eC2318f3dCF7e\",\n coingeckoId: \"usd-coin\"\n },\n {\n name: \"ETH\",\n decimals: 18,\n address: \"0x0000000000000000000000000000000000000000\",\n coingeckoId: \"ethereum\"\n }\n ],\n evm: {\n chain: baseSepolia,\n rpcUrl: \"https://sepolia.base.org\",\n supports7702: true,\n erc4337: true,\n bundlerUrl: `${BUNDLER_URL}/rpc?chain=baseSepolia`,\n entryPointAddress: \"0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789\",\n factoryAddress: \"0x9406Cc6185a346906296840746125a0E44976454\",\n // Paymaster optional\n },\n crossChainInformation: {\n circleInformation: {\n supportCirclePaymaster: false,\n aproxFromFee: 0,\n cCTPInformation: {\n supportCCTP: false,\n domain: 0, // Mock\n },\n },\n nearIntentInformation: {\n support: false, // Assuming false for testnet unless known\n assetsId: [],\n needMemo: false\n }\n }\n}\n","import {\n base,\n baseSepolia,\n gnosis,\n optimism,\n optimismSepolia,\n arbitrum,\n polygon,\n bsc,\n avalanche,\n unichain,\n monad\n} from \"viem/chains\";\n\nexport const CHAIN_ID_TO_KEY: Record<string, string> = {\n [base.id]: \"Base\",\n [baseSepolia.id]: \"Base\",\n [gnosis.id]: \"Gnosis\",\n [optimism.id]: \"Optimism\",\n [optimismSepolia.id]: \"Optimism\",\n [arbitrum.id]: \"Arbitrum\",\n [polygon.id]: \"Polygon\",\n [bsc.id]: \"Binance\",\n [avalanche.id]: \"Avalanche\",\n [unichain.id]: \"Unichain\",\n [monad.id]: \"Monad\",\n \"9000\": \"Stellar\"\n};\n","// Core\nexport { AccountAbstraction } from \"./AccountAbstraction\";\nexport { BundlerClient } from \"./BundlerClient\";\n\n// Config & Registry\nexport { BASE_MAINNET, BASE_SEPOLIA, GNOSIS_MAINNET, CHAIN_CONFIGS, OPTIMISM_MAINNET, STELLAR_MAINNET } from \"./chains\";\n\n// Types\nexport type { ChainConfig, Token, UserOperation, UserOpReceipt, GasEstimate, ApprovalSupportResult } from \"./types\";\n\n// Constants (ABIs)\nexport { erc20Abi, smartAccountAbi, entryPointAbi } from \"./constants\";\nexport { CHAIN_ID_TO_KEY } from \"./constants/chains\";\nexport * from \"./services/StellarService\";\nexport { STELLAR } from \"./chains/NoEvm/Stellar\";\n// Services\nexport { TransferManager } from \"./services/TransferManager\";\nexport { NearStrategy, getNearSimulation } from \"./services/near\";\nexport { CCTPStrategy } from \"./services/cctp\";\nexport { StargateStrategy, getStargateSimulation } from \"./services/stargate\";\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/constants/bundler.ts","../src/chains/Evm/Base.ts","../src/chains/Evm/Gnosis.ts","../src/chains/Evm/Optimism.ts","../src/chains/Evm/Avalanche.ts","../src/chains/Evm/Binance.ts","../src/chains/Evm/Polygon.ts","../src/chains/Evm/Arbitrum.ts","../src/chains/Evm/Unichain.ts","../src/chains/Evm/Monad.ts","../src/chains/NoEvm/Stellar.ts","../src/services/StellarService.ts","../src/constants/facilitator.ts","../src/constants/abis.ts","../src/utils/cctp.ts","../src/chains/Evm/WorldChain.ts","../src/chains/index.ts","../src/constants/chainsInformation.ts","../src/services/cctp.ts","../src/services/near.ts","../src/services/stargate.ts","../src/services/TransferManager.ts","../src/constants.ts","../src/BundlerClient.ts","../src/TokenService.ts","../src/UserOpBuilder.ts","../src/AccountAbstraction.ts","../src/chains.ts","../src/chains/Evm/BaseSepolia.ts","../src/constants/chains.ts","../src/index.ts","../src/services/uniswap.ts"],"names":["base","gnosis","optimism","avalanche","bsc","polygon","arbitrum","unichain","monad","STELLAR","Networks","StellarService","StellarSdk","worldchain","axios","privateKeyToAccount","createPublicClient","http","createWalletClient","maxUint256","CCTPStrategy","init_cctp","padHex","QuoteRequest","OneClickService","NearStrategy","OpenAPI","FACILITATOR_NETWORKS","TransferManager","StargateStrategy","encodeFunctionData","encodeAbiParameters","keccak256","hash","decodeErrorResult","baseSepolia","BASE_SEPOLIA","optimismSepolia","parseAbi"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAa,mBAAA,EACA,WAAA;AADb,IAAA,YAAA,GAAA,KAAA,CAAA;AAAA,EAAA,0BAAA,GAAA;AAAO,IAAM,mBAAA,GAAsB,qCAAA;AAC5B,IAAM,cAAc,OAAA,CAAQ,GAAA,CAAI,uBAAA,IAA2B,OAAA,CAAQ,IAAI,WAAA,IAAe,mBAAA;AAAA,EAAA;AAAA,CAAA,CAAA;ACD7F,IAIa,IAAA;AAJb,IAAA,SAAA,GAAA,KAAA,CAAA;AAAA,EAAA,wBAAA,GAAA;AAEA,IAAA,YAAA,EAAA;AAEO,IAAM,IAAA,GAAoB;AAAA,MAC7B,MAAA,EAAQ;AAAA,QACJ;AAAA,UACI,IAAA,EAAM,MAAA;AAAA,UACN,QAAA,EAAU,CAAA;AAAA,UACV,OAAA,EAAS,4CAAA;AAAA,UACT,WAAA,EAAa,UAAA;AAAA,UACb,gBAAA,EAAkB;AAAA,SACtB;AAAA,QACA;AAAA,UACI,IAAA,EAAM,KAAA;AAAA,UACN,QAAA,EAAU,EAAA;AAAA,UACV,OAAA,EAAS,4CAAA;AAAA,UACT,WAAA,EAAa;AAAA;AACjB,OACJ;AAAA,MACA,GAAA,EAAK;AAAA,QACD,KAAA,EAAOA,WAAA;AAAA,QACP,MAAA,EAAQ,6DAAA;AAAA,QACR,YAAA,EAAc,IAAA;AAAA,QACd,OAAA,EAAS,KAAA;AAAA,QACT,UAAA,EAAY,GAAG,WAAW,CAAA,eAAA,CAAA;AAAA,QAC1B,iBAAA,EAAmB,4CAAA;AAAA,QACnB,cAAA,EAAgB,4CAAA;AAAA,QAChB,gBAAA,EAAkB;AAAA,OACtB;AAAA,MACA,qBAAA,EAAuB;AAAA,QACnB,iBAAA,EAAmB;AAAA,UACf,sBAAA,EAAwB,IAAA;AAAA,UACxB,eAAA,EAAiB;AAAA,YACb,WAAA,EAAa,IAAA;AAAA,YACb,MAAA,EAAQ;AAAA,WACZ;AAAA,UACA,YAAA,EAAc;AAAA,SAClB;AAAA,QACA,qBAAA,EAAuB;AAAA,UACnB,OAAA,EAAS,IAAA;AAAA,UACT,QAAA,EAAU;AAAA,YACN;AAAA,cACI,OAAA,EAAS,kEAAA;AAAA,cACT,IAAA,EAAM,MAAA;AAAA,cACN,QAAA,EAAU;AAAA,aACd;AAAA,YACA;AAAA,cACI,OAAA,EAAS,uBAAA;AAAA,cACT,IAAA,EAAM,KAAA;AAAA,cACN,QAAA,EAAU;AAAA;AACd,WACJ;AAAA,UACA,QAAA,EAAU;AAAA,SACd;AAAA,QACA,mBAAA,EAAqB;AAAA,UACjB,OAAA,EAAS;AAAA;AACb;AACJ,KACJ;AAAA,EAAA;AAAA,CAAA,CAAA;AC3DA,IAIa,MAAA;AAJb,IAAA,WAAA,GAAA,KAAA,CAAA;AAAA,EAAA,0BAAA,GAAA;AAEA,IAAA,YAAA,EAAA;AAEO,IAAM,MAAA,GAAsB;AAAA,MAC/B,MAAA,EAAQ;AAAA,QACJ;AAAA,UACI,IAAA,EAAM,MAAA;AAAA,UACN,QAAA,EAAU,CAAA;AAAA,UACV,OAAA,EAAS,4CAAA;AAAA,UACT,WAAA,EAAa;AAAA,SACjB;AAAA,QACA;AAAA,UACI,IAAA,EAAM,MAAA;AAAA,UACN,QAAA,EAAU,CAAA;AAAA,UACV,OAAA,EAAS,4CAAA;AAAA,UACT,WAAA,EAAa;AAAA,SACjB;AAAA,QACA;AAAA,UACI,IAAA,EAAM,MAAA;AAAA,UACN,QAAA,EAAU,EAAA;AAAA,UACV,OAAA,EAAS,4CAAA;AAAA,UACT,WAAA,EAAa;AAAA,SACjB;AAAA,QACA;AAAA,UACI,IAAA,EAAM,KAAA;AAAA,UACN,QAAA,EAAU,EAAA;AAAA,UACV,OAAA,EAAS,4CAAA;AAAA,UACT,WAAA,EAAa;AAAA,SACjB;AAAA,QACA;AAAA,UACI,IAAA,EAAM,MAAA;AAAA,UACN,QAAA,EAAU,EAAA;AAAA,UACV,OAAA,EAAS,4CAAA;AAAA,UACT,WAAA,EAAa;AAAA,SACjB;AAAA,QACA;AAAA,UACI,IAAA,EAAM,MAAA;AAAA,UACN,QAAA,EAAU,EAAA;AAAA,UACV,OAAA,EAAS,4CAAA;AAAA,UACT,WAAA,EAAa;AAAA;AACjB,OACJ;AAAA,MACA,GAAA,EAAK;AAAA,QACD,KAAA,EAAOC,aAAA;AAAA,QACP,MAAA,EAAQA,aAAA,CAAO,OAAA,CAAQ,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,QACrC,YAAA,EAAc,IAAA;AAAA,QACd,OAAA,EAAS,IAAA;AAAA,QACT,UAAA,EAAY,GAAG,WAAW,CAAA,iBAAA,CAAA;AAAA,QAC1B,iBAAA,EAAmB,4CAAA;AAAA,QACnB,cAAA,EAAgB,4CAAA;AAAA,QAChB,gBAAA,EAAkB;AAAA,OACtB;AAAA,MACA,qBAAA,EAAuB;AAAA,QACnB,iBAAA,EAAmB;AAAA,UACf,sBAAA,EAAwB,KAAA;AAAA,UACxB,YAAA,EAAc,CAAA;AAAA,UACd,eAAA,EAAiB;AAAA,YACb,WAAA,EAAa,KAAA;AAAA,YACb,MAAA,EAAQ;AAAA;AACZ,SACJ;AAAA,QACA,qBAAA,EAAuB;AAAA,UACnB,OAAA,EAAS,IAAA;AAAA,UACT,QAAA,EAAU;AAAA,YACN;AAAA,cACI,OAAA,EAAS,oEAAA;AAAA,cACT,IAAA,EAAM,MAAA;AAAA,cACN,QAAA,EAAU;AAAA,aACd;AAAA,YACA;AAAA,cACI,OAAA,EAAS,oEAAA;AAAA,cACT,IAAA,EAAM,MAAA;AAAA,cACN,QAAA,EAAU;AAAA,aACd;AAAA,YACA;AAAA,cACI,OAAA,EAAS,oEAAA;AAAA,cACT,IAAA,EAAM,MAAA;AAAA,cACN,QAAA,EAAU;AAAA,aACd;AAAA,YACA;AAAA,cACI,OAAA,EAAS,oEAAA;AAAA,cACT,IAAA,EAAM,KAAA;AAAA,cACN,QAAA,EAAU;AAAA,aACd;AAAA,YACA;AAAA,cACI,OAAA,EAAS,oEAAA;AAAA,cACT,IAAA,EAAM,MAAA;AAAA,cACN,QAAA,EAAU;AAAA,aACd;AAAA,YACA;AAAA,cACI,OAAA,EAAS,yBAAA;AAAA,cACT,IAAA,EAAM,MAAA;AAAA,cACN,QAAA,EAAU;AAAA;AACd,WACJ;AAAA,UACA,QAAA,EAAU;AAAA;AACd;AACJ,KACJ;AAAA,EAAA;AAAA,CAAA,CAAA;ACnGA,IAIa,QAAA;AAJb,IAAA,aAAA,GAAA,KAAA,CAAA;AAAA,EAAA,4BAAA,GAAA;AAEA,IAAA,YAAA,EAAA;AAEO,IAAM,QAAA,GAAwB;AAAA,MACjC,MAAA,EAAQ;AAAA,QACJ;AAAA,UACI,IAAA,EAAM,MAAA;AAAA,UACN,QAAA,EAAU,CAAA;AAAA,UACV,OAAA,EAAS,4CAAA;AAAA,UACT,WAAA,EAAa;AAAA,SACjB;AAAA,QACA;AAAA,UACI,IAAA,EAAM,MAAA;AAAA,UACN,QAAA,EAAU,CAAA;AAAA,UACV,OAAA,EAAS,4CAAA;AAAA,UACT,WAAA,EAAa;AAAA,SACjB;AAAA,QACA;AAAA,UACI,IAAA,EAAM,IAAA;AAAA,UACN,QAAA,EAAU,EAAA;AAAA,UACV,OAAA,EAAS,4CAAA;AAAA,UACT,WAAA,EAAa;AAAA,SACjB;AAAA,QACA;AAAA,UACI,IAAA,EAAM,KAAA;AAAA,UACN,QAAA,EAAU,EAAA;AAAA,UACV,OAAA,EAAS,4CAAA;AAAA,UACT,WAAA,EAAa;AAAA;AACjB,OACJ;AAAA,MACA,GAAA,EAAK;AAAA,QACD,KAAA,EAAOC,eAAA;AAAA,QACP,MAAA,EAAQ,4DAAA;AAAA,QACR,YAAA,EAAc,KAAA;AAAA,QACd,OAAA,EAAS,KAAA;AAAA,QACT,UAAA,EAAY,GAAG,WAAW,CAAA,mBAAA,CAAA;AAAA,QAC1B,iBAAA,EAAmB,4CAAA;AAAA,QACnB,cAAA,EAAgB,4CAAA;AAAA,QAChB,gBAAA,EAAkB;AAAA,OACtB;AAAA,MACA,qBAAA,EAAuB;AAAA,QACnB,iBAAA,EAAmB;AAAA,UACf,sBAAA,EAAwB,IAAA;AAAA,UACxB,eAAA,EAAiB;AAAA,YACb,WAAA,EAAa,IAAA;AAAA,YACb,MAAA,EAAQ;AAAA,WACZ;AAAA,UACA,YAAA,EAAc;AAAA,SAClB;AAAA,QACA,qBAAA,EAAuB;AAAA,UACnB,OAAA,EAAS,IAAA;AAAA,UACT,QAAA,EAAU;AAAA,YACN;AAAA,cACI,OAAA,EAAS,wDAAA;AAAA,cACT,IAAA,EAAM,MAAA;AAAA,cACN,QAAA,EAAU;AAAA,aACd;AAAA,YACA;AAAA,cACI,OAAA,EAAS,yDAAA;AAAA,cACT,IAAA,EAAM,MAAA;AAAA,cACN,QAAA,EAAU;AAAA,aACd;AAAA,YACA;AAAA,cACI,OAAA,EAAS,wDAAA;AAAA,cACT,IAAA,EAAM,IAAA;AAAA,cACN,QAAA,EAAU;AAAA,aACd;AAAA,YACA;AAAA,cACI,OAAA,EAAS,iDAAA;AAAA,cACT,IAAA,EAAM,KAAA;AAAA,cACN,QAAA,EAAU;AAAA;AACd,WACJ;AAAA,UACA,QAAA,EAAU;AAAA;AACd;AACJ,KACJ;AAAA,EAAA;AAAA,CAAA,CAAA;AC7EA,IAIa,SAAA;AAJb,IAAA,cAAA,GAAA,KAAA,CAAA;AAAA,EAAA,6BAAA,GAAA;AAAA,IAAA,YAAA,EAAA;AAIO,IAAM,SAAA,GAAyB;AAAA,MAClC,MAAA,EAAQ;AAAA,QACJ;AAAA,UACI,IAAA,EAAM,MAAA;AAAA,UACN,QAAA,EAAU,CAAA;AAAA,UACV,OAAA,EAAS,4CAAA;AAAA,UACT,WAAA,EAAa,UAAA;AAAA,UACb,gBAAA,EAAkB;AAAA,SACtB;AAAA,QACA;AAAA,UACI,IAAA,EAAM,MAAA;AAAA,UACN,QAAA,EAAU,EAAA;AAAA,UACV,OAAA,EAAS,4CAAA;AAAA,UACT,WAAA,EAAa;AAAA,SACjB;AAAA,QACA;AAAA,UACI,IAAA,EAAM,MAAA;AAAA,UACN,QAAA,EAAU,CAAA;AAAA,UACV,OAAA,EAAS,4CAAA;AAAA,UACT,WAAA,EAAa;AAAA;AACjB,OACJ;AAAA,MACA,GAAA,EAAK;AAAA,QACD,KAAA,EAAOC,gBAAA;AAAA,QACP,MAAA,EAAQA,gBAAA,CAAU,OAAA,CAAQ,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,QACxC,YAAA,EAAc,KAAA;AAAA,QACd,UAAA,EAAY,GAAG,WAAW,CAAA,oBAAA,CAAA;AAAA,QAC1B,OAAA,EAAS,KAAA;AAAA,QACT,iBAAA,EAAmB,4CAAA;AAAA,QACnB,cAAA,EAAgB,4CAAA;AAAA,QAChB,gBAAA,EAAkB;AAAA,OACtB;AAAA,MACA,qBAAA,EAAuB;AAAA,QACnB,iBAAA,EAAmB;AAAA,UACf,sBAAA,EAAwB,IAAA;AAAA,UACxB,eAAA,EAAiB;AAAA,YACb,WAAA,EAAa,IAAA;AAAA,YACb,MAAA,EAAQ;AAAA,WACZ;AAAA,UACA,YAAA,EAAc;AAAA,SAClB;AAAA,QACA,qBAAA,EAAuB;AAAA,UACnB,OAAA,EAAS,IAAA;AAAA,UACT,QAAA,EAAU;AAAA,YACN;AAAA,cACI,OAAA,EAAS,4DAAA;AAAA,cACT,IAAA,EAAM,MAAA;AAAA,cACN,QAAA,EAAU;AAAA,aACd;AAAA,YACA;AAAA,cACI,OAAA,EAAS,oDAAA;AAAA,cACT,IAAA,EAAM,MAAA;AAAA,cACN,QAAA,EAAU;AAAA,aACd;AAAA,YACA;AAAA,cACI,OAAA,EAAS,4DAAA;AAAA,cACT,IAAA,EAAM,MAAA;AAAA,cACN,QAAA,EAAU;AAAA;AACd,WACJ;AAAA,UACA,QAAA,EAAU;AAAA,SACd;AAAA,QACA,mBAAA,EAAqB;AAAA,UACjB,OAAA,EAAS;AAAA;AACb;AACJ,KACJ;AAAA,EAAA;AAAA,CAAA,CAAA;ACtEA,IAIa,GAAA;AAJb,IAAA,YAAA,GAAA,KAAA,CAAA;AAAA,EAAA,2BAAA,GAAA;AAAA,IAAA,YAAA,EAAA;AAIO,IAAM,GAAA,GAAmB;AAAA,MAC5B,MAAA,EAAQ;AAAA,QACJ;AAAA,UACI,IAAA,EAAM,MAAA;AAAA,UACN,QAAA,EAAU,EAAA;AAAA,UACV,OAAA,EAAS,4CAAA;AAAA;AAAA,UACT,WAAA,EAAa;AAAA,SACjB;AAAA,QACA;AAAA,UACI,IAAA,EAAM,MAAA;AAAA,UACN,QAAA,EAAU,EAAA;AAAA,UACV,OAAA,EAAS,4CAAA;AAAA;AAAA,UACT,WAAA,EAAa;AAAA,SACjB;AAAA,QACA;AAAA,UACI,IAAA,EAAM,KAAA;AAAA,UACN,QAAA,EAAU,EAAA;AAAA,UACV,OAAA,EAAS,4CAAA;AAAA;AAAA,UACT,WAAA,EAAa;AAAA;AACjB,OACJ;AAAA,MACA,GAAA,EAAK;AAAA,QACD,KAAA,EAAOC,UAAA;AAAA,QACP,MAAA,EAAQ,kCAAA;AAAA,QACR,YAAA,EAAc,IAAA;AAAA,QACd,UAAA,EAAY,GAAG,WAAW,CAAA,cAAA,CAAA;AAAA,QAC1B,OAAA,EAAS,KAAA;AAAA,QACT,iBAAA,EAAmB,4CAAA;AAAA,QACnB,cAAA,EAAgB,4CAAA;AAAA,QAChB,gBAAA,EAAkB;AAAA,OACtB;AAAA,MACA,qBAAA,EAAuB;AAAA,QACnB,iBAAA,EAAmB;AAAA,UACf,sBAAA,EAAwB,KAAA;AAAA,UACxB,YAAA,EAAc,CAAA;AAAA,UACd,eAAA,EAAiB;AAAA,YACb,WAAA,EAAa,KAAA;AAAA,YACb,MAAA,EAAQ;AAAA;AACZ,SACJ;AAAA,QACA,qBAAA,EAAuB;AAAA,UACnB,OAAA,EAAS,IAAA;AAAA,UACT,QAAA,EAAU,KAAA;AAAA,UACV,QAAA,EAAU;AAAA,YACN;AAAA,cACI,IAAA,EAAM,MAAA;AAAA,cACN,OAAA,EAAS,yDAAA;AAAA,cACT,QAAA,EAAU;AAAA,aACd;AAAA,YACA;AAAA,cACI,IAAA,EAAM,MAAA;AAAA,cACN,OAAA,EAAS,yDAAA;AAAA,cACT,QAAA,EAAU;AAAA,aACd;AAAA,YACA;AAAA,cACI,IAAA,EAAM,KAAA;AAAA,cACN,OAAA,EAAS,iDAAA;AAAA,cACT,QAAA,EAAU;AAAA;AACd;AACJ;AACJ;AACJ,KACJ;AAAA,EAAA;AAAA,CAAA,CAAA;AClEA,IAIa,OAAA;AAJb,IAAA,YAAA,GAAA,KAAA,CAAA;AAAA,EAAA,2BAAA,GAAA;AAAA,IAAA,YAAA,EAAA;AAIO,IAAM,OAAA,GAAuB;AAAA,MAChC,MAAA,EAAQ;AAAA,QACJ;AAAA,UACI,IAAA,EAAM,MAAA;AAAA,UACN,QAAA,EAAU,CAAA;AAAA,UACV,OAAA,EAAS,4CAAA;AAAA,UACT,WAAA,EAAa;AAAA,SACjB;AAAA,QACA;AAAA,UACI,IAAA,EAAM,KAAA;AAAA,UACN,QAAA,EAAU,EAAA;AAAA,UACV,OAAA,EAAS,4CAAA;AAAA,UACT,WAAA,EAAa;AAAA,SACjB;AAAA,QACA;AAAA,UACI,IAAA,EAAM,MAAA;AAAA,UACN,QAAA,EAAU,CAAA;AAAA,UACV,OAAA,EAAS,4CAAA;AAAA,UACT,WAAA,EAAa;AAAA;AACjB,OACJ;AAAA,MACA,GAAA,EAAK;AAAA,QACD,KAAA,EAAOC,cAAA;AAAA,QACP,MAAA,EAAQ,gEAAA;AAAA,QACR,YAAA,EAAc,IAAA;AAAA,QACd,OAAA,EAAS,KAAA;AAAA,QACT,UAAA,EAAY,GAAG,WAAW,CAAA,kBAAA,CAAA;AAAA,QAC1B,iBAAA,EAAmB,4CAAA;AAAA,QACnB,cAAA,EAAgB,4CAAA;AAAA,QAChB,gBAAA,EAAkB;AAAA,OACtB;AAAA,MACA,qBAAA,EAAuB;AAAA,QACnB,iBAAA,EAAmB;AAAA,UACf,sBAAA,EAAwB,IAAA;AAAA,UACxB,eAAA,EAAiB;AAAA,YACb,WAAA,EAAa,IAAA;AAAA,YACb,MAAA,EAAQ;AAAA,WACZ;AAAA,UACA,YAAA,EAAc;AAAA,SAClB;AAAA,QACA,qBAAA,EAAuB;AAAA,UACnB,OAAA,EAAS,IAAA;AAAA,UACT,QAAA,EAAU;AAAA,YACN;AAAA,cACI,OAAA,EAAS,yDAAA;AAAA,cACT,IAAA,EAAM,MAAA;AAAA,cACN,QAAA,EAAU;AAAA,aACd;AAAA,YACA;AAAA,cACI,OAAA,EAAS,kDAAA;AAAA,cACT,IAAA,EAAM,KAAA;AAAA,cACN,QAAA,EAAU;AAAA,aACd;AAAA,YACA;AAAA,cACI,OAAA,EAAS,0DAAA;AAAA,cACT,IAAA,EAAM,MAAA;AAAA,cACN,QAAA,EAAU;AAAA;AACd,WACJ;AAAA,UACA,QAAA,EAAU;AAAA;AACd;AACJ,KACJ;AAAA,EAAA;AAAA,CAAA,CAAA;AClEA,IAIa,QAAA;AAJb,IAAA,aAAA,GAAA,KAAA,CAAA;AAAA,EAAA,4BAAA,GAAA;AAAA,IAAA,YAAA,EAAA;AAIO,IAAM,QAAA,GAAwB;AAAA,MACjC,MAAA,EAAQ;AAAA,QACJ;AAAA,UACI,IAAA,EAAM,MAAA;AAAA,UACN,QAAA,EAAU,CAAA;AAAA,UACV,OAAA,EAAS,4CAAA;AAAA,UACT,WAAA,EAAa;AAAA,SACjB;AAAA,QACA;AAAA,UACI,IAAA,EAAM,MAAA;AAAA,UACN,QAAA,EAAU,CAAA;AAAA,UACV,OAAA,EAAS,4CAAA;AAAA,UACT,WAAA,EAAa;AAAA,SACjB;AAAA,QACA;AAAA,UACI,IAAA,EAAM,KAAA;AAAA,UACN,QAAA,EAAU,EAAA;AAAA,UACV,OAAA,EAAS,4CAAA;AAAA,UACT,WAAA,EAAa;AAAA,SACjB;AAAA,QACA;AAAA,UACI,IAAA,EAAM,KAAA;AAAA,UACN,QAAA,EAAU,EAAA;AAAA,UACV,OAAA,EAAS,4CAAA;AAAA,UACT,WAAA,EAAa;AAAA;AACjB,OACJ;AAAA,MACA,GAAA,EAAK;AAAA,QACD,KAAA,EAAOC,eAAA;AAAA,QACP,MAAA,EAAQ,4DAAA;AAAA,QACR,UAAA,EAAY,GAAG,WAAW,CAAA,mBAAA,CAAA;AAAA,QAC1B,YAAA,EAAc,IAAA;AAAA,QACd,OAAA,EAAS,KAAA;AAAA,QACT,iBAAA,EAAmB,4CAAA;AAAA,QACnB,cAAA,EAAgB,4CAAA;AAAA,QAChB,gBAAA,EAAkB;AAAA,OACtB;AAAA,MACA,qBAAA,EAAuB;AAAA,QACnB,iBAAA,EAAmB;AAAA,UACf,sBAAA,EAAwB,IAAA;AAAA,UACxB,YAAA,EAAc,CAAA;AAAA,UACd,eAAA,EAAiB;AAAA,YACb,WAAA,EAAa,IAAA;AAAA,YACb,MAAA,EAAQ;AAAA;AACZ,SACJ;AAAA,QACA,qBAAA,EAAuB;AAAA,UACnB,OAAA,EAAS,IAAA;AAAA,UACT,QAAA,EAAU;AAAA,YACN;AAAA,cACI,OAAA,EAAS,iEAAA;AAAA,cACT,IAAA,EAAM,MAAA;AAAA,cACN,QAAA,EAAU;AAAA,aACd;AAAA,YACA;AAAA,cACI,OAAA,EAAS,iEAAA;AAAA,cACT,IAAA,EAAM,MAAA;AAAA,cACN,QAAA,EAAU;AAAA,aACd;AAAA,YACA;AAAA,cACI,OAAA,EAAS,sBAAA;AAAA,cACT,IAAA,EAAM,KAAA;AAAA,cACN,QAAA,EAAU;AAAA,aACd;AAAA,YACA;AAAA,cACI,OAAA,EAAS,iEAAA;AAAA,cACT,IAAA,EAAM,KAAA;AAAA,cACN,QAAA,EAAU;AAAA;AACd,WACJ;AAAA,UACA,QAAA,EAAU;AAAA;AACd;AACJ,KACJ;AAAA,EAAA;AAAA,CAAA,CAAA;AC7EA,IAIa,QAAA;AAJb,IAAA,aAAA,GAAA,KAAA,CAAA;AAAA,EAAA,4BAAA,GAAA;AAAA,IAAA,YAAA,EAAA;AAIO,IAAM,QAAA,GAAwB;AAAA,MACjC,MAAA,EAAQ;AAAA,QACJ;AAAA,UACI,IAAA,EAAM,MAAA;AAAA,UACN,QAAA,EAAU,CAAA;AAAA,UACV,OAAA,EAAS,4CAAA;AAAA,UACT,WAAA,EAAa;AAAA;AACjB,OACJ;AAAA,MACA,GAAA,EAAK;AAAA,QACD,KAAA,EAAOC,eAAA;AAAA,QACP,MAAA,EAAQ,iEAAA;AAAA,QACR,UAAA,EAAY,GAAG,WAAW,CAAA,mBAAA,CAAA;AAAA,QAC1B,YAAA,EAAc,IAAA;AAAA,QACd,OAAA,EAAS,KAAA;AAAA,QACT,iBAAA,EAAmB,4CAAA;AAAA,QACnB,cAAA,EAAgB,4CAAA;AAAA,QAChB,gBAAA,EAAkB;AAAA,OACtB;AAAA,MACA,qBAAA,EAAuB;AAAA,QACnB,iBAAA,EAAmB;AAAA,UACf,sBAAA,EAAwB,IAAA;AAAA,UACxB,eAAA,EAAiB;AAAA,YACb,WAAA,EAAa,IAAA;AAAA,YACb,MAAA,EAAQ;AAAA,WACZ;AAAA,UACA,YAAA,EAAc;AAAA,SAClB;AAAA,QACA,qBAAA,EAAuB;AAAA;AAC3B,KACJ;AAAA,EAAA;AAAA,CAAA,CAAA;AClCA,IAIa,KAAA;AAJb,IAAA,UAAA,GAAA,KAAA,CAAA;AAAA,EAAA,yBAAA,GAAA;AACA,IAAA,YAAA,EAAA;AAGO,IAAM,KAAA,GAAqB;AAAA,MAC9B,MAAA,EAAQ;AAAA,QACJ;AAAA,UACI,IAAA,EAAM,MAAA;AAAA,UACN,QAAA,EAAU,CAAA;AAAA,UACV,OAAA,EAAS,4CAAA;AAAA,UACT,WAAA,EAAa;AAAA,SACjB;AAAA,QACA;AAAA,UACI,IAAA,EAAM,MAAA;AAAA,UACN,QAAA,EAAU,CAAA;AAAA,UACV,OAAA,EAAS,4CAAA;AAAA,UACT,WAAA,EAAa;AAAA,SACjB;AAAA,QACA;AAAA,UACI,IAAA,EAAM,KAAA;AAAA,UACN,QAAA,EAAU,EAAA;AAAA,UACV,OAAA,EAAS,4CAAA;AAAA,UACT,WAAA,EAAa;AAAA;AACjB,OACJ;AAAA,MACA,GAAA,EAAK;AAAA,QACD,KAAA,EAAOC,YAAA;AAAA,QACP,MAAA,EAAQA,YAAA,CAAM,OAAA,CAAQ,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,QACpC,YAAA,EAAc,IAAA;AAAA,QACd,OAAA,EAAS,KAAA;AAAA,QACT,UAAA,EAAY,GAAG,WAAW,CAAA,gBAAA,CAAA;AAAA,QAC1B,iBAAA,EAAmB,4CAAA;AAAA,QACnB,cAAA,EAAgB,4CAAA;AAAA,QAChB,gBAAA,EAAkB;AAAA,OACtB;AAAA,MACA,qBAAA,EAAuB;AAAA,QACnB,iBAAA,EAAmB;AAAA,UACf,sBAAA,EAAwB,KAAA;AAAA,UACxB,eAAA,EAAiB;AAAA,YACb,WAAA,EAAa,IAAA;AAAA,YACb,MAAA,EAAQ;AAAA,WACZ;AAAA,UACA,YAAA,EAAc;AAAA,SAClB;AAAA,QACA,qBAAA,EAAuB;AAAA,UACnB,OAAA,EAAS,IAAA;AAAA,UACT,QAAA,EAAU;AAAA,YACN;AAAA,cACI,OAAA,EAAS,0DAAA;AAAA,cACT,IAAA,EAAM,MAAA;AAAA,cACN,QAAA,EAAU;AAAA,aACd;AAAA,YACA;AAAA,cACI,OAAA,EAAS,0DAAA;AAAA,cACT,IAAA,EAAM,MAAA;AAAA,cACN,QAAA,EAAU;AAAA,aACd;AAAA,YACA;AAAA,cACI,OAAA,EAAS,kDAAA;AAAA,cACT,IAAA,EAAM,KAAA;AAAA,cACN,QAAA,EAAU;AAAA;AACd,WACJ;AAAA,UACA,QAAA,EAAU;AAAA;AACd;AACJ,KACJ;AAAA,EAAA;AAAA,CAAA,CAAA;AC9DaC;AAJb,IAAA,YAAA,GAAA,KAAA,CAAA;AAAA,EAAA,6BAAA,GAAA;AAIO,IAAMA,eAAA,GAAuB;AAAA,MAChC,MAAA,EAAQ;AAAA,QACJ;AAAA,UACI,IAAA,EAAM,MAAA;AAAA,UACN,QAAA,EAAU,CAAA;AAAA,UACV,OAAA,EAAS,0DAAA;AAAA,UACT,WAAA,EAAa;AAAA,SACjB;AAAA,QACA;AAAA,UACI,IAAA,EAAM,KAAA;AAAA,UACN,QAAA,EAAU,CAAA;AAAA,UACV,OAAA,EAAS,QAAA;AAAA,UACT,WAAA,EAAa;AAAA;AACjB,OACJ;AAAA,MACA,MAAA,EAAQ;AAAA,QACJ,mBAAmBC,mBAAA,CAAS,MAAA;AAAA,QAC5B,SAAA,EAAW;AAAA,OACf;AAAA,MACA,qBAAA,EAAuB;AAAA,QACnB,iBAAA,EAAmB;AAAA,UACf,sBAAA,EAAwB,KAAA;AAAA,UACxB,YAAA,EAAc;AAAA,SAClB;AAAA,QACA,qBAAA,EAAuB;AAAA,UACnB,OAAA,EAAS,IAAA;AAAA,UACT,QAAA,EAAU;AAAA,YACN;AAAA,cACI,OAAA,EAAS,oFAAA;AAAA,cACT,IAAA,EAAM,MAAA;AAAA,cACN,QAAA,EAAU;AAAA,aACd;AAAA,YACA;AAAA,cACI,OAAA,EAAS,oFAAA;AAAA,cACT,IAAA,EAAM,KAAA;AAAA,cACN,QAAA,EAAU;AAAA;AACd,WACJ;AAAA,UACA,QAAA,EAAU;AAAA;AACd;AACJ,KACJ;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC7CA,IAAA,sBAAA,GAAA,EAAA;AAAA,QAAA,CAAA,sBAAA,EAAA;AAAA,EAAA,cAAA,EAAA,MAAAC;AAAA,CAAA,CAAA;AAGaA;AAHb,IAAA,mBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,gCAAA,GAAA;AACA,IAAA,YAAA,EAAA;AAEO,IAAMA,yBAAN,MAAqB;AAAA,MAIxB,WAAA,GAAc;AACV,QAAA,IAAI,CAACF,eAAA,CAAQ,MAAA,EAAQ,aAAa,CAACA,eAAA,CAAQ,QAAQ,iBAAA,EAAmB;AAClE,UAAA,MAAM,IAAI,MAAM,8CAA8C,CAAA;AAAA,QAClE;AACA,QAAA,IAAA,CAAK,SAAS,IAAeG,qBAAA,CAAA,OAAA,CAAQ,MAAA,CAAOH,eAAA,CAAQ,OAAO,SAAS,CAAA;AACpE,QAAA,IAAA,CAAK,OAAA,GAAUA,gBAAQ,MAAA,CAAO,iBAAA;AAAA,MAClC;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,MAAM,UAAA,CAAW,OAAA,EAAiB,SAAA,GAAoB,KAAA,EAAwB;AAC1E,QAAA,IAAI;AACA,UAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,MAAA,CAAO,YAAY,OAAO,CAAA;AAGrD,UAAA,MAAM,WAAWA,eAAA,CAAQ,MAAA,CAAO,KAAK,CAAA,CAAA,KAAK,CAAA,CAAE,SAAS,SAAS,CAAA;AAC9D,UAAA,IAAI,CAAC,QAAA,EAAU,MAAM,IAAI,KAAA,CAAM,CAAA,MAAA,EAAS,SAAS,CAAA,eAAA,CAAiB,CAAA;AAElE,UAAA,MAAM,QAAA,GAAW,SAAS,OAAA,KAAY,QAAA;AAEtC,UAAA,MAAM,WAAA,GAAc,OAAA,CAAQ,QAAA,CAAS,IAAA,CAAK,CAAC,CAAA,KAAW;AAClD,YAAA,IAAI,QAAA,EAAU;AACV,cAAA,OAAO,EAAE,UAAA,KAAe,QAAA;AAAA,YAC5B;AACA,YAAA,OAAO,CAAA,CAAE,UAAA,KAAe,SAAA,IAAa,CAAA,CAAE,iBAAiB,QAAA,CAAS,OAAA;AAAA,UACrE,CAAC,CAAA;AAED,UAAA,OAAO,WAAA,GAAc,YAAY,OAAA,GAAU,GAAA;AAAA,QAC/C,SAAS,CAAA,EAAQ;AACb,UAAA,IAAI,CAAA,CAAE,QAAA,IAAY,CAAA,CAAE,QAAA,CAAS,WAAW,GAAA,EAAK;AACzC,YAAA,OAAO,GAAA;AAAA,UACX;AACA,UAAA,MAAM,CAAA;AAAA,QACV;AAAA,MACJ;AAAA;AAAA;AAAA;AAAA,MAKA,MAAM,gBAAA,CACF,QAAA,EACA,WACA,MAAA,EACA,SAAA,GAAoB,OACpB,IAAA,EACe;AACf,QAAA,MAAM,OAAA,GAAqBG,qBAAA,CAAA,OAAA,CAAQ,UAAA,CAAW,QAAQ,CAAA;AACtD,QAAA,MAAM,aAAA,GAAgB,QAAQ,SAAA,EAAU;AAGxC,QAAA,IAAI,OAAA;AACJ,QAAA,IAAI;AACA,UAAA,OAAA,GAAU,MAAM,IAAA,CAAK,MAAA,CAAO,WAAA,CAAY,aAAa,CAAA;AAAA,QACzD,SAAS,CAAA,EAAQ;AACb,UAAA,MAAM,IAAI,KAAA,CAAM,CAAA,gBAAA,EAAmB,aAAa,CAAA,yBAAA,CAA2B,CAAA;AAAA,QAC/E;AAEA,QAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,QAAA,CAAS,SAAS,CAAA;AAErC,QAAA,MAAM,SAAA,GAAY,IAAeA,qBAAA,CAAA,kBAAA,CAAmB,OAAA,EAAS;AAAA,UACzD,GAAA,EAAgBA,qBAAA,CAAA,QAAA;AAAA,UAChB,mBAAmB,IAAA,CAAK;AAAA,SAC3B,CAAA;AAED,QAAA,SAAA,CAAU,YAAA,CAAwBA,gCAAU,OAAA,CAAQ;AAAA,UAChD,WAAA,EAAa,SAAA;AAAA,UACb,KAAA;AAAA,UACA;AAAA,SACH,CAAC,CAAA;AAEF,QAAA,IAAI,IAAA,EAAM;AAEN,UAAA,SAAA,CAAU,OAAA,CAAmBA,qBAAA,CAAA,IAAA,CAAK,IAAA,CAAK,IAAI,CAAC,CAAA;AAAA,QAChD;AAEA,QAAA,SAAA,CAAU,WAAW,EAAE,CAAA;AAEvB,QAAA,MAAM,OAAA,GAAU,UAAU,KAAA,EAAM;AAChC,QAAA,OAAA,CAAQ,KAAK,OAAO,CAAA;AAEpB,QAAA,OAAO,QAAQ,KAAA,EAAM;AAAA,MACzB;AAAA;AAAA;AAAA;AAAA,MAKA,MAAM,UAAU,GAAA,EAAa;AAEzB,QAAA,MAAM,EAAA,GAAgBA,qBAAA,CAAA,kBAAA,CAAmB,OAAA,CAAQ,GAAA,EAAK,KAAK,OAAO,CAAA;AAClE,QAAA,OAAO,IAAA,CAAK,MAAA,CAAO,iBAAA,CAAkB,EAAE,CAAA;AAAA,MAC3C;AAAA,MAEO,SAAS,SAAA,EAAqC;AACjD,QAAA,MAAM,WAAWH,eAAA,CAAQ,MAAA,CAAO,KAAK,CAAA,CAAA,KAAK,CAAA,CAAE,SAAS,SAAS,CAAA;AAC9D,QAAA,IAAI,CAAC,QAAA,EAAU;AAEX,UAAA,IAAI,SAAA,KAAc,KAAA,EAAO,OAAkBG,qBAAA,CAAA,KAAA,CAAM,MAAA,EAAO;AACxD,UAAA,MAAM,IAAI,KAAA,CAAM,CAAA,MAAA,EAAS,SAAS,CAAA,2BAAA,CAA6B,CAAA;AAAA,QACnE;AAEA,QAAA,IAAI,QAAA,CAAS,YAAY,QAAA,EAAU;AAC/B,UAAA,OAAkBA,4BAAM,MAAA,EAAO;AAAA,QACnC;AAEA,QAAA,OAAO,IAAeA,qBAAA,CAAA,KAAA,CAAM,QAAA,CAAS,IAAA,EAAM,SAAS,OAAO,CAAA;AAAA,MAC/D;AAAA,MAEO,WAAW,EAAA,EAAY;AAC1B,QAAA,OAAkBA,qBAAA,CAAA,OAAA,CAAQ,WAAW,EAAE,CAAA;AAAA,MAC3C;AAAA,KACJ;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACvHA,IAAA,mBAAA,GAAA,EAAA;AAAA,QAAA,CAAA,mBAAA,EAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,qBAAA,EAAA,MAAA,qBAAA;AAAA,EAAA,oBAAA,EAAA,MAAA,oBAAA;AAAA,EAAA,YAAA,EAAA,MAAA,YAAA;AAAA,EAAA,YAAA,EAAA,MAAA;AAAA,CAAA,CAAA;AAAA,IAOa,YAAA,EAOA,iBAAA,EACA,qBAAA,EAEA,YAAA,EAKA,oBAAA;AAtBb,IAAA,gBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,8BAAA,GAAA;AAOO,IAAM,YAAA,GAAe;AAAA,MACxB,GAAA,EAAK,CAAA;AAAA,MACL,YAAA,EAAc,IAAA;AAAA,MACd,OAAA,EAAS;AAAA,KACb;AAGO,IAAM,iBAAA,GAAoB,4CAAA;AAC1B,IAAM,qBAAA,GAAwB,0DAAA;AAE9B,IAAM,YAAA,GAAe,CAAC,KAAA,GAAiB,KAAA,KAAkB;AAC5D,MAAA,OAAO,KAAA,GAAQ,YAAA,CAAa,GAAA,GAAM,YAAA,CAAa,OAAA;AAAA,IACnD,CAAA;AAGO,IAAM,oBAAA,GAAiE;AAAA,MAC1E,IAAA,EAAM;AAAA,QACF,OAAA,EAAS,IAAA;AAAA,QACT,KAAA,EAAOZ,WAAAA;AAAA,QACP,IAAA,EAAM,4CAAA;AAAA,QACN,QAAA,EAAU,UAAA;AAAA,QACV,WAAA,EAAa,GAAA;AAAA,QACb,MAAA,EAAQ,CAAA;AAAA,QACR,cAAA,EAAgB,4CAAA;AAAA,QAChB,kBAAA,EAAoB,4CAAA;AAAA,QACpB,MAAA,EAAQ;AAAA,OACZ;AAAA,MACA,QAAA,EAAU;AAAA,QACN,OAAA,EAAS,EAAA;AAAA,QACT,KAAA,EAAOE,eAAAA;AAAA,QACP,IAAA,EAAM,4CAAA;AAAA,QACN,QAAA,EAAU,UAAA;AAAA,QACV,WAAA,EAAa,GAAA;AAAA,QACb,MAAA,EAAQ,CAAA;AAAA,QACR,cAAA,EAAgB,4CAAA;AAAA,QAChB,kBAAA,EAAoB,4CAAA;AAAA,QACpB,MAAA,EAAQ;AAAA;AAAA,OACZ;AAAA,MACA,MAAA,EAAQ;AAAA,QACJ,OAAA,EAAS,GAAA;AAAA,QACT,KAAA,EAAOD,aAAAA;AAAA,QACP,IAAA,EAAM,4CAAA;AAAA,QACN,QAAA,EAAU,MAAA;AAAA,QACV,WAAA,EAAa,GAAA;AAAA,QACb,MAAA,EAAQ,CAAA;AAAA,QACR,cAAA,EAAgB,4CAAA;AAAA,QAChB,kBAAA,EAAoB,4CAAA;AAAA,QACpB,MAAA,EAAQ;AAAA,OACZ;AAAA,MACA,QAAA,EAAU;AAAA,QACN,OAAA,EAAS,KAAA;AAAA,QACT,KAAA,EAAOK,eAAAA;AAAA,QACP,IAAA,EAAM,4CAAA;AAAA,QACN,QAAA,EAAU,UAAA;AAAA,QACV,WAAA,EAAa,GAAA;AAAA,QACb,MAAA,EAAQ,CAAA;AAAA,QACR,cAAA,EAAgB,4CAAA;AAAA,QAChB,kBAAA,EAAoB,4CAAA;AAAA,QACpB,MAAA,EAAQ;AAAA,OACZ;AAAA,MACA,OAAA,EAAS;AAAA,QACL,OAAA,EAAS,GAAA;AAAA,QACT,KAAA,EAAOD,cAAAA;AAAA,QACP,IAAA,EAAM,4CAAA;AAAA,QACN,QAAA,EAAU,UAAA;AAAA,QACV,WAAA,EAAa,GAAA;AAAA,QACb,MAAA,EAAQ,CAAA;AAAA,QACR,cAAA,EAAgB,4CAAA;AAAA,QAChB,kBAAA,EAAoB,4CAAA;AAAA,QACpB,MAAA,EAAQ;AAAA,OACZ;AAAA,MACA,QAAA,EAAU;AAAA,QACN,SAASE,eAAAA,CAAS,EAAA;AAAA,QAClB,KAAA,EAAOA,eAAAA;AAAA,QACP,IAAA,EAAM,4CAAA;AAAA,QACN,QAAA,EAAU,UAAA;AAAA,QACV,WAAA,EAAa,GAAA;AAAA,QACb,MAAA,EAAQ,EAAA;AAAA,QACR,cAAA,EAAgB,4CAAA;AAAA,QAChB,kBAAA,EAAoB,4CAAA;AAAA,QACpB,MAAA,EAAQA,eAAAA,CAAS,OAAA,CAAQ,OAAA,CAAQ,KAAK,CAAC;AAAA,OAC3C;AAAA,MACA,SAAA,EAAW;AAAA,QACP,SAASJ,gBAAAA,CAAU,EAAA;AAAA,QACnB,KAAA,EAAOA,gBAAAA;AAAA,QACP,IAAA,EAAM,4CAAA;AAAA,QACN,QAAA,EAAU,UAAA;AAAA,QACV,WAAA,EAAa,GAAA;AAAA,QACb,MAAA,EAAQ,CAAA;AAAA,QACR,cAAA,EAAgB,4CAAA;AAAA,QAChB,kBAAA,EAAoB,4CAAA;AAAA,QACpB,MAAA,EAAQA,gBAAAA,CAAU,OAAA,CAAQ,OAAA,CAAQ,KAAK,CAAC;AAAA,OAC5C;AAAA,MACA,UAAA,EAAY;AAAA,QACR,SAASU,iBAAA,CAAW,EAAA;AAAA,QACpB,KAAA,EAAOA,iBAAA;AAAA,QACP,IAAA,EAAM,4CAAA;AAAA,QACN,QAAA,EAAU,UAAA;AAAA,QACV,WAAA,EAAa,GAAA;AAAA,QACb,MAAA,EAAQ,EAAA;AAAA,QACR,cAAA,EAAgB,4CAAA;AAAA,QAChB,kBAAA,EAAoB,4CAAA;AAAA,QACpB,MAAA,EAAQA,iBAAA,CAAW,OAAA,CAAQ,OAAA,CAAQ,KAAK,CAAC;AAAA,OAC7C;AAAA,MACA,KAAA,EAAO;AAAA,QACH,SAASL,YAAAA,CAAM,EAAA;AAAA,QACf,KAAA,EAAOA,YAAAA;AAAA,QACP,IAAA,EAAM,4CAAA;AAAA,QACN,QAAA,EAAU,UAAA;AAAA,QACV,WAAA,EAAa,GAAA;AAAA,QACb,MAAA,EAAQ,EAAA;AAAA,QACR,cAAA,EAAgB,4CAAA;AAAA,QAChB,kBAAA,EAAoB,4CAAA;AAAA,QACpB,MAAA,EAAQA,YAAAA,CAAM,OAAA,CAAQ,OAAA,CAAQ,KAAK,CAAC;AAAA;AACxC,KACJ;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC1HA,IAAa,gBA+CA,iBAAA,EA+BA,qBAAA;AA9Eb,IAAA,SAAA,GAAA,KAAA,CAAA;AAAA,EAAA,uBAAA,GAAA;AAAO,IAAM,cAAA,GAAiB;AAAA,MAC1B;AAAA,QACI,MAAA,EAAQ;AAAA,UACJ,EAAE,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAU;AAAA,UAChC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAU;AAAA,UAC9B,EAAE,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,SAAA,EAAU;AAAA,UACjC,EAAE,IAAA,EAAM,YAAA,EAAc,IAAA,EAAM,SAAA,EAAU;AAAA,UACtC,EAAE,IAAA,EAAM,aAAA,EAAe,IAAA,EAAM,SAAA,EAAU;AAAA,UACvC,EAAE,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,SAAA,EAAU;AAAA,UACjC,EAAE,IAAA,EAAM,GAAA,EAAK,IAAA,EAAM,OAAA,EAAQ;AAAA,UAC3B,EAAE,IAAA,EAAM,GAAA,EAAK,IAAA,EAAM,SAAA,EAAU;AAAA,UAC7B,EAAE,IAAA,EAAM,GAAA,EAAK,IAAA,EAAM,SAAA;AAAU,SACjC;AAAA,QACA,IAAA,EAAM,2BAAA;AAAA,QACN,SAAS,EAAC;AAAA,QACV,eAAA,EAAiB,YAAA;AAAA,QACjB,IAAA,EAAM;AAAA,OACV;AAAA,MACA;AAAA,QACI,QAAQ,CAAC,EAAE,MAAM,SAAA,EAAW,IAAA,EAAM,WAAW,CAAA;AAAA,QAC7C,IAAA,EAAM,WAAA;AAAA,QACN,SAAS,CAAC,EAAE,MAAM,EAAA,EAAI,IAAA,EAAM,WAAW,CAAA;AAAA,QACvC,eAAA,EAAiB,MAAA;AAAA,QACjB,IAAA,EAAM;AAAA,OACV;AAAA,MACA;AAAA,QACI,MAAA,EAAQ;AAAA,UACJ,EAAE,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,SAAA,EAAU;AAAA,UACnC,EAAE,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,SAAA;AAAU,SACtC;AAAA,QACA,IAAA,EAAM,SAAA;AAAA,QACN,SAAS,CAAC,EAAE,MAAM,EAAA,EAAI,IAAA,EAAM,QAAQ,CAAA;AAAA,QACpC,eAAA,EAAiB,YAAA;AAAA,QACjB,IAAA,EAAM;AAAA,OACV;AAAA,MACA;AAAA,QACI,MAAA,EAAQ;AAAA,UACJ,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAU;AAAA,UAC9B,EAAE,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,SAAA;AAAU,SACtC;AAAA,QACA,IAAA,EAAM,UAAA;AAAA,QACN,SAAS,CAAC,EAAE,MAAM,EAAA,EAAI,IAAA,EAAM,QAAQ,CAAA;AAAA,QACpC,eAAA,EAAiB,YAAA;AAAA,QACjB,IAAA,EAAM;AAAA;AACV,KACJ;AAEO,IAAM,iBAAA,GAAoB;AAAA,MAC7B;AAAA,QACI,MAAA,EAAQ;AAAA,UACJ,EAAE,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,SAAA,EAAU;AAAA,UAClC,EAAE,IAAA,EAAM,mBAAA,EAAqB,IAAA,EAAM,QAAA,EAAS;AAAA,UAC5C,EAAE,IAAA,EAAM,eAAA,EAAiB,IAAA,EAAM,SAAA,EAAU;AAAA,UACzC,EAAE,IAAA,EAAM,WAAA,EAAa,IAAA,EAAM,SAAA,EAAU;AAAA,UACrC,EAAE,IAAA,EAAM,mBAAA,EAAqB,IAAA,EAAM,SAAA,EAAU;AAAA,UAC7C,EAAE,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,SAAA,EAAU;AAAA;AAAA,UAClC,EAAE,IAAA,EAAM,sBAAA,EAAwB,IAAA,EAAM,QAAA;AAAS;AAAA,SACnD;AAAA,QACA,IAAA,EAAM,gBAAA;AAAA,QACN,SAAS,CAAC,EAAE,MAAM,QAAA,EAAU,IAAA,EAAM,UAAU,CAAA;AAAA,QAC5C,eAAA,EAAiB,YAAA;AAAA,QACjB,IAAA,EAAM;AAAA,OACV;AAAA;AAAA,MAEA;AAAA,QACI,MAAA,EAAQ;AAAA,UACJ,EAAE,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,SAAA,EAAU;AAAA,UAClC,EAAE,IAAA,EAAM,mBAAA,EAAqB,IAAA,EAAM,QAAA,EAAS;AAAA,UAC5C,EAAE,IAAA,EAAM,eAAA,EAAiB,IAAA,EAAM,SAAA,EAAU;AAAA,UACzC,EAAE,IAAA,EAAM,WAAA,EAAa,IAAA,EAAM,SAAA;AAAU,SACzC;AAAA,QACA,IAAA,EAAM,gBAAA;AAAA,QACN,SAAS,CAAC,EAAE,MAAM,QAAA,EAAU,IAAA,EAAM,UAAU,CAAA;AAAA,QAC5C,eAAA,EAAiB,YAAA;AAAA,QACjB,IAAA,EAAM;AAAA;AACV,KACJ;AAEO,IAAM,qBAAA,GAAwB;AAAA,MACjC;AAAA,QACI,MAAA,EAAQ;AAAA,UACJ,EAAE,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,OAAA,EAAQ;AAAA,UACjC,EAAE,IAAA,EAAM,aAAA,EAAe,IAAA,EAAM,OAAA;AAAQ,SACzC;AAAA,QACA,IAAA,EAAM,gBAAA;AAAA,QACN,SAAS,CAAC,EAAE,MAAM,SAAA,EAAW,IAAA,EAAM,QAAQ,CAAA;AAAA,QAC3C,eAAA,EAAiB,YAAA;AAAA,QACjB,IAAA,EAAM;AAAA;AACV,KACJ;AAAA,EAAA;AAAA,CAAA,CAAA;ACzFA,IAEa,yBAAA;AAFb,IAAA,SAAA,GAAA,KAAA,CAAA;AAAA,EAAA,mBAAA,GAAA;AAEO,IAAM,yBAAA,GAA4B,OACrC,eAAA,EACA,OAAA,EACA,UAAU,GAAA,KACT;AACD,MAAA,MAAM,OAAA,GAAU,6BAAA;AAEhB,MAAA,MAAM,MAAM,CAAA,EAAG,OAAO,CAAA,aAAA,EAAgB,OAAO,oBAAoB,eAAe,CAAA,CAAA;AAEhF,MAAA,MAAM,KAAA,GAAQ,KAAK,GAAA,EAAI;AACvB,MAAA,MAAM,YAAA,GAAe,GAAA;AAErB,MAAA,OAAO,IAAA,EAAM;AACT,QAAA,MAAM,OAAA,GAAU,IAAA,CAAK,GAAA,EAAI,GAAI,KAAA;AAC7B,QAAA,IAAI,UAAU,OAAA,EAAS;AACnB,UAAA,MAAM,IAAI,KAAA;AAAA,YACN;AAAA,WACJ;AAAA,QACJ;AAEA,QAAA,IAAI;AACA,UAAA,MAAM,QAAA,GAAW,MAAMM,sBAAA,CAAM,GAAA,CAAI,GAAG,CAAA;AAEpC,UAAA,MAAM,OAAA,GAAU,QAAA,CAAS,IAAA,EAAM,QAAA,GAAW,CAAC,CAAA;AAC3C,UAAA,IAAI,OAAA,EAAS,WAAW,UAAA,EAAY;AAChC,YAAA,OAAA,CAAQ,IAAI,qCAAqC,CAAA;AACjD,YAAA,OAAO,OAAA;AAAA,UACX;AAEA,UAAA,OAAA,CAAQ,IAAI,4BAA4B,CAAA;AAAA,QAC5C,SAAS,KAAA,EAAY;AACjB,UAAA,MAAM,MAAA,GAAS,MAAM,QAAA,EAAU,MAAA;AAE/B,UAAA,IAAI,WAAW,GAAA,EAAK;AAChB,YAAA,OAAA,CAAQ,IAAI,4BAA4B,CAAA;AAAA,UAC5C,CAAA,MAAO;AACH,YAAA,OAAA,CAAQ,KAAA,CAAM,6BAAA,EAA+B,KAAA,CAAM,OAAO,CAAA;AAAA,UAC9D;AAAA,QACJ;AAEA,QAAA,MAAM,IAAI,OAAA,CAAQ,CAAC,YAAY,UAAA,CAAW,OAAA,EAAS,YAAY,CAAC,CAAA;AAAA,MACpE;AAAA,IACJ,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;AC5CA,IAKa,WAAA;AALb,IAAA,eAAA,GAAA,KAAA,CAAA;AAAA,EAAA,8BAAA,GAAA;AAKO,IAAM,WAAA,GAA2B;AAAA,MACpC,MAAA,EAAQ;AAAA,QACJ;AAAA,UACI,IAAA,EAAM,MAAA;AAAA,UACN,QAAA,EAAU,CAAA;AAAA,UACV,OAAA,EAAS,4CAAA;AAAA,UACT,WAAA,EAAa;AAAA;AACjB,OACJ;AAAA,MACA,GAAA,EAAK;AAAA,QACD,KAAA,EAAOD,iBAAAA;AAAA,QACP,MAAA,EAAQA,iBAAAA,CAAW,OAAA,CAAQ,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,QACzC,YAAA,EAAc,IAAA;AAAA,QACd,OAAA,EAAS;AAAA,OACb;AAAA,MACA,qBAAA,EAAuB;AAAA,QACnB,iBAAA,EAAmB;AAAA,UACf,sBAAA,EAAwB,KAAA;AAAA,UACxB,eAAA,EAAiB;AAAA,YACb,WAAA,EAAa,IAAA;AAAA,YACb,MAAA,EAAQ;AAAA,WACZ;AAAA,UACA,YAAA,EAAc;AAAA,SAClB;AAAA,QACA,qBAAA,EAAuB;AAAA;AAC3B,KACJ;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC/BA,IAAA,WAAA,GAAA,KAAA,CAAA;AAAA,EAAA,qBAAA,GAAA;AAAA,IAAA,aAAA,EAAA;AACA,IAAA,aAAA,EAAA;AACA,IAAA,SAAA,EAAA;AACA,IAAA,aAAA,EAAA;AACA,IAAA,YAAA,EAAA;AACA,IAAA,cAAA,EAAA;AACA,IAAA,eAAA,EAAA;AACA,IAAA,YAAA,EAAA;AACA,IAAA,UAAA,EAAA;AACA,IAAA,YAAA,EAAA;AACA,IAAA,WAAA,EAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACVA,IAKa,QAAA;AALb,IAAA,sBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,oCAAA,GAAA;AAGA,IAAA,WAAA,EAAA;AAEO,IAAM,QAAA,GAAwC;AAAA,MACjD,QAAA,EAAiB,QAAA;AAAA,MACjB,QAAA,EAAiB,QAAA;AAAA,MACjB,IAAA,EAAa,IAAA;AAAA,MACb,QAAA,EAAiB,QAAA;AAAA,MACjB,OAAA,EAAgB,OAAA;AAAA,MAChB,SAAA,EAAkB,SAAA;AAAA,MAClB,UAAA,EAAmB,WAAA;AAAA,MACnB,OAAA,EAAgBJ,eAAA;AAAA,MAChB,KAAA;AAAA,MACA,GAAA;AAAA,MACA,MAAA,EAAe;AAAA,KACnB;AAAA,EAAA;AAAA,CAAA,CAAA;ACiEA,eAAsB,qBAAA,CAClB,SACA,gBAAA,EACuB;AACvB,EAAA,MAAM,EAAE,cAAA,EAAgB,WAAA,EAAa,QAAQ,SAAA,EAAW,qBAAA,EAAuB,eAAc,GAAI,OAAA;AAEjG,EAAA,OAAA,CAAQ,IAAI,CAAA,4CAAA,EAA+C,aAAa,CAAA,EAAA,EAAK,OAAO,aAAa,CAAA,CAAA,CAAG,CAAA;AAEpG,EAAA,IAAI,CAAC,qBAAA,EAAuB;AACxB,IAAA,OAAO;AAAA,MACH,OAAA,EAAS,KAAA;AAAA,MACT,WAAA,EAAa;AAAA,KACjB;AAAA,EACJ;AAEA,EAAA,MAAM,aAAA,GAAgB,qBAAqB,WAAW,CAAA;AACtD,EAAA,IAAI,CAAC,aAAA,EAAe;AAChB,IAAA,OAAO;AAAA,MACH,OAAA,EAAS,KAAA;AAAA,MACT,WAAA,EAAa,sBAAsB,WAAW,CAAA;AAAA,KAClD;AAAA,EACJ;AAGA,EAAA,MAAM,kBAAA,GAAqBM,6BAAoB,qBAAsC,CAAA;AAErF,EAAA,MAAM,WAAA,GAAc,OAAA,CAAQ,aAAA,IAAkB,cAAA,EAAgB,aAAA,EAAe,IAAA;AAE7E,EAAA,IAAI,CAAC,WAAA,EAAa;AACd,IAAA,OAAO,EAAE,OAAA,EAAS,KAAA,EAAO,WAAA,EAAa,2BAAA,EAA4B;AAAA,EACtE;AAEA,EAAA,MAAM,cAAc,aAAA,CAAc,IAAA;AAClC,EAAA,MAAM,YAAA,GAAe,OAAO,IAAA,CAAK,KAAA,CAAM,WAAW,MAAM,CAAA,GAAI,GAAS,CAAC,CAAA;AAEtE,EAAA,MAAM,eAAeC,uBAAAA,CAAmB;AAAA,IACpC,OAAO,aAAA,CAAc,KAAA;AAAA,IACrB,SAAA,EAAWC,SAAAA,CAAK,aAAA,CAAc,MAAM;AAAA,GACvC,CAAA;AAWD,EAAA,IAAI,aAAA,EAAe;AACf,IAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,+BAAA,EAAkC,aAAa,CAAA,CAAE,CAAA;AAC7D,IAAA,IAAI;AACA,MAAA,MAAM,UAAU,MAAM,YAAA,CAAa,0BAA0B,EAAE,IAAA,EAAM,eAAgC,CAAA;AAErG,MAAA,IAAI,OAAA,CAAQ,WAAW,SAAA,EAAW;AAC9B,QAAA,MAAM,IAAI,MAAM,qCAAqC,CAAA;AAAA,MACzD;AAAA,IACJ,SAAS,CAAA,EAAG;AACR,MAAA,OAAO;AAAA,QACH,OAAA,EAAS,KAAA;AAAA,QACT,aAAa,CAAA,6BAAA,EAAgC,CAAA,YAAa,KAAA,GAAQ,CAAA,CAAE,UAAU,eAAe,CAAA;AAAA,OACjG;AAAA,IACJ;AAGA,IAAA,IAAI,kBAAA,GAAqB,OAAO,CAAC,CAAA;AACjC,IAAA,MAAM,UAAA,GAAa,CAAA;AAEnB,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,UAAA,EAAY,CAAA,EAAA,EAAK;AACjC,MAAA,kBAAA,GAAqB,MAAM,aAAa,YAAA,CAAa;AAAA,QACjD,OAAA,EAAS,WAAA;AAAA,QACT,GAAA,EAAK,cAAA;AAAA,QACL,YAAA,EAAc,WAAA;AAAA,QACd,IAAA,EAAM,CAAC,kBAAA,CAAmB,OAAO;AAAA,OACpC,CAAA;AAED,MAAA,IAAI,sBAAsB,YAAA,EAAc;AACxC,MAAA,MAAM,IAAI,OAAA,CAAQ,CAAA,CAAA,KAAK,UAAA,CAAW,CAAA,EAAG,GAAI,CAAC,CAAA;AAAA,IAC9C;AAEA,IAAA,IAAI,qBAAqB,YAAA,EAAc;AACnC,MAAA,OAAO;AAAA,QACH,OAAA,EAAS,KAAA;AAAA,QACT,WAAA,EAAa;AAAA,OACjB;AAAA,IACJ;AAAA,EAEJ,CAAA,MAAO;AAEH,IAAA,OAAA,CAAQ,IAAI,gEAAgE,CAAA;AAC5E,IAAA,OAAO;AAAA,MACH,OAAA,EAAS,IAAA;AAAA,MACT,IAAA,EAAM;AAAA,QACF,gBAAgB,kBAAA,CAAmB,OAAA;AAAA,QACnC,eAAA,EAAiB,aAAa,QAAA,EAAS;AAAA,QACvC,SAAS,aAAA,CAAc;AAAA,OAC3B;AAAA,MACA,WAAA,EAAa;AAAA,QACT,OAAA,EAAS,0BAAA;AAAA,QACT,WAAA,EAAa;AAAA,OACjB;AAAA,MACA,eAAA,EAAiB;AAAA,KACrB;AAAA,EACJ;AAGA,EAAA,MAAM,eAAgB,aAAA,IAAmC,oEAAA;AAEzD,EAAA,OAAO,kBAAkB,WAAA,EAAa,MAAA,EAAQ,kBAAkB,qBAAA,EAAuB,SAAA,EAAsB,cAAc,WAAsB,CAAA;AACrJ;AAEA,eAAsB,kBAClB,WAAA,EACA,MAAA,EACA,kBACA,qBAAA,EACA,SAAA,EACA,cACA,YAAA,EACuB;AACvB,EAAA,IAAI,CAAC,qBAAA,EAAuB;AACxB,IAAA,OAAO,EAAE,OAAA,EAAS,KAAA,EAAO,WAAA,EAAa,sCAAA,EAAuC;AAAA,EACjF;AAEA,EAAA,MAAM,aAAA,GAAgB,qBAAqB,WAAW,CAAA;AACtD,EAAA,IAAI,CAAC,aAAA,EAAe;AAChB,IAAA,OAAO,EAAE,OAAA,EAAS,KAAA,EAAO,WAAA,EAAa,CAAA,mBAAA,EAAsB,WAAW,CAAA,CAAA,EAAG;AAAA,EAC9E;AAGA,EAAA,MAAM,kBAAA,GAAqBF,6BAAoB,qBAAsC,CAAA;AACrF,EAAA,MAAM,eAAeC,uBAAAA,CAAmB;AAAA,IACpC,OAAO,aAAA,CAAc,KAAA;AAAA,IACrB,SAAA,EAAWC,SAAAA,CAAK,aAAA,CAAc,MAAM;AAAA,GACvC,CAAA;AACD,EAAA,MAAM,eAAeC,uBAAAA,CAAmB;AAAA,IACpC,OAAA,EAAS,kBAAA;AAAA,IACT,OAAO,aAAA,CAAc,KAAA;AAAA,IACrB,SAAA,EAAWD,SAAAA,CAAK,aAAA,CAAc,MAAM;AAAA,GACvC,CAAA;AAGD,EAAA,MAAM,YAAA,GAAe,OAAO,IAAA,CAAK,KAAA,CAAM,WAAW,MAAM,CAAA,GAAI,GAAS,CAAC,CAAA;AACtE,EAAA,MAAM,SAAS,YAAA,EAAa;AAC5B,EAAA,MAAM,MAAM,MAAA,CAAO,IAAA,CAAK,KAAA,CAAM,MAAA,GAAS,GAAS,CAAC,CAAA;AACjD,EAAA,MAAM,WAAA,GAAc,GAAA;AAEpB,EAAA,IAAI,gBAAgB,WAAA,EAAa;AAC7B,IAAA,OAAO;AAAA,MACH,OAAA,EAAS,KAAA;AAAA,MACT,eAAA,EAAiB,YAAA;AAAA,MACjB,WAAA,EAAa,CAAA,oCAAA,EAAuC,MAAA,CAAO,WAAW,IAAI,GAAS,CAAA,4BAAA;AAAA,KACvF;AAAA,EACJ;AAGA,EAAA,IAAI,kBAAA,GAAqB,OAAO,CAAC,CAAA;AACjC,EAAA,MAAM,UAAA,GAAa,CAAA;AAEnB,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,UAAA,EAAY,CAAA,EAAA,EAAK;AACjC,IAAA,kBAAA,GAAqB,MAAM,aAAa,YAAA,CAAa;AAAA,MACjD,SAAS,aAAA,CAAc,IAAA;AAAA,MACvB,GAAA,EAAK,cAAA;AAAA,MACL,YAAA,EAAc,WAAA;AAAA,MACd,IAAA,EAAM,CAAC,kBAAA,CAAmB,OAAO;AAAA,KACpC,CAAA;AAED,IAAA,IAAI,sBAAsB,YAAA,EAAc;AAExC,IAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,sCAAA,EAAyC,CAAA,GAAI,CAAC,CAAA,CAAA,EAAI,UAAU,CAAA,UAAA,EAAa,kBAAkB,CAAA,SAAA,EAAY,YAAY,CAAA,CAAA,CAAG,CAAA;AAClI,IAAA,MAAM,IAAI,OAAA,CAAQ,CAAA,OAAA,KAAW,UAAA,CAAW,OAAA,EAAS,GAAI,CAAC,CAAA;AAAA,EAC1D;AAEA,EAAA,IAAI,qBAAqB,YAAA,EAAc;AACnC,IAAA,OAAO;AAAA,MACH,OAAA,EAAS,KAAA;AAAA,MACT,eAAA,EAAiB,YAAA;AAAA,MACjB,WAAA,EAAa,CAAA,qDAAA,EAAwD,kBAAkB,CAAA,SAAA,EAAY,YAAY,CAAA;AAAA,KACnH;AAAA,EACJ;AAGA,EAAA,IAAI;AACA,IAAA,MAAM,WAAA,GAAc,MAAM,YAAA,CAAa,aAAA,CAAc;AAAA,MACjD,OAAO,aAAA,CAAc,KAAA;AAAA,MACrB,SAAS,aAAA,CAAc,IAAA;AAAA,MACvB,GAAA,EAAK,cAAA;AAAA,MACL,YAAA,EAAc,SAAA;AAAA,MACd,IAAA,EAAM,CAAC,aAAA,CAAc,cAAA,EAAgBE,eAAU;AAAA,KAClD,CAAA;AACD,IAAA,MAAM,YAAA,CAAa,yBAAA,CAA0B,EAAE,IAAA,EAAM,aAAa,CAAA;AAAA,EACtE,SAAS,CAAA,EAAG;AACR,IAAA,OAAA,CAAQ,KAAA,CAAM,mBAAmB,CAAC,CAAA;AAClC,IAAA,OAAO;AAAA,MACH,OAAA,EAAS,KAAA;AAAA,MACT,eAAA,EAAiB,YAAA;AAAA,MACjB,WAAA,EAAa;AAAA,KACjB;AAAA,EACJ;AAGA,EAAA,MAAM,eAAA,GAAkB,aAAa,gBAAA,CAAiB,aAAA;AACtD,EAAA,MAAM,aAAA,GAAgB,iBAAiB,eAAe,CAAA;AAGtD,EAAA,MAAM,SAAS,YAAA,GAAe,MAAA,CAAO,GAAG,CAAA,GAClC,MAAA,CAAO,KAAK,KAAA,CAAM,IAAA,CAAK,IAAI,MAAA,CAAO,YAAY,IAAI,GAAA,EAAK,GAAG,CAAC,CAAC,CAAA,GAC5D,OAAO,GAAG,CAAA;AAEhB,EAAA,IAAI,QAAA;AACJ,EAAA,IAAI;AACA,IAAA,QAAA,GAAW,MAAM,aAAa,aAAA,CAAc;AAAA,MACxC,OAAO,aAAA,CAAc,KAAA;AAAA,MACrB,SAAS,aAAA,CAAc,cAAA;AAAA,MACvB,GAAA,EAAK,iBAAA;AAAA,MACL,YAAA,EAAc,gBAAA;AAAA,MACd,IAAA,EAAM;AAAA,QACF,YAAA,GAAe,GAAA;AAAA;AAAA,QACf,gBAAA,CAAiB,iBAAA;AAAA,QACjB,aAAA;AAAA,QACA,aAAA,CAAc,IAAA;AAAA,QACd,oEAAA;AAAA,QACA,MAAA;AAAA,QACA;AAAA;AAAA;AACJ,KACH,CAAA;AAED,IAAA,MAAM,cAAc,MAAM,YAAA,CAAa,0BAA0B,EAAE,IAAA,EAAM,UAAU,CAAA;AACnF,IAAA,IAAI,YAAY,MAAA,KAAW,SAAA,EAAW,MAAM,IAAI,MAAM,uBAAuB,CAAA;AAAA,EAEjF,SAAS,CAAA,EAAG;AACR,IAAA,OAAO;AAAA,MACH,OAAA,EAAS,KAAA;AAAA,MACT,eAAA,EAAiB,YAAA;AAAA,MACjB,WAAA,EAAa,CAAA,YAAa,KAAA,GAAQ,CAAA,CAAE,OAAA,GAAU;AAAA,KAClD;AAAA,EACJ;AAGA,EAAA,IAAI,mBAAA;AACJ,EAAA,IAAI;AACA,IAAA,mBAAA,GAAsB,MAAM,yBAAA;AAAA,MACxB,QAAA;AAAA,MACA,aAAA,CAAc,OAAO,QAAA,EAAS;AAAA,MAC9B;AAAA;AAAA,KACJ;AAAA,EACJ,SAAS,CAAA,EAAG;AACR,IAAA,OAAA,CAAQ,IAAA,CAAK,uBAAuB,CAAC,CAAA;AACrC,IAAA,OAAO;AAAA,MACH,OAAA,EAAS,IAAA;AAAA;AAAA,MACT,eAAA,EAAiB,YAAA;AAAA,MACjB,mBAAA,EAAqB,QAAA;AAAA,MACrB,WAAA,EAAa;AAAA,KACjB;AAAA,EACJ;AAEA,EAAA,IAAI,CAAC,mBAAA,EAAqB;AACtB,IAAA,OAAO;AAAA,MACH,OAAA,EAAS,KAAA;AAAA,MACT,eAAA,EAAiB,YAAA;AAAA,MACjB,mBAAA,EAAqB,QAAA;AAAA,MACrB,WAAA,EAAa;AAAA,KACjB;AAAA,EACJ;AAIA,EAAA,IAAI,QAAA;AACJ,EAAA,IAAI;AACA,IAAA,MAAM,iBAAA,GAAoB,oBAAA,CAAqB,gBAAA,CAAiB,gBAAuC,CAAA;AACvG,IAAA,IAAI,CAAC,mBAAmB,MAAM,IAAI,MAAM,CAAA,+BAAA,EAAkC,gBAAA,CAAiB,gBAAgB,CAAA,CAAE,CAAA;AAE7G,IAAA,MAAM,mBAAmBD,uBAAAA,CAAmB;AAAA,MACxC,OAAA,EAAS,kBAAA;AAAA,MACT,OAAO,iBAAA,CAAkB,KAAA;AAAA,MACzB,SAAA,EAAWD,SAAAA,CAAK,iBAAA,CAAkB,MAAM;AAAA,KAC3C,CAAA;AAED,IAAA,MAAM,mBAAmBD,uBAAAA,CAAmB;AAAA,MACxC,OAAO,iBAAA,CAAkB,KAAA;AAAA,MACzB,SAAA,EAAWC,SAAAA,CAAK,iBAAA,CAAkB,MAAM;AAAA,KAC3C,CAAA;AAED,IAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,kBAAA,EAAqB,gBAAA,CAAiB,gBAAgB,CAAA,GAAA,CAAK,CAAA;AAEvE,IAAA,QAAA,GAAW,MAAM,iBAAiB,aAAA,CAAc;AAAA,MAC5C,OAAO,iBAAA,CAAkB,KAAA;AAAA,MACzB,SAAS,iBAAA,CAAkB,kBAAA;AAAA,MAC3B,GAAA,EAAK,qBAAA;AAAA,MACL,YAAA,EAAc,gBAAA;AAAA,MACd,IAAA,EAAM;AAAA,QACF,mBAAA,CAAoB,QAAQ,UAAA,CAAW,IAAI,IACrC,mBAAA,CAAoB,OAAA,GACpB,CAAA,EAAA,EAAK,mBAAA,CAAoB,OAAO,CAAA,CAAA;AAAA,QACtC,mBAAA,CAAoB,YAAY,UAAA,CAAW,IAAI,IACzC,mBAAA,CAAoB,WAAA,GACpB,CAAA,EAAA,EAAK,mBAAA,CAAoB,WAAW,CAAA;AAAA;AAC9C,KACH,CAAA;AAED,IAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,qBAAA,EAAwB,QAAQ,CAAA,CAAE,CAAA;AAC9C,IAAA,MAAM,gBAAA,CAAiB,yBAAA,CAA0B,EAAE,IAAA,EAAM,UAAU,CAAA;AACnE,IAAA,OAAA,CAAQ,IAAI,CAAA,sBAAA,CAAwB,CAAA;AAAA,EAExC,SAAS,CAAA,EAAG;AACR,IAAA,OAAA,CAAQ,KAAA,CAAM,eAAe,CAAC,CAAA;AAC9B,IAAA,OAAO;AAAA,MACH,OAAA,EAAS,IAAA;AAAA,MACT,eAAA,EAAiB,YAAA;AAAA,MACjB,mBAAA,EAAqB,QAAA;AAAA,MACrB,WAAA,EAAa;AAAA,KACjB;AAAA,EACJ;AAEA,EAAA,OAAO;AAAA,IACH,OAAA,EAAS,IAAA;AAAA,IACT,eAAA,EAAiB,YAAA;AAAA,IACjB,mBAAA,EAAqB,QAAA;AAAA,IACrB,mBAAA,EAAqB,QAAA;AAAA,IACrB,KAAA,EAAO,YAAA;AAAA,IACP,GAAA,EAAK,IAAI,QAAA,EAAS;AAAA,IAClB,SAAA,EAAW,aAAa,QAAA,EAAS;AAAA,IACjC,WAAA,EAAa;AAAA,MACT,SAAS,mBAAA,CAAoB,OAAA;AAAA,MAC7B,aAAa,mBAAA,CAAoB;AAAA;AACrC,GACJ;AACJ;AAzZA,IA0BM,gBAAA,CAAA,CAIOG;AA9Bb,IAAAC,UAAAA,GAAA,KAAA,CAAA;AAAA,EAAA,sBAAA,GAAA;AAUA,IAAA,gBAAA,EAAA;AAIA,IAAA,gBAAA,EAAA;AACA,IAAA,SAAA,EAAA;AACA,IAAA,SAAA,EAAA;AAEA,IAAA,SAAA,EAAA;AAEA,IAAA,sBAAA,EAAA;AAMA,IAAM,gBAAA,GAAmB,CAAC,OAAA,KAAoC;AAC1D,MAAA,OAAOC,WAAA,CAAO,OAAA,EAAS,EAAE,IAAA,EAAM,IAAI,CAAA;AAAA,IACvC,CAAA;AAEO,IAAMF,uBAAN,MAA6C;AAAA,MAA7C,WAAA,GAAA;AACH,QAAA,IAAA,CAAA,IAAA,GAAO,MAAA;AAAA,MAAA;AAAA,MAEP,UAAU,OAAA,EAAiC;AACvC,QAAA,MAAM,EAAE,WAAA,EAAa,SAAA,EAAW,WAAA,EAAa,WAAU,GAAI,OAAA;AAC3D,QAAA,MAAM,YAAA,GAAe,SAAS,WAAW,CAAA;AACzC,QAAA,MAAM,UAAA,GAAa,SAAS,SAAS,CAAA;AAErC,QAAA,IAAI,CAAC,YAAA,IAAgB,CAAC,UAAA,EAAY,OAAO,KAAA;AAEzC,QAAA,MAAM,UAAA,GAAa,YAAA,CAAa,qBAAA,EAAuB,iBAAA,EAAmB,eAAA,EAAiB,WAAA;AAC3F,QAAA,MAAM,QAAA,GAAW,UAAA,CAAW,qBAAA,EAAuB,iBAAA,EAAmB,eAAA,EAAiB,WAAA;AAGvF,QAAA,IAAI,WAAA,GAAc,SAAA;AAClB,QAAA,IAAI,CAAC,WAAA,EAAa;AACd,UAAA,IAAI,WAAA,IAAe,gBAAgB,MAAA,EAAQ;AACvC,YAAA,WAAA,GAAc,WAAA;AAAA,UAClB,CAAA,MAAO;AACH,YAAA,WAAA,GAAc,MAAA;AAAA,UAClB;AAAA,QACJ;AAEA,QAAA,OAAO,CAAC,EAAE,UAAA,IAAc,QAAA,IAAY,gBAAgB,MAAA,KAAW,WAAA,KAAgB,UAAU,CAAC,WAAA,CAAA,CAAA;AAAA,MAC9F;AAAA,MAEA,MAAM,QAAQ,OAAA,EAAiD;AAC3D,QAAA,MAAM,EAAE,cAAA,EAAgB,WAAA,EAAa,SAAA,EAAW,MAAA,EAAQ,WAAU,GAAI,OAAA;AAEtE,QAAA,MAAM,UAAA,GAAa,SAAS,SAAS,CAAA;AACrC,QAAA,MAAM,iBAAA,GAAoB,UAAA,CAAW,qBAAA,EAAuB,iBAAA,EAAmB,eAAA,EAAiB,MAAA;AAEhG,QAAA,IAAI,sBAAsB,MAAA,EAAW;AACjC,UAAA,OAAO;AAAA,YACH,OAAA,EAAS,KAAA;AAAA,YACT,WAAA,EAAa;AAAA,WACjB;AAAA,QACJ;AAEA,QAAA,MAAM,gBAAA,GAAqC;AAAA,UACvC,gBAAA,EAAkB,SAAA;AAAA,UAClB,iBAAA;AAAA,UACA,aAAA,EAAe;AAAA,SACnB;AAEA,QAAA,OAAO,qBAAA;AAAA,UACH,OAAA;AAAA,UACA;AAAA,SACJ;AAAA,MACJ;AAAA,KACJ;AAAA,EAAA;AAAA,CAAA,CAAA;ACoIA,eAAsB,YAAA,CAClB,aACA,SAAA,EACA,MAAA,EACA,WACA,WAAA,EACA,SAAA,EACA,eACA,OAAA,EACF;AACE,EAAA,MAAM,YAAA,GAAe,SAAS,WAAW,CAAA;AACzC,EAAA,MAAM,UAAA,GAAa,SAAS,SAAS,CAAA;AAErC,EAAA,IAAI,CAAC,YAAA,IAAgB,CAAC,UAAA,EAAY;AAC9B,IAAA,MAAM,IAAI,MAAM,6BAA6B,CAAA;AAAA,EACjD;AAEA,EAAA,MAAM,eAAA,GAAkB,YAAA,CAAa,qBAAA,CAAsB,qBAAA,EAAuB,QAAA,CAAS,IAAA;AAAA,IACvF,CAAC,CAAA,KAAM,CAAA,CAAE,IAAA,MAAU,WAAA,IAAe,MAAA;AAAA,GACtC,IAAK,YAAA,CAAa,qBAAA,CAAsB,qBAAA,EAAuB,SAAS,CAAC,CAAA;AAEzE,EAAA,MAAM,aAAA,GAAgB,UAAA,CAAW,qBAAA,CAAsB,qBAAA,EAAuB,QAAA,CAAS,IAAA;AAAA,IACnF,CAAC,CAAA,KAAM,CAAA,CAAE,IAAA,MAAU,SAAA,IAAa,MAAA;AAAA,GACpC,IAAK,UAAA,CAAW,qBAAA,CAAsB,qBAAA,EAAuB,SAAS,CAAC,CAAA;AAEvE,EAAA,MAAM,cAAc,eAAA,EAAiB,OAAA;AACrC,EAAA,MAAM,YAAY,aAAA,EAAe,OAAA;AAEjC,EAAA,IAAI,CAAC,WAAA,IAAe,CAAC,SAAA,EAAW;AAC5B,IAAA,MAAM,IAAI,MAAM,6CAA6C,CAAA;AAAA,EACjE;AAEA,EAAA,MAAM,QAAA,GAAW,eAAA,EAAiB,QAAA,KAAa,WAAA,KAAgB,YAAY,CAAA,GAAI,CAAA,CAAA;AAC/E,EAAA,MAAM,iBAAA,GAAoB,IAAA,CAAK,KAAA,CAAM,UAAA,CAAW,MAAM,IAAI,IAAA,CAAK,GAAA,CAAI,EAAA,EAAI,QAAQ,CAAC,CAAA;AAChF,EAAA,MAAM,QAAQ,OAAA,CAAQ,GAAA,CAAI,2BAA2B,aAAA,IAAiB,OAAA,CAAQ,IAAI,QAAA,KAAa,aAAA;AAE/F,EAAA,MAAM,QAAA,GAAW,QAAQ,CAAA,GAAI,IAAA;AAE7B,EAAA,MAAM,QAAA,GAAW,KAAK,KAAA,CAAM,QAAA,GAAW,KAAK,GAAA,CAAI,EAAA,EAAI,QAAQ,CAAC,CAAA;AAC7D,EAAA,MAAM,eAAA,GAAA,CAAmB,iBAAA,GAAoB,QAAA,EAAU,QAAA,EAAS;AAEhE,EAAA,IAAI,MAAA,CAAO,eAAe,CAAA,IAAK,CAAA,EAAG;AAC9B,IAAA,MAAM,IAAI,MAAM,gCAAgC,CAAA;AAAA,EACpD;AAGA,EAAA,IAAI,CAAC,SAAA,EAAW;AACZ,IAAA,MAAM,IAAI,MAAM,8CAA8C,CAAA;AAAA,EAClE;AAGA,EAAA,MAAM,gBAAgB,aAAA,IAAiB,SAAA;AAEvC,EAAA,OAAA,CAAQ,IAAI,CAAA,gCAAA,EAAmC,WAAW,CAAA,IAAA,EAAO,SAAS,IAAI,IAAA,CAAK,SAAA,CAAU,EAAE,MAAA,EAAQ,aAAa,SAAA,EAAW,OAAA,EAAQ,EAAG,IAAA,EAAM,CAAC,CAAC,CAAA;AAElJ,EAAA,MAAM,YAAA,GAA6B;AAAA,IAC/B,GAAA,EAAK,SAAS,GAAA,IAAO,KAAA;AAAA,IACrB,QAAA,EAAUG,mCAAa,QAAA,CAAS,WAAA;AAAA,IAChC,iBAAA,EAAmB,GAAA;AAAA,IACnB,WAAA,EAAa,WAAA;AAAA,IACb,WAAA,EAAaA,mCAAa,WAAA,CAAY,YAAA;AAAA,IACtC,WAAA,EAAa,WAAA,KAAgB,SAAA,GAAYA,kCAAA,CAAa,YAAY,IAAA,GAAO,MAAA;AAAA,IACzE,gBAAA,EAAkB,SAAA;AAAA,IAClB,MAAA,EAAQ,eAAA;AAAA,IACR,QAAA,EAAU,aAAA;AAAA,IACV,UAAA,EAAYA,mCAAa,UAAA,CAAW,YAAA;AAAA,IACpC,SAAA;AAAA,IACA,aAAA,EAAeA,mCAAa,aAAA,CAAc,iBAAA;AAAA,IAC1C,QAAA,EAAU,IAAI,IAAA,CAAK,IAAA,CAAK,GAAA,KAAQ,CAAA,GAAI,EAAA,GAAK,GAAI,CAAA,CAAE,WAAA,EAAY;AAAA,IAC3D,QAAA,EAAU,OAAA;AAAA,IACV,kBAAA,EAAoB;AAAA,GACxB;AAEA,EAAA,OAAA,CAAQ,IAAI,CAAA,iCAAA,CAAA,EAAqC,IAAA,CAAK,UAAU,YAAA,EAAc,IAAA,EAAM,CAAC,CAAC,CAAA;AAEtF,EAAA,MAAM,KAAA,GAAQ,MAAMC,qCAAA,CAAgB,QAAA,CAAS,YAAY,CAAA;AAEzD,EAAA,IAAI,CAAC,OAAA,EAAS,GAAA,IAAO,CAAC,KAAA,CAAM,OAAO,cAAA,EAAgB;AAC/C,IAAA,MAAM,IAAI,MAAM,gDAAgD,CAAA;AAAA,EACpE;AAEA,EAAA,OAAO;AAAA,IACH,KAAA;AAAA,IACA,cAAA,EAAgB,KAAA,CAAM,KAAA,EAAO,cAAA,IAAkB,EAAA;AAAA,IAC/C,iBAAA,EAAmB,OAAO,iBAAiB,CAAA;AAAA,IAC3C;AAAA,GACJ;AACJ;AAEA,eAAsB,iBAAA,CAClB,WAAA,EACA,SAAA,EACA,MAAA,EACA,WACA,WAAA,EACF;AACE,EAAA,OAAA,CAAQ,GAAA,CAAI,0CAA0C,EAAE,WAAA,EAAa,WAAW,MAAA,EAAQ,SAAA,EAAW,aAAa,CAAA;AAEhH,EAAA,IAAI,CAAC,MAAA,IAAU,KAAA,CAAM,UAAA,CAAW,MAAM,CAAC,CAAA,EAAG;AACtC,IAAA,MAAM,IAAI,MAAM,gBAAgB,CAAA;AAAA,EACpC;AAEA,EAAA,MAAM,SAAA,GAAY,WAAW,MAAM,CAAA;AACnC,EAAA,MAAM,QAAQ,OAAA,CAAQ,GAAA,CAAI,2BAA2B,aAAA,IAAiB,OAAA,CAAQ,IAAI,QAAA,KAAa,aAAA;AAE/F,EAAA,MAAM,OAAA,GAAU,KAAA,GAAQ,YAAA,CAAa,GAAA,GAAM,YAAA,CAAa,YAAA;AAGxD,EAAA,MAAM,UAAA,GAAa,OAAA;AAGnB,EAAA,MAAM,YAAA,GAAe,SAAS,WAAW,CAAA;AACzC,EAAA,MAAM,eAAA,GAAkB,YAAA,EAAc,qBAAA,EAAuB,qBAAA,EAAuB,QAAA,CAAS,IAAA;AAAA,IACzF,CAAC,CAAA,KAAM,CAAA,CAAE,IAAA,MAAU,WAAA,IAAe,MAAA;AAAA,GACtC,IAAK,YAAA,EAAc,qBAAA,EAAuB,qBAAA,EAAuB,SAAS,CAAC,CAAA;AAC3E,EAAA,MAAM,QAAA,GAAW,eAAA,EAAiB,QAAA,KAAa,WAAA,KAAgB,YAAY,CAAA,GAAI,CAAA,CAAA;AAE/E,EAAA,MAAM,gBAAA,GAAA,CAAoB,SAAA,GAAY,OAAA,EAAS,OAAA,CAAQ,QAAQ,CAAA;AAE/D,EAAA,IAAI,UAAA,CAAW,gBAAgB,CAAA,IAAK,CAAA,EAAG;AACnC,IAAA,OAAO;AAAA,MACH,OAAA,EAAS,KAAA;AAAA,MACT,KAAA,EAAO,CAAA,qBAAA,EAAwB,SAAS,CAAA,gBAAA,EAAmB,OAAO,CAAA,CAAA,CAAA;AAAA,MAClE,SAAA,EAAW;AAAA,KACf;AAAA,EACJ;AAEA,EAAA,MAAM,MAAA,GAAS,WAAA,KAAgB,SAAA,GAAY,qBAAA,GAAwB,iBAAA;AACnE,EAAA,MAAM,SAAA,GAAY,SAAA,KAAc,SAAA,GAAY,qBAAA,GAAwB,iBAAA;AAEpE,EAAA,IAAI;AACA,IAAA,MAAM,cAAc,MAAM,YAAA;AAAA,MACtB,WAAA;AAAA,MACA,SAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,MACA,WAAA;AAAA,MACA,SAAA;AAAA,MACA,MAAA;AAAA,MACA,EAAE,KAAK,IAAA;AAAK,KAChB;AAIA,IAAA,OAAO;AAAA,MACH,OAAA,EAAS,IAAA;AAAA,MACT,UAAA,EAAY,SAAA;AAAA,MACZ,WAAA,EAAa,OAAA;AAAA,MACb,gBAAA,EAAkB,WAAW,gBAAgB,CAAA;AAAA;AAAA,MAE7C,iBAAA,EAAmB,WAAA,CAAY,KAAA,EAAO,KAAA,EAAO,kBAAA,IAAsB,GAAA;AAAA,MACnE,SAAA,EAAW;AAAA,KACf;AAAA,EAEJ,SAAS,KAAA,EAAY;AACjB,IAAA,OAAA,CAAQ,KAAA,CAAM,6BAA6B,KAAK,CAAA;AAChD,IAAA,OAAO;AAAA,MACH,OAAA,EAAS,KAAA;AAAA,MACT,KAAA,EAAO,MAAM,OAAA,IAAW,qBAAA;AAAA,MACxB,SAAA,EAAW;AAAA,KACf;AAAA,EACJ;AACJ;AA1WaC;AAZb,IAAA,SAAA,GAAA,KAAA,CAAA;AAAA,EAAA,sBAAA,GAAA;AACA,IAAA,sBAAA,EAAA;AAIA,IAAA,mBAAA,EAAA;AACA,IAAA,gBAAA,EAAA;AAGA,IAAAC,6BAAA,CAAQ,IAAA,GAAO,iCAAA;AAGR,IAAMD,uBAAN,MAA6C;AAAA,MAA7C,WAAA,GAAA;AACH,QAAA,IAAA,CAAA,IAAA,GAAO,aAAA;AAAA,MAAA;AAAA,MAEP,UAAU,OAAA,EAAiC;AACvC,QAAA,MAAM,EAAE,WAAA,EAAa,SAAA,EAAU,GAAI,OAAA;AAGnC,QAAA,MAAM,YAAA,GAAe,SAAS,WAAW,CAAA;AACzC,QAAA,MAAM,UAAA,GAAa,SAAS,SAAS,CAAA;AAErC,QAAA,IAAI,CAAC,YAAA,IAAgB,CAAC,UAAA,EAAY,OAAO,KAAA;AAEzC,QAAA,MAAM,UAAA,GAAa,YAAA,CAAa,qBAAA,CAAsB,qBAAA,EAAuB,OAAA;AAC7E,QAAA,MAAM,QAAA,GAAW,UAAA,CAAW,qBAAA,CAAsB,qBAAA,EAAuB,OAAA;AAEzE,QAAA,OAAO,CAAC,EAAE,UAAA,IAAc,QAAA,CAAA;AAAA,MAC5B;AAAA,MAEA,MAAM,QAAQ,OAAA,EAAiD;AAC3D,QAAA,MAAM,EAAE,WAAA,EAAa,SAAA,EAAW,MAAA,EAAQ,SAAA,EAAW,WAAW,WAAA,EAAa,aAAA,EAAe,aAAA,EAAe,cAAA,EAAe,GAAI,OAAA;AAG5H,QAAA,IAAI,WAAA,KAAgB,SAAA,IAAa,cAAA,EAAgB,SAAA,EAAW;AACxD,UAAA,MAAM,YAAY,cAAA,CAAe,SAAA;AAEjC,UAAA,OAAA,CAAQ,IAAI,6DAA6D,CAAA;AAEzE,UAAA,IAAI;AACA,YAAA,MAAM,cAAA,GAAiB,IAAId,sBAAA,EAAe;AAC1C,YAAA,MAAM,MAAA,GAAS,MAAM,cAAA,CAAe,SAAA,CAAU,SAAS,CAAA;AACvD,YAAA,MAAM,WAAW,MAAA,CAAO,IAAA;AACxB,YAAA,OAAA,CAAQ,GAAA,CAAI,0CAA0C,QAAQ,CAAA;AAE9D,YAAA,OAAO;AAAA,cACH,OAAA,EAAS,IAAA;AAAA,cACT,eAAA,EAAiB,QAAA;AAAA,cACjB,IAAA,EAAM;AAAA,gBACF,SAAA,EAAW,IAAA;AAAA,gBACX,OAAA,EAAS;AAAA;AACb,aACJ;AAAA,UACJ,SAAS,CAAA,EAAQ;AACb,YAAA,OAAA,CAAQ,KAAA,CAAM,wBAAwB,CAAC,CAAA;AACvC,YAAA,OAAO,EAAE,OAAA,EAAS,KAAA,EAAO,aAAa,yBAAA,IAA6B,CAAA,CAAE,WAAW,SAAA,CAAA,EAAW;AAAA,UAC/F;AAAA,QACJ;AAGA,QAAA,IAAI,aAAA,EAAe;AACf,UAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,uCAAA,EAA0C,aAAa,CAAA,CAAE,CAAA;AAGrE,UAAA,IAAI,gBAAgB,SAAA,EAAW;AAC3B,YAAA,IAAI;AACA,cAAA,MAAM,EAAE,cAAA,EAAAA,eAAAA,EAAe,GAAI,MAAM,OAAA,CAAA,OAAA,EAAA,CAAA,IAAA,CAAA,OAAA,mBAAA,EAAA,EAAA,sBAAA,CAAA,CAAA;AACjC,cAAA,MAAM,cAAA,GAAiB,IAAIA,eAAAA,EAAe;AAI1C,cAAA,MAAM,EAAA,GAAK,MAAM,cAAA,CAAe,MAAA,CAAO,cAAa,CAAE,WAAA,CAAY,aAAa,CAAA,CAAE,IAAA,EAAK;AAEtF,cAAA,IAAI,GAAG,UAAA,EAAY;AAEf,gBAAA,MAAM,UAAA,GAAa,MAAM,cAAA,CAAe,MAAA,CAAO,YAAW,CAAE,cAAA,CAAe,aAAa,CAAA,CAAE,IAAA,EAAK;AAC/F,gBAAA,MAAM,SAAA,GAAY,UAAA,CAAW,OAAA,CAAQ,IAAA,CAAK,CAAC,EAAA,KAAY,EAAA,CAAG,IAAA,KAAS,SAAA,IAAa,EAAA,CAAG,IAAA,KAAS,0BAAA,IAA8B,EAAA,CAAG,SAAS,6BAA6B,CAAA;AAEnK,gBAAA,IAAI,cAAA,GAAiB,EAAA;AACrB,gBAAA,IAAI,IAAA,GAAO,EAAA;AAEX,gBAAA,IAAI,SAAA,EAAW;AAEX,kBAAA,cAAA,GAAiB,SAAA,CAAU,EAAA,IAAM,SAAA,CAAU,MAAA,IAAU,EAAA;AAAA,gBACzD;AAEA,gBAAA,IAAI,EAAA,CAAG,SAAA,KAAc,MAAA,IAAU,EAAA,CAAG,cAAc,IAAA,EAAM;AAClD,kBAAA,IAAA,GAAO,GAAG,IAAA,IAAQ,EAAA;AAAA,gBACtB;AAEA,gBAAA,IAAI,cAAA,EAAgB;AAChB,kBAAA,OAAA,CAAQ,IAAI,CAAA,8CAAA,EAAiD,aAAa,OAAO,cAAc,CAAA,QAAA,EAAW,IAAI,CAAA,CAAA,CAAG,CAAA;AACjH,kBAAA,IAAI;AACA,oBAAA,MAAMa,sCAAgB,eAAA,CAAgB;AAAA,sBAClC,MAAA,EAAQ,aAAA;AAAA,sBACR,cAAA;AAAA,sBACA,MAAM,IAAA,IAAQ,KAAA;AAAA,qBACjB,CAAA;AACD,oBAAA,OAAA,CAAQ,IAAI,gDAAgD,CAAA;AAAA,kBAChE,SAAS,CAAA,EAAQ;AACb,oBAAA,OAAA,CAAQ,KAAA,CAAM,qDAAA,EAAuD,CAAA,CAAE,OAAO,CAAA;AAAA,kBAGlF;AAAA,gBACJ,CAAA,MAAO;AACH,kBAAA,OAAA,CAAQ,MAAM,6EAA6E,CAAA;AAAA,gBAC/F;AAEA,gBAAA,OAAO;AAAA,kBACH,OAAA,EAAS,IAAA;AAAA,kBACT,eAAA,EAAiB,aAAA;AAAA,kBACjB,SAAA,EAAW,MAAA;AAAA,kBACX,IAAA,EAAM,EAAE,SAAA,EAAW,IAAA;AAAK,iBAC5B;AAAA,cACJ,CAAA,MAAO;AACH,gBAAA,OAAO,EAAE,OAAA,EAAS,KAAA,EAAO,WAAA,EAAa,4BAAA,EAA6B;AAAA,cACvE;AAAA,YACJ,SAAS,CAAA,EAAQ;AACb,cAAA,OAAA,CAAQ,KAAA,CAAM,8BAA8B,CAAC,CAAA;AAC7C,cAAA,OAAO,EAAE,OAAA,EAAS,KAAA,EAAO,aAAa,CAAA,6BAAA,EAAgC,CAAA,CAAE,OAAO,CAAA,CAAA,EAAG;AAAA,YACtF;AAAA,UACJ;AAGA,UAAA,MAAM,EAAE,oBAAAR,mBAAAA,EAAoB,IAAA,EAAAC,OAAK,GAAI,MAAM,OAAO,MAAM,CAAA;AACxD,UAAA,MAAM,EAAE,oBAAA,EAAAU,qBAAAA,EAAqB,GAAI,MAAM,OAAA,CAAA,OAAA,EAAA,CAAA,IAAA,CAAA,OAAA,gBAAA,EAAA,EAAA,mBAAA,CAAA,CAAA;AAEvC,UAAA,MAAM,aAAA,GAAgBA,sBAAqB,WAAW,CAAA;AACtD,UAAA,IAAI,CAAC,aAAA,EAAe;AAChB,YAAA,OAAO,EAAE,OAAA,EAAS,KAAA,EAAO,WAAA,EAAa,CAAA,2CAAA,EAA8C,WAAW,CAAA,CAAA,EAAG;AAAA,UACtG;AAEA,UAAA,MAAM,eAAeX,mBAAAA,CAAmB;AAAA,YACpC,OAAO,aAAA,CAAc,KAAA;AAAA,YACrB,SAAA,EAAWC,KAAAA,CAAK,aAAA,CAAc,MAAM;AAAA,WACvC,CAAA;AAED,UAAA,IAAI;AACA,YAAA,OAAA,CAAQ,IAAI,CAAA,qCAAA,CAAuC,CAAA;AAEnD,YAAA,MAAM,UAAU,MAAM,YAAA,CAAa,0BAA0B,EAAE,IAAA,EAAM,eAAgC,CAAA;AACrG,YAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,sCAAA,EAAyC,OAAA,CAAQ,MAAM,CAAA,CAAE,CAAA;AAErE,YAAA,IAAI,OAAA,CAAQ,WAAW,SAAA,EAAW;AAG9B,cAAA,MAAM,KAAK,MAAM,YAAA,CAAa,eAAe,EAAE,IAAA,EAAM,eAAgC,CAAA;AACrF,cAAA,MAAM,iBAAiB,EAAA,CAAG,EAAA;AAE1B,cAAA,IAAI,cAAA,EAAgB;AAChB,gBAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,8CAAA,EAAiD,aAAa,CAAA,IAAA,EAAO,cAAc,CAAA,CAAE,CAAA;AACjG,gBAAA,IAAI;AACA,kBAAA,MAAMO,sCAAgB,eAAA,CAAgB;AAAA,oBAClC,MAAA,EAAQ,aAAA;AAAA,oBACR;AAAA,mBACH,CAAA;AACD,kBAAA,OAAA,CAAQ,IAAI,gDAAgD,CAAA;AAAA,gBAChE,SAAS,CAAA,EAAQ;AACb,kBAAA,OAAA,CAAQ,KAAA,CAAM,qDAAA,EAAuD,CAAA,CAAE,OAAO,CAAA;AAAA,gBAClF;AAAA,cACJ;AAEA,cAAA,OAAO;AAAA,gBACH,OAAA,EAAS,IAAA;AAAA,gBACT,eAAA,EAAiB,aAAA;AAAA,gBACjB,SAAA,EAAW,MAAA;AAAA;AAAA,gBACX,IAAA,EAAM;AAAA;AAAA,kBAEF,SAAA,EAAW;AAAA;AACf,eACJ;AAAA,YACJ,CAAA,MAAO;AACH,cAAA,OAAA,CAAQ,KAAA,CAAM,CAAA,2CAAA,EAA8C,OAAA,CAAQ,MAAM,CAAA,CAAE,CAAA;AAC5E,cAAA,OAAO,EAAE,OAAA,EAAS,KAAA,EAAO,aAAa,CAAA,uCAAA,EAA0C,OAAA,CAAQ,MAAM,CAAA,CAAA,CAAA,EAAI;AAAA,YACtG;AAAA,UACJ,SAAS,CAAA,EAAQ;AACb,YAAA,OAAA,CAAQ,KAAA,CAAM,sCAAsC,CAAC,CAAA;AACrD,YAAA,OAAO,EAAE,OAAA,EAAS,KAAA,EAAO,aAAa,CAAA,oBAAA,EAAuB,CAAA,CAAE,OAAO,CAAA,CAAA,EAAG;AAAA,UAC7E;AAAA,QACJ;AAGA,QAAA,IAAI;AACA,UAAA,MAAM,cAAc,MAAM,YAAA;AAAA,YACtB,WAAA;AAAA,YACA,SAAA;AAAA,YACA,MAAA;AAAA,YACA,SAAA;AAAA,YACA,WAAA;AAAA,YACA,SAAA;AAAA,YACA;AAAA;AAAA,WACJ;AAGA,UAAA,OAAO;AAAA,YACH,OAAA,EAAS,IAAA;AAAA,YACT,eAAA,EAAiB,sBAAA;AAAA,YACjB,WAAW,WAAA,CAAY,eAAA;AAAA,YACvB,IAAA,EAAM;AAAA,cACF,gBAAgB,WAAA,CAAY,cAAA;AAAA,cAC5B,iBAAiB,WAAA,CAAY,eAAA;AAAA,cAC7B,aAAa,WAAA,IAAe,MAAA;AAAA,cAC5B,MAAO,WAAA,CAAY,KAAA,CAAM,MAAc,WAAA,IAAgB,WAAA,CAAY,MAAM,KAAA,CAAc;AAAA;AAC3F,WACJ;AAAA,QAEJ,SAAS,CAAA,EAAQ;AACb,UAAA,OAAO,EAAE,OAAA,EAAS,KAAA,EAAO,WAAA,EAAa,EAAE,OAAA,EAAQ;AAAA,QACpD;AAAA,MACJ;AAAA,KACJ;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC3EA,eAAsB,qBAAA,CAClB,WAAA,EACA,SAAA,EACA,MAAA,EACA,SAAA,EACF;AAQE,EAAA,MAAM,EAAE,eAAA,EAAAI,gBAAAA,EAAgB,GAAI,MAAM,OAAA,CAAA,OAAA,EAAA,CAAA,IAAA,CAAA,OAAA,oBAAA,EAAA,EAAA,uBAAA,CAAA,CAAA;AAMlC,EAAA,MAAM,YAAA,GAAe,SAAS,WAAkB,CAAA;AAChD,EAAA,MAAM,UAAA,GAAa,SAAS,SAAgB,CAAA;AAE5C,EAAA,IAAI,CAAC,YAAA,IAAgB,CAAC,UAAA,EAAY;AAC9B,IAAA,OAAO,EAAE,OAAA,EAAS,KAAA,EAAO,KAAA,EAAO,2BAAA,EAA4B;AAAA,EAChE;AAEA,EAAA,MAAM,cAAc,YAAA,CAAa,MAAA,CAAO,KAAK,CAAA,CAAA,KAAK,CAAA,CAAE,SAAS,MAAM,CAAA;AACnE,EAAA,MAAM,YAAY,UAAA,CAAW,MAAA,CAAO,KAAK,CAAA,CAAA,KAAK,CAAA,CAAE,SAAS,MAAM,CAAA;AAE/D,EAAA,IAAI,CAAC,WAAA,IAAe,CAAC,SAAA,EAAW;AAC5B,IAAA,OAAO,EAAE,OAAA,EAAS,KAAA,EAAO,KAAA,EAAO,0BAAA,EAA2B;AAAA,EAC/D;AAEA,EAAA,MAAM,WAAW,WAAA,CAAY,QAAA;AAC7B,EAAA,MAAM,YAAA,GAAe,IAAA,CAAK,KAAA,CAAM,UAAA,CAAW,MAAM,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,EAAA,EAAI,QAAQ,CAAC,CAAA,CAAE,QAAA,EAAS;AACtF,EAAA,MAAM,eAAA,GAAkB,KAAK,KAAA,CAAM,UAAA,CAAW,YAAY,CAAA,GAAI,KAAK,EAAE,QAAA,EAAS;AAE9E,EAAA,MAAM,WAAA,GAAc,YAAY,WAAA,EAAY;AAC5C,EAAA,MAAM,WAAA,GAAc,UAAU,WAAA,EAAY;AAE1C,EAAA,MAAM,GAAA,GAAM,IAAI,GAAA,CAAI,gBAAgB,CAAA;AACpC,EAAA,GAAA,CAAI,YAAA,CAAa,MAAA,CAAO,UAAA,EAAY,WAAA,CAAY,OAAiB,CAAA;AACjE,EAAA,GAAA,CAAI,YAAA,CAAa,MAAA,CAAO,UAAA,EAAY,SAAA,CAAU,OAAiB,CAAA;AAC/D,EAAA,GAAA,CAAI,YAAA,CAAa,MAAA,CAAO,YAAA,EAAc,SAAA,IAAa,4CAA4C,CAAA;AAC/F,EAAA,GAAA,CAAI,YAAA,CAAa,MAAA,CAAO,YAAA,EAAc,SAAA,IAAa,4CAA4C,CAAA;AAC/F,EAAA,GAAA,CAAI,YAAA,CAAa,MAAA,CAAO,aAAA,EAAe,WAAW,CAAA;AAClD,EAAA,GAAA,CAAI,YAAA,CAAa,MAAA,CAAO,aAAA,EAAe,WAAW,CAAA;AAClD,EAAA,GAAA,CAAI,YAAA,CAAa,MAAA,CAAO,WAAA,EAAa,YAAY,CAAA;AACjD,EAAA,GAAA,CAAI,YAAA,CAAa,MAAA,CAAO,cAAA,EAAgB,eAAe,CAAA;AAEvD,EAAA,IAAI;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,GAAA,CAAI,UAAU,CAAA;AAC3C,IAAA,MAAM,IAAA,GAAO,MAAM,QAAA,CAAS,IAAA,EAAK;AAEjC,IAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AACd,MAAA,OAAO,EAAE,OAAA,EAAS,KAAA,EAAO,KAAA,EAAO,oBAAA,EAAqB;AAAA,IACzD;AAEA,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,MAAA,IAAU,EAAC;AAC/B,IAAA,IAAI,MAAA,CAAO,WAAW,CAAA,EAAG,OAAO,EAAE,OAAA,EAAS,KAAA,EAAO,OAAO,0BAAA,EAA2B;AAEpF,IAAA,MAAM,aAAA,GAAgB,MAAA,CAAO,IAAA,CAAK,CAAC,CAAA,KAAW,EAAE,KAAA,KAAU,kBAAkB,CAAA,IAAK,MAAA,CAAO,CAAC,CAAA;AAIzF,IAAA,MAAM,MAAA,GAAS,MAAA,CAAO,aAAA,CAAc,SAAS,CAAA;AAC7C,IAAA,MAAM,MAAA,GAAS,MAAA,CAAO,aAAA,CAAc,SAAS,CAAA;AAC7C,IAAA,MAAM,OAAO,MAAA,GAAS,MAAA;AACtB,IAAA,MAAM,YAAA,GAAA,CAAgB,MAAA,CAAO,IAAI,CAAA,GAAI,IAAA,CAAK,IAAI,EAAA,EAAI,QAAQ,CAAA,EAAG,OAAA,CAAQ,CAAC,CAAA;AAEtE,IAAA,MAAM,iBAAA,GAAA,CAAqB,MAAA,CAAO,MAAM,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,EAAA,EAAI,SAAA,CAAU,QAAQ,CAAA,EAAG,OAAA,CAAQ,CAAC,CAAA;AAEvF,IAAA,OAAO;AAAA,MACH,OAAA,EAAS,IAAA;AAAA,MACT,UAAA,EAAY,WAAW,MAAM,CAAA;AAAA,MAC7B,WAAA,EAAa,YAAA;AAAA;AAAA,MACb,gBAAA,EAAkB,WAAW,MAAM,CAAA;AAAA;AAAA,MACnC,iBAAA;AAAA,MACA,SAAA,EAAW;AAAA,KACf;AAAA,EACJ,SAAS,CAAA,EAAQ;AACb,IAAA,OAAO,EAAE,OAAA,EAAS,KAAA,EAAO,KAAA,EAAO,EAAE,OAAA,EAAQ;AAAA,EAC9C;AACJ;AA1NA,IAKM,gBAAA,CAAA,CAEOC;AAPb,IAAA,aAAA,GAAA,KAAA,CAAA;AAAA,EAAA,0BAAA,GAAA;AAEA,IAAA,sBAAA,EAAA;AAGA,IAAM,gBAAA,GAAmB,wCAAA;AAElB,IAAMA,2BAAN,MAAiD;AAAA,MAAjD,WAAA,GAAA;AACH,QAAA,IAAA,CAAA,IAAA,GAAO,iBAAA;AAAA,MAAA;AAAA,MAEP,UAAU,OAAA,EAAiC;AACvC,QAAA,MAAM,EAAE,WAAA,EAAa,SAAA,EAAW,WAAA,EAAY,GAAI,OAAA;AAGhD,QAAA,IAAI,WAAA,KAAgB,MAAA,IAAU,SAAA,KAAc,WAAA,IAAe,gBAAgB,MAAA,EAAQ;AAC/E,UAAA,OAAO,IAAA;AAAA,QACX;AAEA,QAAA,MAAM,YAAA,GAAe,SAAS,WAAW,CAAA;AACzC,QAAA,MAAM,UAAA,GAAa,SAAS,SAAS,CAAA;AAErC,QAAA,IAAI,CAAC,YAAA,IAAgB,CAAC,UAAA,EAAY,OAAO,KAAA;AAGzC,QAAA,MAAM,cAAA,GAAiB,YAAA,CAAa,qBAAA,CAAsB,mBAAA,EAAqB,OAAA;AAC/E,QAAA,MAAM,YAAA,GAAe,UAAA,CAAW,qBAAA,CAAsB,mBAAA,EAAqB,OAAA;AAE3E,QAAA,IAAI,CAAC,cAAA,IAAkB,CAAC,YAAA,EAAc,OAAO,KAAA;AAI7C,QAAA,MAAM,WAAA,GAAc,aAAa,MAAA,CAAO,IAAA,CAAK,OAAK,CAAA,CAAE,IAAA,MAAU,eAAe,MAAA,CAAO,CAAA;AACpF,QAAA,MAAM,SAAA,GAAY,WAAW,MAAA,CAAO,IAAA,CAAK,OAAK,CAAA,CAAE,IAAA,MAAU,OAAA,CAAQ,SAAA,IAAa,MAAA,CAAO,CAAA;AAGtF,QAAA,OAAO,CAAC,EAAE,WAAA,EAAa,gBAAA,IAAoB,SAAA,EAAW,gBAAA,CAAA;AAAA,MAC1D;AAAA,MAEA,MAAM,QAAQ,OAAA,EAAiD;AAC3D,QAAA,MAAM,EAAE,aAAa,SAAA,EAAW,MAAA,EAAQ,WAAW,SAAA,EAAW,WAAA,EAAa,eAAc,GAAI,OAAA;AAE7F,QAAA,OAAA,CAAQ,GAAA,CAAI,gCAAgC,WAAW,CAAA,IAAA,EAAO,SAAS,CAAA,KAAA,EAAQ,MAAM,CAAA,CAAA,EAAI,WAAW,CAAA,CAAE,CAAA;AAGtG,QAAA,MAAM,YAAA,GAAe,SAAS,WAAW,CAAA;AACzC,QAAA,MAAM,UAAA,GAAa,SAAS,SAAS,CAAA;AAErC,QAAA,IAAI,CAAC,YAAA,IAAgB,CAAC,UAAA,EAAY;AAC9B,UAAA,OAAO,EAAE,OAAA,EAAS,KAAA,EAAO,WAAA,EAAa,6BAAA,EAA8B;AAAA,QACxE;AAEA,QAAA,MAAM,WAAA,GAAc,aAAa,MAAA,CAAO,IAAA,CAAK,OAAK,CAAA,CAAE,IAAA,MAAU,eAAe,MAAA,CAAO,CAAA;AACpF,QAAA,MAAM,SAAA,GAAY,WAAW,MAAA,CAAO,IAAA,CAAK,OAAK,CAAA,CAAE,IAAA,MAAU,aAAa,MAAA,CAAO,CAAA;AAE9E,QAAA,IAAI,CAAC,WAAA,IAAe,CAAC,SAAA,EAAW;AAC5B,UAAA,OAAO,EAAE,OAAA,EAAS,KAAA,EAAO,WAAA,EAAa,6BAAA,EAA8B;AAAA,QACxE;AAEA,QAAA,MAAM,WAAW,WAAA,CAAY,QAAA;AAC7B,QAAA,MAAM,YAAA,GAAe,IAAA,CAAK,KAAA,CAAM,UAAA,CAAW,MAAM,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,EAAA,EAAI,QAAQ,CAAC,CAAA,CAAE,QAAA,EAAS;AAGtF,QAAA,MAAM,eAAA,GAAkB,KAAK,KAAA,CAAM,UAAA,CAAW,YAAY,CAAA,GAAI,KAAK,EAAE,QAAA,EAAS;AAE9E,QAAA,MAAM,WAAA,GAAc,YAAY,WAAA,EAAY;AAC5C,QAAA,MAAM,WAAA,GAAc,UAAU,WAAA,EAAY;AAE1C,QAAA,MAAM,GAAA,GAAM,IAAI,GAAA,CAAI,gBAAgB,CAAA;AACpC,QAAA,GAAA,CAAI,YAAA,CAAa,MAAA,CAAO,UAAA,EAAY,WAAA,CAAY,OAAiB,CAAA;AACjE,QAAA,GAAA,CAAI,YAAA,CAAa,MAAA,CAAO,UAAA,EAAY,SAAA,CAAU,OAAiB,CAAA;AAC/D,QAAA,GAAA,CAAI,YAAA,CAAa,MAAA,CAAO,YAAA,EAAc,aAAA,IAAiB,SAAS,CAAA;AAChE,QAAA,GAAA,CAAI,YAAA,CAAa,MAAA,CAAO,YAAA,EAAc,SAAS,CAAA;AAC/C,QAAA,GAAA,CAAI,YAAA,CAAa,MAAA,CAAO,aAAA,EAAe,WAAW,CAAA;AAClD,QAAA,GAAA,CAAI,YAAA,CAAa,MAAA,CAAO,aAAA,EAAe,WAAW,CAAA;AAClD,QAAA,GAAA,CAAI,YAAA,CAAa,MAAA,CAAO,WAAA,EAAa,YAAY,CAAA;AACjD,QAAA,GAAA,CAAI,YAAA,CAAa,MAAA,CAAO,cAAA,EAAgB,eAAe,CAAA;AAEvD,QAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,wCAAA,EAA2C,GAAA,CAAI,QAAA,EAAU,CAAA,CAAE,CAAA;AAEvE,QAAA,IAAI;AACA,UAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,GAAA,CAAI,UAAU,CAAA;AAC3C,UAAA,MAAM,IAAA,GAAO,MAAM,QAAA,CAAS,IAAA,EAAK;AAEjC,UAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AACd,YAAA,OAAA,CAAQ,KAAA,CAAM,iCAAiC,IAAI,CAAA;AACnD,YAAA,OAAO,EAAE,SAAS,KAAA,EAAO,WAAA,EAAa,uBAAuB,IAAA,CAAK,SAAA,CAAU,IAAI,CAAC,CAAA,CAAA,EAAG;AAAA,UACxF;AAEA,UAAA,OAAA,CAAQ,IAAI,oCAAA,EAAsC,IAAA,CAAK,UAAU,IAAA,EAAM,IAAA,EAAM,CAAC,CAAC,CAAA;AAG/E,UAAA,MAAM,MAAA,GAAS,IAAA,CAAK,MAAA,IAAU,EAAC;AAC/B,UAAA,IAAI,MAAA,CAAO,WAAW,CAAA,EAAG;AACrB,YAAA,OAAO,EAAE,OAAA,EAAS,KAAA,EAAO,WAAA,EAAa,mCAAA,EAAoC;AAAA,UAC9E;AAEA,UAAA,MAAM,aAAA,GAAgB,MAAA,CAAO,IAAA,CAAK,CAAC,CAAA,KAAW,EAAE,KAAA,KAAU,kBAAkB,CAAA,IAAK,MAAA,CAAO,CAAC,CAAA;AACzF,UAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,mCAAA,EAAsC,aAAA,CAAc,KAAK,CAAA,CAAE,CAAA;AAGvE,UAAA,MAAM,UAAA,GAAa,cAAc,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA,KAAW,CAAA,CAAE,SAAS,QAAQ,CAAA;AAC3E,UAAA,IAAI,CAAC,UAAA,IAAc,CAAC,UAAA,CAAW,WAAA,EAAa;AACxC,YAAA,OAAO,EAAE,OAAA,EAAS,KAAA,EAAO,WAAA,EAAa,sCAAA,EAAuC;AAAA,UACjF;AAEA,UAAA,MAAM,SAAS,UAAA,CAAW,WAAA;AAC1B,UAAA,MAAM,UAAA,GAAa,cAAc,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA,KAAW,CAAA,CAAE,IAAA,KAAS,SAAS,CAAA,EAAG,WAAA;AAE/E,UAAA,OAAO;AAAA,YACH,OAAA,EAAS,IAAA;AAAA,YACT,eAAA,EAAiB,wBAAA;AAAA,YACjB,SAAA,EAAW,MAAA;AAAA,YACX,IAAA,EAAM;AAAA,cACF,QAAA,EAAU,UAAA;AAAA,cACV,KAAA,EAAO,aAAA;AAAA;AAAA,cAEP,UAAU,MAAA,CAAO,EAAA;AAAA,cACjB,QAAQ,MAAA,CAAO,IAAA;AAAA,cACf,SAAS,MAAA,CAAO,KAAA;AAAA;AAAA,cAEhB,kBAAkB,UAAA,GAAa;AAAA,gBAC3B,QAAQ,UAAA,CAAW,EAAA;AAAA,gBACnB,MAAM,UAAA,CAAW,IAAA;AAAA,gBACjB,OAAO,UAAA,CAAW;AAAA,eACtB,GAAI;AAAA;AACR,WACJ;AAAA,QAEJ,SAAS,CAAA,EAAQ;AACb,UAAA,OAAA,CAAQ,KAAA,CAAM,uCAAuC,CAAC,CAAA;AACtD,UAAA,OAAO,EAAE,OAAA,EAAS,KAAA,EAAO,WAAA,EAAa,EAAE,OAAA,EAAQ;AAAA,QACpD;AAAA,MACJ;AAAA,KACJ;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACrIA,IAAA,uBAAA,GAAA,EAAA;AAAA,QAAA,CAAA,uBAAA,EAAA;AAAA,EAAA,eAAA,EAAA,MAAAD;AAAA,CAAA,CAAA;AAMaA;AANb,IAAA,oBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,iCAAA,GAAA;AACA,IAAAP,UAAAA,EAAAA;AACA,IAAA,SAAA,EAAA;AACA,IAAA,aAAA,EAAA;AAGO,IAAMO,0BAAN,MAAsB;AAAA,MAGzB,WAAA,GAAc;AACV,QAAA,IAAA,CAAK,UAAA,GAAa;AAAA,UACd,IAAIR,oBAAA,EAAa;AAAA,UACjB,IAAIS,wBAAA,EAAiB;AAAA,UACrB,IAAIJ,oBAAA;AAAa,SACrB;AAAA,MACJ;AAAA,MAEA,MAAM,QAAQ,OAAA,EAAiD;AAE3D,QAAA,IAAI,QAAQ,WAAA,KAAgB,OAAA,CAAQ,aAAa,OAAA,CAAQ,WAAA,KAAgB,QAAQ,SAAA,EAAW;AACxF,UAAA,OAAA,CAAQ,IAAI,CAAA,8DAAA,CAAgE,CAAA;AAE5E,UAAA,OAAO;AAAA,YACH,OAAA,EAAS,IAAA;AAAA,YACT,eAAA,EAAiB,0BAAA;AAAA,YACjB,IAAA,EAAM;AAAA,cACF,MAAA,EAAQ,iBAAA;AAAA,cACR,QAAQ,OAAA,CAAQ,MAAA;AAAA,cAChB,OAAO,OAAA,CAAQ,WAAA;AAAA,cACf,WAAW,OAAA,CAAQ;AAAA;AACvB,WACJ;AAAA,QACJ;AAEA,QAAA,MAAM,aAAa,IAAA,CAAK,UAAA;AAGxB,QAAA,MAAM,gBAAA,GAAmB,UAAA,CAAW,IAAA,CAAK,CAAA,CAAA,KAAK,aAAaI,wBAAgB,CAAA;AAC3E,QAAA,IAAI,gBAAA,IAAoB,gBAAA,CAAiB,SAAA,CAAU,OAAO,CAAA,EAAG;AACzD,UAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,8BAAA,EAAiC,gBAAA,CAAiB,IAAI,CAAA,WAAA,CAAa,CAAA;AAC/E,UAAA,OAAO,gBAAA,CAAiB,QAAQ,OAAO,CAAA;AAAA,QAC3C;AAGA,QAAA,MAAM,YAAA,GAAe,UAAA,CAAW,IAAA,CAAK,CAAA,CAAA,KAAK,aAAaT,oBAAY,CAAA;AACnE,QAAA,IAAI,YAAA,IAAgB,YAAA,CAAa,SAAA,CAAU,OAAO,CAAA,EAAG;AACjD,UAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,8BAAA,EAAiC,YAAA,CAAa,IAAI,CAAA,OAAA,CAAS,CAAA;AACvE,UAAA,OAAO,YAAA,CAAa,QAAQ,OAAO,CAAA;AAAA,QACvC;AAGA,QAAA,MAAM,YAAA,GAAe,UAAA,CAAW,IAAA,CAAK,CAAA,CAAA,KAAK,aAAaK,oBAAY,CAAA;AACnE,QAAA,IAAI,YAAA,IAAgB,YAAA,CAAa,SAAA,CAAU,OAAO,CAAA,EAAG;AACjD,UAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,8BAAA,EAAiC,YAAA,CAAa,IAAI,CAAA,OAAA,CAAS,CAAA;AACvE,UAAA,OAAO,YAAA,CAAa,QAAQ,OAAO,CAAA;AAAA,QACvC;AAEA,QAAA,OAAO;AAAA,UACH,OAAA,EAAS,KAAA;AAAA,UACT,aAAa,CAAA,wCAAA,EAA2C,OAAA,CAAQ,WAAW,CAAA,IAAA,EAAO,QAAQ,SAAS,CAAA;AAAA,SACvG;AAAA,MACJ;AAAA,KACJ;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC9DO,IAAM,UAAA,GAAa;AAAA,EACtB;AAAA,IACI,MAAA,EAAQ;AAAA,MACJ,EAAE,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,SAAA,EAAU;AAAA,MACjC,EAAE,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,SAAA;AAAU,KACpC;AAAA,IACA,IAAA,EAAM,mBAAA;AAAA,IACN,SAAS,CAAC,EAAE,MAAM,EAAA,EAAI,IAAA,EAAM,WAAW,CAAA;AAAA,IACvC,eAAA,EAAiB,MAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACV;AAAA,EACA;AAAA,IACI,MAAA,EAAQ;AAAA,MACJ,EAAE,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,SAAA,EAAU;AAAA,MACjC,EAAE,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,SAAA;AAAU,KACpC;AAAA,IACA,IAAA,EAAM,mBAAA;AAAA,IACN,SAAS,CAAC,EAAE,MAAM,EAAA,EAAI,IAAA,EAAM,QAAQ,CAAA;AAAA,IACpC,eAAA,EAAiB,MAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACV;AAAA,EACA;AAAA,IACI,MAAA,EAAQ;AAAA,MACJ,EAAE,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,SAAA,EAAU;AAAA,MACjC,EAAE,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,SAAA;AAAU,KACpC;AAAA,IACA,IAAA,EAAM,eAAA;AAAA,IACN,SAAS,CAAC,EAAE,MAAM,SAAA,EAAW,IAAA,EAAM,WAAW,CAAA;AAAA,IAC9C,eAAA,EAAiB,YAAA;AAAA,IACjB,IAAA,EAAM;AAAA;AAEd,CAAA;AAEO,IAAM,aAAA,GAAgB;AAAA,EACzB;AAAA,IACI,MAAA,EAAQ;AAAA,MACJ,EAAE,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,SAAA,EAAU;AAAA,MAClC,EAAE,IAAA,EAAM,KAAA,EAAO,IAAA,EAAM,SAAA;AAAU,KACnC;AAAA,IACA,IAAA,EAAM,UAAA;AAAA,IACN,SAAS,CAAC,EAAE,MAAM,OAAA,EAAS,IAAA,EAAM,WAAW,CAAA;AAAA,IAC5C,eAAA,EAAiB,MAAA;AAAA,IACjB,IAAA,EAAM;AAAA;AAEd;AAEO,IAAM,eAAA,GAAkB;AAAA,EAC3B;AAAA,IACI,MAAA,EAAQ;AAAA,MACJ,EAAE,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,SAAA,EAAU;AAAA,MAClC,EAAE,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,SAAA,EAAU;AAAA,MACjC,EAAE,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAA;AAAQ,KAClC;AAAA,IACA,IAAA,EAAM,SAAA;AAAA,IACN,SAAS,EAAC;AAAA,IACV,eAAA,EAAiB,YAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACV;AAAA,EACA;AAAA,IACI,MAAA,EAAQ;AAAA,MACJ,EAAE,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,WAAA,EAAY;AAAA,MACrC,EAAE,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,WAAA,EAAY;AAAA,MACpC,EAAE,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,SAAA;AAAU,KACrC;AAAA,IACA,IAAA,EAAM,cAAA;AAAA,IACN,SAAS,EAAC;AAAA,IACV,eAAA,EAAiB,YAAA;AAAA,IACjB,IAAA,EAAM;AAAA;AAEd;AAEO,IAAM,QAAA,GAAW;AAAA,EACpB;AAAA,IACI,QAAQ,CAAC,EAAE,MAAM,SAAA,EAAW,IAAA,EAAM,WAAW,CAAA;AAAA,IAC7C,IAAA,EAAM,WAAA;AAAA,IACN,SAAS,CAAC,EAAE,MAAM,EAAA,EAAI,IAAA,EAAM,WAAW,CAAA;AAAA,IACvC,eAAA,EAAiB,MAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACV;AAAA,EACA;AAAA,IACI,MAAA,EAAQ;AAAA,MACJ,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAU;AAAA,MAC9B,EAAE,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,SAAA;AAAU,KACtC;AAAA,IACA,IAAA,EAAM,UAAA;AAAA,IACN,SAAS,CAAC,EAAE,MAAM,EAAA,EAAI,IAAA,EAAM,QAAQ,CAAA;AAAA,IACpC,eAAA,EAAiB,YAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACV;AAAA,EACA;AAAA,IACI,MAAA,EAAQ;AAAA,MACJ,EAAE,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,SAAA,EAAU;AAAA,MACnC,EAAE,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,SAAA;AAAU,KACtC;AAAA,IACA,IAAA,EAAM,SAAA;AAAA,IACN,SAAS,CAAC,EAAE,MAAM,EAAA,EAAI,IAAA,EAAM,QAAQ,CAAA;AAAA,IACpC,eAAA,EAAiB,YAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACV;AAAA,EACA;AAAA,IACI,MAAA,EAAQ;AAAA,MACJ,EAAE,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,SAAA,EAAU;AAAA,MACjC,EAAE,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,SAAA;AAAU,KACvC;AAAA,IACA,IAAA,EAAM,WAAA;AAAA,IACN,SAAS,CAAC,EAAE,MAAM,EAAA,EAAI,IAAA,EAAM,WAAW,CAAA;AAAA,IACvC,eAAA,EAAiB,MAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACV;AAAA,EACA;AAAA,IACI,MAAA,EAAQ;AAAA,MACJ,EAAE,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAU;AAAA,MAChC,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,SAAA,EAAU;AAAA,MAC9B,EAAE,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,SAAA;AAAU,KACtC;AAAA,IACA,IAAA,EAAM,cAAA;AAAA,IACN,SAAS,CAAC,EAAE,MAAM,EAAA,EAAI,IAAA,EAAM,QAAQ,CAAA;AAAA,IACpC,eAAA,EAAiB,YAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACV;AAAA,EACA;AAAA,IACI,QAAQ,EAAC;AAAA,IACT,IAAA,EAAM,UAAA;AAAA,IACN,SAAS,CAAC,EAAE,MAAM,EAAA,EAAI,IAAA,EAAM,SAAS,CAAA;AAAA,IACrC,eAAA,EAAiB,MAAA;AAAA,IACjB,IAAA,EAAM;AAAA;AAEd;;;AC5HO,IAAM,gBAAN,MAAoB;AAAA,EAIvB,WAAA,CAAY,QAAwB,iBAAA,EAA4B;AAC5D,IAAA,IAAA,CAAK,aAAa,MAAA,CAAO,UAAA;AACzB,IAAA,IAAA,CAAK,iBAAA,GAAoB,iBAAA;AAAA,EAC7B;AAAA,EAEA,MAAc,IAAA,CAAK,MAAA,EAAgB,MAAA,EAA6B;AAC5D,IAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,IAAA,CAAK,UAAA,EAAY;AAAA,MAC1C,MAAA,EAAQ,MAAA;AAAA,MACR,OAAA,EAAS,EAAE,cAAA,EAAgB,kBAAA,EAAmB;AAAA,MAC9C,IAAA,EAAM,KAAK,SAAA,CAAU;AAAA,QACjB,OAAA,EAAS,KAAA;AAAA,QACT,EAAA,EAAI,CAAA;AAAA,QACJ,MAAA;AAAA,QACA;AAAA,OACH;AAAA,KACJ,CAAA;AAED,IAAA,MAAM,MAAA,GAAS,MAAM,QAAA,CAAS,IAAA,EAAK;AACnC,IAAA,IAAI,OAAO,KAAA,EAAO;AACd,MAAA,MAAM,IAAI,KAAA,CAAM,MAAA,CAAO,KAAA,CAAM,OAAO,CAAA;AAAA,IACxC;AACA,IAAA,OAAO,MAAA,CAAO,MAAA;AAAA,EAClB;AAAA,EAEA,MAAM,YAAY,MAAA,EAAsD;AACpE,IAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,IAAA,CAAK,8BAAA,EAAgC;AAAA,MAC3D;AAAA,QACI,QAAQ,MAAA,CAAO,MAAA;AAAA,QACf,KAAA,EAAO,OAAO,KAAA,GAAQ,IAAA,GAAO,OAAO,KAAA,CAAM,QAAA,CAAS,EAAE,CAAA,GAAI,KAAA;AAAA,QACzD,QAAA,EAAU,OAAO,QAAA,IAAY,IAAA;AAAA,QAC7B,QAAA,EAAU,OAAO,QAAA,IAAY,IAAA;AAAA,QAC7B,gBAAA,EAAkB,OAAO,gBAAA,IAAoB,IAAA;AAAA,QAC7C,SAAA,EAAW;AAAA,OACf;AAAA,MACA,IAAA,CAAK;AAAA,KACR,CAAA;AAED,IAAA,OAAA,CAAQ,GAAA,CAAI,8BAA8B,MAAM,CAAA;AAEhD,IAAA,OAAO;AAAA,MACH,cAAc,MAAA,CAAO,YAAA;AAAA,MACrB,sBAAsB,MAAA,CAAO,oBAAA;AAAA,MAC7B,oBAAoB,MAAA,CAAO,kBAAA;AAAA,MAC3B,cAAc,MAAA,CAAO,YAAA;AAAA,MACrB,sBAAsB,MAAA,CAAO,oBAAA;AAAA,MAC7B,kBAAkB,MAAA,CAAO;AAAA,KAC7B;AAAA,EACJ;AAAA,EAEA,MAAM,kBAAkB,MAAA,EAAsC;AAC1D,IAAA,OAAO,MAAM,IAAA,CAAK,IAAA,CAAK,uBAAA,EAAyB;AAAA,MAC5C;AAAA,QACI,QAAQ,MAAA,CAAO,MAAA;AAAA,QACf,KAAA,EAAO,IAAA,GAAO,MAAA,CAAO,KAAA,CAAM,SAAS,EAAE,CAAA;AAAA,QACtC,UAAU,MAAA,CAAO,QAAA;AAAA,QACjB,UAAU,MAAA,CAAO,QAAA;AAAA,QACjB,YAAA,EAAc,IAAA,GAAO,MAAA,CAAO,YAAA,CAAa,SAAS,EAAE,CAAA;AAAA,QACpD,oBAAA,EAAsB,IAAA,GAAO,MAAA,CAAO,oBAAA,CAAqB,SAAS,EAAE,CAAA;AAAA,QACpE,kBAAA,EAAoB,IAAA,GAAO,MAAA,CAAO,kBAAA,CAAmB,SAAS,EAAE,CAAA;AAAA,QAChE,YAAA,EAAc,IAAA,GAAO,MAAA,CAAO,YAAA,CAAa,SAAS,EAAE,CAAA;AAAA,QACpD,oBAAA,EAAsB,IAAA,GAAO,MAAA,CAAO,oBAAA,CAAqB,SAAS,EAAE,CAAA;AAAA,QACpE,kBAAkB,MAAA,CAAO,gBAAA;AAAA,QACzB,WAAW,MAAA,CAAO;AAAA,OACtB;AAAA,MACA,IAAA,CAAK;AAAA,KACR,CAAA;AAAA,EACL;AAAA,EAEA,MAAM,oBAAA,CAAqB,UAAA,EAAkB,OAAA,GAAU,GAAA,EAA+B;AAClF,IAAA,MAAM,SAAA,GAAY,KAAK,GAAA,EAAI;AAE3B,IAAA,OAAO,IAAA,CAAK,GAAA,EAAI,GAAI,SAAA,GAAY,OAAA,EAAS;AACrC,MAAA,MAAM,SAAS,MAAM,IAAA,CAAK,KAAK,6BAAA,EAA+B,CAAC,UAAU,CAAC,CAAA;AAE1E,MAAA,IAAI,MAAA,EAAQ;AACR,QAAA,OAAO,MAAA;AAAA,MACX;AAGA,MAAA,MAAM,IAAI,OAAA,CAAQ,CAAC,YAAY,UAAA,CAAW,OAAA,EAAS,GAAI,CAAC,CAAA;AAAA,IAC5D;AAEA,IAAA,MAAM,IAAI,MAAM,mCAAmC,CAAA;AAAA,EACvD;AAAA,EAEA,MAAM,sBAAA,CAAuB,KAAA,EAAgB,KAAA,EAAgB,SAAkB,MAAA,EAAgD;AAC3H,IAAA,OAAO,MAAM,IAAA,CAAK,IAAA,CAAK,2BAAA,EAA6B;AAAA,MAChD,KAAA;AAAA,MACA,KAAA;AAAA,MACA,OAAA;AAAA,MACA,OAAO,QAAA;AAAS,KACnB,CAAA;AAAA,EACL;AACJ;AChGO,IAAM,eAAN,MAAmB;AAAA,EAItB,WAAA,CAAY,aAA0B,YAAA,EAA4B;AAHlE,IAAA,IAAA,CAAQ,MAAA,uBAAiC,GAAA,EAAI;AAIzC,IAAA,IAAA,CAAK,YAAA,GAAe,YAAA;AAEpB,IAAA,WAAA,CAAY,MAAA,CAAO,QAAQ,CAAA,KAAA,KAAS;AAChC,MAAA,IAAA,CAAK,OAAO,GAAA,CAAI,KAAA,CAAM,MAAA,CAAO,WAAA,IAAe,KAAK,CAAA;AAAA,IACrD,CAAC,CAAA;AAAA,EACL;AAAA;AAAA;AAAA;AAAA,EAKA,gBAAgB,KAAA,EAAkC;AAG9C,IAAA,IAAI,KAAA,CAAM,UAAA,CAAW,IAAI,CAAA,EAAG,OAAO,KAAA;AACnC,IAAA,MAAM,OAAO,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,KAAA,CAAM,aAAa,CAAA;AAChD,IAAA,IAAI,CAAC,IAAA,EAAM,MAAM,IAAI,KAAA,CAAM,CAAA,MAAA,EAAS,KAAK,CAAA,0BAAA,CAA4B,CAAA;AACrE,IAAA,OAAO,IAAA,CAAK,OAAA;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,UAAA,CAAW,KAAA,EAAyB,OAAA,EAAmC;AACzE,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,eAAA,CAAgB,KAAK,CAAA;AAE1C,IAAA,IAAI,YAAY,4CAAA,EAA8C;AAC1D,MAAA,OAAO,MAAM,IAAA,CAAK,YAAA,CAAa,WAAW,EAAE,OAAA,EAAS,SAAS,CAAA;AAAA,IAClE;AACA,IAAA,OAAO,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MACxC,OAAA;AAAA,MACA,GAAA,EAAK,QAAA;AAAA,MACL,YAAA,EAAc,WAAA;AAAA,MACd,IAAA,EAAM,CAAC,OAAO;AAAA,KACjB,CAAA;AAAA,EACL;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,YAAA,CAAa,KAAA,EAAyB,KAAA,EAAgB,OAAA,EAAmC;AAC3F,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,eAAA,CAAgB,KAAK,CAAA;AAE1C,IAAA,IAAI,YAAY,4CAAA,EAA8C;AAC1D,MAAA,OAAO,EAAA;AAAA,IACX;AAEA,IAAA,OAAO,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MACxC,OAAA;AAAA,MACA,GAAA,EAAK,QAAA;AAAA,MACL,YAAA,EAAc,WAAA;AAAA,MACd,IAAA,EAAM,CAAC,KAAA,EAAO,OAAO;AAAA,KACxB,CAAA;AAAA,EACL;AAAA;AAAA;AAAA;AAAA,EAKA,cAAA,CAAe,WAAoB,MAAA,EAA+B;AAC9D,IAAA,OAAOK,uBAAA,CAAmB;AAAA,MACtB,GAAA,EAAK,QAAA;AAAA,MACL,YAAA,EAAc,UAAA;AAAA,MACd,IAAA,EAAM,CAAC,SAAA,EAAW,MAAM;AAAA,KAC3B,CAAA;AAAA,EACL;AAAA;AAAA;AAAA;AAAA,EAKA,kBAAA,CAAmB,MAAA,EAAiB,SAAA,EAAoB,MAAA,EAA+B;AACnF,IAAA,OAAOA,uBAAA,CAAmB;AAAA,MACtB,GAAA,EAAK,QAAA;AAAA,MACL,YAAA,EAAc,cAAA;AAAA,MACd,IAAA,EAAM,CAAC,MAAA,EAAQ,SAAA,EAAW,MAAM;AAAA,KACnC,CAAA;AAAA,EACL;AAAA;AAAA;AAAA;AAAA,EAKA,aAAA,CAAc,SAAkB,MAAA,EAA+B;AAC3D,IAAA,OAAOA,uBAAA,CAAmB;AAAA,MACtB,GAAA,EAAK,QAAA;AAAA,MACL,YAAA,EAAc,SAAA;AAAA,MACd,IAAA,EAAM,CAAC,OAAA,EAAS,MAAM;AAAA,KACzB,CAAA;AAAA,EACL;AACJ,CAAA;ACnFO,IAAM,gBAAN,MAAoB;AAAA,EAOvB,WAAA,CACI,WAAA,EACA,aAAA,EACA,YAAA,EACF;AACE,IAAA,IAAA,CAAK,WAAA,GAAc,WAAA;AACnB,IAAA,IAAA,CAAK,aAAA,GAAgB,aAAA;AACrB,IAAA,IAAA,CAAK,YAAA,GAAe,YAAA;AAEpB,IAAA,IAAA,CAAK,oBAAqB,WAAA,CAAoB,iBAAA;AAC9C,IAAA,IAAA,CAAK,iBAAkB,WAAA,CAAoB,cAAA;AAAA,EAC/C;AAAA,EAEA,MAAM,SAAS,mBAAA,EAA+C;AAC1D,IAAA,OAAO,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MACxC,SAAS,IAAA,CAAK,iBAAA;AAAA,MACd,GAAA,EAAK,aAAA;AAAA,MACL,YAAA,EAAc,UAAA;AAAA,MACd,IAAA,EAAM,CAAC,mBAAA,EAAqB,EAAE;AAAA,KACjC,CAAA;AAAA,EACL;AAAA,EAEA,cAAc,KAAA,EAAqB;AAC/B,IAAA,MAAM,oBAAoBA,uBAAAA,CAAmB;AAAA,MACzC,GAAA,EAAK,UAAA;AAAA,MACL,YAAA,EAAc,eAAA;AAAA,MACd,IAAA,EAAM,CAAC,KAAA,EAAO,EAAE;AAAA,KACnB,CAAA;AACD,IAAA,OAAO,GAAG,IAAA,CAAK,cAAc,GAAG,iBAAA,CAAkB,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA;AAAA,EAC9D;AAAA,EAEA,MAAM,kBAAkB,mBAAA,EAAgD;AACpE,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,YAAA,CAAa,OAAA,CAAQ;AAAA,MACzC,OAAA,EAAS;AAAA,KACZ,CAAA;AACD,IAAA,OAAO,IAAA,KAAS,UAAa,IAAA,KAAS,IAAA;AAAA,EAC1C;AAAA,EAEA,MAAM,uBAAA,CACF,KAAA,EACA,mBAAA,EACA,YAAA,EACsB;AACtB,IAAA,MAAM,UAAA,GAAa,MAAM,IAAA,CAAK,iBAAA,CAAkB,mBAAmB,CAAA;AACnE,IAAA,MAAM,QAAA,GAAW,UAAA,GAAa,IAAA,GAAO,IAAA,CAAK,cAAc,KAAK,CAAA;AAE7D,IAAA,MAAM,UAAU,YAAA,CAAa,GAAA,CAAI,CAAC,EAAA,KAAO,GAAG,MAAM,CAAA;AAClD,IAAA,MAAM,SAAS,YAAA,CAAa,GAAA,CAAI,CAAC,EAAA,KAAO,GAAG,KAAK,CAAA;AAChD,IAAA,MAAM,QAAQ,YAAA,CAAa,GAAA,CAAI,CAAC,EAAA,KAAO,GAAG,IAAI,CAAA;AAE9C,IAAA,MAAM,WAAWA,uBAAAA,CAAmB;AAAA,MAChC,GAAA,EAAK,eAAA;AAAA,MACL,YAAA,EAAc,cAAA;AAAA,MACd,IAAA,EAAM,CAAC,OAAA,EAAS,MAAA,EAAQ,KAAK;AAAA,KAChC,CAAA;AAED,IAAA,MAAM,KAAA,GAAQ,MAAM,IAAA,CAAK,QAAA,CAAS,mBAAmB,CAAA;AAErD,IAAA,MAAM,SAAA,GAAY;AAAA,MACd,MAAA,EAAQ,mBAAA;AAAA,MACR,KAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,gBAAA,EAAoB,IAAA,CAAK,WAAA,CAAoB,gBAAA,IAAoB;AAAA,KACrE;AAEA,IAAA,MAAM,WAAA,GAAc,MAAM,IAAA,CAAK,aAAA,CAAc,YAAY,SAAS,CAAA;AAElE,IAAA,OAAO;AAAA,MACH,GAAG,SAAA;AAAA,MACH,YAAA,EAAc,MAAA,CAAO,WAAA,CAAY,YAAY,CAAA;AAAA,MAC7C,oBAAA,EAAsB,MAAA,CAAO,WAAA,CAAY,oBAAoB,CAAA;AAAA,MAC7D,kBAAA,EAAoB,MAAA,CAAO,WAAA,CAAY,kBAAkB,CAAA;AAAA,MACzD,YAAA,EAAc,MAAA,CAAO,WAAA,CAAY,YAAY,CAAA;AAAA,MAC7C,oBAAA,EAAsB,MAAA,CAAO,WAAA,CAAY,oBAAoB,CAAA;AAAA,MAC7D,gBAAA,EAAmB,WAAA,CAAY,gBAAA,IAAoB,SAAA,CAAU,gBAAA;AAAA,MAC7D,SAAA,EAAW;AAAA,KACf;AAAA,EACJ;AAAA,EAEA,MAAM,iBAAA,CACF,KAAA,EACA,mBAAA,EACsB;AACtB,IAAA,MAAM,UAAA,GAAa,MAAM,IAAA,CAAK,iBAAA,CAAkB,mBAAmB,CAAA;AACnE,IAAA,IAAI,UAAA,EAAY,MAAM,IAAI,KAAA,CAAM,0BAA0B,CAAA;AAE1D,IAAA,MAAM,QAAA,GAAW,IAAA,CAAK,aAAA,CAAc,KAAK,CAAA;AACzC,IAAA,MAAM,QAAA,GAAW,IAAA;AACjB,IAAA,MAAM,KAAA,GAAQ,MAAM,IAAA,CAAK,QAAA,CAAS,mBAAmB,CAAA;AAErD,IAAA,MAAM,SAAA,GAAY;AAAA,MACd,MAAA,EAAQ,mBAAA;AAAA,MACR,KAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,gBAAA,EAAoB,IAAA,CAAK,WAAA,CAAoB,gBAAA,IAAoB;AAAA,KACrE;AAEA,IAAA,MAAM,WAAA,GAAc,MAAM,IAAA,CAAK,aAAA,CAAc,YAAY,SAAS,CAAA;AAElE,IAAA,OAAO;AAAA,MACH,GAAG,SAAA;AAAA,MACH,YAAA,EAAc,MAAA,CAAO,WAAA,CAAY,YAAY,CAAA;AAAA,MAC7C,oBAAA,EAAsB,MAAA,CAAO,WAAA,CAAY,oBAAoB,CAAA;AAAA,MAC7D,kBAAA,EAAoB,MAAA,CAAO,WAAA,CAAY,kBAAkB,CAAA;AAAA,MACzD,YAAA,EAAc,MAAA,CAAO,WAAA,CAAY,YAAY,CAAA;AAAA,MAC7C,oBAAA,EAAsB,MAAA,CAAO,WAAA,CAAY,oBAAoB,CAAA;AAAA,MAC7D,gBAAA,EAAmB,WAAA,CAAY,gBAAA,IAAoB,SAAA,CAAU,gBAAA;AAAA,MAC7D,SAAA,EAAW;AAAA,KACf;AAAA,EACJ;AAAA,EAEA,cAAc,MAAA,EAA4B;AACtC,IAAA,MAAM,MAAA,GAASC,wBAAA;AAAA,MACX;AAAA,QACI,EAAE,MAAM,SAAA,EAAU;AAAA,QAClB,EAAE,MAAM,SAAA,EAAU;AAAA,QAClB,EAAE,MAAM,SAAA,EAAU;AAAA,QAClB,EAAE,MAAM,SAAA,EAAU;AAAA,QAClB,EAAE,MAAM,SAAA,EAAU;AAAA,QAClB,EAAE,MAAM,SAAA,EAAU;AAAA,QAClB,EAAE,MAAM,SAAA,EAAU;AAAA,QAClB,EAAE,MAAM,SAAA,EAAU;AAAA,QAClB,EAAE,MAAM,SAAA,EAAU;AAAA,QAClB,EAAE,MAAM,SAAA;AAAU,OACtB;AAAA,MACA;AAAA,QACI,MAAA,CAAO,MAAA;AAAA,QACP,MAAA,CAAO,KAAA;AAAA,QACPC,cAAA,CAAU,OAAO,QAAQ,CAAA;AAAA,QACzBA,cAAA,CAAU,OAAO,QAAQ,CAAA;AAAA,QACzB,MAAA,CAAO,YAAA;AAAA,QACP,MAAA,CAAO,oBAAA;AAAA,QACP,MAAA,CAAO,kBAAA;AAAA,QACP,MAAA,CAAO,YAAA;AAAA,QACP,MAAA,CAAO,oBAAA;AAAA,QACPA,cAAA,CAAU,OAAO,gBAAgB;AAAA;AACrC,KACJ;AAEA,IAAA,MAAM,UAAA,GAAaA,eAAU,MAAM,CAAA;AAEnC,IAAA,OAAOA,cAAA;AAAA,MACHD,wBAAA;AAAA,QACI,CAAC,EAAE,IAAA,EAAM,SAAA,EAAU,EAAG,EAAE,IAAA,EAAM,SAAA,EAAU,EAAG,EAAE,IAAA,EAAM,SAAA,EAAW,CAAA;AAAA,QAC9D,CAAC,YAAY,IAAA,CAAK,iBAAA,EAAmB,OAAO,IAAA,CAAK,WAAA,CAAY,KAAA,CAAM,EAAE,CAAC;AAAA;AAC1E,KACJ;AAAA,EACJ;AACJ,CAAA;;;ACnJO,IAAM,qBAAN,MAAyB;AAAA,EAgB5B,YAAY,WAAA,EAA6B;AAfzC,IAAA,IAAA,CAAQ,KAAA,GAAwB,IAAA;AAChC,IAAA,IAAA,CAAQ,mBAAA,GAAsC,IAAA;AAI9C,IAAA,IAAA,CAAQ,YAAA,GAAoC,IAAA;AAWxC,IAAA,IAAA,CAAK,WAAA,GAAc,WAAA;AAGnB,IAAA,IAAI,CAAC,WAAA,CAAY,iBAAA,EAAmB,MAAM,IAAI,MAAM,6BAA6B,CAAA;AACjF,IAAA,IAAA,CAAK,oBAAoB,WAAA,CAAY,iBAAA;AACrC,IAAA,IAAI,CAAC,WAAA,CAAY,cAAA,EAAgB,MAAM,IAAI,MAAM,0BAA0B,CAAA;AAC3E,IAAA,IAAA,CAAK,iBAAiB,WAAA,CAAY,cAAA;AAGlC,IAAA,MAAM,MAAA,GAAS,YAAY,MAAA,IAAU,WAAA,CAAY,MAAM,OAAA,CAAQ,OAAA,CAAQ,KAAK,CAAC,CAAA;AAC7E,IAAA,IAAA,CAAK,eAAef,uBAAA,CAAmB;AAAA,MACnC,OAAO,WAAA,CAAY,KAAA;AAAA,MACnB,SAAA,EAAWC,UAAK,MAAM;AAAA,KACzB,CAAA;AAED,IAAA,IAAA,CAAK,aAAA,GAAgB,IAAI,aAAA,CAAc,WAAA,EAAa,KAAK,iBAAiB,CAAA;AAG1E,IAAA,IAAA,CAAK,YAAA,GAAe,IAAI,YAAA,CAAa,WAAA,EAAa,KAAK,YAAY,CAAA;AACnE,IAAA,IAAA,CAAK,gBAAgB,IAAI,aAAA,CAAc,aAAa,IAAA,CAAK,aAAA,EAAe,KAAK,YAAY,CAAA;AAAA,EAC7F;AAAA,EAEA,MAAM,QAAQ,MAAA,EAAiF;AAE3F,IAAA,IAAI,OAAO,WAAW,QAAA,EAAU;AAC5B,MAAA,MAAM,OAAA,GAAwBF,6BAAoB,MAAM,CAAA;AACxD,MAAA,IAAA,CAAK,QAAQ,OAAA,CAAQ,OAAA;AAErB,MAAA,MAAM,MAAA,GAAS,IAAA,CAAK,WAAA,CAAY,MAAA,IAAU,IAAA,CAAK,YAAY,KAAA,CAAM,OAAA,CAAQ,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA;AACvF,MAAA,IAAA,CAAK,eAAeG,uBAAA,CAAmB;AAAA,QACnC,OAAA;AAAA,QACA,KAAA,EAAO,KAAK,WAAA,CAAY,KAAA;AAAA,QACxB,SAAA,EAAWD,UAAK,MAAM;AAAA,OACzB,CAAA;AAAA,IAEL,CAAA,MAAA,IAAW,MAAA,IAAU,OAAO,MAAA,KAAW,QAAA,EAAU;AAE7C,MAAA,IAAA,CAAK,YAAA,GAAe,MAAA;AACpB,MAAA,IAAI,CAAC,IAAA,CAAK,YAAA,CAAa,SAAS,MAAM,IAAI,MAAM,mCAAmC,CAAA;AACnF,MAAA,IAAA,CAAK,KAAA,GAAQ,IAAA,CAAK,YAAA,CAAa,OAAA,CAAQ,OAAA;AAAA,IAE3C,CAAA,MAAO;AAEH,MAAA,IAAI,OAAO,MAAA,KAAW,WAAA,IAAe,CAAC,OAAO,QAAA,EAAU;AACnD,QAAA,MAAM,IAAI,MAAM,uDAAuD,CAAA;AAAA,MAC3E;AAGA,MAAA,MAAM,QAAA,GAAY,MAAM,MAAA,CAAO,QAAA,CAAS,OAAA,CAAQ;AAAA,QAC5C,MAAA,EAAQ;AAAA,OACX,CAAA;AAED,MAAA,IAAI,CAAC,YAAY,QAAA,CAAS,MAAA,KAAW,GAAG,MAAM,IAAI,MAAM,mBAAmB,CAAA;AAG3E,MAAA,MAAM,OAAA,GAAW,MAAM,MAAA,CAAO,QAAA,CAAS,OAAA,CAAQ;AAAA,QAC3C,MAAA,EAAQ;AAAA,OACX,CAAA;AACD,MAAA,MAAM,aAAA,GAAgB,IAAA,CAAK,WAAA,CAAY,KAAA,CAAM,EAAA;AAE7C,MAAA,IAAI,QAAA,CAAS,OAAA,EAAS,EAAE,CAAA,KAAM,aAAA,EAAe;AACzC,QAAA,IAAI;AACA,UAAA,MAAM,MAAA,CAAO,SAAS,OAAA,CAAQ;AAAA,YAC1B,MAAA,EAAQ,4BAAA;AAAA,YACR,MAAA,EAAQ,CAAC,EAAE,OAAA,EAAS,OAAO,aAAA,CAAc,QAAA,CAAS,EAAE,CAAA,EAAG;AAAA,WAC1D,CAAA;AAAA,QACL,SAAS,WAAA,EAAsB;AAC3B,UAAA,MAAM,KAAA,GAAQ,WAAA;AACd,UAAA,IAAI,KAAA,CAAM,SAAS,IAAA,EAAM;AACrB,YAAA,MAAM,MAAA,CAAO,SAAS,OAAA,CAAQ;AAAA,cAC1B,MAAA,EAAQ,yBAAA;AAAA,cACR,MAAA,EAAQ;AAAA,gBACJ;AAAA,kBACI,OAAA,EAAS,IAAA,GAAO,aAAA,CAAc,QAAA,CAAS,EAAE,CAAA;AAAA,kBACzC,SAAA,EAAW,IAAA,CAAK,WAAA,CAAY,KAAA,CAAM,IAAA;AAAA,kBAClC,cAAA,EAAgB,IAAA,CAAK,WAAA,CAAY,KAAA,CAAM,cAAA;AAAA,kBACvC,OAAA,EAAS,CAAC,IAAA,CAAK,WAAA,CAAY,MAAA,IAAU,IAAA,CAAK,WAAA,CAAY,KAAA,CAAM,OAAA,CAAQ,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAC,CAAA;AAAA,kBACnF,iBAAA,EAAmB,IAAA,CAAK,WAAA,CAAY,KAAA,CAAM,gBAAgB,OAAA,EAAS,GAAA,GAC7D,CAAC,IAAA,CAAK,YAAY,KAAA,CAAM,cAAA,CAAe,OAAA,CAAQ,GAAG,IAClD;AAAC;AACX;AACJ,aACH,CAAA;AAAA,UACL,CAAA,MAAO;AACH,YAAA,MAAM,WAAA;AAAA,UACV;AAAA,QACJ;AAAA,MACJ;AAEA,MAAA,IAAA,CAAK,KAAA,GAAQ,SAAS,CAAC,CAAA;AAAA,IAE3B;AAEA,IAAA,IAAA,CAAK,mBAAA,GAAsB,MAAM,IAAA,CAAK,sBAAA,CAAuB,KAAK,KAAM,CAAA;AAExE,IAAA,OAAO;AAAA,MACH,OAAO,IAAA,CAAK,KAAA;AAAA,MACZ,cAAc,IAAA,CAAK;AAAA,KACvB;AAAA,EACJ;AAAA;AAAA,EAIA,MAAM,iBAAA,GAAsC;AACxC,IAAA,IAAI,CAAC,IAAA,CAAK,mBAAA,EAAqB,OAAO,KAAA;AACtC,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,YAAA,CAAa,YAAY,EAAE,OAAA,EAAS,IAAA,CAAK,mBAAA,EAAqB,CAAA;AACtF,IAAA,OAAO,IAAA,KAAS,MAAA;AAAA,EACpB;AAAA,EAEA,MAAM,aAAA,GAAwC;AAC1C,IAAA,IAAI,CAAC,KAAK,KAAA,IAAS,CAAC,KAAK,mBAAA,EAAqB,MAAM,IAAI,KAAA,CAAM,eAAe,CAAA;AAC7E,IAAA,OAAO,KAAK,eAAA,CAAgB;AAAA,MACxB,QAAQ,IAAA,CAAK,mBAAA;AAAA,MACb,KAAA,EAAO,EAAA;AAAA,MACP,IAAA,EAAM;AAAA,KACT,CAAA;AAAA,EACL;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,uBAAuB,KAAA,EAAkC;AAC3D,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MACjD,SAAS,IAAA,CAAK,cAAA;AAAA,MACd,GAAA,EAAK,UAAA;AAAA,MACL,YAAA,EAAc,mBAAA;AAAA,MACd,IAAA,EAAM,CAAC,KAAA,EAAO,EAAE;AAAA,KACnB,CAAA;AACD,IAAA,OAAO,OAAA;AAAA,EACX;AAAA;AAAA,EAIA,gBAAgB,KAAA,EAAkC;AAC9C,IAAA,OAAO,IAAA,CAAK,YAAA,CAAa,eAAA,CAAgB,KAAK,CAAA;AAAA,EAClD;AAAA,EAEA,MAAM,WAAW,KAAA,EAA0C;AACvD,IAAA,IAAI,CAAC,IAAA,CAAK,mBAAA,EAAqB,MAAM,IAAI,MAAM,eAAe,CAAA;AAC9D,IAAA,OAAO,IAAA,CAAK,YAAA,CAAa,UAAA,CAAW,KAAA,EAAO,KAAK,mBAAmB,CAAA;AAAA,EACvE;AAAA,EAEA,MAAM,cAAc,KAAA,EAA0C;AAC1D,IAAA,IAAI,CAAC,IAAA,CAAK,KAAA,EAAO,MAAM,IAAI,MAAM,eAAe,CAAA;AAChD,IAAA,OAAO,IAAA,CAAK,YAAA,CAAa,UAAA,CAAW,KAAA,EAAO,KAAK,KAAK,CAAA;AAAA,EACzD;AAAA,EAIA,MAAM,YAAA,CAAa,KAAA,GAA0B,MAAA,EAAyB;AAClE,IAAA,IAAI,CAAC,KAAK,KAAA,IAAS,CAAC,KAAK,mBAAA,EAAqB,MAAM,IAAI,KAAA,CAAM,eAAe,CAAA;AAC7E,IAAA,OAAO,KAAK,YAAA,CAAa,YAAA,CAAa,OAAO,IAAA,CAAK,KAAA,EAAO,KAAK,mBAAmB,CAAA;AAAA,EACrF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,gBAAgB,KAAA,EAAyB;AAC3C,IAAA,IAAI,CAAC,KAAK,KAAA,IAAS,CAAC,KAAK,mBAAA,EAAqB,MAAM,IAAI,KAAA,CAAM,eAAe,CAAA;AAE7E,IAAA,MAAM,YAAA,GAAe,IAAA,CAAK,eAAA,CAAgB,KAAK,CAAA;AAC/C,IAAA,MAAM,WAAW,YAAA,KAAiB,4CAAA;AAElC,IAAA,MAAM,CAAC,SAAS,UAAA,EAAY,SAAA,EAAW,UAAU,CAAA,GAAI,MAAM,QAAQ,GAAA,CAAI;AAAA,MACnE,IAAA,CAAK,WAAW,KAAK,CAAA;AAAA,MACrB,IAAA,CAAK,cAAc,KAAK,CAAA;AAAA,MACxB,QAAA,GAAW,KAAK,IAAA,CAAK,YAAA,CAAa,KAAK,CAAA,CAAE,KAAA,CAAM,MAAM,EAAE,CAAA;AAAA;AAAA,MACvD,KAAK,iBAAA;AAAkB,KAC1B,CAAA;AAED,IAAA,OAAO;AAAA,MACH,OAAO,IAAA,CAAK,KAAA;AAAA,MACZ,cAAc,IAAA,CAAK,mBAAA;AAAA,MACnB,OAAA;AAAA,MACA,UAAA;AAAA,MACA,SAAA;AAAA,MACA;AAAA,KACJ;AAAA,EACJ;AAAA;AAAA,EAIA,MAAM,gBACF,EAAA,EACsB;AACtB,IAAA,OAAO,IAAA,CAAK,oBAAA,CAAqB,CAAC,EAAE,CAAC,CAAA;AAAA,EACzC;AAAA,EAEA,MAAM,qBACF,GAAA,EACsB;AACtB,IAAA,IAAI,CAAC,KAAK,KAAA,IAAS,CAAC,KAAK,mBAAA,EAAqB,MAAM,IAAI,KAAA,CAAM,eAAe,CAAA;AAG7E,IAAA,MAAM,YAAA,GAAe,GAAA,CAAI,GAAA,CAAI,CAAA,EAAA,MAAO;AAAA,MAChC,QAAQ,EAAA,CAAG,MAAA;AAAA,MACX,KAAA,EAAO,GAAG,KAAA,IAAS,EAAA;AAAA,MACnB,IAAA,EAAM,GAAG,IAAA,IAAQ;AAAA,KACrB,CAAE,CAAA;AAEF,IAAA,IAAI;AACA,MAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,aAAA,CAAc,uBAAA;AAAA,QACpC,IAAA,CAAK,KAAA;AAAA,QACL,IAAA,CAAK,mBAAA;AAAA,QACL;AAAA,OACJ;AACA,MAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,iBAAA,CAAkB,MAAM,CAAA;AAClD,MAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,iBAAA,CAAkB,MAAM,CAAA;AAChD,MAAA,OAAO,MAAM,IAAA,CAAK,oBAAA,CAAqB,IAAI,CAAA;AAAA,IAC/C,SAAS,KAAA,EAAO;AACZ,MAAA,MAAM,IAAA,CAAK,YAAY,KAAK,CAAA;AAAA,IAChC;AAAA,EACJ;AAAA,EAEA,MAAM,QAAQ,MAAA,EAA+B;AACzC,IAAA,IAAI,CAAC,KAAK,KAAA,IAAS,CAAC,KAAK,mBAAA,EAAqB,MAAM,IAAI,KAAA,CAAM,eAAe,CAAA;AAE7E,IAAA,IAAI,KAAK,YAAA,EAAc;AACnB,MAAA,OAAO,MAAM,IAAA,CAAK,YAAA,CAAa,eAAA,CAAgB;AAAA,QAC3C,OAAA,EAAS,KAAK,YAAA,CAAa,OAAA;AAAA,QAC3B,IAAI,IAAA,CAAK,mBAAA;AAAA,QACT,KAAA,EAAO,MAAA;AAAA,QACP,KAAA,EAAO,KAAK,WAAA,CAAY;AAAA,OAC3B,CAAA;AAAA,IACL;AAEA,IAAA,OAAO,MAAM,MAAA,CAAO,QAAA,CAAU,OAAA,CAAQ;AAAA,MAClC,MAAA,EAAQ,qBAAA;AAAA,MACR,QAAQ,CAAC;AAAA,QACL,MAAM,IAAA,CAAK,KAAA;AAAA,QACX,IAAI,IAAA,CAAK,mBAAA;AAAA,QACT,KAAA,EAAO,IAAA,GAAO,MAAA,CAAO,QAAA,CAAS,EAAE;AAAA,OACnC;AAAA,KACJ,CAAA;AAAA,EACL;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,aAAA,CACF,KAAA,EACA,SAAA,EACA,QACA,GAAA,EAC+D;AAC/D,IAAA,IAAI,CAAC,KAAK,KAAA,IAAS,CAAC,KAAK,mBAAA,EAAqB,MAAM,IAAI,KAAA,CAAM,eAAe,CAAA;AAE7E,IAAA,MAAM,YAAA,GAAe,IAAA,CAAK,eAAA,CAAgB,KAAK,CAAA;AAC/C,IAAA,MAAM,WAAW,YAAA,KAAiB,4CAAA;AAGlC,IAAA,MAAM,CAAC,KAAA,EAAO,MAAA,EAAQ,SAAS,CAAA,GAAI,MAAM,QAAQ,GAAA,CAAI;AAAA,MACjD,IAAA,CAAK,WAAW,KAAK,CAAA;AAAA,MACrB,IAAA,CAAK,cAAc,KAAK,CAAA;AAAA,MACxB,QAAA,GAAW,KAAK,IAAA,CAAK,YAAA,CAAa,KAAK,CAAA,CAAE,KAAA,CAAM,MAAM,EAAE;AAAA,KAC1D,CAAA;AAED,IAAA,MAAM,WAAA,GAAc,MAAA,IAAU,GAAA,EAAK,MAAA,IAAU,EAAA,CAAA;AAG7C,IAAA,IAAI,SAAS,WAAA,EAAa;AACtB,MAAA,MAAM,MAAM,EAAC;AAGb,MAAA,IAAI,QAAA,EAAU;AACV,QAAA,GAAA,CAAI,IAAA,CAAK,EAAE,MAAA,EAAQ,SAAA,EAAW,OAAO,MAAA,EAAQ,IAAA,EAAM,MAAa,CAAA;AAAA,MACpE,CAAA,MAAO;AACH,QAAA,GAAA,CAAI,IAAA,CAAK,EAAE,MAAA,EAAQ,YAAA,EAAc,KAAA,EAAO,EAAA,EAAI,IAAA,EAAM,IAAA,CAAK,YAAA,CAAa,cAAA,CAAe,SAAA,EAAW,MAAM,GAAG,CAAA;AAAA,MAC3G;AAGA,MAAA,IAAI,GAAA,IAAO,GAAA,CAAI,MAAA,GAAS,EAAA,EAAI;AACxB,QAAA,IAAI,QAAA,EAAU;AACV,UAAA,GAAA,CAAI,IAAA,CAAK,EAAE,MAAA,EAAQ,GAAA,CAAI,SAAA,EAAW,OAAO,GAAA,CAAI,MAAA,EAAQ,IAAA,EAAM,IAAA,EAAa,CAAA;AAAA,QAC5E,CAAA,MAAO;AACH,UAAA,GAAA,CAAI,IAAA,CAAK,EAAE,MAAA,EAAQ,YAAA,EAAc,OAAO,EAAA,EAAI,IAAA,EAAM,IAAA,CAAK,YAAA,CAAa,eAAe,GAAA,CAAI,SAAA,EAAW,GAAA,CAAI,MAAM,GAAG,CAAA;AAAA,QACnH;AAAA,MACJ;AACA,MAAA,OAAA,CAAQ,IAAI,oCAAoC,CAAA;AAChD,MAAA,OAAO,IAAA,CAAK,qBAAqB,GAAG,CAAA;AAAA,IACxC;AAGA,IAAA,IAAI,UAAU,WAAA,EAAa;AACvB,MAAA,IAAI,QAAA,EAAU;AAEV,QAAA,OAAA,CAAQ,IAAI,mCAAmC,CAAA;AAC/C,QAAA,IAAI,KAAK,YAAA,EAAc;AACnB,UAAA,MAAMgB,KAAAA,GAAO,MAAM,IAAA,CAAK,YAAA,CAAa,eAAA,CAAgB;AAAA,YACjD,OAAA,EAAS,KAAK,YAAA,CAAa,OAAA;AAAA,YAC3B,EAAA,EAAI,SAAA;AAAA,YACJ,KAAA,EAAO,MAAA;AAAA,YACP,KAAA,EAAO,KAAK,WAAA,CAAY;AAAA,WAC3B,CAAA;AACD,UAAA,OAAO,EAAE,OAAA,EAAS,EAAE,eAAA,EAAiBA,OAAK,EAAE;AAAA,QAChD;AACA,QAAA,MAAM,IAAA,GAAO,MAAM,MAAA,CAAO,QAAA,CAAU,OAAA,CAAQ;AAAA,UACxC,MAAA,EAAQ,qBAAA;AAAA,UACR,MAAA,EAAQ,CAAC,EAAE,IAAA,EAAM,KAAK,KAAA,EAAO,EAAA,EAAI,SAAA,EAAW,KAAA,EAAO,IAAA,GAAO,MAAA,CAAO,QAAA,CAAS,EAAE,GAAG;AAAA,SAClF,CAAA;AACD,QAAA,OAAO,EAAE,OAAA,EAAS,EAAE,eAAA,EAAiB,MAAK,EAAE;AAAA,MAChD,CAAA,MAAO;AAEH,QAAA,OAAA,CAAQ,IAAI,iCAAiC,CAAA;AAE7C,QAAA,IAAI,YAAY,WAAA,EAAa;AAEzB,UAAA,MAAM,IAAI,KAAA,CAAM,CAAA,kCAAA,EAAqC,KAAK,CAAA,OAAA,CAAS,CAAA;AAAA,QACvE;AAEA,QAAA,MAAM,MAAM,EAAC;AAEb,QAAA,GAAA,CAAI,IAAA,CAAK;AAAA,UACL,MAAA,EAAQ,YAAA;AAAA,UACR,KAAA,EAAO,EAAA;AAAA,UACP,MAAM,IAAA,CAAK,YAAA,CAAa,mBAAmB,IAAA,CAAK,KAAA,EAAO,WAAW,MAAM;AAAA,SAC3E,CAAA;AAGD,QAAA,IAAI,GAAA,IAAO,GAAA,CAAI,MAAA,GAAS,EAAA,EAAI;AACxB,UAAA,GAAA,CAAI,IAAA,CAAK;AAAA,YACL,MAAA,EAAQ,YAAA;AAAA,YACR,KAAA,EAAO,EAAA;AAAA,YACP,IAAA,EAAM,KAAK,YAAA,CAAa,kBAAA,CAAmB,KAAK,KAAA,EAAO,GAAA,CAAI,SAAA,EAAW,GAAA,CAAI,MAAM;AAAA,WACnF,CAAA;AAAA,QACL;AACA,QAAA,OAAO,IAAA,CAAK,qBAAqB,GAAG,CAAA;AAAA,MACxC;AAAA,IACJ;AAEA,IAAA,MAAM,IAAI,MAAM,CAAA,mBAAA,CAAqB,CAAA;AAAA,EACzC;AAAA,EAEA,MAAM,QAAA,CACF,KAAA,EACA,SAAA,EACA,MAAA,EACsB;AACtB,IAAA,MAAM,YAAA,GAAe,IAAA,CAAK,eAAA,CAAgB,KAAK,CAAA;AAE/C,IAAA,IAAI,iBAAiB,4CAAA,EAA8C;AAC/D,MAAA,OAAO,KAAK,eAAA,CAAgB;AAAA,QACxB,MAAA,EAAQ,SAAA;AAAA,QACR,KAAA,EAAO,MAAA;AAAA,QACP,IAAA,EAAM;AAAA,OACT,CAAA;AAAA,IACL;AAGA,IAAA,MAAM,IAAA,GAAO,IAAA,CAAK,YAAA,CAAa,cAAA,CAAe,WAAW,MAAM,CAAA;AAC/D,IAAA,OAAO,KAAK,eAAA,CAAgB;AAAA,MACxB,MAAA,EAAQ,YAAA;AAAA,MACR,KAAA,EAAO,EAAA;AAAA,MACP;AAAA,KACH,CAAA;AAAA,EACL;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,YAAA,CACF,KAAA,EACA,OAAA,EACA,SAAiB,+EAAA,EACW;AAC5B,IAAA,IAAI,CAAC,IAAA,CAAK,KAAA,EAAO,MAAM,IAAI,MAAM,eAAe,CAAA;AAEhD,IAAA,MAAM,UAAU,MAAM,IAAA,CAAK,sBAAA,CAAuB,KAAA,EAAO,SAAS,MAAM,CAAA;AAExE,IAAA,IAAI,OAAA,CAAQ,SAAS,SAAA,EAAW;AAC5B,MAAA,MAAM,IAAA,GAAO,IAAA,CAAK,YAAA,CAAa,aAAA,CAAc,SAAS,MAAM,CAAA;AAE5D,MAAA,IAAI,KAAK,YAAA,EAAc;AACnB,QAAA,OAAO,MAAM,IAAA,CAAK,YAAA,CAAa,eAAA,CAAgB;AAAA,UAC3C,OAAA,EAAS,KAAK,YAAA,CAAa,OAAA;AAAA,UAC3B,EAAA,EAAI,KAAA;AAAA,UACJ,IAAA;AAAA,UACA,KAAA,EAAO,KAAK,WAAA,CAAY;AAAA,SAC3B,CAAA;AAAA,MACL;AAEA,MAAA,OAAO,MAAM,MAAA,CAAO,QAAA,CAAU,OAAA,CAAQ;AAAA,QAClC,MAAA,EAAQ,qBAAA;AAAA,QACR,QAAQ,CAAC;AAAA,UACL,MAAM,IAAA,CAAK,KAAA;AAAA,UACX,EAAA,EAAI,KAAA;AAAA,UACJ;AAAA,SACH;AAAA,OACJ,CAAA;AAAA,IACL;AAEA,IAAA,IAAI,QAAQ,IAAA,KAAS,QAAA,EAAU,MAAM,IAAI,MAAM,0BAA0B,CAAA;AACzE,IAAA,OAAO,YAAA;AAAA,EACX;AAAA;AAAA,EAIA,MAAM,kBAAkB,MAAA,EAA+C;AACnE,IAAA,IAAI,CAAC,IAAA,CAAK,KAAA,EAAO,MAAM,IAAI,MAAM,eAAe,CAAA;AAEhD,IAAA,MAAM,UAAA,GAAa,IAAA,CAAK,aAAA,CAAc,aAAA,CAAc,MAAM,CAAA;AAC1D,IAAA,IAAI,SAAA;AAEJ,IAAA,IAAI,KAAK,YAAA,EAAc;AACnB,MAAA,SAAA,GAAY,MAAM,IAAA,CAAK,YAAA,CAAa,WAAA,CAAY;AAAA,QAC5C,OAAA,EAAS,KAAK,YAAA,CAAa,OAAA;AAAA,QAC3B,OAAA,EAAS,EAAE,GAAA,EAAK,UAAA;AAAW;AAAA,OAC9B,CAAA;AAAA,IACL,CAAA,MAAO;AACH,MAAA,SAAA,GAAa,MAAM,MAAA,CAAO,QAAA,CAAU,OAAA,CAAQ;AAAA,QACxC,MAAA,EAAQ,eAAA;AAAA,QACR,MAAA,EAAQ,CAAC,UAAA,EAAY,IAAA,CAAK,KAAK;AAAA,OAClC,CAAA;AAAA,IACL;AAEA,IAAA,OAAO,EAAE,GAAG,MAAA,EAAQ,SAAA,EAAU;AAAA,EAClC;AAAA,EAEA,MAAM,kBAAkB,MAAA,EAAsC;AAC1D,IAAA,OAAO,IAAA,CAAK,aAAA,CAAc,iBAAA,CAAkB,MAAM,CAAA;AAAA,EACtD;AAAA,EAEA,MAAM,oBAAA,CAAqB,IAAA,EAAY,OAAA,GAAU,GAAA,EAAO;AACpD,IAAA,OAAO,IAAA,CAAK,aAAA,CAAc,oBAAA,CAAqB,IAAA,EAAM,OAAO,CAAA;AAAA,EAChE;AAAA;AAAA,EAGA,MAAM,sBAAA,CAAuB,KAAA,EAAgB,OAAA,EAAkB,MAAA,EAAgD;AAC3G,IAAA,IAAI,CAAC,IAAA,CAAK,KAAA,EAAO,MAAM,IAAI,MAAM,eAAe,CAAA;AAChD,IAAA,OAAO,KAAK,aAAA,CAAc,sBAAA,CAAuB,OAAO,IAAA,CAAK,KAAA,EAAO,SAAS,MAAM,CAAA;AAAA,EACvF;AAAA;AAAA,EAGQ,YAAY,KAAA,EAAmB;AACnC,IAAA,MAAM,GAAA,GAAM,OAAO,OAAA,IAAW,EAAA;AAC9B,IAAA,MAAM,QAAA,GAAW,GAAA,CAAI,KAAA,CAAM,kBAAkB,CAAA;AAE7C,IAAA,IAAI,QAAA,EAAU;AACV,MAAA,IAAI;AACA,QAAA,MAAM,UAAUC,sBAAA,CAAkB;AAAA,UAC9B,KAAK,CAAC,EAAE,MAAA,EAAQ,CAAC,EAAE,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,QAAA,EAAU,CAAA,EAAG,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,SAAS,CAAA;AAAA,UACrF,IAAA,EAAM,SAAS,CAAC;AAAA,SACnB,CAAA;AACD,QAAA,IAAI,OAAA,CAAQ,SAAA,KAAc,OAAA,EAAS,OAAO,IAAI,KAAA,CAAM,CAAA,qBAAA,EAAwB,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAC,CAAA,CAAE,CAAA;AAAA,MACjG,SAAS,CAAA,EAAG;AAAA,MAAe;AAAA,IAC/B;AAEA,IAAA,IAAI,IAAI,QAAA,CAAS,MAAM,GAAG,OAAO,IAAI,MAAM,sDAAsD,CAAA;AACjG,IAAA,IAAI,IAAI,QAAA,CAAS,MAAM,GAAG,OAAO,IAAI,MAAM,sCAAsC,CAAA;AAEjF,IAAA,OAAO,iBAAiB,KAAA,GAAQ,KAAA,GAAQ,IAAI,KAAA,CAAM,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,EACnE;AAAA;AAAA,EAGA,QAAA,GAAW;AAAE,IAAA,OAAO,IAAA,CAAK,KAAA;AAAA,EAAO;AAAA,EAChC,eAAA,GAAkB;AAAE,IAAA,OAAO,IAAA,CAAK,mBAAA;AAAA,EAAqB;AACzD;;;AC/eA,SAAA,EAAA;AACA,WAAA,EAAA;AACA,aAAA,EAAA;;;ACFA,YAAA,EAAA;AAEO,IAAM,YAAA,GAA4B;AAAA,EACrC,MAAA,EAAQ;AAAA,IACJ;AAAA,MACI,IAAA,EAAM,MAAA;AAAA,MACN,QAAA,EAAU,CAAA;AAAA,MACV,OAAA,EAAS,4CAAA;AAAA,MACT,WAAA,EAAa;AAAA,KACjB;AAAA,IACA;AAAA,MACI,IAAA,EAAM,KAAA;AAAA,MACN,QAAA,EAAU,EAAA;AAAA,MACV,OAAA,EAAS,4CAAA;AAAA,MACT,WAAA,EAAa;AAAA;AACjB,GACJ;AAAA,EACA,GAAA,EAAK;AAAA,IACD,KAAA,EAAOC,kBAAA;AAAA,IACP,MAAA,EAAQ,0BAAA;AAAA,IACR,YAAA,EAAc,IAAA;AAAA,IACd,OAAA,EAAS,IAAA;AAAA,IACT,UAAA,EAAY,GAAG,WAAW,CAAA,sBAAA,CAAA;AAAA,IAC1B,iBAAA,EAAmB,4CAAA;AAAA,IACnB,cAAA,EAAgB;AAAA;AAAA,GAkBxB,CAAA;;;ADtCA,cAAA,EAAA;AACA,YAAA,EAAA;AACA,YAAA,EAAA;AACA,aAAA,EAAA;AACA,aAAA,EAAA;AACA,UAAA,EAAA;AAcA,YAAA,EAAA;AAEA,SAAS,eAAe,IAAA,EAAoC;AACxD,EAAA,IAAI,KAAK,MAAA,EAAQ;AACb,IAAA,OAAO;AAAA,MACH,KAAA,EAAO,EAAE,EAAA,EAAI,GAAA,EAAM,MAAM,SAAA,EAAU;AAAA;AAAA,MACnC,MAAA,EAAQ,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,CAAA,CAAA,MAAM;AAAA,QAC1B,QAAQ,CAAA,CAAE,IAAA;AAAA,QACV,UAAU,CAAA,CAAE,QAAA;AAAA,QACZ,SAAS,CAAA,CAAE;AAAA,OACf,CAAE;AAAA,KACN;AAAA,EACJ;AACA,EAAA,IAAI,CAAC,IAAA,CAAK,GAAA,EAAK,MAAM,IAAI,MAAM,gCAAgC,CAAA;AAC/D,EAAA,OAAO;AAAA,IACH,KAAA,EAAO,KAAK,GAAA,CAAI,KAAA;AAAA,IAChB,MAAA,EAAQ,IAAA,CAAK,GAAA,CAAI,MAAA,IAAU,MAAA;AAAA,IAC3B,UAAA,EAAY,KAAK,GAAA,CAAI,UAAA;AAAA,IACrB,iBAAA,EAAmB,KAAK,GAAA,CAAI,iBAAA;AAAA,IAC5B,cAAA,EAAgB,KAAK,GAAA,CAAI,cAAA;AAAA,IACzB,gBAAA,EAAkB,KAAK,GAAA,CAAI,gBAAA;AAAA,IAC3B,MAAA,EAAQ,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,CAAA,CAAA,MAAM;AAAA,MAC1B,QAAQ,CAAA,CAAE,IAAA;AAAA,MACV,UAAU,CAAA,CAAE,QAAA;AAAA,MACZ,SAAS,CAAA,CAAE;AAAA,KACf,CAAE;AAAA,GACN;AACJ;AAEO,IAAM,YAAA,GAA4B,eAAe,IAAI;AACrD,IAAM,gBAAA,GAAgC,eAAe,QAAQ;AAC7D,IAAM,cAAA,GAA8B,eAAe,MAAM;AACzD,IAAMC,aAAAA,GAA4B,eAAe,YAAiB;AAClE,IAAM,iBAAA,GAAiC,eAAe,SAAS,CAAA;AAC/D,IAAM,WAAA,GAA2B,eAAe,GAAG,CAAA;AACnD,IAAM,eAAA,GAA+B,eAAe,OAAO,CAAA;AAC3D,IAAM,gBAAA,GAAgC,eAAe,QAAQ,CAAA;AAC7D,IAAM,gBAAA,GAAgC,eAAe,QAAQ,CAAA;AAC7D,IAAM,aAAA,GAA6B,eAAe,KAAK,CAAA;AACvD,IAAM,eAAA,GAA+B,eAAe3B,eAAO;AAE3D,IAAM,aAAA,GAA6C;AAAA,EACtD,CAACT,WAAAA,CAAK,EAAE,GAAG,YAAA;AAAA,EACX,CAACmC,kBAAAA,CAAY,EAAE,GAAGC,aAAAA;AAAA,EAClB,CAACnC,aAAAA,CAAO,EAAE,GAAG,cAAA;AAAA,EACb,CAACC,eAAAA,CAAS,EAAE,GAAG,gBAAA;AAAA,EACf,CAACC,gBAAAA,CAAU,EAAE,GAAG,iBAAA;AAAA,EAChB,CAACC,UAAAA,CAAI,EAAE,GAAG,WAAA;AAAA,EACV,CAACC,cAAAA,CAAQ,EAAE,GAAG,eAAA;AAAA,EACd,CAACC,eAAAA,CAAS,EAAE,GAAG,gBAAA;AAAA,EACf,CAACC,eAAAA,CAAS,EAAE,GAAG,gBAAA;AAAA,EACf,CAACC,YAAAA,CAAM,EAAE,GAAG,aAAA;AAAA,EACZ,GAAA,EAAM;AACV;AEhEO,IAAM,eAAA,GAA0C;AAAA,EACnD,CAACR,WAAAA,CAAK,EAAE,GAAG,MAAA;AAAA,EACX,CAACmC,kBAAAA,CAAY,EAAE,GAAG,MAAA;AAAA,EAClB,CAAClC,aAAAA,CAAO,EAAE,GAAG,QAAA;AAAA,EACb,CAACC,eAAAA,CAAS,EAAE,GAAG,UAAA;AAAA,EACf,CAACmC,sBAAA,CAAgB,EAAE,GAAG,UAAA;AAAA,EACtB,CAAC/B,eAAAA,CAAS,EAAE,GAAG,UAAA;AAAA,EACf,CAACD,cAAAA,CAAQ,EAAE,GAAG,SAAA;AAAA,EACd,CAACD,UAAAA,CAAI,EAAE,GAAG,SAAA;AAAA,EACV,CAACD,gBAAAA,CAAU,EAAE,GAAG,WAAA;AAAA,EAChB,CAACI,eAAAA,CAAS,EAAE,GAAG,UAAA;AAAA,EACf,CAACC,YAAAA,CAAM,EAAE,GAAG,OAAA;AAAA,EACZ,MAAA,EAAQ;AACZ;;;ACdA,mBAAA,EAAA;AACA,YAAA,EAAA;AAEA,oBAAA,EAAA;AACA,SAAA,EAAA;AACAa,UAAAA,EAAAA;AACA,aAAA,EAAA;ACfA,IAAM,iBAAA,GAAoB,4CAAA;AAC1B,IAAM,iBAAA,GAAoB,4CAAA;AAC1B,IAAM,YAAA,GAAe,4CAAA;AACrB,IAAM,YAAA,GAAe,4CAAA;AAGrB,IAAM,aAAaiB,aAAA,CAAS;AAAA,EACxB;AACJ,CAAC,CAAA;AAED,IAAM,aAAaA,aAAA,CAAS;AAAA,EACxB;AACJ,CAAC,CAAA;AAEM,IAAM,iBAAN,MAAqB;AAAA,EAGxB,WAAA,GAAc;AACV,IAAA,IAAA,CAAK,eAAetB,uBAAAA,CAAmB;AAAA,MACnC,KAAA,EAAOhB,WAAAA;AAAA,MACP,SAAA,EAAWiB,UAAK,0BAA0B;AAAA;AAAA,KAC7C,CAAA;AAAA,EACL;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,gBAAgB,YAAA,EAAuC;AAezD,IAAA,IAAI;AACA,MAAA,MAAM,MAAA,GAAS;AAAA,QACX,OAAA,EAAS,YAAA;AAAA,QACT,QAAA,EAAU,YAAA;AAAA,QACV,MAAA,EAAQ,YAAA;AAAA,QACR,GAAA,EAAK,GAAA;AAAA,QACL,iBAAA,EAAmB;AAAA,OACvB;AAEA,MAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,QAChD,OAAA,EAAS,iBAAA;AAAA,QACT,GAAA,EAAK,UAAA;AAAA,QACL,YAAA,EAAc,wBAAA;AAAA,QACd,IAAA,EAAM,CAAC,MAAM;AAAA,OAChB,CAAA;AAED,MAAA,MAAM,QAAA,GAAW,OAAO,CAAC,CAAA;AAEzB,MAAA,OAAO,WAAW,IAAA,GAAO,IAAA;AAAA,IAC7B,SAAS,CAAA,EAAG;AACR,MAAA,OAAA,CAAQ,KAAA,CAAM,gBAAgB,CAAC,CAAA;AAC/B,MAAA,MAAM,IAAI,MAAM,mCAAmC,CAAA;AAAA,IACvD;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,aAAA,CAAc,SAAA,EAAoB,YAAA,EAAsB,eAAA,EAA8B;AASlF,IAAA,MAAM,UAAA,GAAa;AAAA,MACf,OAAA,EAAS,YAAA;AAAA,MACT,QAAA,EAAU,YAAA;AAAA,MACV,GAAA,EAAK,GAAA;AAAA,MACL,SAAA,EAAW,4CAAA;AAAA;AAAA,MACX,SAAA,EAAW,YAAA;AAAA,MACX,eAAA,EAAiB,eAAA;AAAA,MACjB,iBAAA,EAAmB;AAAA,KACvB;AAWA,IAAA,MAAM,eAAea,uBAAAA,CAAmB;AAAA,MACpC,GAAA,EAAK,UAAA;AAAA,MACL,YAAA,EAAc,mBAAA;AAAA,MACd,IAAA,EAAM,CAAC,UAAU;AAAA,KACpB,CAAA;AAED,IAAA,MAAM,iBAAiBA,uBAAAA,CAAmB;AAAA,MACtC,GAAA,EAAKQ,aAAA,CAAS,CAAC,wEAAwE,CAAC,CAAA;AAAA,MACxF,YAAA,EAAc,aAAA;AAAA,MACd,IAAA,EAAM,CAAC,YAAA,EAAc,SAAS;AAAA,KACjC,CAAA;AAED,IAAA,MAAM,oBAAoBR,uBAAAA,CAAmB;AAAA,MACzC,GAAA,EAAKQ,aAAA,CAAS,CAAC,4DAA4D,CAAC,CAAA;AAAA,MAC5E,YAAA,EAAc,WAAA;AAAA,MACd,IAAA,EAAM,CAAC,CAAC,YAAA,EAAc,cAAc,CAAC;AAAA,KACxC,CAAA;AAED,IAAA,OAAO,iBAAA;AAAA,EACX;AAAA,EAEA,gBAAA,GAA4B;AACxB,IAAA,OAAO,iBAAA;AAAA,EACX;AAAA,EAEA,cAAA,GAA0B;AACtB,IAAA,OAAO,YAAA;AAAA,EACX;AACJ;AAEO,IAAM,cAAA,GAAiB,IAAI,cAAA","file":"index.js","sourcesContent":["export const DEFAULT_BUNDLER_URL = \"https://bundler-erc-4337.vercel.app\";\nexport const BUNDLER_URL = process.env.NEXT_PUBLIC_BUNDLER_URL || process.env.BUNDLER_URL || DEFAULT_BUNDLER_URL;\n","import { base } from \"viem/chains\";\nimport { ChainConfig } from \"../../types/chain.js\";\nimport { BUNDLER_URL } from \"../../constants/bundler\";\n\nexport const BASE: ChainConfig = {\n assets: [\n {\n name: \"USDC\",\n decimals: 6,\n address: \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n coingeckoId: \"usd-coin\",\n supportsStargate: true\n },\n {\n name: \"ETH\",\n decimals: 18,\n address: \"0x0000000000000000000000000000000000000000\",\n coingeckoId: \"ethereum\"\n }\n ],\n evm: {\n chain: base,\n rpcUrl: \"https://base-mainnet.g.alchemy.com/v2/49fUGmuW05ynCui0VEvDN\",\n supports7702: true,\n erc4337: false,\n bundlerUrl: `${BUNDLER_URL}/rpc?chain=base`,\n entryPointAddress: \"0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789\",\n factoryAddress: \"0xe2584152891E4769025807DEa0cD611F135aDC68\",\n paymasterAddress: \"0x1e13Eb16C565E3f3FDe49A011755e50410bb1F95\"\n },\n crossChainInformation: {\n circleInformation: {\n supportCirclePaymaster: true,\n cCTPInformation: {\n supportCCTP: true,\n domain: 6,\n },\n aproxFromFee: 0,\n },\n nearIntentInformation: {\n support: true,\n assetsId: [\n {\n assetId: \"nep141:base-0x833589fcd6edb6e08f4c7c32d4f71b54bda02913.omft.near\",\n name: \"USDC\",\n decimals: 6\n },\n {\n assetId: \"nep141:base.omft.near\",\n name: \"ETH\",\n decimals: 18\n }\n ],\n needMemo: false\n },\n stargateInformation: {\n support: true,\n }\n }\n}\n","import { gnosis } from \"viem/chains\";\nimport { ChainConfig } from \"../../types/chain.js\";\nimport { BUNDLER_URL } from \"../../constants/bundler\";\n\nexport const GNOSIS: ChainConfig = {\n assets: [\n {\n name: \"USDC\",\n decimals: 6,\n address: \"0x2a22f9c3b484c3629090FeED35F17Ff8F88f76F0\",\n coingeckoId: \"usd-coin\"\n },\n {\n name: \"USDT\",\n decimals: 6,\n address: \"0x4ECaBa5870353805a9F068101A40E0f32ed605C6\",\n coingeckoId: \"tether\"\n },\n {\n name: \"EURe\",\n decimals: 18,\n address: \"0x420CA0f9B9b604cE0fd9C18EF134C705e5Fa3430\",\n coingeckoId: \"monerium-eur-money\"\n },\n {\n name: \"GNO\",\n decimals: 18,\n address: \"0x9C58BAcC331c9aa871AFD802DB6379a98e80CEdb\",\n coingeckoId: \"gnosis\"\n },\n {\n name: \"WETH\",\n decimals: 18,\n address: \"0x6A023CCd1ff6F2045C3309768eAd9E68F978f6e1\",\n coingeckoId: \"ethereum\"\n },\n {\n name: \"XDAI\",\n decimals: 18,\n address: \"0x0000000000000000000000000000000000000000\",\n coingeckoId: \"xdai\"\n }\n ],\n evm: {\n chain: gnosis,\n rpcUrl: gnosis.rpcUrls.default.http[0],\n supports7702: true,\n erc4337: true,\n bundlerUrl: `${BUNDLER_URL}/rpc?chain=gnosis`,\n entryPointAddress: \"0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789\",\n factoryAddress: \"0xC8a2Fb1f2E686417A131E09be3320cb5431CcD90\",\n paymasterAddress: \"0x4C36C70d68a7c26326711e8268bb163E3784fA96\",\n },\n crossChainInformation: {\n circleInformation: {\n supportCirclePaymaster: false,\n aproxFromFee: 0,\n cCTPInformation: {\n supportCCTP: false,\n domain: 0,\n },\n },\n nearIntentInformation: {\n support: true,\n assetsId: [\n {\n assetId: \"nep141:gnosis-0x2a22f9c3b484c3629090feed35f17ff8f88f76f0.omft.near\",\n name: \"USDC\",\n decimals: 6\n },\n {\n assetId: \"nep141:gnosis-0x4ecaba5870353805a9f068101a40e0f32ed605c6.omft.near\",\n name: \"USDT\",\n decimals: 6\n },\n {\n assetId: \"nep141:gnosis-0x420ca0f9b9b604ce0fd9c18ef134c705e5fa3430.omft.near\",\n name: \"EURe\",\n decimals: 18\n },\n {\n assetId: \"nep141:gnosis-0x9c58bacc331c9aa871afd802db6379a98e80cedb.omft.near\",\n name: \"GNO\",\n decimals: 18\n },\n {\n assetId: \"nep141:gnosis-0x6a023ccd1ff6f2045c3309768ead9e68f978f6e1.omft.near\",\n name: \"WETH\",\n decimals: 18\n },\n {\n assetId: \"nep141:gnosis.omft.near\",\n name: \"XDAI\",\n decimals: 18\n }\n ],\n needMemo: false\n }\n }\n};\n","import { optimism } from \"viem/chains\";\nimport { ChainConfig } from \"../../types/chain.js\";\nimport { BUNDLER_URL } from \"../../constants/bundler\";\n\nexport const OPTIMISM: ChainConfig = {\n assets: [\n {\n name: \"USDC\",\n decimals: 6,\n address: \"0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85\",\n coingeckoId: \"usd-coin\"\n },\n {\n name: \"USDT\",\n decimals: 6,\n address: \"0x94b008aa00579c1307b0ef2c499ad98a8ce58e58\",\n coingeckoId: \"tether\"\n },\n {\n name: \"OP\",\n decimals: 18,\n address: \"0x4200000000000000000000000000000000000042\",\n coingeckoId: \"optimism\"\n },\n {\n name: \"ETH\",\n decimals: 18,\n address: \"0x0000000000000000000000000000000000000000\",\n coingeckoId: \"ethereum\"\n }\n ],\n evm: {\n chain: optimism,\n rpcUrl: \"https://opt-mainnet.g.alchemy.com/v2/49fUGmuW05ynCui0VEvDN\",\n supports7702: false,\n erc4337: false,\n bundlerUrl: `${BUNDLER_URL}/rpc?chain=optimism`,\n entryPointAddress: \"0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789\",\n factoryAddress: \"0x3CE963866d3Be7Fe4354DBe892Aab52a0a18aeb2\",\n paymasterAddress: \"0x0dB771d11F84E8541AA651363DF14E4401d01216\",\n },\n crossChainInformation: {\n circleInformation: {\n supportCirclePaymaster: true,\n cCTPInformation: {\n supportCCTP: true,\n domain: 2,\n },\n aproxFromFee: 0,\n },\n nearIntentInformation: {\n support: true,\n assetsId: [\n {\n assetId: \"nep245:v2_1.omni.hot.tg:10_A2ewyUyDp6qsue1jqZsGypkCxRJ\",\n name: \"USDC\",\n decimals: 6\n },\n {\n assetId: \"nep245:v2_1.omni.hot.tg:10_359RPSJVdTxwTJT9TyGssr2rFoWo\",\n name: \"USDT\",\n decimals: 6\n },\n {\n assetId: \"nep245:v2_1.omni.hot.tg:10_vLAiSt9KfUGKpw5cD3vsSyNYBo7\",\n name: \"OP\",\n decimals: 18\n },\n {\n assetId: \"nep245:v2_1.omni.hot.tg:10_11111111111111111111\",\n name: \"ETH\",\n decimals: 18\n }\n ],\n needMemo: false\n }\n }\n}\n","import { BUNDLER_URL } from \"../../constants/bundler\";\nimport { avalanche } from \"viem/chains\";\nimport { ChainConfig } from \"../../types/chain.js\";\n\nexport const AVALANCHE: ChainConfig = {\n assets: [\n {\n name: \"USDC\",\n decimals: 6,\n address: \"0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E\",\n coingeckoId: \"usd-coin\",\n supportsStargate: true\n },\n {\n name: \"AVAX\",\n decimals: 18,\n address: \"0x0000000000000000000000000000000000000000\",\n coingeckoId: \"avalanche-2\"\n },\n {\n name: \"USDT\",\n decimals: 6,\n address: \"0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7\",\n coingeckoId: \"tether\"\n }\n ],\n evm: {\n chain: avalanche,\n rpcUrl: avalanche.rpcUrls.default.http[0],\n supports7702: false,\n bundlerUrl: `${BUNDLER_URL}/rpc?chain=avalanche`,\n erc4337: false,\n entryPointAddress: \"0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789\",\n factoryAddress: \"0x5D1D71FE2De5D1C52c7c11311332eC7f0CBf88aF\",\n paymasterAddress: \"0x6c0de464F2203FE089FF719Acf425dFfE6ac1EE5\",\n },\n crossChainInformation: {\n circleInformation: {\n supportCirclePaymaster: true,\n cCTPInformation: {\n supportCCTP: true,\n domain: 1,\n },\n aproxFromFee: 0,\n },\n nearIntentInformation: {\n support: true,\n assetsId: [\n {\n assetId: \"nep245:v2_1.omni.hot.tg:43114_3atVJH3r5c4GqiSYmg9fECvjc47o\",\n name: \"USDC\",\n decimals: 6\n },\n {\n assetId: \"nep245:v2_1.omni.hot.tg:43114_11111111111111111111\",\n name: \"AVAX\",\n decimals: 18\n },\n {\n assetId: \"nep245:v2_1.omni.hot.tg:43114_372BeH7ENZieCaabwkbWkBiTTgXp\",\n name: \"USDT\",\n decimals: 6\n }\n ],\n needMemo: false\n },\n stargateInformation: {\n support: true,\n }\n }\n}\n","import { BUNDLER_URL } from \"../../constants/bundler\";\nimport { bsc } from \"viem/chains\";\nimport { ChainConfig } from \"../../types/chain.js\";\n\nexport const BNB: ChainConfig = {\n assets: [\n {\n name: \"USDC\",\n decimals: 18,\n address: \"0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d\", // BSC Mainnet USDC\n coingeckoId: \"usd-coin\"\n },\n {\n name: \"USDT\",\n decimals: 18,\n address: \"0x55d398326f99059fF775485246999027B3197955\", // BSC Mainnet USDT\n coingeckoId: \"tether\"\n },\n {\n name: \"BNB\",\n decimals: 18,\n address: \"0x0000000000000000000000000000000000000000\", // Native\n coingeckoId: \"binancecoin\"\n },\n ],\n evm: {\n chain: bsc,\n rpcUrl: \"https://bsc-dataseed.binance.org\",\n supports7702: true,\n bundlerUrl: `${BUNDLER_URL}/rpc?chain=bsc`,\n erc4337: false,\n entryPointAddress: \"0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789\",\n factoryAddress: \"0x2d5dBD90d3aB35614cdf686a67A9889E56B20b27\",\n paymasterAddress: \"0x460593321DdbE4e1038666Ad07Fc1F817dfA02DB\",\n },\n crossChainInformation: {\n circleInformation: {\n supportCirclePaymaster: false,\n aproxFromFee: 0,\n cCTPInformation: {\n supportCCTP: false,\n domain: 0,\n },\n },\n nearIntentInformation: {\n support: true,\n needMemo: false,\n assetsId: [\n {\n name: \"USDC\",\n assetId: \"nep245:v2_1.omni.hot.tg:56_2w93GqMcEmQFDru84j3HZZWt557r\",\n decimals: 18,\n },\n {\n name: \"USDT\",\n assetId: \"nep245:v2_1.omni.hot.tg:56_2CMMyVTGZkeyNZTSvS5sarzfir6g\",\n decimals: 18,\n },\n {\n name: \"BNB\",\n assetId: \"nep245:v2_1.omni.hot.tg:56_11111111111111111111\",\n decimals: 18,\n }\n ],\n },\n },\n};\n","import { BUNDLER_URL } from \"../../constants/bundler\";\nimport { polygon } from \"viem/chains\";\nimport { ChainConfig } from \"../../types/chain.js\";\n\nexport const POLYGON: ChainConfig = {\n assets: [\n {\n name: \"USDC\",\n decimals: 6,\n address: \"0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359\",\n coingeckoId: \"usd-coin\"\n },\n {\n name: \"POL\",\n decimals: 18,\n address: \"0x0000000000000000000000000000000000000000\",\n coingeckoId: \"polygon-ecosystem-token\"\n },\n {\n name: \"USDT\",\n decimals: 6,\n address: \"0xc2132D05D31c914a87C6611C10748AEb04B58e8F\",\n coingeckoId: \"tether\"\n }\n ],\n evm: {\n chain: polygon,\n rpcUrl: \"https://polygon-mainnet.g.alchemy.com/v2/49fUGmuW05ynCui0VEvDN\",\n supports7702: true,\n erc4337: false,\n bundlerUrl: `${BUNDLER_URL}/rpc?chain=polygon`,\n entryPointAddress: \"0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789\",\n factoryAddress: \"0x31D1C59fcf5B78FE2a86187a53c84DcDa5B80EF6\",\n paymasterAddress: \"0x24C82C9381F4615f1a73a5CdBB0Ffd5a432fA54C\",\n },\n crossChainInformation: {\n circleInformation: {\n supportCirclePaymaster: true,\n cCTPInformation: {\n supportCCTP: true,\n domain: 7,\n },\n aproxFromFee: 0,\n },\n nearIntentInformation: {\n support: true,\n assetsId: [\n {\n assetId: \"nep245:v2_1.omni.hot.tg:137_qiStmoQJDQPTebaPjgx5VBxZv6L\",\n name: \"USDC\",\n decimals: 6\n },\n {\n assetId: \"nep245:v2_1.omni.hot.tg:137_11111111111111111111\",\n name: \"POL\",\n decimals: 18\n },\n {\n assetId: \"nep245:v2_1.omni.hot.tg:137_3hpYoaLtt8MP1Z2GH1U473DMRKgr\",\n name: \"USDT\",\n decimals: 6\n }\n ],\n needMemo: false\n }\n }\n}\n","import { BUNDLER_URL } from \"../../constants/bundler\";\nimport { arbitrum } from \"viem/chains\";\nimport { ChainConfig } from \"../../types/chain.js\";\n\nexport const ARBITRUM: ChainConfig = {\n assets: [\n {\n name: \"USDC\",\n decimals: 6,\n address: \"0xaf88d065e77c8cC2239327C5EDb3A432268e5831\",\n coingeckoId: \"usd-coin\"\n },\n {\n name: \"USDT\",\n decimals: 6,\n address: \"0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9\",\n coingeckoId: \"tether\"\n },\n {\n name: \"ARB\",\n decimals: 18,\n address: \"0x912CE59144191C1204E64559FE8253a0e49E6548\",\n coingeckoId: \"arbitrum\"\n },\n {\n name: \"ETH\",\n decimals: 18,\n address: \"0x0000000000000000000000000000000000000000\",\n coingeckoId: \"ethereum\"\n }\n ],\n evm: {\n chain: arbitrum,\n rpcUrl: \"https://arb-mainnet.g.alchemy.com/v2/49fUGmuW05ynCui0VEvDN\",\n bundlerUrl: `${BUNDLER_URL}/rpc?chain=arbitrum`,\n supports7702: true,\n erc4337: false,\n entryPointAddress: \"0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789\",\n factoryAddress: \"0xEEba846e0177CD7b2F023feaa44F9B2a9183327A\",\n paymasterAddress: \"0x41d236E76eCEC3b90554d0b504ac2EEce93A2AE1\",\n },\n crossChainInformation: {\n circleInformation: {\n supportCirclePaymaster: true,\n aproxFromFee: 0,\n cCTPInformation: {\n supportCCTP: true,\n domain: 3,\n },\n },\n nearIntentInformation: {\n support: true,\n assetsId: [\n {\n assetId: \"nep141:arb-0xaf88d065e77c8cc2239327c5edb3a432268e5831.omft.near\",\n name: \"USDC\",\n decimals: 6\n },\n {\n assetId: \"nep141:arb-0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9.omft.near\",\n name: \"USDT\",\n decimals: 6\n },\n {\n assetId: \"nep141:arb.omft.near\",\n name: \"ETH\",\n decimals: 18\n },\n {\n assetId: \"nep141:arb-0x912ce59144191c1204e64559fe8253a0e49e6548.omft.near\",\n name: \"ARB\",\n decimals: 18\n }\n ],\n needMemo: false\n }\n }\n};\n","import { BUNDLER_URL } from \"../../constants/bundler\";\nimport { unichain } from \"viem/chains\";\nimport { ChainConfig } from \"../../types/chain.js\";\n\nexport const UNICHAIN: ChainConfig = {\n assets: [\n {\n name: \"USDC\",\n decimals: 6,\n address: \"0x078D782b760474a361dDA0AF3839290b0EF57AD6\",\n coingeckoId: \"usd-coin\"\n }\n ],\n evm: {\n chain: unichain,\n rpcUrl: \"https://unichain-mainnet.g.alchemy.com/v2/49fUGmuW05ynCui0VEvDN\",\n bundlerUrl: `${BUNDLER_URL}/rpc?chain=unichain`,\n supports7702: true,\n erc4337: false,\n entryPointAddress: \"0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789\",\n factoryAddress: \"0xB2E45aCbB68f3e98C87B6df16625f22e11728556\",\n paymasterAddress: \"0x7A92b3Fee017E3E181a51D9045AACE30eC2B387D\",\n },\n crossChainInformation: {\n circleInformation: {\n supportCirclePaymaster: true,\n cCTPInformation: {\n supportCCTP: true,\n domain: 10,\n },\n aproxFromFee: 0,\n },\n nearIntentInformation: null\n }\n}\n","import { monad } from \"viem/chains\";\nimport { BUNDLER_URL } from \"../../constants/bundler\";\nimport { ChainConfig } from \"../../types/chain.js\";\n\nexport const Monad: ChainConfig = {\n assets: [\n {\n name: \"USDC\",\n decimals: 6,\n address: \"0x754704Bc059F8C67012fEd69BC8A327a5aafb603\",\n coingeckoId: \"usd-coin\"\n },\n {\n name: \"USDT\",\n decimals: 6,\n address: \"0xe7cd86e13AC4309349F30B3435a9d337750fC82D\",\n coingeckoId: \"tether\"\n },\n {\n name: \"MON\",\n decimals: 18,\n address: \"0x0000000000000000000000000000000000000000\",\n coingeckoId: \"monad\"\n }\n ],\n evm: {\n chain: monad,\n rpcUrl: monad.rpcUrls.default.http[0],\n supports7702: true,\n erc4337: false,\n bundlerUrl: `${BUNDLER_URL}/rpc?chain=monad`,\n entryPointAddress: \"0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789\",\n factoryAddress: \"0xaaeA6D8f377e62599Aad75376F0C5e4F7EBF8f84\",\n paymasterAddress: \"0xeA82B63e8dE3BFBd321A681D4511BC596E323162\",\n },\n crossChainInformation: {\n circleInformation: {\n supportCirclePaymaster: false,\n cCTPInformation: {\n supportCCTP: true,\n domain: 15,\n },\n aproxFromFee: 0,\n },\n nearIntentInformation: {\n support: true,\n assetsId: [\n {\n assetId: \"nep245:v2_1.omni.hot.tg:143_2dmLwYWkCQKyTjeUPAsGJuiVLbFx\",\n name: \"USDC\",\n decimals: 6\n },\n {\n assetId: \"nep245:v2_1.omni.hot.tg:143_4EJiJxSALvGoTZbnc8K7Ft9533et\",\n name: \"USDT\",\n decimals: 6\n },\n {\n assetId: \"nep245:v2_1.omni.hot.tg:143_11111111111111111111\",\n name: \"MON\",\n decimals: 18\n }\n ],\n needMemo: false\n }\n }\n}\n","\nimport { Networks } from \"stellar-sdk\";\nimport { ChainConfig } from \"../../types/chain.js\";\n\nexport const STELLAR: ChainConfig = {\n assets: [\n {\n name: \"USDC\",\n decimals: 7,\n address: \"GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN\",\n coingeckoId: \"usd-coin\"\n },\n {\n name: \"XLM\",\n decimals: 7,\n address: \"native\",\n coingeckoId: \"stellar\"\n }\n ],\n nonEvm: {\n networkPassphrase: Networks.PUBLIC,\n serverURL: \"https://horizon.stellar.org\",\n },\n crossChainInformation: {\n circleInformation: {\n supportCirclePaymaster: false,\n aproxFromFee: 0\n },\n nearIntentInformation: {\n support: true,\n assetsId: [\n {\n assetId: \"nep245:v2_1.omni.hot.tg:1100_111bzQBB65GxAPAVoxqmMcgYo5oS3txhqs1Uh1cgahKQUeTUq1TJu\",\n name: \"USDC\",\n decimals: 7\n },\n {\n assetId: \"nep245:v2_1.omni.hot.tg:1100_111bzQBB5v7AhLyPMDwS8uJgQV24KaAPXtwyVWu2KXbbfQU6NXRCz\",\n name: \"XLM\",\n decimals: 6\n }\n ],\n needMemo: true\n }\n }\n};\n","import * as StellarSdk from \"stellar-sdk\";\nimport { STELLAR } from \"../chains/NoEvm/Stellar\";\n\nexport class StellarService {\n server: StellarSdk.Horizon.Server;\n network: string;\n\n constructor() {\n if (!STELLAR.nonEvm?.serverURL || !STELLAR.nonEvm?.networkPassphrase) {\n throw new Error(\"Stellar Non-EVM config missing or incomplete\");\n }\n this.server = new StellarSdk.Horizon.Server(STELLAR.nonEvm.serverURL);\n this.network = STELLAR.nonEvm.networkPassphrase;\n }\n\n /**\n * Get balance for a specific token (or all if not specified)\n * Returns string representation\n */\n async getBalance(address: string, tokenName: string = \"XLM\"): Promise<string> {\n try {\n const account = await this.server.loadAccount(address);\n\n // Find asset definition\n const assetDef = STELLAR.assets.find(a => a.name === tokenName);\n if (!assetDef) throw new Error(`Asset ${tokenName} not configured`);\n\n const isNative = assetDef.address === \"native\";\n\n const balanceLine = account.balances.find((b: any) => {\n if (isNative) {\n return b.asset_type === \"native\";\n }\n return b.asset_code === tokenName && b.asset_issuer === assetDef.address;\n });\n\n return balanceLine ? balanceLine.balance : \"0\";\n } catch (e: any) {\n if (e.response && e.response.status === 404) {\n return \"0\"; // Account not active\n }\n throw e;\n }\n }\n\n /**\n * Build and Sign a Transfer Transaction\n */\n async buildTransferXdr(\n senderPk: string,\n recipient: string,\n amount: string,\n tokenName: string = \"XLM\",\n memo?: string\n ): Promise<string> {\n const keypair = StellarSdk.Keypair.fromSecret(senderPk);\n const sourceAddress = keypair.publicKey();\n\n // Check if account exists\n let account;\n try {\n account = await this.server.loadAccount(sourceAddress);\n } catch (e: any) {\n throw new Error(`Stellar Account ${sourceAddress} not valid or not active.`);\n }\n\n const asset = this.getAsset(tokenName);\n\n const txBuilder = new StellarSdk.TransactionBuilder(account, {\n fee: StellarSdk.BASE_FEE,\n networkPassphrase: this.network\n });\n\n txBuilder.addOperation(StellarSdk.Operation.payment({\n destination: recipient,\n asset: asset,\n amount: amount\n }));\n\n if (memo) {\n // Simple text memo support for now\n txBuilder.addMemo(StellarSdk.Memo.text(memo));\n }\n\n txBuilder.setTimeout(30);\n\n const builtTx = txBuilder.build();\n builtTx.sign(keypair);\n\n return builtTx.toXDR();\n }\n\n /**\n * Submit Signed XDR\n */\n async submitXdr(xdr: string) {\n // Construct transaction from XDR to submit\n const tx = StellarSdk.TransactionBuilder.fromXDR(xdr, this.network);\n return this.server.submitTransaction(tx);\n }\n\n public getAsset(tokenName: string): StellarSdk.Asset {\n const assetDef = STELLAR.assets.find(a => a.name === tokenName);\n if (!assetDef) {\n // Default fallback if not found? Or throw.\n if (tokenName === \"XLM\") return StellarSdk.Asset.native();\n throw new Error(`Asset ${tokenName} not found in configuration`);\n }\n\n if (assetDef.address === \"native\") {\n return StellarSdk.Asset.native();\n }\n\n return new StellarSdk.Asset(assetDef.name, assetDef.address);\n }\n\n public getKeypair(pk: string) {\n return StellarSdk.Keypair.fromSecret(pk);\n }\n}\n","\nimport { base, optimism, gnosis, arbitrum, polygon, unichain, avalanche, worldchain, monad } from \"viem/chains\";\nimport { ChainKey } from \"@/types/chain\";\nimport { FacilitatorNetworkConfig } from \"@/services/config\";\n\nexport type FacilitatorChainKey = ChainKey;\n\nexport const PlatformFees = {\n DEV: 0,\n EVM_TO_OTHER: 0.02,\n DEFAULT: 0.02\n};\n\n// Dummy addresses for simulation\nexport const DUMMY_EVM_ADDRESS = \"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045\"; // Vitalik (just a valid address)\nexport const DUMMY_STELLAR_ADDRESS = \"GB7BDSZU2Y27LYNLJLVEGW5TIVYQ6362DS5QZ5F6S27S227227227AAA\";\n\nexport const calculateFee = (isDev: boolean = false): number => {\n return isDev ? PlatformFees.DEV : PlatformFees.DEFAULT;\n};\n\n// Placeholder configuration. User needs to populate this.\nexport const FACILITATOR_NETWORKS: Record<string, FacilitatorNetworkConfig> = {\n Base: {\n chainId: 8453,\n chain: base,\n usdc: \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n usdcName: \"USD Coin\",\n usdcVersion: \"2\",\n domain: 6,\n tokenMessenger: \"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d\",\n messageTransmitter: \"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64\",\n rpcUrl: \"https://base-mainnet.g.alchemy.com/v2/49fUGmuW05ynCui0VEvDN\"\n },\n Optimism: {\n chainId: 10,\n chain: optimism,\n usdc: \"0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85\",\n usdcName: \"USD Coin\",\n usdcVersion: \"2\",\n domain: 2,\n tokenMessenger: \"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d\",\n messageTransmitter: \"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64\",\n rpcUrl: \"https://opt-mainnet.g.alchemy.com/v2/49fUGmuW05ynCui0VEvDN\" // Assuming same key works or public\n },\n Gnosis: {\n chainId: 100,\n chain: gnosis,\n usdc: \"0x2a22f9c3b48403ebD92cF06fF916b322a30dB834\",\n usdcName: \"USDC\",\n usdcVersion: \"2\",\n domain: 0,\n tokenMessenger: \"0x0000000000000000000000000000000000000000\",\n messageTransmitter: \"0x0000000000000000000000000000000000000000\",\n rpcUrl: \"https://rpc.gnosischain.com\"\n },\n Arbitrum: {\n chainId: 42161,\n chain: arbitrum,\n usdc: \"0xaf88d065e77c8cC2239327C5EDb3A432268e5831\",\n usdcName: \"USD Coin\",\n usdcVersion: \"2\",\n domain: 3,\n tokenMessenger: \"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d\",\n messageTransmitter: \"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64\",\n rpcUrl: \"https://arb-mainnet.g.alchemy.com/v2/49fUGmuW05ynCui0VEvDN\"\n },\n Polygon: {\n chainId: 137,\n chain: polygon,\n usdc: \"0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359\",\n usdcName: \"USD Coin\",\n usdcVersion: \"2\",\n domain: 7,\n tokenMessenger: \"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d\",\n messageTransmitter: \"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64\",\n rpcUrl: \"https://polygon-mainnet.g.alchemy.com/v2/49fUGmuW05ynCui0VEvDN\"\n },\n Unichain: {\n chainId: unichain.id,\n chain: unichain,\n usdc: \"0x078D782b760474a361dDA0AF3839290b0EF57AD6\",\n usdcName: \"USD Coin\",\n usdcVersion: \"2\",\n domain: 10,\n tokenMessenger: \"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d\",\n messageTransmitter: \"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64\",\n rpcUrl: unichain.rpcUrls.default.http[0]\n },\n Avalanche: {\n chainId: avalanche.id,\n chain: avalanche,\n usdc: \"0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E\",\n usdcName: \"USD Coin\",\n usdcVersion: \"2\",\n domain: 1,\n tokenMessenger: \"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d\",\n messageTransmitter: \"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64\",\n rpcUrl: avalanche.rpcUrls.default.http[0]\n },\n Worldchain: {\n chainId: worldchain.id,\n chain: worldchain,\n usdc: \"0x79A02482A880bCe3F13E09da970dC34dB4cD24D1\",\n usdcName: \"USD Coin\",\n usdcVersion: \"2\",\n domain: 13,\n tokenMessenger: \"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d\",\n messageTransmitter: \"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64\",\n rpcUrl: worldchain.rpcUrls.default.http[0]\n },\n Monad: {\n chainId: monad.id,\n chain: monad,\n usdc: \"0x754704Bc059F8C67012fEd69BC8A327a5aafb603\",\n usdcName: \"USD Coin\",\n usdcVersion: \"2\",\n domain: 15,\n tokenMessenger: \"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d\",\n messageTransmitter: \"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64\",\n rpcUrl: monad.rpcUrls.default.http[0]\n }\n};\n","export const usdcErc3009Abi = [\n {\n inputs: [\n { name: \"from\", type: \"address\" },\n { name: \"to\", type: \"address\" },\n { name: \"value\", type: \"uint256\" },\n { name: \"validAfter\", type: \"uint256\" },\n { name: \"validBefore\", type: \"uint256\" },\n { name: \"nonce\", type: \"bytes32\" },\n { name: \"v\", type: \"uint8\" },\n { name: \"r\", type: \"bytes32\" },\n { name: \"s\", type: \"bytes32\" },\n ],\n name: \"transferWithAuthorization\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ name: \"account\", type: \"address\" }],\n name: \"balanceOf\",\n outputs: [{ name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { name: \"spender\", type: \"address\" },\n { name: \"amount\", type: \"uint256\" },\n ],\n name: \"approve\",\n outputs: [{ name: \"\", type: \"bool\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { name: \"to\", type: \"address\" },\n { name: \"amount\", type: \"uint256\" },\n ],\n name: \"transfer\",\n outputs: [{ name: \"\", type: \"bool\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n] as const;\n\nexport const tokenMessengerAbi = [\n {\n inputs: [\n { name: \"amount\", type: \"uint256\" },\n { name: \"destinationDomain\", type: \"uint32\" },\n { name: \"mintRecipient\", type: \"bytes32\" },\n { name: \"burnToken\", type: \"address\" },\n { name: \"destinationCaller\", type: \"bytes32\" },\n { name: \"maxFee\", type: \"uint256\" }, // Suspected wrapper arg\n { name: \"minFinalityThreshold\", type: \"uint32\" } // Suspected wrapper arg\n ],\n name: \"depositForBurn\",\n outputs: [{ name: \"_nonce\", type: \"uint64\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n // Alternative overload often used:\n {\n inputs: [\n { name: \"amount\", type: \"uint256\" },\n { name: \"destinationDomain\", type: \"uint32\" },\n { name: \"mintRecipient\", type: \"bytes32\" },\n { name: \"burnToken\", type: \"address\" },\n ],\n name: \"depositForBurn\",\n outputs: [{ name: \"_nonce\", type: \"uint64\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n }\n] as const;\n\nexport const messageTransmitterAbi = [\n {\n inputs: [\n { name: \"message\", type: \"bytes\" },\n { name: \"attestation\", type: \"bytes\" },\n ],\n name: \"receiveMessage\",\n outputs: [{ name: \"success\", type: \"bool\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n] as const;\n","import axios from \"axios\";\n\nexport const createRetrieveAttestation = async (\n transactionHash: string,\n chainId: string,\n timeout = 60000\n) => {\n const baseUrl = \"https://iris-api.circle.com\";\n\n const url = `${baseUrl}/v2/messages/${chainId}?transactionHash=${transactionHash}`;\n\n const start = Date.now();\n const FIVE_SECONDS = 5000;\n\n while (true) {\n const elapsed = Date.now() - start;\n if (elapsed > timeout) {\n throw new Error(\n \"Timeout: Attestation not retrieved within the expected time.\"\n );\n }\n\n try {\n const response = await axios.get(url);\n\n const message = response.data?.messages?.[0];\n if (message?.status === \"complete\") {\n console.log(\"Attestation retrieved successfully!\");\n return message;\n }\n\n console.log(\"Waiting for attestation...\");\n } catch (error: any) {\n const status = error.response?.status;\n\n if (status === 404) {\n console.log(\"Waiting for attestation...\");\n } else {\n console.error(\"Error fetching attestation:\", error.message);\n }\n }\n\n await new Promise((resolve) => setTimeout(resolve, FIVE_SECONDS));\n }\n};\n","\nimport { worldchain } from \"viem/chains\";\nimport { Address } from \"abitype\";\nimport { ChainConfig } from \"../../types/chain.js\";\n\nexport const WORLD_CHAIN: ChainConfig = {\n assets: [\n {\n name: \"USDC\",\n decimals: 6,\n address: \"0x79A02482A880bCe3F13E09da970dC34dB4cD24D1\",\n coingeckoId: \"usd-coin\"\n }\n ],\n evm: {\n chain: worldchain,\n rpcUrl: worldchain.rpcUrls.default.http[0],\n supports7702: true,\n erc4337: false,\n },\n crossChainInformation: {\n circleInformation: {\n supportCirclePaymaster: false,\n cCTPInformation: {\n supportCCTP: true,\n domain: 14,\n },\n aproxFromFee: 0,\n },\n nearIntentInformation: null\n }\n}\n","import { OPTIMISM } from \"./Evm/Optimism.js\";\nimport { ARBITRUM } from \"./Evm/Arbitrum.js\";\nimport { BASE } from \"./Evm/Base.js\";\nimport { UNICHAIN } from \"./Evm/Unichain.js\";\nimport { POLYGON } from \"./Evm/Polygon.js\";\nimport { AVALANCHE } from \"./Evm/Avalanche.js\";\nimport { WORLD_CHAIN } from \"./Evm/WorldChain.js\";\nimport { STELLAR } from \"./NoEvm/Stellar.js\";\nimport { Monad } from \"./Evm/Monad.js\";\nimport { BNB } from \"./Evm/Binance.js\";\nimport { GNOSIS } from \"./Evm/Gnosis.js\";\n\nexport {\n OPTIMISM,\n ARBITRUM,\n BASE,\n UNICHAIN,\n POLYGON,\n AVALANCHE,\n WORLD_CHAIN,\n STELLAR,\n Monad,\n BNB,\n GNOSIS\n}","\nimport { ChainKey } from \"@/types/chain\";\nimport { ChainConfig } from \"@/types/chain\";\nimport * as Chains from \"@/chains/index\";\n\nexport const NETWORKS: Record<string, ChainConfig> = {\n Optimism: Chains.OPTIMISM,\n Arbitrum: Chains.ARBITRUM,\n Base: Chains.BASE,\n Unichain: Chains.UNICHAIN,\n Polygon: Chains.POLYGON,\n Avalanche: Chains.AVALANCHE,\n WorldChain: Chains.WORLD_CHAIN,\n Stellar: Chains.STELLAR,\n Monad: Chains.Monad,\n BNB: Chains.BNB,\n Gnosis: Chains.GNOSIS\n};\n","import {\n createPublicClient,\n createWalletClient,\n http,\n parseSignature,\n padHex,\n maxUint256,\n Address\n} from \"viem\";\nimport { privateKeyToAccount } from \"viem/accounts\";\nimport {\n FacilitatorChainKey,\n calculateFee\n} from \"@/constants/facilitator\";\nimport { FACILITATOR_NETWORKS } from \"@/constants/facilitator\";\nimport { usdcErc3009Abi } from \"@/constants/abis\";\nimport { tokenMessengerAbi, messageTransmitterAbi } from \"@/constants/abis\";\nimport { SettleResponse, FacilitatorPaymentPayload, CrossChainConfig } from \"@/services/types\";\nimport { createRetrieveAttestation } from \"@/utils/cctp\";\nimport { BridgeStrategy, BridgeContext } from \"./types\";\nimport { NETWORKS } from \"@/constants/chainsInformation\";\nimport { ChainKey } from \"@/types/chain\";\n\n\n\n/** Converts an address to bytes32 format for CCTP mintRecipient */\nconst addressToBytes32 = (address: Address): `0x${string}` => {\n return padHex(address, { size: 32 });\n};\n\nexport class CCTPStrategy implements BridgeStrategy {\n name = \"CCTP\";\n\n canHandle(context: BridgeContext): boolean {\n const { sourceChain, destChain, sourceToken, destToken } = context;\n const sourceConfig = NETWORKS[sourceChain];\n const destConfig = NETWORKS[destChain];\n\n if (!sourceConfig || !destConfig) return false;\n\n const sourceCCTP = sourceConfig.crossChainInformation?.circleInformation?.cCTPInformation?.supportCCTP;\n const destCCTP = destConfig.crossChainInformation?.circleInformation?.cCTPInformation?.supportCCTP;\n\n // Default to USDC if destToken is missing (backward compatibility) \n let targetToken = destToken;\n if (!targetToken) {\n if (sourceToken && sourceToken !== \"USDC\") {\n targetToken = sourceToken;\n } else {\n targetToken = \"USDC\";\n }\n }\n\n return !!(sourceCCTP && destCCTP && targetToken === \"USDC\" && (sourceToken === \"USDC\" || !sourceToken));\n }\n\n async execute(context: BridgeContext): Promise<SettleResponse> {\n const { paymentPayload, sourceChain, destChain, amount, recipient } = context;\n\n const destConfig = NETWORKS[destChain];\n const destinationDomain = destConfig.crossChainInformation?.circleInformation?.cCTPInformation?.domain;\n\n if (destinationDomain === undefined) {\n return {\n success: false,\n errorReason: \"Destination chain does not have CCTP domain configured\"\n };\n }\n\n const crossChainConfig: CrossChainConfig = {\n destinationChain: destChain as FacilitatorChainKey,\n destinationDomain: destinationDomain,\n mintRecipient: recipient as Address\n };\n\n return processCCTPSettlement(\n context,\n crossChainConfig\n );\n }\n}\n\nexport async function processCCTPSettlement(\n context: BridgeContext,\n crossChainConfig: CrossChainConfig\n): Promise<SettleResponse> {\n const { paymentPayload, sourceChain, amount, recipient, facilitatorPrivateKey, depositTxHash } = context;\n\n console.log(`[SDK v0.4.22] Processing CCTP. DepositHash: ${depositTxHash} (${typeof depositTxHash})`);\n\n if (!facilitatorPrivateKey) {\n return {\n success: false,\n errorReason: \"Facilitator Private Key not provided in context\"\n };\n }\n\n const networkConfig = FACILITATOR_NETWORKS[sourceChain];\n if (!networkConfig) {\n return {\n success: false,\n errorReason: `Unsupported chain: ${sourceChain}`\n };\n }\n\n // Step 1: Check Facilitator Balance or Verify Deposit (Push Model)\n const facilitatorAccount = privateKeyToAccount(facilitatorPrivateKey as `0x${string}`);\n\n const fromAddress = context.senderAddress || (paymentPayload?.authorization?.from);\n\n if (!fromAddress) {\n return { success: false, errorReason: \"Sender address is missing\" };\n }\n\n const usdcAddress = networkConfig.usdc;\n const amountBigInt = BigInt(Math.floor(parseFloat(amount) * 1_000_000)); // USDC 6 decimals\n\n const publicClient = createPublicClient({\n chain: networkConfig.chain,\n transport: http(networkConfig.rpcUrl)\n });\n\n // ... (rest of logic) ...\n\n // Step 4: Execute CCTP on Source Chain\n // If depositTxHash is verified, we proceed to fetch attestation.\n\n // Replacing the execute call argument:\n // return executeCCTPBridge(..., fromAddress as Address);\n\n // A. If depositTxHash is provided (Step 2: Verification)\n if (depositTxHash) {\n console.log(`[CCTP] Verifying deposit hash: ${depositTxHash}`);\n try {\n const receipt = await publicClient.waitForTransactionReceipt({ hash: depositTxHash as `0x${string}` });\n\n if (receipt.status !== \"success\") {\n throw new Error(\"Deposit transaction failed on-chain\");\n }\n } catch (e) {\n return {\n success: false,\n errorReason: `Invalid deposit transaction: ${e instanceof Error ? e.message : \"Unknown error\"}`\n };\n }\n\n // B. Check Balance (Wait logic) - Only check if we have a hash implying a deposit matched\n let facilitatorBalance = BigInt(0);\n const maxRetries = 5;\n\n for (let i = 0; i < maxRetries; i++) {\n facilitatorBalance = await publicClient.readContract({\n address: usdcAddress,\n abi: usdcErc3009Abi,\n functionName: \"balanceOf\",\n args: [facilitatorAccount.address]\n }) as bigint;\n\n if (facilitatorBalance >= amountBigInt) break;\n await new Promise(r => setTimeout(r, 2000));\n }\n\n if (facilitatorBalance < amountBigInt) {\n return {\n success: false,\n errorReason: \"Deposit verified but facilitator balance insufficient (Funds sent to wrong address?)\"\n };\n }\n\n } else {\n // No hash provided -> Always Prompt for Deposit (Strict Push Model)\n console.log(\"[SDK v0.4.22] No deposit hash. Returning PENDING_USER_DEPOSIT.\");\n return {\n success: true,\n data: {\n depositAddress: facilitatorAccount.address,\n amountToDeposit: amountBigInt.toString(),\n chainId: networkConfig.chainId\n },\n attestation: {\n message: \"PENDING_USER_DEPOSIT_v22\",\n attestation: \"0x\"\n },\n transactionHash: \"PENDING_USER_DEPOSIT_v22\"\n };\n }\n\n // Funds are present, proceed to bridge\n const transferHash = (depositTxHash as `0x${string}`) || \"0x0000000000000000000000000000000000000000000000000000000000000000\";\n\n return executeCCTPBridge(sourceChain, amount, crossChainConfig, facilitatorPrivateKey, recipient as Address, transferHash, fromAddress as Address);\n}\n\nexport async function executeCCTPBridge(\n sourceChain: FacilitatorChainKey,\n amount: string,\n crossChainConfig: CrossChainConfig,\n facilitatorPrivateKey: string,\n recipient: Address | undefined,\n transferHash: `0x${string}`,\n payerAddress: Address\n): Promise<SettleResponse> {\n if (!facilitatorPrivateKey) {\n return { success: false, errorReason: \"Facilitator Private Key not provided\" };\n }\n\n const networkConfig = FACILITATOR_NETWORKS[sourceChain];\n if (!networkConfig) {\n return { success: false, errorReason: `Unsupported chain: ${sourceChain}` };\n }\n\n // Setup clients\n const facilitatorAccount = privateKeyToAccount(facilitatorPrivateKey as `0x${string}`);\n const publicClient = createPublicClient({\n chain: networkConfig.chain,\n transport: http(networkConfig.rpcUrl)\n });\n const walletClient = createWalletClient({\n account: facilitatorAccount,\n chain: networkConfig.chain,\n transport: http(networkConfig.rpcUrl)\n });\n\n // Convert human readable string (e.g. \"0.01\") to atomic units (6 decimals)\n const amountBigInt = BigInt(Math.floor(parseFloat(amount) * 1_000_000));\n const feeRaw = calculateFee();\n const fee = BigInt(Math.floor(feeRaw * 1_000_000));\n const minRequired = fee;\n\n if (amountBigInt <= minRequired) {\n return {\n success: false,\n transactionHash: transferHash,\n errorReason: `Amount too small. Minimum required: ${Number(minRequired) / 1_000_000} USDC (to cover bridge fees)`\n };\n }\n\n // Re-verify Balance (Double Check)\n let facilitatorBalance = BigInt(0);\n const maxRetries = 2;\n\n for (let i = 0; i < maxRetries; i++) {\n facilitatorBalance = await publicClient.readContract({\n address: networkConfig.usdc,\n abi: usdcErc3009Abi,\n functionName: \"balanceOf\",\n args: [facilitatorAccount.address]\n }) as bigint;\n\n if (facilitatorBalance >= amountBigInt) break;\n\n console.log(`[CCTP] Balance lag detected. Retrying ${i + 1}/${maxRetries}... (Has: ${facilitatorBalance}, Needs: ${amountBigInt})`);\n await new Promise(resolve => setTimeout(resolve, 3000)); // Wait 3s\n }\n\n if (facilitatorBalance < amountBigInt) {\n return {\n success: false,\n transactionHash: transferHash,\n errorReason: `Insufficient facilitator balance after retries. Has: ${facilitatorBalance}, Needs: ${amountBigInt}`\n };\n }\n\n // Step 2: Approve TokenMessenger\n try {\n const approveHash = await walletClient.writeContract({\n chain: networkConfig.chain,\n address: networkConfig.usdc,\n abi: usdcErc3009Abi,\n functionName: \"approve\",\n args: [networkConfig.tokenMessenger, maxUint256]\n });\n await publicClient.waitForTransactionReceipt({ hash: approveHash });\n } catch (e) {\n console.error(\"Approval failed\", e);\n return {\n success: false,\n transactionHash: transferHash,\n errorReason: \"Approval failed\"\n };\n }\n\n // Step 3: DepositForBurn\n const targetRecipient = recipient || crossChainConfig.mintRecipient;\n const mintRecipient = addressToBytes32(targetRecipient);\n\n // Dynamic maxFee calculation (1%, min 200 wei)\n const maxFee = amountBigInt > BigInt(100)\n ? BigInt(Math.floor(Math.max(Number(amountBigInt) / 100, 200)))\n : BigInt(200);\n\n let burnHash: `0x${string}`;\n try {\n burnHash = await walletClient.writeContract({\n chain: networkConfig.chain,\n address: networkConfig.tokenMessenger,\n abi: tokenMessengerAbi,\n functionName: \"depositForBurn\",\n args: [\n amountBigInt - fee, // Deduct 0.02 USDC Fee\n crossChainConfig.destinationDomain,\n mintRecipient,\n networkConfig.usdc,\n \"0x0000000000000000000000000000000000000000000000000000000000000000\" as `0x${string}`,\n maxFee,\n 1000 // minFinalityThreshold\n ]\n });\n\n const burnReceipt = await publicClient.waitForTransactionReceipt({ hash: burnHash });\n if (burnReceipt.status !== \"success\") throw new Error(\"Burn execution failed\");\n\n } catch (e) {\n return {\n success: false,\n transactionHash: transferHash,\n errorReason: e instanceof Error ? e.message : \"Burn failed\"\n };\n }\n\n // Step 4: Wait for Attestation\n let attestationResponse;\n try {\n attestationResponse = await createRetrieveAttestation(\n burnHash,\n networkConfig.domain.toString(),\n 120000 // 2 min timeout\n );\n } catch (e) {\n console.warn(\"Attestation timeout\", e);\n return {\n success: true, // Functionally a \"pending\" state \n transactionHash: transferHash,\n burnTransactionHash: burnHash,\n errorReason: \"Attestation timeout. Funds burned but not minted.\"\n };\n }\n\n if (!attestationResponse) {\n return {\n success: false,\n transactionHash: transferHash,\n burnTransactionHash: burnHash,\n errorReason: \"Attestation failed to retireve\"\n };\n }\n\n\n // Step 5: Mint (receiveMessage) on Destination Chain\n let mintHash: `0x${string}` | undefined;\n try {\n const destNetworkConfig = FACILITATOR_NETWORKS[crossChainConfig.destinationChain as FacilitatorChainKey];\n if (!destNetworkConfig) throw new Error(`Unsupported destination chain: ${crossChainConfig.destinationChain}`);\n\n const destWalletClient = createWalletClient({\n account: facilitatorAccount,\n chain: destNetworkConfig.chain,\n transport: http(destNetworkConfig.rpcUrl)\n });\n\n const destPublicClient = createPublicClient({\n chain: destNetworkConfig.chain,\n transport: http(destNetworkConfig.rpcUrl)\n });\n\n console.log(`[CCTP] Minting on ${crossChainConfig.destinationChain}...`);\n\n mintHash = await destWalletClient.writeContract({\n chain: destNetworkConfig.chain,\n address: destNetworkConfig.messageTransmitter,\n abi: messageTransmitterAbi,\n functionName: \"receiveMessage\",\n args: [\n attestationResponse.message.startsWith(\"0x\")\n ? attestationResponse.message as `0x${string}`\n : `0x${attestationResponse.message}` as `0x${string}`,\n attestationResponse.attestation.startsWith(\"0x\")\n ? attestationResponse.attestation as `0x${string}`\n : `0x${attestationResponse.attestation}` as `0x${string}`\n ]\n });\n\n console.log(`[CCTP] Mint tx sent: ${mintHash}`);\n await destPublicClient.waitForTransactionReceipt({ hash: mintHash });\n console.log(`[CCTP] Mint confirmed!`);\n\n } catch (e) {\n console.error(\"Mint failed\", e);\n return {\n success: true,\n transactionHash: transferHash,\n burnTransactionHash: burnHash,\n errorReason: \"Mint execution failed (Gas error on Dest?)\"\n };\n }\n\n return {\n success: true,\n transactionHash: transferHash,\n burnTransactionHash: burnHash,\n mintTransactionHash: mintHash,\n payer: payerAddress,\n fee: fee.toString(),\n netAmount: amountBigInt.toString(),\n attestation: {\n message: attestationResponse.message,\n attestation: attestationResponse.attestation\n }\n };\n}\n","import { OpenAPI, OneClickService, QuoteRequest } from '@defuse-protocol/one-click-sdk-typescript';\nimport { NETWORKS } from \"@/constants/chainsInformation\";\nimport { ChainKey } from \"@/types/chain\";\nimport { SettleResponse, FacilitatorPaymentPayload } from \"@/services/types\";\nimport { BridgeStrategy, BridgeContext } from \"./types\";\nimport { StellarService } from \"./StellarService\";\nimport { PlatformFees, DUMMY_EVM_ADDRESS, DUMMY_STELLAR_ADDRESS, calculateFee } from \"@/constants/facilitator\";\n\n// Initialize API\nOpenAPI.BASE = 'https://1click.chaindefuser.com';\n// OpenAPI.TOKEN = process.env.ONE_CLICK_JWT; // Optional if not needed for public quotes\n\nexport class NearStrategy implements BridgeStrategy {\n name = \"NearIntents\";\n\n canHandle(context: BridgeContext): boolean {\n const { sourceChain, destChain } = context;\n // Basic check: Near support on both (Removed source===dest check to allow swaps)\n\n const sourceConfig = NETWORKS[sourceChain];\n const destConfig = NETWORKS[destChain];\n\n if (!sourceConfig || !destConfig) return false;\n\n const sourceNear = sourceConfig.crossChainInformation.nearIntentInformation?.support;\n const destNear = destConfig.crossChainInformation.nearIntentInformation?.support;\n\n return !!(sourceNear && destNear);\n }\n\n async execute(context: BridgeContext): Promise<SettleResponse> {\n const { sourceChain, destChain, amount, recipient, destToken, sourceToken, senderAddress, depositTxHash, paymentPayload } = context;\n\n // 0. Handle Stellar Source (Push)\n if (sourceChain === \"Stellar\" && paymentPayload?.signedXDR) {\n const signedXDR = paymentPayload.signedXDR;\n\n console.log(\"[NearStrategy] Submitting Stellar User -> Facilitator TX...\");\n\n try {\n const stellarService = new StellarService();\n const result = await stellarService.submitXdr(signedXDR);\n const pullHash = result.hash;\n console.log(\"[NearStrategy] Pull Success (Stellar):\", pullHash);\n\n return {\n success: true,\n transactionHash: pullHash,\n data: {\n completed: true,\n message: \"Stellar Transaction Submitted. Bridge in progress.\"\n }\n };\n } catch (e: any) {\n console.error(\"Stellar Submit Error\", e);\n return { success: false, errorReason: \"Stellar Submit Failed: \" + (e.message || \"Unknown\") };\n }\n }\n\n // 1. Verify Deposit if Hash Provided\n if (depositTxHash) {\n console.log(`[NearStrategy] Verifying deposit hash: ${depositTxHash}`);\n\n // Stellar Verification\n if (sourceChain === \"Stellar\") {\n try {\n const { StellarService } = await import(\"./StellarService\");\n const stellarService = new StellarService();\n // We need to fetch the tx\n // StellarService doesn't have `getTransaction` yet, only submit.\n // Need to check if StellarService has server access (it does, public prop).\n const tx = await stellarService.server.transactions().transaction(depositTxHash).call();\n\n if (tx.successful) {\n // Fetch operations to find the payment destination (deposit address)\n const operations = await stellarService.server.operations().forTransaction(depositTxHash).call();\n const paymentOp = operations.records.find((op: any) => op.type === 'payment' || op.type === 'path_payment_strict_send' || op.type === 'path_payment_strict_receive');\n\n let depositAddress = \"\";\n let memo = \"\";\n\n if (paymentOp) {\n // @ts-ignore\n depositAddress = paymentOp.to || paymentOp.funder || \"\"; // 'to' is standard for payment\n }\n\n if (tx.memo_type === 'text' || tx.memo_type === 'id') {\n memo = tx.memo || \"\";\n }\n\n if (depositAddress) {\n console.log(`[NearStrategy] Submitting deposit to 1-Click: ${depositTxHash} -> ${depositAddress} (Memo: ${memo})`);\n try {\n await OneClickService.submitDepositTx({\n txHash: depositTxHash,\n depositAddress: depositAddress,\n memo: memo || undefined\n });\n console.log(\"[NearStrategy] Deposit submitted successfully.\");\n } catch (e: any) {\n console.error(\"[NearStrategy] Failed to submit deposit to 1-Click:\", e.message);\n // We don't fail the whole verification if this fails, but it's risky. \n // Ideally we should retry or fail. For now log error.\n }\n } else {\n console.error(\"[NearStrategy] Could not determine deposit address from Stellar operations.\");\n }\n\n return {\n success: true,\n transactionHash: depositTxHash,\n netAmount: amount,\n data: { completed: true }\n };\n } else {\n return { success: false, errorReason: \"Stellar Transaction Failed\" };\n }\n } catch (e: any) {\n console.error(\"Stellar Verification Error\", e);\n return { success: false, errorReason: `Stellar Verification Failed: ${e.message}` };\n }\n }\n\n // We need RPC to verify. Using FACILITATOR_NETWORKS for convenience as it has clean RPCs\n const { createPublicClient, http } = await import(\"viem\");\n const { FACILITATOR_NETWORKS } = await import(\"@/constants/facilitator\");\n\n const networkConfig = FACILITATOR_NETWORKS[sourceChain];\n if (!networkConfig) {\n return { success: false, errorReason: `Unsupported source chain for verification: ${sourceChain}` };\n }\n\n const publicClient = createPublicClient({\n chain: networkConfig.chain,\n transport: http(networkConfig.rpcUrl)\n });\n\n try {\n console.log(`[NearStrategy] Waiting for receipt...`);\n // @ts-ignore\n const receipt = await publicClient.waitForTransactionReceipt({ hash: depositTxHash as `0x${string}` });\n console.log(`[NearStrategy] Receipt found. Status: ${receipt.status}`);\n\n if (receipt.status === \"success\") {\n\n // Get Transaction to find 'to' address\n const tx = await publicClient.getTransaction({ hash: depositTxHash as `0x${string}` });\n const depositAddress = tx.to;\n\n if (depositAddress) {\n console.log(`[NearStrategy] Submitting deposit to 1-Click: ${depositTxHash} -> ${depositAddress}`);\n try {\n await OneClickService.submitDepositTx({\n txHash: depositTxHash,\n depositAddress: depositAddress\n });\n console.log(\"[NearStrategy] Deposit submitted successfully.\");\n } catch (e: any) {\n console.error(\"[NearStrategy] Failed to submit deposit to 1-Click:\", e.message);\n }\n }\n\n return {\n success: true,\n transactionHash: depositTxHash,\n netAmount: amount, // rough estimate or we can re-quote if needed\n data: {\n // Info for UI\n completed: true\n }\n };\n } else {\n console.error(`[NearStrategy] Transaction failed. Status: ${receipt.status}`);\n return { success: false, errorReason: `Transaction Reverted on-chain (Status: ${receipt.status})` };\n }\n } catch (e: any) {\n console.error(`[NearStrategy] Verification Error:`, e);\n return { success: false, errorReason: `Verification Error: ${e.message}` };\n }\n }\n\n // 2. No Hash -> Get Quote & Prompt Deposit\n try {\n const quoteResult = await getNearQuote(\n sourceChain,\n destChain,\n amount,\n destToken,\n sourceToken,\n recipient,\n senderAddress // refund address\n );\n\n // Return success with the deposit address. \n return {\n success: true,\n transactionHash: \"PENDING_USER_DEPOSIT\",\n netAmount: quoteResult.amountAtomicNet,\n data: {\n depositAddress: quoteResult.depositAddress,\n amountToDeposit: quoteResult.amountAtomicNet,\n sourceToken: sourceToken || \"USDC\",\n memo: (quoteResult.quote.quote as any).depositMemo || (quoteResult.quote.quote as any).memo\n }\n } as any; // Casting as any to avoid strict type issues if SettleResponse doesn't have `data` yet\n\n } catch (e: any) {\n return { success: false, errorReason: e.message };\n }\n }\n}\n\nexport async function getNearQuote(\n sourceChain: ChainKey,\n destChain: ChainKey,\n amount: string,\n destToken?: string,\n sourceToken?: string,\n recipient?: string,\n senderAddress?: string,\n options?: { dry?: boolean }\n) {\n const sourceConfig = NETWORKS[sourceChain];\n const destConfig = NETWORKS[destChain];\n\n if (!sourceConfig || !destConfig) {\n throw new Error(\"Invalid chain configuration\");\n }\n\n const sourceAssetInfo = sourceConfig.crossChainInformation.nearIntentInformation?.assetsId.find(\n (a) => a.name === (sourceToken || \"USDC\")\n ) || sourceConfig.crossChainInformation.nearIntentInformation?.assetsId[0];\n\n const destAssetInfo = destConfig.crossChainInformation.nearIntentInformation?.assetsId.find(\n (a) => a.name === (destToken || \"USDC\")\n ) || destConfig.crossChainInformation.nearIntentInformation?.assetsId[0];\n\n const sourceAsset = sourceAssetInfo?.assetId;\n const destAsset = destAssetInfo?.assetId;\n\n if (!sourceAsset || !destAsset) {\n throw new Error(\"Near Intents not supported for these assets\");\n }\n\n const decimals = sourceAssetInfo?.decimals || (sourceChain === \"Stellar\" ? 7 : 6);\n const amountAtomicTotal = Math.floor(parseFloat(amount) * Math.pow(10, decimals));\n const isDev = process.env.NEXT_PUBLIC_ENVIROMENT === \"development\" || process.env.NODE_ENV === \"development\";\n // Fee is hardcoded here, should be dynamic or 0.02 as per previous logic\n const feeValue = isDev ? 0 : 0.02;\n\n const feeUnits = Math.floor(feeValue * Math.pow(10, decimals));\n const amountAtomicNet = (amountAtomicTotal - feeUnits).toString();\n\n if (BigInt(amountAtomicNet) <= 0) {\n throw new Error(\"Amount too small to cover fees\");\n }\n\n // Recipient on destination\n if (!recipient) {\n throw new Error(\"Recipient address is required for NEAR Quote\");\n }\n\n // Refund address on source (sender)\n const refundAddress = senderAddress || recipient;\n\n console.log(`[NearService] Requesting Quote: ${sourceChain} -> ${destChain}`, JSON.stringify({ amount, sourceAsset, destAsset, options }, null, 2));\n\n const quoteRequest: QuoteRequest = {\n dry: options?.dry || false,\n swapType: QuoteRequest.swapType.EXACT_INPUT,\n slippageTolerance: 100,\n originAsset: sourceAsset as string,\n depositType: QuoteRequest.depositType.ORIGIN_CHAIN,\n depositMode: sourceChain === \"Stellar\" ? QuoteRequest.depositMode.MEMO : undefined,\n destinationAsset: destAsset as string,\n amount: amountAtomicNet,\n refundTo: refundAddress,\n refundType: QuoteRequest.refundType.ORIGIN_CHAIN,\n recipient: recipient,\n recipientType: QuoteRequest.recipientType.DESTINATION_CHAIN,\n deadline: new Date(Date.now() + 3 * 60 * 1000).toISOString(),\n referral: \"1llet\",\n quoteWaitingTimeMs: 10000,\n };\n\n console.log(`[NearService] Final QuoteRequest:`, JSON.stringify(quoteRequest, null, 2));\n\n const quote = await OneClickService.getQuote(quoteRequest);\n\n if (!options?.dry && !quote.quote?.depositAddress) {\n throw new Error(\"No deposit address returned from 1-Click Quote\");\n }\n\n return {\n quote,\n depositAddress: quote.quote?.depositAddress || \"\",\n amountAtomicTotal: BigInt(amountAtomicTotal),\n amountAtomicNet\n };\n}\n\nexport async function getNearSimulation(\n sourceChain: ChainKey,\n destChain: ChainKey,\n amount: string,\n destToken?: string,\n sourceToken?: string\n) {\n console.log(\">>> [Bridge Quote] Simulation Request:\", { sourceChain, destChain, amount, destToken, sourceToken });\n\n if (!amount || isNaN(parseFloat(amount))) {\n throw new Error(\"Invalid amount\");\n }\n\n const amountNum = parseFloat(amount);\n const isDev = process.env.NEXT_PUBLIC_ENVIROMENT === \"development\" || process.env.NODE_ENV === \"development\";\n // User logic: const FEE = IS_DEV ? PlatformFess.DEV : PlatformFess.EVM_TO_OTHER\n const usedFee = isDev ? PlatformFees.DEV : PlatformFees.EVM_TO_OTHER;\n\n // Hardcoded min amount check as per snippet\n const MIN_AMOUNT = usedFee;\n\n // Determine decimals from config to ensure precision (e.g. Stellar USDC is 7)\n const sourceConfig = NETWORKS[sourceChain];\n const sourceAssetInfo = sourceConfig?.crossChainInformation?.nearIntentInformation?.assetsId.find(\n (a) => a.name === (sourceToken || \"USDC\")\n ) || sourceConfig?.crossChainInformation?.nearIntentInformation?.assetsId[0];\n const decimals = sourceAssetInfo?.decimals || (sourceChain === \"Stellar\" ? 7 : 6);\n\n const netAmountBridged = (amountNum - usedFee).toFixed(decimals);\n\n if (parseFloat(netAmountBridged) <= 0) {\n return {\n success: false,\n error: `Insufficient amount (${amountNum}) to cover fee (${usedFee})`,\n minAmount: MIN_AMOUNT\n };\n }\n\n const sender = sourceChain === \"Stellar\" ? DUMMY_STELLAR_ADDRESS : DUMMY_EVM_ADDRESS;\n const recipient = destChain === \"Stellar\" ? DUMMY_STELLAR_ADDRESS : DUMMY_EVM_ADDRESS;\n\n try {\n const quoteResult = await getNearQuote(\n sourceChain,\n destChain,\n amount,\n destToken,\n sourceToken,\n recipient,\n sender,\n { dry: true }\n );\n\n // console.log(\">>> [Bridge Quote] API Response:\", JSON.stringify(quoteResult.quote, null, 2));\n\n return {\n success: true,\n amountSent: amountNum,\n protocolFee: usedFee,\n netAmountBridged: parseFloat(netAmountBridged),\n // @ts-ignore - access safe property\n estimatedReceived: quoteResult.quote?.quote?.amountOutFormatted || \"0\",\n minAmount: MIN_AMOUNT\n };\n\n } catch (error: any) {\n console.error(\">>> [Bridge Quote] Error:\", error);\n return {\n success: false,\n error: error.message || \"Unknown quote error\",\n minAmount: MIN_AMOUNT\n };\n }\n}\n","import { BridgeStrategy, BridgeContext } from \"./types\";\nimport { SettleResponse } from \"@/services/types\";\nimport { NETWORKS } from \"@/constants/chainsInformation\";\n\n// Stargate API Base URL\nconst STARGATE_API_URL = \"https://stargate.finance/api/v1/quotes\";\n\nexport class StargateStrategy implements BridgeStrategy {\n name = \"StargateFinance\";\n\n canHandle(context: BridgeContext): boolean {\n const { sourceChain, destChain, sourceToken } = context;\n\n // Override: Force Stargate for Base -> Avalanche (USDC)\n if (sourceChain === \"Base\" && destChain === \"Avalanche\" && sourceToken === \"USDC\") {\n return true;\n }\n\n const sourceConfig = NETWORKS[sourceChain];\n const destConfig = NETWORKS[destChain];\n\n if (!sourceConfig || !destConfig) return false;\n\n // Check Chain Support\n const sourceStargate = sourceConfig.crossChainInformation.stargateInformation?.support;\n const destStargate = destConfig.crossChainInformation.stargateInformation?.support;\n\n if (!sourceStargate || !destStargate) return false;\n\n // Check Token Support\n // Find asset config for the token\n const sourceAsset = sourceConfig.assets.find(a => a.name === (sourceToken || \"USDC\"));\n const destAsset = destConfig.assets.find(a => a.name === (context.destToken || \"USDC\"));\n\n // Both assets must explicitly support Stargate\n return !!(sourceAsset?.supportsStargate && destAsset?.supportsStargate);\n }\n\n async execute(context: BridgeContext): Promise<SettleResponse> {\n const { sourceChain, destChain, amount, recipient, destToken, sourceToken, senderAddress } = context;\n\n console.log(`[StargateStrategy] Executing ${sourceChain} -> ${destChain} for ${amount} ${sourceToken}`);\n\n // Get configurations\n const sourceConfig = NETWORKS[sourceChain];\n const destConfig = NETWORKS[destChain];\n\n if (!sourceConfig || !destConfig) {\n return { success: false, errorReason: \"Invalid chain configuration\" };\n }\n\n const sourceAsset = sourceConfig.assets.find(a => a.name === (sourceToken || \"USDC\"));\n const destAsset = destConfig.assets.find(a => a.name === (destToken || \"USDC\"));\n\n if (!sourceAsset || !destAsset) {\n return { success: false, errorReason: \"Invalid asset configuration\" };\n }\n\n const decimals = sourceAsset.decimals;\n const amountAtomic = Math.floor(parseFloat(amount) * Math.pow(10, decimals)).toString();\n\n // 0.5% slippage default\n const minAmountAtomic = Math.floor(parseFloat(amountAtomic) * 0.995).toString();\n\n const srcChainKey = sourceChain.toLowerCase();\n const dstChainKey = destChain.toLowerCase();\n\n const url = new URL(STARGATE_API_URL);\n url.searchParams.append(\"srcToken\", sourceAsset.address as string);\n url.searchParams.append(\"dstToken\", destAsset.address as string);\n url.searchParams.append(\"srcAddress\", senderAddress || recipient);\n url.searchParams.append(\"dstAddress\", recipient);\n url.searchParams.append(\"srcChainKey\", srcChainKey);\n url.searchParams.append(\"dstChainKey\", dstChainKey);\n url.searchParams.append(\"srcAmount\", amountAtomic);\n url.searchParams.append(\"dstAmountMin\", minAmountAtomic);\n\n console.log(`[StargateStrategy] Fetching quote from: ${url.toString()}`);\n\n try {\n const response = await fetch(url.toString());\n const data = await response.json();\n\n if (!response.ok) {\n console.error(\"[StargateStrategy] API Error:\", data);\n return { success: false, errorReason: `Stargate API Error: ${JSON.stringify(data)}` };\n }\n\n console.log(\"[StargateStrategy] Quote received:\", JSON.stringify(data, null, 2));\n\n // Find a valid quote. Prefer 'taxi' (immediate), then 'bus'.\n const quotes = data.quotes || [];\n if (quotes.length === 0) {\n return { success: false, errorReason: \"No routes found from Stargate API\" };\n }\n\n const selectedQuote = quotes.find((q: any) => q.route === 'stargate/v2/taxi') || quotes[0];\n console.log(`[StargateStrategy] Selected Route: ${selectedQuote.route}`);\n\n // Extract 'bridge' step\n const bridgeStep = selectedQuote.steps.find((s: any) => s.type === 'bridge');\n if (!bridgeStep || !bridgeStep.transaction) {\n return { success: false, errorReason: \"No bridge transaction found in quote\" };\n }\n\n const txData = bridgeStep.transaction;\n const approvalTx = selectedQuote.steps.find((s: any) => s.type === 'approve')?.transaction;\n\n return {\n success: true,\n transactionHash: \"PENDING_USER_SIGNATURE\",\n netAmount: amount,\n data: {\n strategy: \"Stargate\",\n quote: selectedQuote,\n // Normalized Transaction Data for execution\n txTarget: txData.to,\n txData: txData.data,\n txValue: txData.value,\n // Metadata\n approvalRequired: approvalTx ? {\n target: approvalTx.to,\n data: approvalTx.data,\n value: approvalTx.value\n } : null\n }\n };\n\n } catch (e: any) {\n console.error(\"[StargateStrategy] Execution Error:\", e);\n return { success: false, errorReason: e.message };\n }\n }\n}\n\nexport async function getStargateSimulation(\n sourceChain: string,\n destChain: string,\n amount: string,\n recipient: string\n) {\n if (sourceChain === \"Base\" && destChain === \"Avalanche\") {\n // Proceed\n } else {\n // Simple validation or just let API fail?\n // Since we call this explicitly, we assume caller verified.\n }\n\n const { TransferManager } = await import(\"./TransferManager\");\n // We can reuse the class logic but better to just use static or duplicate\n // for separate Simulation vs Execution logic.\n // Actually, execute() returns quote data.\n\n // Let's implement standalone fetch.\n const sourceConfig = NETWORKS[sourceChain as any];\n const destConfig = NETWORKS[destChain as any];\n\n if (!sourceConfig || !destConfig) {\n return { success: false, error: \"Invalid Simulation Config\" };\n }\n\n const sourceAsset = sourceConfig.assets.find(a => a.name === \"USDC\");\n const destAsset = destConfig.assets.find(a => a.name === \"USDC\");\n\n if (!sourceAsset || !destAsset) {\n return { success: false, error: \"USDC not found on chains\" };\n }\n\n const decimals = sourceAsset.decimals;\n const amountAtomic = Math.floor(parseFloat(amount) * Math.pow(10, decimals)).toString();\n const minAmountAtomic = Math.floor(parseFloat(amountAtomic) * 0.995).toString();\n\n const srcChainKey = sourceChain.toLowerCase();\n const dstChainKey = destChain.toLowerCase();\n\n const url = new URL(STARGATE_API_URL);\n url.searchParams.append(\"srcToken\", sourceAsset.address as string);\n url.searchParams.append(\"dstToken\", destAsset.address as string);\n url.searchParams.append(\"srcAddress\", recipient || \"0x000000000000000000000000000000000000dEaD\");\n url.searchParams.append(\"dstAddress\", recipient || \"0x000000000000000000000000000000000000dEaD\");\n url.searchParams.append(\"srcChainKey\", srcChainKey);\n url.searchParams.append(\"dstChainKey\", dstChainKey);\n url.searchParams.append(\"srcAmount\", amountAtomic);\n url.searchParams.append(\"dstAmountMin\", minAmountAtomic);\n\n try {\n const response = await fetch(url.toString());\n const data = await response.json();\n\n if (!response.ok) {\n return { success: false, error: \"Stargate API Error\" };\n }\n\n const quotes = data.quotes || [];\n if (quotes.length === 0) return { success: false, error: \"No Stargate routes found\" };\n\n const selectedQuote = quotes.find((q: any) => q.route === 'stargate/v2/taxi') || quotes[0];\n\n // Stargate doesn't charge \"Protocol Fee\" in the same way (it's gas/slippage). \n // We can show Fee = (SrcAmount - DstAmount)\n const srcAmt = BigInt(selectedQuote.srcAmount);\n const dstAmt = BigInt(selectedQuote.dstAmount);\n const fees = srcAmt - dstAmt;\n const feeFormatted = (Number(fees) / Math.pow(10, decimals)).toFixed(6);\n\n const estimatedReceived = (Number(dstAmt) / Math.pow(10, destAsset.decimals)).toFixed(6);\n\n return {\n success: true,\n amountSent: parseFloat(amount),\n protocolFee: feeFormatted, // Fee in USDC\n netAmountBridged: parseFloat(amount), // Technically amount sent\n estimatedReceived: estimatedReceived,\n minAmount: \"0\"\n };\n } catch (e: any) {\n return { success: false, error: e.message };\n }\n}\n","import { BridgeStrategy, BridgeContext } from \"./types\";\nimport { CCTPStrategy } from \"./cctp\";\nimport { NearStrategy } from \"./near\";\nimport { StargateStrategy } from \"./stargate\";\nimport { SettleResponse } from \"@/services/types\";\n\nexport class TransferManager {\n private strategies: BridgeStrategy[];\n\n constructor() {\n this.strategies = [\n new CCTPStrategy(),\n new StargateStrategy(),\n new NearStrategy()\n ];\n }\n\n async execute(context: BridgeContext): Promise<SettleResponse> {\n // 1. Check Same Chain (Direct Transfer)\n if (context.sourceChain === context.destChain && context.sourceToken === context.destToken) {\n console.log(`[TransferManager] Same Chain detected. Signal Direct Transfer.`);\n // Return a signal that tells the client to execute a direct transfer\n return {\n success: true,\n transactionHash: \"DIRECT_TRANSFER_REQUIRED\",\n data: {\n action: \"DIRECT_TRANSFER\",\n amount: context.amount,\n token: context.sourceToken,\n recipient: context.recipient\n }\n };\n }\n\n const strategies = this.strategies;\n\n // 2. Check Stargate (Priority for testing Base -> Avalanche override)\n const stargateStrategy = strategies.find(s => s instanceof StargateStrategy);\n if (stargateStrategy && stargateStrategy.canHandle(context)) {\n console.log(`[TransferManager] Routing to: ${stargateStrategy.name} (Stargate)`);\n return stargateStrategy.execute(context);\n }\n\n // 3. Check CCTP (Highest Priority for Cross-Chain USDC)\n const cctpStrategy = strategies.find(s => s instanceof CCTPStrategy);\n if (cctpStrategy && cctpStrategy.canHandle(context)) {\n console.log(`[TransferManager] Routing to: ${cctpStrategy.name} (CCTP)`);\n return cctpStrategy.execute(context);\n }\n\n // 4. Check Near Intents\n const nearStrategy = strategies.find(s => s instanceof NearStrategy);\n if (nearStrategy && nearStrategy.canHandle(context)) {\n console.log(`[TransferManager] Routing to: ${nearStrategy.name} (Near)`);\n return nearStrategy.execute(context);\n }\n\n return {\n success: false,\n errorReason: `No suitable transfer strategy found for ${context.sourceChain} -> ${context.destChain}`\n };\n }\n}\n","export const factoryAbi = [\n {\n inputs: [\n { name: \"owner\", type: \"address\" },\n { name: \"salt\", type: \"uint256\" },\n ],\n name: \"getAccountAddress\",\n outputs: [{ name: \"\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { name: \"owner\", type: \"address\" },\n { name: \"salt\", type: \"uint256\" },\n ],\n name: \"isAccountDeployed\",\n outputs: [{ name: \"\", type: \"bool\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { name: \"owner\", type: \"address\" },\n { name: \"salt\", type: \"uint256\" },\n ],\n name: \"createAccount\",\n outputs: [{ name: \"account\", type: \"address\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n] as const;\n\nexport const entryPointAbi = [\n {\n inputs: [\n { name: \"sender\", type: \"address\" },\n { name: \"key\", type: \"uint192\" },\n ],\n name: \"getNonce\",\n outputs: [{ name: \"nonce\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n] as const;\n\nexport const smartAccountAbi = [\n {\n inputs: [\n { name: \"target\", type: \"address\" },\n { name: \"value\", type: \"uint256\" },\n { name: \"data\", type: \"bytes\" },\n ],\n name: \"execute\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { name: \"targets\", type: \"address[]\" },\n { name: \"values\", type: \"uint256[]\" },\n { name: \"datas\", type: \"bytes[]\" },\n ],\n name: \"executeBatch\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n] as const;\n\nexport const erc20Abi = [\n {\n inputs: [{ name: \"account\", type: \"address\" }],\n name: \"balanceOf\",\n outputs: [{ name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { name: \"to\", type: \"address\" },\n { name: \"amount\", type: \"uint256\" },\n ],\n name: \"transfer\",\n outputs: [{ name: \"\", type: \"bool\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { name: \"spender\", type: \"address\" },\n { name: \"amount\", type: \"uint256\" },\n ],\n name: \"approve\",\n outputs: [{ name: \"\", type: \"bool\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { name: \"owner\", type: \"address\" },\n { name: \"spender\", type: \"address\" },\n ],\n name: \"allowance\",\n outputs: [{ name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { name: \"from\", type: \"address\" },\n { name: \"to\", type: \"address\" },\n { name: \"amount\", type: \"uint256\" },\n ],\n name: \"transferFrom\",\n outputs: [{ name: \"\", type: \"bool\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"decimals\",\n outputs: [{ name: \"\", type: \"uint8\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n] as const;\n","import { type Address, type Hash } from \"viem\";\nimport { type ChainConfig, type EvmChainConfig, type UserOperation, type GasEstimate, type UserOpReceipt, type ApprovalSupportResult } from \"./types\";\n\nexport class BundlerClient {\n private bundlerUrl: string;\n private entryPointAddress: Address;\n\n constructor(config: EvmChainConfig, entryPointAddress: Address) {\n this.bundlerUrl = config.bundlerUrl;\n this.entryPointAddress = entryPointAddress;\n }\n\n private async call(method: string, params: any[]): Promise<any> {\n const response = await fetch(this.bundlerUrl, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n jsonrpc: \"2.0\",\n id: 1,\n method,\n params,\n }),\n });\n\n const result = await response.json();\n if (result.error) {\n throw new Error(result.error.message);\n }\n return result.result;\n }\n\n async estimateGas(userOp: Partial<UserOperation>): Promise<GasEstimate> {\n const result = await this.call(\"eth_estimateUserOperationGas\", [\n {\n sender: userOp.sender,\n nonce: userOp.nonce ? \"0x\" + userOp.nonce.toString(16) : \"0x0\",\n initCode: userOp.initCode || \"0x\",\n callData: userOp.callData || \"0x\",\n paymasterAndData: userOp.paymasterAndData || \"0x\",\n signature: \"0x\",\n },\n this.entryPointAddress,\n ]);\n\n console.log(\"DEBUG: estimateGas result:\", result);\n\n return {\n callGasLimit: result.callGasLimit,\n verificationGasLimit: result.verificationGasLimit,\n preVerificationGas: result.preVerificationGas,\n maxFeePerGas: result.maxFeePerGas,\n maxPriorityFeePerGas: result.maxPriorityFeePerGas,\n paymasterAndData: result.paymasterAndData,\n };\n }\n\n async sendUserOperation(userOp: UserOperation): Promise<Hash> {\n return await this.call(\"eth_sendUserOperation\", [\n {\n sender: userOp.sender,\n nonce: \"0x\" + userOp.nonce.toString(16),\n initCode: userOp.initCode,\n callData: userOp.callData,\n callGasLimit: \"0x\" + userOp.callGasLimit.toString(16),\n verificationGasLimit: \"0x\" + userOp.verificationGasLimit.toString(16),\n preVerificationGas: \"0x\" + userOp.preVerificationGas.toString(16),\n maxFeePerGas: \"0x\" + userOp.maxFeePerGas.toString(16),\n maxPriorityFeePerGas: \"0x\" + userOp.maxPriorityFeePerGas.toString(16),\n paymasterAndData: userOp.paymasterAndData,\n signature: userOp.signature,\n },\n this.entryPointAddress,\n ]);\n }\n\n async waitForUserOperation(userOpHash: Hash, timeout = 60000): Promise<UserOpReceipt> {\n const startTime = Date.now();\n\n while (Date.now() - startTime < timeout) {\n const result = await this.call(\"eth_getUserOperationReceipt\", [userOpHash]);\n\n if (result) {\n return result as UserOpReceipt;\n }\n\n // Wait 2 seconds before polling again\n await new Promise((resolve) => setTimeout(resolve, 2000));\n }\n\n throw new Error(\"Timeout waiting for UserOperation\");\n }\n\n async requestApprovalSupport(token: Address, owner: Address, spender: Address, amount: bigint): Promise<ApprovalSupportResult> {\n return await this.call(\"pm_requestApprovalSupport\", [\n token,\n owner,\n spender,\n amount.toString()\n ]);\n }\n}\n","import { type Address, type PublicClient, encodeFunctionData } from \"viem\";\nimport { type ChainConfig, type Token } from \"./types\";\nimport { erc20Abi } from \"./constants\";\n\nexport class TokenService {\n private tokens: Map<string, Token> = new Map();\n private publicClient: PublicClient;\n\n constructor(chainConfig: ChainConfig, publicClient: PublicClient) {\n this.publicClient = publicClient;\n\n chainConfig.tokens.forEach(token => {\n this.tokens.set(token.symbol.toUpperCase(), token);\n });\n }\n\n /**\n * Resolve token address from symbol or return address if provided\n */\n getTokenAddress(token: string | Address): Address {\n\n\n if (token.startsWith(\"0x\")) return token as Address;\n const info = this.tokens.get(token.toUpperCase());\n if (!info) throw new Error(`Token ${token} not found in chain config`);\n return info.address;\n }\n\n /**\n * Get balance of a token for an account\n */\n async getBalance(token: string | Address, account: Address): Promise<bigint> {\n const address = this.getTokenAddress(token);\n\n if (address === \"0x0000000000000000000000000000000000000000\") {\n return await this.publicClient.getBalance({ address: account });\n }\n return await this.publicClient.readContract({\n address,\n abi: erc20Abi,\n functionName: \"balanceOf\",\n args: [account],\n }) as bigint;\n }\n\n /**\n * Get allowance (ERC-20 only)\n */\n async getAllowance(token: string | Address, owner: Address, spender: Address): Promise<bigint> {\n const address = this.getTokenAddress(token);\n\n if (address === \"0x0000000000000000000000000000000000000000\") {\n return 0n;\n }\n\n return await this.publicClient.readContract({\n address,\n abi: erc20Abi,\n functionName: \"allowance\",\n args: [owner, spender],\n }) as bigint;\n }\n\n /**\n * Encode transfer data\n */\n encodeTransfer(recipient: Address, amount: bigint): `0x${string}` {\n return encodeFunctionData({\n abi: erc20Abi,\n functionName: \"transfer\",\n args: [recipient, amount]\n });\n }\n\n /**\n * Encode transferFrom data\n */\n encodeTransferFrom(sender: Address, recipient: Address, amount: bigint): `0x${string}` {\n return encodeFunctionData({\n abi: erc20Abi,\n functionName: \"transferFrom\",\n args: [sender, recipient, amount]\n });\n }\n\n /**\n * Encode approve data\n */\n encodeApprove(spender: Address, amount: bigint): `0x${string}` {\n return encodeFunctionData({\n abi: erc20Abi,\n functionName: \"approve\",\n args: [spender, amount]\n });\n }\n}\n","import {\n type Address,\n type Hex,\n type PublicClient,\n encodeFunctionData,\n encodeAbiParameters,\n keccak256\n} from \"viem\";\nimport { type ChainConfig, type UserOperation } from \"./types\";\nimport { BundlerClient } from \"./BundlerClient\";\nimport { factoryAbi, smartAccountAbi, entryPointAbi } from \"./constants\";\n\nexport class UserOpBuilder {\n private chainConfig: ChainConfig;\n private bundlerClient: BundlerClient;\n private publicClient: PublicClient;\n private entryPointAddress: Address;\n private factoryAddress: Address;\n\n constructor(\n chainConfig: ChainConfig,\n bundlerClient: BundlerClient,\n publicClient: PublicClient\n ) {\n this.chainConfig = chainConfig;\n this.bundlerClient = bundlerClient;\n this.publicClient = publicClient;\n\n this.entryPointAddress = (chainConfig as any).entryPointAddress!;\n this.factoryAddress = (chainConfig as any).factoryAddress!;\n }\n\n async getNonce(smartAccountAddress: Address): Promise<bigint> {\n return await this.publicClient.readContract({\n address: this.entryPointAddress,\n abi: entryPointAbi,\n functionName: \"getNonce\",\n args: [smartAccountAddress, 0n],\n }) as bigint;\n }\n\n buildInitCode(owner: Address): Hex {\n const createAccountData = encodeFunctionData({\n abi: factoryAbi,\n functionName: \"createAccount\",\n args: [owner, 0n],\n });\n return `${this.factoryAddress}${createAccountData.slice(2)}` as Hex;\n }\n\n async isAccountDeployed(smartAccountAddress: Address): Promise<boolean> {\n const code = await this.publicClient.getCode({\n address: smartAccountAddress,\n });\n return code !== undefined && code !== \"0x\";\n }\n\n async buildUserOperationBatch(\n owner: Address,\n smartAccountAddress: Address,\n transactions: { target: Address; value: bigint; data: Hex }[]\n ): Promise<UserOperation> {\n const isDeployed = await this.isAccountDeployed(smartAccountAddress);\n const initCode = isDeployed ? \"0x\" : this.buildInitCode(owner);\n\n const targets = transactions.map((tx) => tx.target);\n const values = transactions.map((tx) => tx.value);\n const datas = transactions.map((tx) => tx.data);\n\n const callData = encodeFunctionData({\n abi: smartAccountAbi,\n functionName: \"executeBatch\",\n args: [targets, values, datas],\n });\n\n const nonce = await this.getNonce(smartAccountAddress);\n\n const partialOp = {\n sender: smartAccountAddress,\n nonce,\n initCode: initCode as Hex,\n callData,\n paymasterAndData: ((this.chainConfig as any).paymasterAddress || \"0x\") as Hex,\n };\n\n const gasEstimate = await this.bundlerClient.estimateGas(partialOp);\n\n return {\n ...partialOp,\n callGasLimit: BigInt(gasEstimate.callGasLimit),\n verificationGasLimit: BigInt(gasEstimate.verificationGasLimit),\n preVerificationGas: BigInt(gasEstimate.preVerificationGas),\n maxFeePerGas: BigInt(gasEstimate.maxFeePerGas),\n maxPriorityFeePerGas: BigInt(gasEstimate.maxPriorityFeePerGas),\n paymasterAndData: (gasEstimate.paymasterAndData || partialOp.paymasterAndData) as Hex,\n signature: \"0x\",\n };\n }\n\n async buildDeployUserOp(\n owner: Address,\n smartAccountAddress: Address\n ): Promise<UserOperation> {\n const isDeployed = await this.isAccountDeployed(smartAccountAddress);\n if (isDeployed) throw new Error(\"Account already deployed\");\n\n const initCode = this.buildInitCode(owner);\n const callData = \"0x\";\n const nonce = await this.getNonce(smartAccountAddress);\n\n const partialOp = {\n sender: smartAccountAddress,\n nonce,\n initCode: initCode as Hex,\n callData: callData as Hex,\n paymasterAndData: ((this.chainConfig as any).paymasterAddress || \"0x\") as Hex,\n };\n\n const gasEstimate = await this.bundlerClient.estimateGas(partialOp);\n\n return {\n ...partialOp,\n callGasLimit: BigInt(gasEstimate.callGasLimit),\n verificationGasLimit: BigInt(gasEstimate.verificationGasLimit),\n preVerificationGas: BigInt(gasEstimate.preVerificationGas),\n maxFeePerGas: BigInt(gasEstimate.maxFeePerGas),\n maxPriorityFeePerGas: BigInt(gasEstimate.maxPriorityFeePerGas),\n paymasterAndData: (gasEstimate.paymasterAndData || partialOp.paymasterAndData) as Hex,\n signature: \"0x\",\n };\n }\n\n getUserOpHash(userOp: UserOperation): Hex {\n const packed = encodeAbiParameters(\n [\n { type: \"address\" },\n { type: \"uint256\" },\n { type: \"bytes32\" },\n { type: \"bytes32\" },\n { type: \"uint256\" },\n { type: \"uint256\" },\n { type: \"uint256\" },\n { type: \"uint256\" },\n { type: \"uint256\" },\n { type: \"bytes32\" },\n ],\n [\n userOp.sender,\n userOp.nonce,\n keccak256(userOp.initCode),\n keccak256(userOp.callData),\n userOp.callGasLimit,\n userOp.verificationGasLimit,\n userOp.preVerificationGas,\n userOp.maxFeePerGas,\n userOp.maxPriorityFeePerGas,\n keccak256(userOp.paymasterAndData),\n ]\n );\n\n const packedHash = keccak256(packed);\n\n return keccak256(\n encodeAbiParameters(\n [{ type: \"bytes32\" }, { type: \"address\" }, { type: \"uint256\" }],\n [packedHash, this.entryPointAddress, BigInt(this.chainConfig.chain.id)]\n )\n );\n }\n}\n","import {\n type Address,\n createPublicClient,\n createWalletClient,\n decodeErrorResult,\n type Hash,\n type Hex,\n http,\n type LocalAccount,\n type PublicClient,\n type WalletClient\n} from \"viem\";\nimport { privateKeyToAccount } from \"viem/accounts\";\nimport { factoryAbi, } from \"./constants\";\nimport { type ApprovalSupportResult, type ChainConfig, type EvmChainConfig, type UserOperation, type UserOpReceipt } from \"./types\";\nimport { BundlerClient } from \"./BundlerClient\";\nimport { TokenService } from \"./TokenService\";\nimport { UserOpBuilder } from \"./UserOpBuilder\";\n\n/**\n * ERC-4337 Account Abstraction Client\n */\nexport class AccountAbstraction {\n private owner: Address | null = null;\n private smartAccountAddress: Address | null = null;\n private chainConfig: EvmChainConfig;\n private publicClient: PublicClient;\n private bundlerClient: BundlerClient;\n private walletClient: WalletClient | null = null;\n\n // Services\n private tokenService: TokenService;\n private userOpBuilder: UserOpBuilder;\n\n // Resolved addresses\n private entryPointAddress: Address;\n private factoryAddress: Address;\n\n constructor(chainConfig: EvmChainConfig) {\n this.chainConfig = chainConfig;\n\n // Validation\n if (!chainConfig.entryPointAddress) throw new Error(\"EntryPoint address required\");\n this.entryPointAddress = chainConfig.entryPointAddress;\n if (!chainConfig.factoryAddress) throw new Error(\"Factory address required\");\n this.factoryAddress = chainConfig.factoryAddress;\n\n // Setup Clients\n const rpcUrl = chainConfig.rpcUrl || chainConfig.chain.rpcUrls.default.http[0];\n this.publicClient = createPublicClient({\n chain: chainConfig.chain,\n transport: http(rpcUrl),\n });\n\n this.bundlerClient = new BundlerClient(chainConfig, this.entryPointAddress);\n\n // Setup Services\n this.tokenService = new TokenService(chainConfig, this.publicClient);\n this.userOpBuilder = new UserOpBuilder(chainConfig, this.bundlerClient, this.publicClient);\n }\n\n async connect(signer?: Hex | WalletClient): Promise<{ owner: Address; smartAccount: Address }> {\n // Mode 1: Private Key (Local Signer)\n if (typeof signer === 'string') {\n const account: LocalAccount = privateKeyToAccount(signer);\n this.owner = account.address;\n\n const rpcUrl = this.chainConfig.rpcUrl || this.chainConfig.chain.rpcUrls.default.http[0];\n this.walletClient = createWalletClient({\n account,\n chain: this.chainConfig.chain,\n transport: http(rpcUrl)\n });\n\n } else if (signer && typeof signer === 'object') {\n // Mode 2: External Wallet Client (e.g. Wagmi)\n this.walletClient = signer as WalletClient;\n if (!this.walletClient.account) throw new Error(\"WalletClient must have an account\");\n this.owner = this.walletClient.account.address;\n\n } else {\n // Mode 3: External Provider (MetaMask window.ethereum)\n if (typeof window === \"undefined\" || !window.ethereum) {\n throw new Error(\"MetaMask is not installed and no private key provided\");\n }\n\n // Request account access\n const accounts = (await window.ethereum.request({\n method: \"eth_requestAccounts\",\n })) as string[];\n\n if (!accounts || accounts.length === 0) throw new Error(\"No accounts found\");\n\n // Check network\n const chainId = (await window.ethereum.request({\n method: \"eth_chainId\",\n })) as string;\n const targetChainId = this.chainConfig.chain.id;\n\n if (parseInt(chainId, 16) !== targetChainId) {\n try {\n await window.ethereum.request({\n method: \"wallet_switchEthereumChain\",\n params: [{ chainId: \"0x\" + targetChainId.toString(16) }],\n });\n } catch (switchError: unknown) {\n const error = switchError as { code?: number };\n if (error.code === 4902) {\n await window.ethereum.request({\n method: \"wallet_addEthereumChain\",\n params: [\n {\n chainId: \"0x\" + targetChainId.toString(16),\n chainName: this.chainConfig.chain.name,\n nativeCurrency: this.chainConfig.chain.nativeCurrency,\n rpcUrls: [this.chainConfig.rpcUrl || this.chainConfig.chain.rpcUrls.default.http[0]],\n blockExplorerUrls: this.chainConfig.chain.blockExplorers?.default?.url\n ? [this.chainConfig.chain.blockExplorers.default.url]\n : [],\n },\n ],\n });\n } else {\n throw switchError;\n }\n }\n }\n\n this.owner = accounts[0] as Address;\n // No walletClient needed, we use window.ethereum directly\n }\n\n this.smartAccountAddress = await this.getSmartAccountAddress(this.owner!);\n\n return {\n owner: this.owner!,\n smartAccount: this.smartAccountAddress,\n };\n }\n\n // --- Account Management ---\n\n async isAccountDeployed(): Promise<boolean> {\n if (!this.smartAccountAddress) return false;\n const code = await this.publicClient.getBytecode({ address: this.smartAccountAddress });\n return code !== undefined;\n }\n\n async deployAccount(): Promise<UserOpReceipt> {\n if (!this.owner || !this.smartAccountAddress) throw new Error(\"Not connected\");\n return this.sendTransaction({\n target: this.smartAccountAddress,\n value: 0n,\n data: \"0x\"\n });\n }\n\n /**\n * Get the Smart Account address for an owner\n */\n async getSmartAccountAddress(owner: Address): Promise<Address> {\n const address = await this.publicClient.readContract({\n address: this.factoryAddress,\n abi: factoryAbi,\n functionName: \"getAccountAddress\",\n args: [owner, 0n],\n }) as Address;\n return address;\n }\n\n // --- Token Methods (Delegated) ---\n\n getTokenAddress(token: string | Address): Address {\n return this.tokenService.getTokenAddress(token);\n }\n\n async getBalance(token: string | Address): Promise<bigint> {\n if (!this.smartAccountAddress) throw new Error(\"Not connected\");\n return this.tokenService.getBalance(token, this.smartAccountAddress);\n }\n\n async getEoaBalance(token: string | Address): Promise<bigint> {\n if (!this.owner) throw new Error(\"Not connected\");\n return this.tokenService.getBalance(token, this.owner);\n }\n\n\n\n async getAllowance(token: string | Address = \"USDC\"): Promise<bigint> {\n if (!this.owner || !this.smartAccountAddress) throw new Error(\"Not connected\");\n return this.tokenService.getAllowance(token, this.owner, this.smartAccountAddress);\n }\n\n /**\n * Get comprehensive state of the account for a specific token\n * Useful for UI initialization\n */\n async getAccountState(token: string | Address) {\n if (!this.owner || !this.smartAccountAddress) throw new Error(\"Not connected\");\n\n const tokenAddress = this.getTokenAddress(token);\n const isNative = tokenAddress === \"0x0000000000000000000000000000000000000000\";\n\n const [balance, eoaBalance, allowance, isDeployed] = await Promise.all([\n this.getBalance(token),\n this.getEoaBalance(token),\n isNative ? 0n : this.getAllowance(token).catch(() => 0n), // Handle native/error gracefully\n this.isAccountDeployed()\n ]);\n\n return {\n owner: this.owner,\n smartAccount: this.smartAccountAddress,\n balance,\n eoaBalance,\n allowance,\n isDeployed\n };\n }\n\n // --- Transactions ---\n\n async sendTransaction(\n tx: { target: Address; value?: bigint; data?: Hex }\n ): Promise<UserOpReceipt> {\n return this.sendBatchTransaction([tx]);\n }\n\n async sendBatchTransaction(\n txs: { target: Address; value?: bigint; data?: Hex }[]\n ): Promise<UserOpReceipt> {\n if (!this.owner || !this.smartAccountAddress) throw new Error(\"Not connected\");\n\n // Normalize\n const transactions = txs.map(tx => ({\n target: tx.target,\n value: tx.value ?? 0n,\n data: tx.data ?? \"0x\"\n }));\n\n try {\n const userOp = await this.userOpBuilder.buildUserOperationBatch(\n this.owner,\n this.smartAccountAddress,\n transactions\n );\n const signed = await this.signUserOperation(userOp);\n const hash = await this.sendUserOperation(signed);\n return await this.waitForUserOperation(hash);\n } catch (error) {\n throw this.decodeError(error);\n }\n }\n\n async deposit(amount: bigint): Promise<Hash> {\n if (!this.owner || !this.smartAccountAddress) throw new Error(\"Not connected\");\n\n if (this.walletClient) {\n return await this.walletClient.sendTransaction({\n account: this.walletClient.account!,\n to: this.smartAccountAddress,\n value: amount,\n chain: this.chainConfig.chain\n });\n }\n\n return await window.ethereum!.request({\n method: \"eth_sendTransaction\",\n params: [{\n from: this.owner,\n to: this.smartAccountAddress,\n value: \"0x\" + amount.toString(16)\n }]\n }) as Hash;\n }\n\n /**\n * Smart Transfer: Automatically chooses best method (SA vs EOA) based on balances.\n * Supports strict fee handling.\n */\n async smartTransfer(\n token: Address | string,\n recipient: Address,\n amount: bigint,\n fee?: { amount: bigint; recipient: Address }\n ): Promise<UserOpReceipt | { receipt: { transactionHash: Hash } }> {\n if (!this.owner || !this.smartAccountAddress) throw new Error(\"Not connected\");\n\n const tokenAddress = this.getTokenAddress(token);\n const isNative = tokenAddress === \"0x0000000000000000000000000000000000000000\";\n\n // Refresh State\n const [saBal, eoaBal, allowance] = await Promise.all([\n this.getBalance(token),\n this.getEoaBalance(token),\n isNative ? 0n : this.getAllowance(token).catch(() => 0n)\n ]);\n\n const totalNeeded = amount + (fee?.amount || 0n);\n\n // Strategy 1: Smart Account Pay (Preferred)\n if (saBal >= totalNeeded) {\n const txs = [];\n\n // Transfer to Recipient\n if (isNative) {\n txs.push({ target: recipient, value: amount, data: \"0x\" as Hex });\n } else {\n txs.push({ target: tokenAddress, value: 0n, data: this.tokenService.encodeTransfer(recipient, amount) });\n }\n\n // Transfer Fee\n if (fee && fee.amount > 0n) {\n if (isNative) {\n txs.push({ target: fee.recipient, value: fee.amount, data: \"0x\" as Hex });\n } else {\n txs.push({ target: tokenAddress, value: 0n, data: this.tokenService.encodeTransfer(fee.recipient, fee.amount) });\n }\n }\n console.log(\"SmartTransfer: Using Smart Account\");\n return this.sendBatchTransaction(txs);\n }\n\n // Strategy 2: EOA Pay (Fallback / Pull)\n if (eoaBal >= totalNeeded) {\n if (isNative) {\n // Native EOA Transfer (Direct)\n console.log(\"SmartTransfer: Using EOA (Native)\");\n if (this.walletClient) {\n const hash = await this.walletClient.sendTransaction({\n account: this.walletClient.account!,\n to: recipient,\n value: amount,\n chain: this.chainConfig.chain\n });\n return { receipt: { transactionHash: hash } };\n }\n const hash = await window.ethereum!.request({\n method: \"eth_sendTransaction\",\n params: [{ from: this.owner, to: recipient, value: \"0x\" + amount.toString(16) }]\n }) as Hash;\n return { receipt: { transactionHash: hash } };\n } else {\n // ERC-20 EOA Pull (TransferFrom)\n console.log(\"SmartTransfer: Using EOA (Pull)\");\n // Check allowance\n if (allowance < totalNeeded) {\n // Infinite approval standard: maxUint256\n throw new Error(`Approval required. Please approve ${token} usage.`);\n }\n\n const txs = [];\n // Pull to Recipient\n txs.push({\n target: tokenAddress,\n value: 0n,\n data: this.tokenService.encodeTransferFrom(this.owner, recipient, amount)\n });\n\n // Pull Fee\n if (fee && fee.amount > 0n) {\n txs.push({\n target: tokenAddress,\n value: 0n,\n data: this.tokenService.encodeTransferFrom(this.owner, fee.recipient, fee.amount)\n });\n }\n return this.sendBatchTransaction(txs);\n }\n }\n\n throw new Error(`Insufficient funds.`);\n }\n\n async transfer(\n token: Address | string,\n recipient: Address,\n amount: bigint\n ): Promise<UserOpReceipt> {\n const tokenAddress = this.getTokenAddress(token);\n\n if (tokenAddress === \"0x0000000000000000000000000000000000000000\") {\n return this.sendTransaction({\n target: recipient,\n value: amount,\n data: \"0x\"\n });\n }\n\n // ERC-20\n const data = this.tokenService.encodeTransfer(recipient, amount);\n return this.sendTransaction({\n target: tokenAddress,\n value: 0n,\n data\n });\n }\n\n /**\n * Approve a token for the Smart Account\n */\n async approveToken(\n token: Address,\n spender: Address,\n amount: bigint = 115792089237316195423570985008687907853269984665640564039457584007913129639935n\n ): Promise<Hash | \"NOT_NEEDED\"> {\n if (!this.owner) throw new Error(\"Not connected\");\n\n const support = await this.requestApprovalSupport(token, spender, amount);\n\n if (support.type === \"approve\") {\n const data = this.tokenService.encodeApprove(spender, amount);\n\n if (this.walletClient) {\n return await this.walletClient.sendTransaction({\n account: this.walletClient.account!,\n to: token,\n data,\n chain: this.chainConfig.chain\n });\n }\n\n return await window.ethereum!.request({\n method: \"eth_sendTransaction\",\n params: [{\n from: this.owner,\n to: token,\n data,\n }]\n }) as Hash;\n }\n\n if (support.type === \"permit\") throw new Error(\"Permit not yet supported\");\n return \"NOT_NEEDED\";\n }\n\n // --- Core Bridge to Bundler/UserOp ---\n\n async signUserOperation(userOp: UserOperation): Promise<UserOperation> {\n if (!this.owner) throw new Error(\"Not connected\");\n\n const userOpHash = this.userOpBuilder.getUserOpHash(userOp);\n let signature: Hex;\n\n if (this.walletClient) {\n signature = await this.walletClient.signMessage({\n account: this.walletClient.account!,\n message: { raw: userOpHash } // Sign hash directly\n });\n } else {\n signature = (await window.ethereum!.request({\n method: \"personal_sign\",\n params: [userOpHash, this.owner],\n })) as Hex;\n }\n\n return { ...userOp, signature };\n }\n\n async sendUserOperation(userOp: UserOperation): Promise<Hash> {\n return this.bundlerClient.sendUserOperation(userOp);\n }\n\n async waitForUserOperation(hash: Hash, timeout = 60000) {\n return this.bundlerClient.waitForUserOperation(hash, timeout);\n }\n\n // Internal but exposed via BundlerClient originally\n async requestApprovalSupport(token: Address, spender: Address, amount: bigint): Promise<ApprovalSupportResult> {\n if (!this.owner) throw new Error(\"Not connected\");\n return this.bundlerClient.requestApprovalSupport(token, this.owner, spender, amount);\n }\n\n // Error Decoding (Private)\n private decodeError(error: any): Error {\n const msg = error?.message || \"\";\n const hexMatch = msg.match(/(0x[0-9a-fA-F]+)/);\n\n if (hexMatch) {\n try {\n const decoded = decodeErrorResult({\n abi: [{ inputs: [{ name: \"message\", type: \"string\" }], name: \"Error\", type: \"error\" }],\n data: hexMatch[0] as Hex\n });\n if (decoded.errorName === \"Error\") return new Error(`Smart Account Error: ${decoded.args[0]}`);\n } catch (e) { /* ignore */ }\n }\n\n if (msg.includes(\"AA21\")) return new Error(\"Smart Account: Native transfer failed (ETH missing?)\");\n if (msg.includes(\"AA25\")) return new Error(\"Smart Account: Invalid account nonce\");\n\n return error instanceof Error ? error : new Error(String(error));\n }\n\n // Getters\n getOwner() { return this.owner; }\n getSmartAccount() { return this.smartAccountAddress; }\n}\n\n// Global window types for MetaMask\ndeclare global {\n interface Window {\n ethereum?: {\n request: (args: { method: string; params?: unknown[] }) => Promise<unknown>;\n on: (event: string, callback: (args: unknown) => void) => void;\n removeListener: (event: string, callback: (args: unknown) => void) => void;\n };\n }\n}\n","import { type ChainConfig } from \"./types\";\nimport { type ChainConfig as ChainConfigData } from \"./types/chain\";\nimport { BASE } from \"./chains/Evm/Base\";\nimport { GNOSIS } from \"./chains/Evm/Gnosis\";\nimport { OPTIMISM } from \"./chains/Evm/Optimism\";\nimport { BASE_SEPOLIA as BASE_SEPOLIA_DATA } from \"./chains/Evm/BaseSepolia\";\nimport { AVALANCHE } from \"./chains/Evm/Avalanche\";\nimport { BNB } from \"./chains/Evm/Binance\";\nimport { POLYGON } from \"./chains/Evm/Polygon\";\nimport { ARBITRUM } from \"./chains/Evm/Arbitrum\";\nimport { UNICHAIN } from \"./chains/Evm/Unichain\";\nimport { Monad as MONAD } from \"./chains/Evm/Monad\";\nimport {\n base,\n baseSepolia,\n gnosis,\n optimism,\n avalanche,\n bsc,\n polygon,\n arbitrum,\n unichain,\n monad\n} from \"viem/chains\";\n\nimport { STELLAR } from \"./chains/NoEvm/Stellar\";\n\nfunction mapToSDKConfig(data: ChainConfigData): ChainConfig {\n if (data.nonEvm) {\n return {\n chain: { id: 9000, name: \"Stellar\" }, // Custom ID for Stellar\n tokens: data.assets.map(a => ({\n symbol: a.name,\n decimals: a.decimals,\n address: a.address!\n }))\n };\n }\n if (!data.evm) throw new Error(\"Non-EVM config used in EVM SDK\");\n return {\n chain: data.evm.chain,\n rpcUrl: data.evm.rpcUrl || undefined,\n bundlerUrl: data.evm.bundlerUrl!,\n entryPointAddress: data.evm.entryPointAddress,\n factoryAddress: data.evm.factoryAddress,\n paymasterAddress: data.evm.paymasterAddress,\n tokens: data.assets.map(a => ({\n symbol: a.name,\n decimals: a.decimals,\n address: a.address as `0x${string}`\n }))\n };\n}\n\nexport const BASE_MAINNET: ChainConfig = mapToSDKConfig(BASE);\nexport const OPTIMISM_MAINNET: ChainConfig = mapToSDKConfig(OPTIMISM);\nexport const GNOSIS_MAINNET: ChainConfig = mapToSDKConfig(GNOSIS);\nexport const BASE_SEPOLIA: ChainConfig = mapToSDKConfig(BASE_SEPOLIA_DATA);\nexport const AVALANCHE_MAINNET: ChainConfig = mapToSDKConfig(AVALANCHE);\nexport const BSC_MAINNET: ChainConfig = mapToSDKConfig(BNB);\nexport const POLYGON_MAINNET: ChainConfig = mapToSDKConfig(POLYGON);\nexport const ARBITRUM_MAINNET: ChainConfig = mapToSDKConfig(ARBITRUM);\nexport const UNICHAIN_MAINNET: ChainConfig = mapToSDKConfig(UNICHAIN);\nexport const MONAD_MAINNET: ChainConfig = mapToSDKConfig(MONAD);\nexport const STELLAR_MAINNET: ChainConfig = mapToSDKConfig(STELLAR);\n\nexport const CHAIN_CONFIGS: Record<number, ChainConfig> = {\n [base.id]: BASE_MAINNET,\n [baseSepolia.id]: BASE_SEPOLIA,\n [gnosis.id]: GNOSIS_MAINNET,\n [optimism.id]: OPTIMISM_MAINNET,\n [avalanche.id]: AVALANCHE_MAINNET,\n [bsc.id]: BSC_MAINNET,\n [polygon.id]: POLYGON_MAINNET,\n [arbitrum.id]: ARBITRUM_MAINNET,\n [unichain.id]: UNICHAIN_MAINNET,\n [monad.id]: MONAD_MAINNET,\n 9000: STELLAR_MAINNET\n};\n\n","import { baseSepolia } from \"viem/chains\";\nimport { ChainConfig } from \"../../types/chain.js\";\nimport { BUNDLER_URL } from \"../../constants/bundler\";\n\nexport const BASE_SEPOLIA: ChainConfig = {\n assets: [\n {\n name: \"USDC\",\n decimals: 6,\n address: \"0x036CbD53842c5426634e7929541eC2318f3dCF7e\",\n coingeckoId: \"usd-coin\"\n },\n {\n name: \"ETH\",\n decimals: 18,\n address: \"0x0000000000000000000000000000000000000000\",\n coingeckoId: \"ethereum\"\n }\n ],\n evm: {\n chain: baseSepolia,\n rpcUrl: \"https://sepolia.base.org\",\n supports7702: true,\n erc4337: true,\n bundlerUrl: `${BUNDLER_URL}/rpc?chain=baseSepolia`,\n entryPointAddress: \"0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789\",\n factoryAddress: \"0x9406Cc6185a346906296840746125a0E44976454\",\n // Paymaster optional\n },\n crossChainInformation: {\n circleInformation: {\n supportCirclePaymaster: false,\n aproxFromFee: 0,\n cCTPInformation: {\n supportCCTP: false,\n domain: 0, // Mock\n },\n },\n nearIntentInformation: {\n support: false, // Assuming false for testnet unless known\n assetsId: [],\n needMemo: false\n }\n }\n}\n","import {\n base,\n baseSepolia,\n gnosis,\n optimism,\n optimismSepolia,\n arbitrum,\n polygon,\n bsc,\n avalanche,\n unichain,\n monad\n} from \"viem/chains\";\n\nexport const CHAIN_ID_TO_KEY: Record<string, string> = {\n [base.id]: \"Base\",\n [baseSepolia.id]: \"Base\",\n [gnosis.id]: \"Gnosis\",\n [optimism.id]: \"Optimism\",\n [optimismSepolia.id]: \"Optimism\",\n [arbitrum.id]: \"Arbitrum\",\n [polygon.id]: \"Polygon\",\n [bsc.id]: \"Binance\",\n [avalanche.id]: \"Avalanche\",\n [unichain.id]: \"Unichain\",\n [monad.id]: \"Monad\",\n \"9000\": \"Stellar\"\n};\n","// Core\nexport { AccountAbstraction } from \"./AccountAbstraction\";\nexport { BundlerClient } from \"./BundlerClient\";\n\n// Config & Registry\nexport { BASE_MAINNET, BASE_SEPOLIA, GNOSIS_MAINNET, CHAIN_CONFIGS, OPTIMISM_MAINNET, STELLAR_MAINNET } from \"./chains\";\n\n// Types\nexport type { ChainConfig, Token, UserOperation, UserOpReceipt, GasEstimate, ApprovalSupportResult } from \"./types\";\n\n// Constants (ABIs)\nexport { erc20Abi, smartAccountAbi, entryPointAbi } from \"./constants\";\nexport { CHAIN_ID_TO_KEY } from \"./constants/chains\";\nexport * from \"./services/StellarService\";\nexport { STELLAR } from \"./chains/NoEvm/Stellar\";\n// Services\nexport { TransferManager } from \"./services/TransferManager\";\nexport { NearStrategy, getNearSimulation } from \"./services/near\";\nexport { CCTPStrategy } from \"./services/cctp\";\nexport { StargateStrategy, getStargateSimulation } from \"./services/stargate\";\nexport { uniswapService, UniswapService } from \"./services/uniswap\";\n","import { createPublicClient, http, encodeFunctionData, parseAbi, Address, type Hex } from \"viem\";\nimport { base } from \"viem/chains\";\n\n// Constants for Base Mainnet\nconst UNISWAP_V3_ROUTER = \"0x2626664c2603336E57B271c5C0b26F421741e481\"; // SwapRouter02\nconst UNISWAP_V3_QUOTER = \"0x3d4e44Eb1374240CE5F1B871ab261CD16335B76a\"; // QuoterV2\nconst USDC_ADDRESS = \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\"; // Base USDC\nconst WETH_ADDRESS = \"0x4200000000000000000000000000000000000006\"; // Base WETH\n\n// ABIs\nconst QUOTER_ABI = parseAbi([\n \"function quoteExactOutputSingle(tuple(address tokenIn, address tokenOut, uint256 amount, uint24 fee, uint160 sqrtPriceLimitX96)) external returns (uint256 amountIn, uint160 sqrtPriceX96After, uint32 initializedTicksCrossed, uint256 gasEstimate)\"\n]);\n\nconst ROUTER_ABI = parseAbi([\n \"function exactOutputSingle(tuple(address tokenIn, address tokenOut, uint24 fee, address recipient, uint256 amountOut, uint256 amountInMaximum, uint160 sqrtPriceLimitX96)) external payable returns (uint256 amountIn)\"\n]);\n\nexport class UniswapService {\n private publicClient;\n\n constructor() {\n this.publicClient = createPublicClient({\n chain: base,\n transport: http(\"https://mainnet.base.org\") // Default public RPC\n });\n }\n\n /**\n * Get amount of USDC needed to buy exact amount of ETH\n * @param amountETHWei Amount of ETH (Wei) needed\n */\n async quoteUSDCForETH(amountETHWei: bigint): Promise<bigint> {\n // We want to buy WETH (which is unwrapped to ETH by router or we just keep WETH? \n // Stargate needs NATIVE ETH in msg.value.\n // SwapRouter02 executes swap. If output is WETH, we need to unwrap.\n // OR SwapRouter02 has multicall to unwrapWETH9.\n\n // Simpler: Just swap for WETH.\n // Wait, Stargate needs MSG.VALUE. Smart Account needs to have ETH balance.\n // If we swap to WETH, SA has WETH, not ETH.\n // We need router to unwrap. router.unwrapWETH9(0, recipient).\n\n // For Quoting, we quote USDC -> WETH.\n const poolFee = 500; // 0.05% for USDC/WETH usually? Or 3000 (0.3%)?\n // Base USDC/ETH is likely 0.05% (500) or 0.01% (100). Let's use 500 first.\n\n try {\n const params = {\n tokenIn: USDC_ADDRESS as Address,\n tokenOut: WETH_ADDRESS as Address,\n amount: amountETHWei,\n fee: 500,\n sqrtPriceLimitX96: 0n\n };\n\n const result = await this.publicClient.readContract({\n address: UNISWAP_V3_QUOTER,\n abi: QUOTER_ABI,\n functionName: \"quoteExactOutputSingle\",\n args: [params]\n }) as [bigint, bigint, number, bigint];\n\n const amountIn = result[0];\n // Add 1% slippage/buffer\n return amountIn * 101n / 100n;\n } catch (e) {\n console.error(\"Quote failed\", e);\n throw new Error(\"Failed to quote USDC for ETH swap\");\n }\n }\n\n /**\n * Build tx data for swapping USDC -> ETH\n * Uses SwapRouter02.exactOutputSingle + unwrapWETH9\n */\n buildSwapData(recipient: Address, amountOutETH: bigint, maxAmountInUSDC: bigint): Hex {\n // We need to encode a Multicall:\n // 1. exactOutputSingle(USDC -> WETH) -> Router keeps WETH (recipient = 0x0...02 ?) or Router?\n // 2. unwrapWETH9(minAmount, recipient)\n\n // SwapRouter02 standard pattern for \"Swap to ETH\":\n // 1. Swap USDC -> WETH (recipient = Router)\n // 2. UnwrapWETH9 (recipient = User)\n\n const swapParams = {\n tokenIn: USDC_ADDRESS as Address,\n tokenOut: WETH_ADDRESS as Address,\n fee: 500,\n recipient: \"0x0000000000000000000000000000000000000000\" as Address, // Router address constant for internal unwrap? usually encoded as address(0) or router itself\n amountOut: amountOutETH,\n amountInMaximum: maxAmountInUSDC,\n sqrtPriceLimitX96: 0n\n };\n\n // Note: For SwapRouter02, if you want to unwrap, you usually set recipient to 0x000...000 during the swap if processing internally,\n // OR simply set recipient to ROUTER, then call unwrap.\n // But verifying standard Router02 multicall:\n // call[0]: exactOutputSingle(...) recipient = 0x0000..0000 (indicates msg.sender usually? No, in router context usually it means Router holds it)\n // call[1]: unwrapWETH9(0, finalRecipient)\n\n // Let's assume standard SwapRouter02 behavior supports Multicall.\n // We need to encode the function calls.\n\n const swapCalldata = encodeFunctionData({\n abi: ROUTER_ABI,\n functionName: \"exactOutputSingle\",\n args: [swapParams]\n });\n\n const unwrapCalldata = encodeFunctionData({\n abi: parseAbi([\"function unwrapWETH9(uint256 amountMinimum, address recipient) payable\"]),\n functionName: \"unwrapWETH9\",\n args: [amountOutETH, recipient]\n });\n\n const multicallCalldata = encodeFunctionData({\n abi: parseAbi([\"function multicall(bytes[] data) payable returns (bytes[])\"]),\n functionName: \"multicall\",\n args: [[swapCalldata, unwrapCalldata]]\n });\n\n return multicallCalldata;\n }\n\n getRouterAddress(): Address {\n return UNISWAP_V3_ROUTER;\n }\n\n getUSDCAddress(): Address {\n return USDC_ADDRESS;\n }\n}\n\nexport const uniswapService = new UniswapService();\n"]}
|