From ecde46d09133a46253c4a878be2cc69afd858352 Mon Sep 17 00:00:00 2001 From: Michael Feng Date: Thu, 26 Jan 2023 20:56:23 -0800 Subject: [PATCH] (feat) initial commit from hummingbot repo --- .dockerignore | 6 + .eslintignore | 2 + .eslintrc.js | 24 + .gitignore | 9 + .prettierignore | 5 + .prettierrc | 5 + Changelog.md | 130 + Dockerfile | 40 + LICENSE | 201 - README.md | 128 + bin/docker-start.sh | 9 + docs/swagger/amm-liquidity-routes.yml | 101 + docs/swagger/amm-routes.yml | 221 + docs/swagger/connectors-routes.yml | 10 + docs/swagger/cosmos-routes.yml | 57 + docs/swagger/definitions.yml | 1580 + docs/swagger/evm-routes.yml | 104 + docs/swagger/main-routes.yml | 37 + docs/swagger/near-routes.yml | 63 + docs/swagger/network-routes.yml | 82 + docs/swagger/swagger.yml | 40 + docs/swagger/wallet-routes.yml | 46 + docs/testing.md | 196 + hooks/README.md | 5 + hooks/build | 7 + jest.config.js | 39 + manual-tests/curl.sh | 205 + manual-tests/requests/add_avalanche_key.json | 5 + manual-tests/requests/add_bsc_key.json | 5 + manual-tests/requests/add_cronos_key.json | 5 + manual-tests/requests/add_ethereum_key.json | 5 + manual-tests/requests/add_near_key.json | 6 + manual-tests/requests/avalanche_approve.json | 7 + manual-tests/requests/avalanche_nonce.json | 5 + .../avalanche_traderjoe_allowances.json | 7 + .../requests/avalanche_traderjoe_trade.json | 11 + manual-tests/requests/bsc_approve.json | 7 + manual-tests/requests/bsc_balances.json | 6 + manual-tests/requests/bsc_nonce.json | 5 + .../requests/bsc_pancakeswap_trade.json | 10 + .../requests/bsc_sushiswap_trade.json | 10 + manual-tests/requests/config_update.json | 4 + manual-tests/requests/cronos_approve.json | 7 + manual-tests/requests/cronos_balances.json | 6 + manual-tests/requests/cronos_mmf_trade.json | 10 + manual-tests/requests/cronos_nonce.json | 5 + manual-tests/requests/cronos_vvs_trade.json | 10 + manual-tests/requests/eth_allowances.json | 7 + manual-tests/requests/eth_approve.json | 7 + .../requests/eth_approve_with_fees.json | 7 + .../requests/eth_approve_with_nonce.json | 7 + manual-tests/requests/eth_balances.json | 4 + manual-tests/requests/eth_nonce.json | 5 + manual-tests/requests/eth_perp_approve.json | 7 + manual-tests/requests/eth_poll.json | 3 + .../requests/eth_remove_allowance.json | 6 + .../requests/eth_uniswap_add_liquidity.json | 13 + .../requests/eth_uniswap_pool_price.json | 10 + .../requests/eth_uniswap_position.json | 7 + manual-tests/requests/eth_uniswap_price.json | 6 + manual-tests/requests/eth_uniswap_trade.json | 10 + .../requests/eth_uniswap_trade_with_fees.json | 9 + manual-tests/requests/harmony_dfk_trade.json | 10 + .../harmony_testnet_defira_trade.json | 10 + .../mmf_cronos_mainnet_allowance.json | 7 + .../requests/near_mainnet_ref_trade.json | 10 + .../requests/near_network_balances.json | 6 + manual-tests/requests/near_post_poll.json | 5 + manual-tests/requests/network_balances.json | 6 + manual-tests/requests/network_poll.json | 5 + manual-tests/requests/perp_position.json | 8 + manual-tests/requests/perp_prices.json | 7 + manual-tests/requests/perp_trade_open.json | 10 + .../requests/price_bsc_pancakeswap.json | 9 + manual-tests/requests/price_defira.json | 9 + manual-tests/requests/price_dfk.json | 9 + manual-tests/requests/price_mad_meerkat.json | 9 + manual-tests/requests/price_pangolin.json | 9 + manual-tests/requests/price_ref.json | 9 + manual-tests/requests/price_traderjoe.json | 9 + manual-tests/requests/price_uniswap.json | 9 + manual-tests/requests/price_vvs.json | 9 + .../requests/remove_avalanche_key.json | 4 + manual-tests/requests/remove_bsc_key.json | 4 + manual-tests/requests/remove_cronos_key.json | 4 + .../requests/remove_ethereum_key.json | 4 + manual-tests/requests/remove_near_key.json | 4 + manual-tests/requests/status_request.json | 4 + nodemon.json | 11 + package.json | 141 + setup/generate_conf.sh | 22 + src/@types/buffer-layout.d.ts | 8 + src/@types/cycle.d.ts | 3 + src/amm/amm.controllers.ts | 252 + src/amm/amm.requests.ts | 238 + src/amm/amm.routes.ts | 284 + src/amm/amm.validators.ts | 339 + src/app.ts | 175 + src/chains/avalanche/avalanche.ts | 128 + src/chains/avalanche/avalanche.validators.ts | 42 + .../avalanche/avalanche_tokens_fuji.json | 37 + src/chains/avalanche/avanlanche_tokens.json | 1573 + .../bep20_tokens_mainnet.json | 990 + .../bep20_tokens_testnet.json | 53 + .../binance-smart-chain.ts | 116 + src/chains/cosmos/cosmos-middlewares.ts | 15 + src/chains/cosmos/cosmos.config.ts | 39 + src/chains/cosmos/cosmos.controllers.ts | 87 + src/chains/cosmos/cosmos.requests.ts | 37 + src/chains/cosmos/cosmos.routes.ts | 74 + src/chains/cosmos/cosmos.ts | 87 + src/chains/cosmos/cosmos.validators.ts | 36 + src/chains/cronos/cronos.ts | 114 + src/chains/cronos/mainnet_beta.json | 720 + src/chains/cronos/testnet.json | 48 + src/chains/ethereum/arbitrum_one_tokens.json | 2798 ++ .../ethereum/arbitrum_rinkeby_tokens.json | 152 + .../ethereum/balancer/balancer.config.ts | 19 + src/chains/ethereum/erc20_tokens_goerli.json | 148 + src/chains/ethereum/erc20_tokens_kovan.json | 83 + src/chains/ethereum/erc20_tokens_mainnet.json | 37707 ++++++++++++++++ src/chains/ethereum/erc20_tokens_ropsten.json | 17 + src/chains/ethereum/ethereum.config.ts | 60 + src/chains/ethereum/ethereum.controllers.ts | 449 + src/chains/ethereum/ethereum.requests.ts | 117 + src/chains/ethereum/ethereum.ts | 195 + src/chains/ethereum/ethereum.validators.ts | 133 + src/chains/ethereum/optimism_tokens.json | 3152 ++ src/chains/harmony/harmony.config.ts | 57 + src/chains/harmony/harmony.ts | 169 + src/chains/harmony/harmony.validators.ts | 107 + src/chains/harmony/harmony_tokens_defira.json | 93 + .../harmony_tokens_defira_testnet.json | 29 + .../harmony/harmony_tokens_sushiswap.json | 1050 + .../harmony_tokens_sushiswap_testnet.json | 70 + src/chains/near/near.abi.json | 4 + src/chains/near/near.base.ts | 344 + src/chains/near/near.config.ts | 47 + src/chains/near/near.controllers.ts | 169 + src/chains/near/near.requests.ts | 54 + src/chains/near/near.routes.ts | 81 + src/chains/near/near.ts | 102 + src/chains/near/near.validators.ts | 64 + src/chains/near/near_testnet_tokens.json | 1494 + src/chains/near/near_tokens.json | 2018 + src/chains/polygon/polygon.ts | 90 + src/chains/polygon/polygon.validators.ts | 42 + .../polygon/polygon_tokens_mainnet.json | 25880 +++++++++++ src/chains/polygon/polygon_tokens_mumbai.json | 23 + src/connectors/connectors.routes.ts | 102 + ...cronos-base-uniswapish-connector.config.ts | 38 + .../cronos-base-uniswapish-connector.ts | 386 + .../defikingdoms/defikingdoms.config.ts | 31 + src/connectors/defikingdoms/defikingdoms.ts | 291 + .../defikingdoms/defikingdoms_router_abi.json | 1625 + src/connectors/defira/defira.config.ts | 36 + src/connectors/defira/defira.ts | 322 + .../defira/defira_v2_router_abi.json | 985 + src/connectors/mad_meerkat/abi.json | 1080 + .../mad_meerkat/mad_meerkat.config.ts | 10 + src/connectors/mad_meerkat/mad_meerkat.ts | 136 + src/connectors/openocean/openocean.config.ts | 29 + src/connectors/openocean/openocean.ts | 412 + .../pancakeswap/pancakeswap.config.ts | 31 + src/connectors/pancakeswap/pancakeswap.ts | 316 + .../pancakeswap/pancakeswap_router_abi.json | 975 + src/connectors/pangolin/IPangolinRouter.json | 962 + src/connectors/pangolin/pangolin.config.ts | 31 + src/connectors/pangolin/pangolin.ts | 295 + src/connectors/perp/perp.config.ts | 18 + src/connectors/perp/perp.controllers.ts | 229 + src/connectors/perp/perp.ts | 293 + src/connectors/quickswap/quickswap.config.ts | 29 + src/connectors/quickswap/quickswap.ts | 294 + src/connectors/ref/ref.config.ts | 35 + src/connectors/ref/ref.controllers.ts | 315 + src/connectors/ref/ref.helper.ts | 131 + src/connectors/ref/ref.ts | 316 + src/connectors/sushiswap/sushiswap.config.ts | 39 + src/connectors/sushiswap/sushiswap.ts | 300 + .../sushiswap/sushiswap_router.json | 1924 + src/connectors/traderjoe/IJoeRouter02.json | 437 + src/connectors/traderjoe/traderjoe.config.ts | 31 + src/connectors/traderjoe/traderjoe.ts | 295 + src/connectors/uniswap/uniswap.config.ts | 58 + src/connectors/uniswap/uniswap.controllers.ts | 630 + src/connectors/uniswap/uniswap.lp.helper.ts | 466 + .../uniswap/uniswap.lp.interfaces.ts | 52 + src/connectors/uniswap/uniswap.lp.ts | 257 + src/connectors/uniswap/uniswap.ts | 323 + .../uniswap/uniswap_v2_router_abi.json | 1924 + src/connectors/vvs/abi.json | 973 + src/connectors/vvs/vvs.config.ts | 7 + src/connectors/vvs/vvs.ts | 136 + src/evm/evm.requests.ts | 58 + src/evm/evm.routes.ts | 119 + src/https.ts | 41 + src/index.ts | 3 + src/network/network.controllers.ts | 166 + src/network/network.requests.ts | 57 + src/network/network.routes.ts | 110 + src/paths.ts | 17 + src/services/base.ts | 114 + src/services/common-interfaces.ts | 680 + .../config-manager-cert-passphrase.ts | 27 + src/services/config-manager-types.ts | 4 + src/services/config-manager-v2.ts | 452 + src/services/config-migration/migrations.ts | 17 + src/services/config/config.requests.ts | 4 + src/services/config/config.routes.ts | 48 + src/services/config/config.validators.ts | 83 + src/services/connection-manager.ts | 126 + src/services/cosmos-base.ts | 367 + src/services/error-handler.ts | 207 + src/services/ethereum-base.ts | 393 + src/services/ethereum.abi.json | 600 + src/services/evm.nonce.ts | 546 + src/services/evm.tx-storage.ts | 70 + src/services/local-storage.ts | 87 + src/services/logger.ts | 92 + src/services/refcounting-closeable.ts | 179 + .../schema/configuration-root-schema.json | 28 + src/services/schema/cosmos-schema.json | 30 + .../schema/cronos-connector-schema.json | 25 + src/services/schema/database-schema.json | 10 + src/services/schema/defikingdoms-schema.json | 25 + src/services/schema/defira-schema.json | 31 + .../schema/ethereum-gas-station-schema.json | 12 + src/services/schema/ethereum-schema.json | 34 + src/services/schema/harmony-schema.json | 36 + src/services/schema/logging-schema.json | 10 + src/services/schema/openocean-schema.json | 30 + src/services/schema/pangolin-schema.json | 25 + src/services/schema/perp-schema.json | 10 + src/services/schema/quickswap-schema.json | 30 + src/services/schema/ref-schema.json | 25 + src/services/schema/server-schema.json | 13 + src/services/schema/ssl-schema.json | 11 + src/services/schema/sushiswap-schema.json | 36 + src/services/schema/telemetry-schema.json | 8 + src/services/schema/traderjoe-schema.json | 30 + src/services/schema/uniswap-schema.json | 36 + src/services/swagger-manager.ts | 59 + src/services/telemetry-transport.ts | 104 + src/services/validators.ts | 182 + src/services/wallet/wallet.controllers.ts | 176 + src/services/wallet/wallet.requests.ts | 20 + src/services/wallet/wallet.routes.ts | 57 + src/services/wallet/wallet.validators.ts | 131 + src/templates/avalanche.yml | 19 + src/templates/binance-smart-chain.yml | 19 + src/templates/cosmos.yml | 13 + src/templates/cronos.yml | 19 + src/templates/database.yml | 2 + src/templates/defikingdoms.yml | 14 + src/templates/defira.yml | 18 + src/templates/ethereum.yml | 37 + src/templates/harmony.yml | 20 + src/templates/logging.yml | 6 + src/templates/mad_meerkat.yml | 14 + src/templates/near.yml | 19 + src/templates/openocean.yml | 14 + src/templates/pancakeswap.yml | 16 + src/templates/pangolin.yml | 16 + src/templates/perp.yml | 6 + src/templates/polygon.yml | 17 + src/templates/quickswap.yml | 16 + src/templates/ref.yml | 16 + src/templates/root.yml | 109 + src/templates/server.yml | 10 + src/templates/ssl.yml | 8 + src/templates/sushiswap.yml | 26 + src/templates/telemetry.yml | 2 + src/templates/traderjoe.yml | 16 + src/templates/uniswap.yml | 37 + src/templates/vvs.yml | 14 + startup.sh | 7 + test-scripts/README.md | 6 + test-scripts/cosmos.test.ts | 73 + test-scripts/ethereum.test.base.ts | 133 + test-scripts/harmony.test.ts | 176 + test-scripts/test.base.ts | 72 + test-scripts/uniswap.v2.test.ts | 124 + test/amm/amm.validators.test.ts | 192 + test/app.test.ts | 37 + .../chains/avalanche/avalanche.routes.test.ts | 379 + test/chains/avalanche/avalanche.test.ts | 56 + .../avalanche/avalanche.validators.test.ts | 42 + .../openocean/openocean.routes.test.ts | 705 + .../avalanche/openocean/openocean.test.ts | 83 + .../pangolin/pangolin.routes.test.ts | 561 + .../avalanche/pangolin/pangolin.test.ts | 148 + .../avalanche/traderjoe/traderjoe.test.ts | 148 + .../binance-smart-chain.routes.test.ts | 376 + .../pancakeswap/pancakeswap.routes.test.ts | 561 + .../pancakeswap/pancakeswap.test.ts | 141 + test/chains/cosmos/cosmos.routes.test.ts | 127 + test/chains/cosmos/cosmos.validators.test.ts | 51 + .../cosmos/fixtures/getTransaction.json | 1 + test/chains/cronos/cronos.routes.test.ts | 371 + .../mad_meerkat/mad-meerkat.routes.test.ts | 560 + .../cronos/mad_meerkat/mad-meerkat.test.ts | 146 + test/chains/cronos/vvs/vvs.routes.test.ts | 560 + test/chains/cronos/vvs/vvs.test.ts | 146 + .../ethereum/ethereum.controllers.test.ts | 292 + test/chains/ethereum/ethereum.routes.test.ts | 634 + .../ethereum/ethereum.validators.test.ts | 196 + test/chains/ethereum/evm.nonce.test.ts | 331 + .../transaction-out-of-gas-receipt.json | 18 + .../fixtures/transaction-out-of-gas.json | 21 + .../transaction-succesful-receipt.json | 55 + .../fixtures/transaction-succesful.json | 31 + test/chains/ethereum/perp/perp.routes.test.ts | 356 + test/chains/ethereum/perp/perp.test.ts | 187 + .../sushiswap/sushiswap.routes.test.ts | 669 + .../ethereum/sushiswap/sushiswap.test.ts | 135 + .../uniswap/uniswap.lp.routes.test.ts | 442 + .../ethereum/uniswap/uniswap.lp.test.ts | 285 + .../ethereum/uniswap/uniswap.routes.test.ts | 678 + test/chains/ethereum/uniswap/uniswap.test.ts | 156 + .../defikingdoms/defikingdoms.routes.test.ts | 669 + .../harmony/defikingdoms/defikingdoms.test.ts | 151 + .../harmony/defira/defira.routes.test.ts | 669 + test/chains/harmony/defira/defira.test.ts | 182 + .../harmony/harmony.controllers.test.ts | 276 + test/chains/harmony/harmony.routes.test.ts | 389 + test/chains/harmony/harmony.test.ts | 62 + .../chains/harmony/harmony.validators.test.ts | 203 + test/chains/near/fixtures/getTokenList.json | 47 + test/chains/near/fixtures/getTransaction.json | 86 + test/chains/near/near.controllers.test.ts | 124 + test/chains/near/near.routes.test.ts | 196 + test/chains/near/near.validators.test.ts | 159 + test/chains/near/ref/ref.route.test.ts | 708 + test/chains/near/ref/ref.test.ts | 339 + test/chains/polygon/polygon.test.ts | 44 + .../chains/polygon/polygon.validators.test.ts | 57 + .../polygon/quickswap/quickswap.route.test.ts | 561 + .../polygon/quickswap/quickswap.test.ts | 146 + test/config.util.ts | 47 + test/connectors/connectors.routes.test.ts | 13 + test/evm.nonce.mock.ts | 22 + test/network/network.routes.test.ts | 347 + .../EthereumV2.postman_collection.json | 105 + ...penocean-GatewayV2.postman_collection.json | 57 + .../Uniswap-GatewayV2.postman_collection.json | 72 + .../GatewayV2.postman_environment.json | 24 + test/services/base.test.ts | 70 + .../config-manager-cert-passphrase.test.ts | 39 + test/services/config-manager-v2.test.ts | 238 + test/services/config-validators.test.ts | 142 + .../data/config-manager-v2/test1/defira.yaml | 15 + .../data/config-manager-v2/test1/ethereum.yml | 15 + .../test1/invalid-defira.yml | 18 + .../test1/invalid-root-2.yml | 8 + .../test1/invalid-root-3.yml | 8 + .../test1/invalid-root-4.yml | 8 + .../test1/invalid-root-defira.yml | 5 + .../config-manager-v2/test1/invalid-root.yml | 11 + .../config-manager-v2/test1/invalid-ssl.yml | 4 + .../data/config-manager-v2/test1/root.yml | 61 + .../data/config-manager-v2/test1/root2.yml | 14 + .../data/config-manager-v2/test1/ssl.yml | 3 + .../config-manager-v2/test1/telemetry.yml | 2 + test/services/error-handler.test.ts | 154 + test/services/evm.nonce.test.ts | 182 + test/services/evm.tx-storage.test.ts | 121 + test/services/local-storage.test.ts | 92 + test/services/logger.test.ts | 32 + test/services/patch.test.ts | 141 + test/services/patch.ts | 80 + test/services/refcounting-closeable.test.ts | 180 + test/services/swagger-manager.test.ts | 134 + test/services/validators.test.ts | 199 + .../wallet/wallet.controllers.test.ts | 385 + test/services/wallet/wallet.routes.test.ts | 308 + .../services/wallet/wallet.validators.test.ts | 299 + test/setup.ts | 7 + test/setupTests.js | 2 + test/teardown.ts | 6 + tsconfig.json | 36 + yarn.lock | 15149 +++++++ 382 files changed, 144680 insertions(+), 201 deletions(-) create mode 100644 .dockerignore create mode 100644 .eslintignore create mode 100644 .eslintrc.js create mode 100644 .gitignore create mode 100644 .prettierignore create mode 100644 .prettierrc create mode 100644 Changelog.md create mode 100644 Dockerfile delete mode 100644 LICENSE create mode 100644 README.md create mode 100755 bin/docker-start.sh create mode 100644 docs/swagger/amm-liquidity-routes.yml create mode 100644 docs/swagger/amm-routes.yml create mode 100644 docs/swagger/connectors-routes.yml create mode 100644 docs/swagger/cosmos-routes.yml create mode 100644 docs/swagger/definitions.yml create mode 100644 docs/swagger/evm-routes.yml create mode 100644 docs/swagger/main-routes.yml create mode 100644 docs/swagger/near-routes.yml create mode 100644 docs/swagger/network-routes.yml create mode 100644 docs/swagger/swagger.yml create mode 100644 docs/swagger/wallet-routes.yml create mode 100644 docs/testing.md create mode 100644 hooks/README.md create mode 100644 hooks/build create mode 100644 jest.config.js create mode 100644 manual-tests/curl.sh create mode 100644 manual-tests/requests/add_avalanche_key.json create mode 100644 manual-tests/requests/add_bsc_key.json create mode 100644 manual-tests/requests/add_cronos_key.json create mode 100644 manual-tests/requests/add_ethereum_key.json create mode 100644 manual-tests/requests/add_near_key.json create mode 100644 manual-tests/requests/avalanche_approve.json create mode 100644 manual-tests/requests/avalanche_nonce.json create mode 100644 manual-tests/requests/avalanche_traderjoe_allowances.json create mode 100644 manual-tests/requests/avalanche_traderjoe_trade.json create mode 100644 manual-tests/requests/bsc_approve.json create mode 100644 manual-tests/requests/bsc_balances.json create mode 100644 manual-tests/requests/bsc_nonce.json create mode 100644 manual-tests/requests/bsc_pancakeswap_trade.json create mode 100644 manual-tests/requests/bsc_sushiswap_trade.json create mode 100644 manual-tests/requests/config_update.json create mode 100644 manual-tests/requests/cronos_approve.json create mode 100644 manual-tests/requests/cronos_balances.json create mode 100644 manual-tests/requests/cronos_mmf_trade.json create mode 100644 manual-tests/requests/cronos_nonce.json create mode 100644 manual-tests/requests/cronos_vvs_trade.json create mode 100644 manual-tests/requests/eth_allowances.json create mode 100644 manual-tests/requests/eth_approve.json create mode 100644 manual-tests/requests/eth_approve_with_fees.json create mode 100644 manual-tests/requests/eth_approve_with_nonce.json create mode 100644 manual-tests/requests/eth_balances.json create mode 100644 manual-tests/requests/eth_nonce.json create mode 100644 manual-tests/requests/eth_perp_approve.json create mode 100644 manual-tests/requests/eth_poll.json create mode 100644 manual-tests/requests/eth_remove_allowance.json create mode 100644 manual-tests/requests/eth_uniswap_add_liquidity.json create mode 100644 manual-tests/requests/eth_uniswap_pool_price.json create mode 100644 manual-tests/requests/eth_uniswap_position.json create mode 100644 manual-tests/requests/eth_uniswap_price.json create mode 100644 manual-tests/requests/eth_uniswap_trade.json create mode 100644 manual-tests/requests/eth_uniswap_trade_with_fees.json create mode 100644 manual-tests/requests/harmony_dfk_trade.json create mode 100644 manual-tests/requests/harmony_testnet_defira_trade.json create mode 100644 manual-tests/requests/mmf_cronos_mainnet_allowance.json create mode 100644 manual-tests/requests/near_mainnet_ref_trade.json create mode 100644 manual-tests/requests/near_network_balances.json create mode 100644 manual-tests/requests/near_post_poll.json create mode 100644 manual-tests/requests/network_balances.json create mode 100644 manual-tests/requests/network_poll.json create mode 100644 manual-tests/requests/perp_position.json create mode 100644 manual-tests/requests/perp_prices.json create mode 100644 manual-tests/requests/perp_trade_open.json create mode 100644 manual-tests/requests/price_bsc_pancakeswap.json create mode 100644 manual-tests/requests/price_defira.json create mode 100644 manual-tests/requests/price_dfk.json create mode 100644 manual-tests/requests/price_mad_meerkat.json create mode 100644 manual-tests/requests/price_pangolin.json create mode 100644 manual-tests/requests/price_ref.json create mode 100644 manual-tests/requests/price_traderjoe.json create mode 100644 manual-tests/requests/price_uniswap.json create mode 100644 manual-tests/requests/price_vvs.json create mode 100644 manual-tests/requests/remove_avalanche_key.json create mode 100644 manual-tests/requests/remove_bsc_key.json create mode 100644 manual-tests/requests/remove_cronos_key.json create mode 100644 manual-tests/requests/remove_ethereum_key.json create mode 100644 manual-tests/requests/remove_near_key.json create mode 100644 manual-tests/requests/status_request.json create mode 100644 nodemon.json create mode 100644 package.json create mode 100755 setup/generate_conf.sh create mode 100644 src/@types/buffer-layout.d.ts create mode 100644 src/@types/cycle.d.ts create mode 100644 src/amm/amm.controllers.ts create mode 100644 src/amm/amm.requests.ts create mode 100644 src/amm/amm.routes.ts create mode 100644 src/amm/amm.validators.ts create mode 100644 src/app.ts create mode 100644 src/chains/avalanche/avalanche.ts create mode 100644 src/chains/avalanche/avalanche.validators.ts create mode 100644 src/chains/avalanche/avalanche_tokens_fuji.json create mode 100644 src/chains/avalanche/avanlanche_tokens.json create mode 100755 src/chains/binance-smart-chain/bep20_tokens_mainnet.json create mode 100755 src/chains/binance-smart-chain/bep20_tokens_testnet.json create mode 100644 src/chains/binance-smart-chain/binance-smart-chain.ts create mode 100644 src/chains/cosmos/cosmos-middlewares.ts create mode 100644 src/chains/cosmos/cosmos.config.ts create mode 100644 src/chains/cosmos/cosmos.controllers.ts create mode 100644 src/chains/cosmos/cosmos.requests.ts create mode 100644 src/chains/cosmos/cosmos.routes.ts create mode 100644 src/chains/cosmos/cosmos.ts create mode 100644 src/chains/cosmos/cosmos.validators.ts create mode 100755 src/chains/cronos/cronos.ts create mode 100755 src/chains/cronos/mainnet_beta.json create mode 100755 src/chains/cronos/testnet.json create mode 100644 src/chains/ethereum/arbitrum_one_tokens.json create mode 100644 src/chains/ethereum/arbitrum_rinkeby_tokens.json create mode 100644 src/chains/ethereum/balancer/balancer.config.ts create mode 100644 src/chains/ethereum/erc20_tokens_goerli.json create mode 100644 src/chains/ethereum/erc20_tokens_kovan.json create mode 100644 src/chains/ethereum/erc20_tokens_mainnet.json create mode 100644 src/chains/ethereum/erc20_tokens_ropsten.json create mode 100644 src/chains/ethereum/ethereum.config.ts create mode 100644 src/chains/ethereum/ethereum.controllers.ts create mode 100644 src/chains/ethereum/ethereum.requests.ts create mode 100644 src/chains/ethereum/ethereum.ts create mode 100644 src/chains/ethereum/ethereum.validators.ts create mode 100644 src/chains/ethereum/optimism_tokens.json create mode 100644 src/chains/harmony/harmony.config.ts create mode 100644 src/chains/harmony/harmony.ts create mode 100644 src/chains/harmony/harmony.validators.ts create mode 100644 src/chains/harmony/harmony_tokens_defira.json create mode 100644 src/chains/harmony/harmony_tokens_defira_testnet.json create mode 100644 src/chains/harmony/harmony_tokens_sushiswap.json create mode 100644 src/chains/harmony/harmony_tokens_sushiswap_testnet.json create mode 100644 src/chains/near/near.abi.json create mode 100644 src/chains/near/near.base.ts create mode 100644 src/chains/near/near.config.ts create mode 100644 src/chains/near/near.controllers.ts create mode 100644 src/chains/near/near.requests.ts create mode 100644 src/chains/near/near.routes.ts create mode 100644 src/chains/near/near.ts create mode 100644 src/chains/near/near.validators.ts create mode 100644 src/chains/near/near_testnet_tokens.json create mode 100644 src/chains/near/near_tokens.json create mode 100644 src/chains/polygon/polygon.ts create mode 100644 src/chains/polygon/polygon.validators.ts create mode 100644 src/chains/polygon/polygon_tokens_mainnet.json create mode 100644 src/chains/polygon/polygon_tokens_mumbai.json create mode 100644 src/connectors/connectors.routes.ts create mode 100644 src/connectors/cronos-base/cronos-base-uniswapish-connector.config.ts create mode 100644 src/connectors/cronos-base/cronos-base-uniswapish-connector.ts create mode 100644 src/connectors/defikingdoms/defikingdoms.config.ts create mode 100644 src/connectors/defikingdoms/defikingdoms.ts create mode 100644 src/connectors/defikingdoms/defikingdoms_router_abi.json create mode 100644 src/connectors/defira/defira.config.ts create mode 100644 src/connectors/defira/defira.ts create mode 100644 src/connectors/defira/defira_v2_router_abi.json create mode 100644 src/connectors/mad_meerkat/abi.json create mode 100644 src/connectors/mad_meerkat/mad_meerkat.config.ts create mode 100644 src/connectors/mad_meerkat/mad_meerkat.ts create mode 100644 src/connectors/openocean/openocean.config.ts create mode 100644 src/connectors/openocean/openocean.ts create mode 100644 src/connectors/pancakeswap/pancakeswap.config.ts create mode 100644 src/connectors/pancakeswap/pancakeswap.ts create mode 100644 src/connectors/pancakeswap/pancakeswap_router_abi.json create mode 100644 src/connectors/pangolin/IPangolinRouter.json create mode 100644 src/connectors/pangolin/pangolin.config.ts create mode 100644 src/connectors/pangolin/pangolin.ts create mode 100644 src/connectors/perp/perp.config.ts create mode 100644 src/connectors/perp/perp.controllers.ts create mode 100644 src/connectors/perp/perp.ts create mode 100644 src/connectors/quickswap/quickswap.config.ts create mode 100644 src/connectors/quickswap/quickswap.ts create mode 100644 src/connectors/ref/ref.config.ts create mode 100644 src/connectors/ref/ref.controllers.ts create mode 100644 src/connectors/ref/ref.helper.ts create mode 100644 src/connectors/ref/ref.ts create mode 100644 src/connectors/sushiswap/sushiswap.config.ts create mode 100644 src/connectors/sushiswap/sushiswap.ts create mode 100644 src/connectors/sushiswap/sushiswap_router.json create mode 100644 src/connectors/traderjoe/IJoeRouter02.json create mode 100644 src/connectors/traderjoe/traderjoe.config.ts create mode 100644 src/connectors/traderjoe/traderjoe.ts create mode 100644 src/connectors/uniswap/uniswap.config.ts create mode 100644 src/connectors/uniswap/uniswap.controllers.ts create mode 100644 src/connectors/uniswap/uniswap.lp.helper.ts create mode 100644 src/connectors/uniswap/uniswap.lp.interfaces.ts create mode 100644 src/connectors/uniswap/uniswap.lp.ts create mode 100644 src/connectors/uniswap/uniswap.ts create mode 100644 src/connectors/uniswap/uniswap_v2_router_abi.json create mode 100644 src/connectors/vvs/abi.json create mode 100644 src/connectors/vvs/vvs.config.ts create mode 100644 src/connectors/vvs/vvs.ts create mode 100644 src/evm/evm.requests.ts create mode 100644 src/evm/evm.routes.ts create mode 100644 src/https.ts create mode 100644 src/index.ts create mode 100644 src/network/network.controllers.ts create mode 100644 src/network/network.requests.ts create mode 100644 src/network/network.routes.ts create mode 100644 src/paths.ts create mode 100644 src/services/base.ts create mode 100644 src/services/common-interfaces.ts create mode 100644 src/services/config-manager-cert-passphrase.ts create mode 100644 src/services/config-manager-types.ts create mode 100644 src/services/config-manager-v2.ts create mode 100644 src/services/config-migration/migrations.ts create mode 100644 src/services/config/config.requests.ts create mode 100644 src/services/config/config.routes.ts create mode 100644 src/services/config/config.validators.ts create mode 100644 src/services/connection-manager.ts create mode 100644 src/services/cosmos-base.ts create mode 100644 src/services/error-handler.ts create mode 100644 src/services/ethereum-base.ts create mode 100644 src/services/ethereum.abi.json create mode 100644 src/services/evm.nonce.ts create mode 100644 src/services/evm.tx-storage.ts create mode 100644 src/services/local-storage.ts create mode 100644 src/services/logger.ts create mode 100644 src/services/refcounting-closeable.ts create mode 100644 src/services/schema/configuration-root-schema.json create mode 100644 src/services/schema/cosmos-schema.json create mode 100644 src/services/schema/cronos-connector-schema.json create mode 100644 src/services/schema/database-schema.json create mode 100644 src/services/schema/defikingdoms-schema.json create mode 100644 src/services/schema/defira-schema.json create mode 100644 src/services/schema/ethereum-gas-station-schema.json create mode 100644 src/services/schema/ethereum-schema.json create mode 100644 src/services/schema/harmony-schema.json create mode 100644 src/services/schema/logging-schema.json create mode 100644 src/services/schema/openocean-schema.json create mode 100644 src/services/schema/pangolin-schema.json create mode 100644 src/services/schema/perp-schema.json create mode 100644 src/services/schema/quickswap-schema.json create mode 100644 src/services/schema/ref-schema.json create mode 100644 src/services/schema/server-schema.json create mode 100644 src/services/schema/ssl-schema.json create mode 100644 src/services/schema/sushiswap-schema.json create mode 100644 src/services/schema/telemetry-schema.json create mode 100644 src/services/schema/traderjoe-schema.json create mode 100644 src/services/schema/uniswap-schema.json create mode 100644 src/services/swagger-manager.ts create mode 100644 src/services/telemetry-transport.ts create mode 100644 src/services/validators.ts create mode 100644 src/services/wallet/wallet.controllers.ts create mode 100644 src/services/wallet/wallet.requests.ts create mode 100644 src/services/wallet/wallet.routes.ts create mode 100644 src/services/wallet/wallet.validators.ts create mode 100644 src/templates/avalanche.yml create mode 100644 src/templates/binance-smart-chain.yml create mode 100644 src/templates/cosmos.yml create mode 100644 src/templates/cronos.yml create mode 100644 src/templates/database.yml create mode 100644 src/templates/defikingdoms.yml create mode 100644 src/templates/defira.yml create mode 100644 src/templates/ethereum.yml create mode 100644 src/templates/harmony.yml create mode 100644 src/templates/logging.yml create mode 100644 src/templates/mad_meerkat.yml create mode 100644 src/templates/near.yml create mode 100644 src/templates/openocean.yml create mode 100644 src/templates/pancakeswap.yml create mode 100644 src/templates/pangolin.yml create mode 100644 src/templates/perp.yml create mode 100644 src/templates/polygon.yml create mode 100644 src/templates/quickswap.yml create mode 100644 src/templates/ref.yml create mode 100644 src/templates/root.yml create mode 100644 src/templates/server.yml create mode 100644 src/templates/ssl.yml create mode 100644 src/templates/sushiswap.yml create mode 100644 src/templates/telemetry.yml create mode 100644 src/templates/traderjoe.yml create mode 100644 src/templates/uniswap.yml create mode 100644 src/templates/vvs.yml create mode 100644 startup.sh create mode 100644 test-scripts/README.md create mode 100644 test-scripts/cosmos.test.ts create mode 100644 test-scripts/ethereum.test.base.ts create mode 100644 test-scripts/harmony.test.ts create mode 100644 test-scripts/test.base.ts create mode 100644 test-scripts/uniswap.v2.test.ts create mode 100644 test/amm/amm.validators.test.ts create mode 100644 test/app.test.ts create mode 100644 test/chains/avalanche/avalanche.routes.test.ts create mode 100644 test/chains/avalanche/avalanche.test.ts create mode 100644 test/chains/avalanche/avalanche.validators.test.ts create mode 100644 test/chains/avalanche/openocean/openocean.routes.test.ts create mode 100644 test/chains/avalanche/openocean/openocean.test.ts create mode 100644 test/chains/avalanche/pangolin/pangolin.routes.test.ts create mode 100644 test/chains/avalanche/pangolin/pangolin.test.ts create mode 100644 test/chains/avalanche/traderjoe/traderjoe.test.ts create mode 100644 test/chains/binance-smart-chain/binance-smart-chain.routes.test.ts create mode 100644 test/chains/binance-smart-chain/pancakeswap/pancakeswap.routes.test.ts create mode 100644 test/chains/binance-smart-chain/pancakeswap/pancakeswap.test.ts create mode 100644 test/chains/cosmos/cosmos.routes.test.ts create mode 100644 test/chains/cosmos/cosmos.validators.test.ts create mode 100644 test/chains/cosmos/fixtures/getTransaction.json create mode 100644 test/chains/cronos/cronos.routes.test.ts create mode 100644 test/chains/cronos/mad_meerkat/mad-meerkat.routes.test.ts create mode 100644 test/chains/cronos/mad_meerkat/mad-meerkat.test.ts create mode 100644 test/chains/cronos/vvs/vvs.routes.test.ts create mode 100644 test/chains/cronos/vvs/vvs.test.ts create mode 100644 test/chains/ethereum/ethereum.controllers.test.ts create mode 100644 test/chains/ethereum/ethereum.routes.test.ts create mode 100644 test/chains/ethereum/ethereum.validators.test.ts create mode 100644 test/chains/ethereum/evm.nonce.test.ts create mode 100644 test/chains/ethereum/fixtures/transaction-out-of-gas-receipt.json create mode 100644 test/chains/ethereum/fixtures/transaction-out-of-gas.json create mode 100644 test/chains/ethereum/fixtures/transaction-succesful-receipt.json create mode 100644 test/chains/ethereum/fixtures/transaction-succesful.json create mode 100644 test/chains/ethereum/perp/perp.routes.test.ts create mode 100644 test/chains/ethereum/perp/perp.test.ts create mode 100644 test/chains/ethereum/sushiswap/sushiswap.routes.test.ts create mode 100644 test/chains/ethereum/sushiswap/sushiswap.test.ts create mode 100644 test/chains/ethereum/uniswap/uniswap.lp.routes.test.ts create mode 100644 test/chains/ethereum/uniswap/uniswap.lp.test.ts create mode 100644 test/chains/ethereum/uniswap/uniswap.routes.test.ts create mode 100644 test/chains/ethereum/uniswap/uniswap.test.ts create mode 100644 test/chains/harmony/defikingdoms/defikingdoms.routes.test.ts create mode 100644 test/chains/harmony/defikingdoms/defikingdoms.test.ts create mode 100644 test/chains/harmony/defira/defira.routes.test.ts create mode 100644 test/chains/harmony/defira/defira.test.ts create mode 100644 test/chains/harmony/harmony.controllers.test.ts create mode 100644 test/chains/harmony/harmony.routes.test.ts create mode 100644 test/chains/harmony/harmony.test.ts create mode 100644 test/chains/harmony/harmony.validators.test.ts create mode 100644 test/chains/near/fixtures/getTokenList.json create mode 100644 test/chains/near/fixtures/getTransaction.json create mode 100644 test/chains/near/near.controllers.test.ts create mode 100644 test/chains/near/near.routes.test.ts create mode 100644 test/chains/near/near.validators.test.ts create mode 100644 test/chains/near/ref/ref.route.test.ts create mode 100644 test/chains/near/ref/ref.test.ts create mode 100644 test/chains/polygon/polygon.test.ts create mode 100644 test/chains/polygon/polygon.validators.test.ts create mode 100644 test/chains/polygon/quickswap/quickswap.route.test.ts create mode 100644 test/chains/polygon/quickswap/quickswap.test.ts create mode 100644 test/config.util.ts create mode 100644 test/connectors/connectors.routes.test.ts create mode 100644 test/evm.nonce.mock.ts create mode 100644 test/network/network.routes.test.ts create mode 100644 test/postman/collections/EthereumV2.postman_collection.json create mode 100644 test/postman/collections/Openocean-GatewayV2.postman_collection.json create mode 100644 test/postman/collections/Uniswap-GatewayV2.postman_collection.json create mode 100644 test/postman/enviroments/GatewayV2.postman_environment.json create mode 100644 test/services/base.test.ts create mode 100644 test/services/config-manager-cert-passphrase.test.ts create mode 100644 test/services/config-manager-v2.test.ts create mode 100644 test/services/config-validators.test.ts create mode 100644 test/services/data/config-manager-v2/test1/defira.yaml create mode 100644 test/services/data/config-manager-v2/test1/ethereum.yml create mode 100644 test/services/data/config-manager-v2/test1/invalid-defira.yml create mode 100644 test/services/data/config-manager-v2/test1/invalid-root-2.yml create mode 100644 test/services/data/config-manager-v2/test1/invalid-root-3.yml create mode 100644 test/services/data/config-manager-v2/test1/invalid-root-4.yml create mode 100644 test/services/data/config-manager-v2/test1/invalid-root-defira.yml create mode 100644 test/services/data/config-manager-v2/test1/invalid-root.yml create mode 100644 test/services/data/config-manager-v2/test1/invalid-ssl.yml create mode 100644 test/services/data/config-manager-v2/test1/root.yml create mode 100644 test/services/data/config-manager-v2/test1/root2.yml create mode 100644 test/services/data/config-manager-v2/test1/ssl.yml create mode 100644 test/services/data/config-manager-v2/test1/telemetry.yml create mode 100644 test/services/error-handler.test.ts create mode 100644 test/services/evm.nonce.test.ts create mode 100644 test/services/evm.tx-storage.test.ts create mode 100644 test/services/local-storage.test.ts create mode 100644 test/services/logger.test.ts create mode 100644 test/services/patch.test.ts create mode 100644 test/services/patch.ts create mode 100644 test/services/refcounting-closeable.test.ts create mode 100644 test/services/swagger-manager.test.ts create mode 100644 test/services/validators.test.ts create mode 100644 test/services/wallet/wallet.controllers.test.ts create mode 100644 test/services/wallet/wallet.routes.test.ts create mode 100644 test/services/wallet/wallet.validators.test.ts create mode 100644 test/setup.ts create mode 100644 test/setupTests.js create mode 100644 test/teardown.ts create mode 100644 tsconfig.json create mode 100644 yarn.lock diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000000..8536796986 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,6 @@ +/db +/certs +/conf +/logs +/gateway.level +/transactions.level diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000000..3950c73f79 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,2 @@ +# turn off specific file for eslint +/node_modules \ No newline at end of file diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000000..1930749473 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,24 @@ +module.exports = { + parser: '@typescript-eslint/parser', + plugins: ['@typescript-eslint', 'prettier'], + env: { + node: true, + }, + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/eslint-recommended', + 'plugin:@typescript-eslint/recommended', + 'prettier', + ], + rules: { + 'no-console': 'off', + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_' }], + semi: [2, 'always'], + 'prettier/prettier': 'error', + '@typescript-eslint/no-var-requires': 'off', + '@typescript-eslint/explicit-module-boundary-types': 'off', + '@typescript-eslint/no-inferrable-types': 'off', + '@typescript-eslint/no-namespace': 'off', + }, +}; diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000..9853649c9f --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +/conf +/logs +/dist +/db +/.idea +package-lock.json +/certs +/node_modules +**/.DS_Store diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000000..286e1edfa0 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,5 @@ +certs +*.md +*.yml +coverage +dist \ No newline at end of file diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000000..1d296fb672 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,5 @@ +{ + "semi": true, + "singleQuote": true, + "tabWidth": 2 +} diff --git a/Changelog.md b/Changelog.md new file mode 100644 index 0000000000..c47a20c3f0 --- /dev/null +++ b/Changelog.md @@ -0,0 +1,130 @@ +# Changelog for gateway +All notable changes to gateway should be added to this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [0.1.9] - 2021-08-27 + +### Added + +- `/config` returns current config values. + +### Changed + +- `/` and `/config/update` return JSON responses. + +- Added a version number to the config file. + +- Cleaned up extraneous options in package.json. + +- Make unit tests work and they no longer run the scripts. + +## [0.1.8] - 2021-08-18 + +### Added + +- Added uniswap routes: + - `/` + - `/price` + - `/trade` + +## [0.1.7] - 2021-08-16 + +### Added + +- A uniswap service class. + +## [0.1.6] - 2021-08-12 + +### Added + +- create an test script that uses all of the ethereum routes. Can be run with `yarn test-scripts`. + +## [0.1.5] - 2021-08-11 + +### Added + +- /config/update to update the config file and reload the server + +## [0.1.4] - 2021-08-09 + +### Added + +- run gateway with https as default + +- hidden option to run in http. This is unsafe and should only be done in development mode. + +- manual/curl-with-private-key.sh to test routes while using https + +## [0.1.3] - 2021-07-29 + +### Added + +- Added ethereum routes: + - `/eth` + - `/eth/balances` + - `/eth/approve` + - `/eth/poll` + +- Simple express error handler (to be improved in future PRs) + +- Add approvedSpenders to Ethereum. + +- Add getTokenBySymbol to Ethereum. + +- uniswap.config.ts with Uniswap addresses. + +- balancer.config.ts with Balancer addresses + +## [0.1.2] - 2021-07-27 + +### Added + +- Tests for config-manager.ts. + +### Changed + +- Drop EthTransactionReceipt, use providers.TransactionReceipt for getTransactionReceipt. + +- Trade yaml for js-yaml because it has types. + +- Add a Config type to ConfigManager. + +- Ethereum extends EthereumBase and has custom behavior for the ethereum gas price. + + +## [0.1.1] - 2021-07-26 + +### Added + +- Add src/services/gateway-config.ts based on the file from gateway-api, but + much simpler and without file watching (the API should be responsible for + restarting the service if there is a change to the config file). + +- Add src/services/base.ts to hold types and functions common to all services. + +### Changed + +- Update src/services/ethereum-base.ts to be an implementation using what was in + src/chains/ethereum/ethereum.ts. + +### Removed + +- Delete all code in src/chains/ethereum/ethereum.ts since it was moved + to ethereum-base.ts. In a future PR this will become a class that inherits + from EthereumBase. + +## [0.1.0] - 2021-07-22 + +### Added + +- Initate a new repo for gateway. This will replace [gateway-api](https://github.com/CoinAlpha/gateway-api) and eventually be added to [hummingbot](https://github.com/CoinAlpha/hummingbot) to form a monorepo. + +- Add libraries for TypeScript, eslint, express and uniswap. + +- Create dirs and files according to Mike's architecture proposal. + +- Create a test dir with a single set of unit tests. + +- Create ethereum base class, config and service. diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000000..81553f9cbe --- /dev/null +++ b/Dockerfile @@ -0,0 +1,40 @@ +FROM node:18.10.0 + +# Set labels +LABEL application="gateway-v2" +LABEL branch=${BRANCH} +LABEL commit=${COMMIT} +LABEL date=${BUILD_DATE} + +# Set ENV variables +ENV COMMIT_BRANCH=${BRANCH} +ENV COMMIT_SHA=${COMMIT} +ENV BUILD_DATE=${DATE} + +# Add hummingbot user and group +RUN groupadd -g 8211 hummingbot && \ + useradd -m -s /bin/bash -u 8211 -g 8211 hummingbot + +# Install gosu +RUN apt-get update && \ + DEBIAN_FRONTEND=noninteractive apt-get install -y gosu && \ + rm -rf /var/lib/apt/lists/* + +# app directory +WORKDIR /usr/src/app + +# create app writable directory for db files +RUN mkdir /var/lib/gateway +RUN chown -R hummingbot /var/lib/gateway + +# copy pwd file to container +COPY . . + +# install dependencies +RUN yarn install --frozen-lockfile + +EXPOSE 15888 + +RUN yarn build + +CMD ["bin/docker-start.sh"] diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 261eeb9e9f..0000000000 --- a/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/README.md b/README.md new file mode 100644 index 0000000000..c58412e4c3 --- /dev/null +++ b/README.md @@ -0,0 +1,128 @@ +![Hummingbot](https://i.ibb.co/X5zNkKw/blacklogo-with-text.png) + +# Hummingbot Gateway + +--- + +Hummingbot Gateway is a REST API that exposes connections to various blockchains (wallet, node & chain interaction) and decentralized exchanges (pricing, trading & liquidity provision). It is written in Typescript and takes advantage of existing blockchain and DEX SDKs. The advantage of using gateway is it provideds a programming language agnostic approach to interacting with blockchains and DEXs. + +Gateway may be used alongside the main Hummingbot client to enable trading on DEXs, or as a standalone module by external developers. + +## Connectors + +This is a list of DEX connections currently supported by Gateway. + +| Connector | Blockchain | Trading Interface | +| ----------- | ------------------- | ----------------- | +| UniswapV2 | Ethereum | AMM | +| Sushiswap | Ethereum | AMM | +| UniswapV3 | Ethereum | EVM_Range_AMM | +| Pangolin | Avalanche | AMM | +| PancakeSwap | Binance Smart Chain | AMM | +| Traderjoe | Avalanche | AMM | +| Quickswap | Polygon | AMM | +| Perp | Ethereum | EVM_Perpetual | +| Mad Meerkat | Cronos | AMM | +| VVS | Cronos | AMM | + + +## Contributing + +There are a number of ways to contribute to gateway. + +- Add a new blockchain. + +- Add a new connector/DEX. + +- Fix a bug. + +- File an issue at [hummingbot issues](https://github.com/hummingbot/hummingbot/issues) + +- Make a PR for anything useful on [hummingbot](https://github.com/hummingbot/hummingbot/). + +- Vote on a snapshot proposal: [Hummingbot PRP](https://snapshot.org/#/hbot-prp.eth), [Hummingbot Foundation - HGP](https://snapshot.org/#/hbot.eth), [Hummingbot Improvement Proposals](https://snapshot.org/#/hbot-ip.eth). + +## Configuration + +Before running gateway, you need to setup some configs. You can start by copying all of the yml files from [src/templates](./src/templates) to [conf](./conf). The format of this files are dictated by [src/services/config-manager-v2.ts](./src/services/config-manager-v2.ts) and the corresponding schema files in [src/services/schema](./src/services/schema) . + +### Useful configuration options + +- If you want to turn off `https`, set `unsafeDevModeWithHTTP` to `true` in [conf/server.yml](./conf/server.yml). + +- If you gateway to log to standard out, set `logToStdOut` to `true` in [conf/logging.yml](./conf/logging.yml). + +- Edit the path to the SSL files in [conf/ssl.yml](./conf/ssl.yml). This can be generated by hummingbot with `gateway generate-certs`. + +The hummingbot client is also able to edit this config files. + +## Install and run locally + +Compile the Typescript code with `npm` or `yarn` . + +```bash +yarn +yarn build +yarn dev --passphrase= +# the passphrase can be anything if unsafeDevModeWithHTTP is true +``` + +## Documentation + +The API is documented using swagger: [gateway swagger docs](./docs/swagger). You can run the gateway swagger UI by starting gateway and visiting [localhost:8080](localhost:8080). + +You can follow details about [trading interfaces](https://hummingbot.notion.site/Gateway-v2-Trading-Interfaces-482e2684d48c450ebcfff5401ba806aa) + +Also, we maintain docs on the official website about gateway [here](https://hummingbot.org/protocols/gateway/). + +### Files to read + +Here are some files we recommend you look at in order to get familiar with the gateway code base. + +- [src/services/ethereum-base.ts](./src/services/ethereum-base.ts) is a base class for EVM chains. + +- [src/connectors/uniswap/uniswap.ts](./src/connectors/uniswap/uniswap.ts) has functionality for interacting with Uniswap V2. + +- [src/services/validator.ts](./src/services/validator.ts) defines functions for validating request payloads. + + +### Testing + +When making a PR, there are unit test coverage requirements. Look at our [github workflow](../.github/workflows/workflow.yml) for the exact definition. There are some more + +#### Unit tests + +Read this document for more details about how to write unit test in gateway: [How we write unit tests for gateway](./docs/testing.md). + +Run all unit tests. + +```bash +yarn test:unit +``` + +Run an individual test file. + +```bash +yarn jest test/app.test.ts +``` + +#### Manual tests + +We have found it is useful to test individual endpoints with `curl` commands. We have a collection of prepared curl calls. POST bodies are stored in JSON files. Take a look at the [curl calls for gateway](./manual-tests/curl.sh). Note that some environment variables are expected. + +## Linting + +This repo uses `eslint` and `prettier`. When you run `git commit` it will trigger the `pre-commit` hook. This will run `eslint` on the `src` and `test` directories. + +You can lint before committing with: + +```bash +yarn run lint +``` + +You can run the prettifier before committing with: + +```bash +yarn run prettier +``` + diff --git a/bin/docker-start.sh b/bin/docker-start.sh new file mode 100755 index 0000000000..85bd3332a6 --- /dev/null +++ b/bin/docker-start.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +mkdir -p /usr/src/app/gateway.level /usr/src/app/transactions.level \ + /usr/src/app/db +chown -R hummingbot:hummingbot /usr/src/app/logs /usr/src/app/conf \ + /usr/src/app/gateway.level /usr/src/app/transactions.level \ + /usr/src/app/db + +gosu hummingbot:hummingbot yarn run start diff --git a/docs/swagger/amm-liquidity-routes.yml b/docs/swagger/amm-liquidity-routes.yml new file mode 100644 index 0000000000..7a7c447c4b --- /dev/null +++ b/docs/swagger/amm-liquidity-routes.yml @@ -0,0 +1,101 @@ +paths: + /amm/liquidity/price: + post: + tags: + - 'amm/liquidity' + summary: 'Get the historical pool prices for a pair' + operationId: 'historical' + consumes: + - 'application/json' + produces: + - 'application/json' + parameters: + - in: 'body' + name: 'body' + required: true + schema: + $ref: '#/definitions/LiquidityPriceRequest' + responses: + '200': + schema: + $ref: '#/definitions/LiquidityPriceResponse' + /amm/liquidity/add: + post: + tags: + - 'amm/liquidity' + summary: 'Add liquidity to pool' + operationId: 'add' + consumes: + - 'application/json' + produces: + - 'application/json' + parameters: + - in: 'body' + name: 'body' + required: true + schema: + $ref: '#/definitions/LiquidityAddRequest' + responses: + '200': + schema: + $ref: '#/definitions/LiquidityAddResponse' + /amm/liquidity/remove: + post: + tags: + - 'amm/liquidity' + summary: 'Remove liquidity to pool' + operationId: 'remove' + consumes: + - 'application/json' + produces: + - 'application/json' + parameters: + - in: 'body' + name: 'body' + required: true + schema: + $ref: '#/definitions/LiquidityRemoveRequest' + responses: + '200': + schema: + $ref: '#/definitions/LiquidityRemoveResponse' + /amm/liquidity/collect_fees: + post: + tags: + - 'amm/liquidity' + summary: 'Collect earned fees' + operationId: 'collect' + consumes: + - 'application/json' + produces: + - 'application/json' + parameters: + - in: 'body' + name: 'body' + required: true + schema: + $ref: '#/definitions/LiquidityCollectRequest' + responses: + '200': + schema: + $ref: '#/definitions/LiquidityCollectResponse' + /amm/liquidity/position: + post: + tags: + - 'amm/liquidity' + summary: 'Get details about position' + operationId: 'position' + consumes: + - 'application/json' + produces: + - 'application/json' + parameters: + - in: 'body' + name: 'body' + required: true + schema: + $ref: '#/definitions/LiquidityPositionRequest' + responses: + '200': + schema: + $ref: '#/definitions/LiquidityPositionResponse' diff --git a/docs/swagger/amm-routes.yml b/docs/swagger/amm-routes.yml new file mode 100644 index 0000000000..7e4a7a276f --- /dev/null +++ b/docs/swagger/amm-routes.yml @@ -0,0 +1,221 @@ +paths: + /amm/price: + post: + tags: + - 'amm' + summary: 'Get the price for a quote base pair on an AMM' + operationId: 'poll' + consumes: + - 'application/json' + produces: + - 'application/json' + parameters: + - in: 'body' + name: 'body' + required: true + schema: + $ref: '#/definitions/PriceRequest' + responses: + '200': + schema: + $ref: '#/definitions/PriceResponse' + /amm/trade: + post: + tags: + - 'amm' + summary: 'Perform a trade on an AMM' + operationId: 'trade' + consumes: + - 'application/json' + produces: + - 'application/json' + parameters: + - in: 'body' + name: 'body' + required: true + schema: + $ref: '#/definitions/TradeRequest' + responses: + '200': + schema: + $ref: '#/definitions/TradeResponse' + /amm/estimateGas: + post: + tags: + - 'amm' + summary: 'Estimate the total gas costs for sending an AMM order' + operationId: 'estimateGas' + consumes: + - 'application/json' + produces: + - 'application/json' + parameters: + - in: 'body' + name: 'body' + required: true + schema: + $ref: '#/definitions/NetworkSelectionRequest' + responses: + '200': + schema: + $ref: '#/definitions/EstimateGasResponse' + /amm/perp/market-prices: + post: + tags: + - 'amm' + summary: 'Get market prices for a quote base pair on perp curie' + operationId: 'perpPrices' + consumes: + - 'application/json' + produces: + - 'application/json' + parameters: + - in: 'body' + name: 'body' + required: true + schema: + $ref: '#/definitions/PerpPriceRequest' + responses: + '200': + schema: + $ref: '#/definitions/PerpPriceResponse' + /amm/perp/market-status: + post: + tags: + - 'amm' + summary: 'Get the status for a quote base pair market' + operationId: 'marketStatus' + consumes: + - 'application/json' + produces: + - 'application/json' + parameters: + - in: 'body' + name: 'body' + required: true + schema: + $ref: '#/definitions/PerpPriceRequest' + responses: + '200': + schema: + $ref: '#/definitions/PerpStatusResponse' + /amm/perp/pairs: + post: + tags: + - 'amm' + summary: 'Get a list of all available pairs on perp curie' + operationId: 'perpPairs' + consumes: + - 'application/json' + produces: + - 'application/json' + parameters: + - in: 'body' + name: 'body' + required: true + schema: + $ref: '#/definitions/PerpPairsRequest' + responses: + '200': + schema: + $ref: '#/definitions/PerpPairsResponse' + /amm/perp/position: + post: + tags: + - 'amm' + summary: 'Get poision data for a quote base pair' + operationId: 'perpPosition' + consumes: + - 'application/json' + produces: + - 'application/json' + parameters: + - in: 'body' + name: 'body' + required: true + schema: + $ref: '#/definitions/PerpPositionRequest' + responses: + '200': + schema: + $ref: '#/definitions/PerpPositionResponse' + /amm/perp/balance: + post: + tags: + - 'amm' + summary: 'Get account value' + operationId: 'perpBalance' + consumes: + - 'application/json' + produces: + - 'application/json' + parameters: + - in: 'body' + name: 'body' + required: true + schema: + $ref: '#/definitions/PerpBalanceRequest' + responses: + '200': + schema: + $ref: '#/definitions/PerpBalanceResponse' + /amm/perp/open: + post: + tags: + - 'amm' + summary: 'Open/increase position on specified market' + operationId: 'perpPositionOpen' + consumes: + - 'application/json' + produces: + - 'application/json' + parameters: + - in: 'body' + name: 'body' + required: true + schema: + $ref: '#/definitions/PerpOpenRequest' + responses: + '200': + schema: + $ref: '#/definitions/PerpOpenResponse' + /amm/perp/close: + post: + tags: + - 'amm' + summary: 'Close postion on specified market' + operationId: 'perpPositionClose' + consumes: + - 'application/json' + produces: + - 'application/json' + parameters: + - in: 'body' + name: 'body' + required: true + schema: + $ref: '#/definitions/PerpCloseRequest' + responses: + '200': + schema: + $ref: '#/definitions/PerpCloseResponse' + /amm/perp/estimateGas: + post: + tags: + - 'amm' + summary: 'Estimate the total gas costs for sending a perp order' + operationId: 'estimateGas' + consumes: + - 'application/json' + produces: + - 'application/json' + parameters: + - in: 'body' + name: 'body' + required: true + schema: + $ref: '#/definitions/NetworkSelectionRequest' + responses: + '200': + schema: + $ref: '#/definitions/EstimateGasResponse' \ No newline at end of file diff --git a/docs/swagger/connectors-routes.yml b/docs/swagger/connectors-routes.yml new file mode 100644 index 0000000000..76a504df70 --- /dev/null +++ b/docs/swagger/connectors-routes.yml @@ -0,0 +1,10 @@ +paths: + /connectors: + get: + tags: + - 'system' + summary: 'Show list of available connectors and networks' + operationId: 'get' + produces: + - 'application/json' + responses: '200' diff --git a/docs/swagger/cosmos-routes.yml b/docs/swagger/cosmos-routes.yml new file mode 100644 index 0000000000..38d44d4f28 --- /dev/null +++ b/docs/swagger/cosmos-routes.yml @@ -0,0 +1,57 @@ +paths: + /cosmos: + get: + tags: + - 'cosmos' + summary: 'View the Cosmos network and RPC URL that gateway is configured to use' + description: 'The user can change this by editing src/chains/cosmos/cosmos.config.ts' + operationId: 'root' + produces: + - 'application/json' + responses: + '200': + description: 'Cosmos config' + schema: + $ref: '#/definitions/CosmosConfigResponse' + + /cosmos/balances: + post: + tags: + - 'cosmos' + summary: 'Get the balances of a Cosmos wallet' + operationId: 'balances' + consumes: + - 'application/json' + produces: + - 'application/json' + parameters: + - in: 'body' + name: 'body' + required: true + schema: + $ref: '#/definitions/CosmosBalanceRequest' + responses: + '200': + schema: + $ref: '#/definitions/BalancesResponse' + + /cosmos/poll: + post: + tags: + - 'cosmos' + summary: 'Poll the status of a Cosmos transaction' + operationId: 'poll' + consumes: + - 'application/json' + produces: + - 'application/json' + parameters: + - in: 'body' + name: 'body' + required: true + schema: + $ref: '#/definitions/CosmosPollRequest' + responses: + '200': + schema: + $ref: '#/definitions/CosmosPollResponse' diff --git a/docs/swagger/definitions.yml b/docs/swagger/definitions.yml new file mode 100644 index 0000000000..410cb794f9 --- /dev/null +++ b/docs/swagger/definitions.yml @@ -0,0 +1,1580 @@ +definitions: + EthereumConfigResponse: + type: 'object' + required: + - 'network' + - 'rpcUrl' + - 'connection' + - 'timestamp' + properties: + network: + type: 'string' + example: 'mainnet' + rpcUrl: + type: 'string' + example: 'https://mainnet.infura.io/v3/' + connection: + type: 'boolean' + example: true + timestamp: + type: 'integer' + example: 1636368085740 + + NonceRequest: + type: 'object' + required: + - 'privateKey' + - 'chain' + - 'network' + properties: + privateKey: + type: 'string' + example: '6078d949c953351685fd2026646028f2a862e6148d25d504967ba63898d720c0' # noqa: documentation + chain: + type: 'string' + example: 'ethereum' + network: + type: 'string' + example: 'kovan' + + NonceResponse: + type: 'object' + required: + - 'nonce' + properties: + privateKey: + type: 'integer' + example: 123 + + AllowancesRequest: + type: 'object' + required: + - 'privateKey' + - 'spender' + - 'tokenSymbols' + - 'chain' + - 'network' + properties: + privateKey: + type: 'string' + example: '6078d949c953351685fd2026646028f2a862e6148d25d504967ba63898d720c0' # noqa: documentation + spender: + type: 'string' + example: 'uniswap' + tokenSymbols: + type: 'array' + items: 'string' + example: ['WETH', 'DAI'] + chain: + type: 'string' + example: 'ethereum' + network: + type: 'string' + example: 'kovan' + + AllowancesResponse: + type: 'object' + required: + - 'network' + - 'timestamp' + - 'latency' + - 'spender' + - 'approvals' + properties: + network: + type: 'string' + example: 'mainnet' + timestamp: + type: 'integer' + example: 1636368085740 + latency: + type: 'number' + example: 0.5 + spender: + type: 'string' + example: '0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D' + approvals: + type: 'object' + properties: + id: + type: 'string' + name: + type: 'string' + example: '{"WETH": "100","DAI": "300"}' + + BalancesRequest: + type: 'object' + required: + - 'privateKey' + - 'tokenSymbols' + - 'chain' + - 'network' + properties: + privateKey: + type: 'string' + example: '6078d949c953351685fd2026646028f2a862e6148d25d504967ba63898d720c0' # noqa: documentation + tokenSymbols: + type: 'array' + items: 'string' + example: ['WETH', 'DAI'] + chain: + type: 'string' + example: 'ethereum' + network: + type: 'string' + example: 'kovan' + + BalancesResponse: + type: 'object' + required: + - 'network' + - 'timestamp' + - 'latency' + - 'balances' + properties: + network: + type: 'string' + example: 'mainnet' + timestamp: + type: 'integer' + example: 1636368085740 + latency: + type: 'number' + example: 0.5 + balances: + type: 'object' + properties: + id: + type: 'string' + name: + type: 'string' + example: '{"ETH": "1.5", "WETH": "100","DAI": "300"}' + + ApproveRequest: + type: 'object' + required: + - 'privateKey' + - 'spender' + - 'token' + - 'chain' + - 'network' + properties: + privateKey: + type: 'string' + example: '6078d949c953351685fd2026646028f2a862e6148d25d504967ba63898d720c0' # noqa: documentation + spender: + type: 'string' + example: 'uniswap' + token: + type: 'string' + example: 'WETH' + amount: + type: 'string' + example: '0' + nonce: + type: 'number' + example: 123 + maxFeePerGas: + type: 'string' + example: '5000000000' + maxPriorityFeePerGas: + type: 'string' + example: '5000000000' + chain: + type: 'string' + example: 'ethereum' + network: + type: 'string' + example: 'kovan' + + ApproveResponse: + type: 'object' + required: + - 'network' + - 'timestamp' + - 'latency' + - 'tokenAddress' + - 'spender' + - 'amount' + - 'nonce' + - 'approval' + properties: + network: + type: 'string' + example: 'mainnet' + timestamp: + type: 'integer' + example: 1636368085740 + latency: + type: 'number' + example: 1.526 + tokenAddress: + type: 'string' + example: '0xd0A1E359811322d97991E03f863a0C30C2cF029C' + spender: + type: 'string' + example: '0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D' + amount: + type: 'string' + example: '100' + nonce: + type: 'number' + example: 124 + approval: + type: 'object' + example: '{"type": 2,"chainId": 42,"nonce": 129,"maxPriorityFeePerGas": "94000000000","maxFeePerGas": "94000000000","gasPrice": null,"gasLimit": "100000","to": "0xd0A1E359811322d97991E03f863a0C30C2cF029C","value": "0","data": "0x095ea7b30000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff","accessList": [],"hash": "0xa321bbe8888c3bc88ecb1ad4f03f22a71e6f5715dfcb19e0a2dca9036c981b6d","v": 1,"r": "0x47c517271885b7041d81bcd65cd050a5d6be3fbd67a8f1660ac8d7e68fc8221f","s": "0x7c62e114b2cb0eae6236b597fb4aacb01c51e56afd7f734e6039d83aa400ba82","from": "0xFaA12FD102FE8623C9299c72B03E45107F2772B5","confirmations": 0}' # noqa: documentation + + PollRequest: + type: 'object' + required: + - 'txHash' + - 'chain' + - 'network' + properties: + txHash: + type: 'string' + example: '0xa321bbe8888c3bc88ecb1ad4f03f22a71e6f5715dfcb19e0a2dca9036c981b6d' # noqa: documentation + chain: + type: 'string' + example: 'ethereum' + network: + type: 'string' + example: 'kovan' + + PollResponse: + type: 'object' + required: + - 'network' + - 'timestamp' + - 'currentBlock' + - 'txHash' + - 'txStatus' + - 'txBlock' + - 'txData' + - 'txReceipt' + properties: + network: + type: 'string' + example: 'mainnet' + timestamp: + type: 'integer' + example: 1636368085740 + currentBlock: + type: 'integer' + example: 28243911 + txHash: + type: 'string' + example: '0xa321bbe8888c3bc88ecb1ad4f03f22a71e6f5715dfcb19e0a2dca9036c981b6d' # noqa: documentation + txStatus: + type: 'number' + example: 1 + txBlock: + type: 'number' + example: 28243800 + txData: + type: 'object' + txReceipt: + type: 'object' + + UniswapConfigResponse: + type: 'object' + required: + - 'network' + - 'uniswap_router' + - 'connection' + - 'timestamp' + properties: + network: + type: 'string' + example: 'mainnet' + uniswap_router: + type: 'string' + example: '0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D' + connection: + type: 'boolean' + example: true + timestamp: + type: 'integer' + example: 1636368085740 + + PriceRequest: + type: 'object' + required: + - 'quote' + - 'base' + - 'amount' + - 'side' + - 'chain' + - 'network' + properties: + quote: + type: 'string' + example: 'WETH' + base: + type: 'string' + example: 'DAI' + amount: + type: 'string' + example: '10' + side: + type: 'string' + example: 'BUY' + chain: + type: 'string' + example: 'ethereum' + network: + type: 'string' + example: 'kovan' + + PriceResponse: + type: 'object' + required: + - 'network' + - 'timestamp' + - 'latency' + - 'base' + - 'quote' + - 'amount' + - 'expectedAmount' + - 'price' + - 'gasPrice' + - 'gasPriceToken' + - 'gasLimit' + - 'gasCost' + properties: + network: + type: 'string' + example: 'mainnet' + timestamp: + type: 'integer' + example: 1636368085740 + latency: + type: 'number' + example: 0.5 + base: + type: 'string' + example: '0x4f96fe3b7a6cf9725f59d353f723c1bdb64ca6aa' + quote: + type: 'string' + example: '0xd0A1E359811322d97991E03f863a0C30C2cF029C' + amount: + type: 'string' + example: '10' + expectedAmount: + type: 'string' + example: '0.000000000000000001' + price: + type: 'string' + gasPrice: + type: 'number' + example: 96 + gasPriceToken: + type: 'string' + example: 'ETH' + gasLimit: + type: 'number' + example: 150688 + gasCost: + type: 'string' + example: '0.014466048000000000' + + TradeRequest: + type: 'object' + required: + - 'quote' + - 'base' + - 'amount' + - 'side' + - 'chain' + - 'network' + - 'connector' + properties: + quote: + type: 'string' + example: 'WETH' + base: + type: 'string' + example: 'DAI' + amount: + type: 'string' + example: '10' + side: + type: 'string' + example: 'BUY' + limitPrice: + type: 'string' + nonce: + type: number + maxFeePerGas: + type: number + maxPriorityFeePerGas: + type: number + chain: + type: 'string' + example: 'ethereum' + network: + type: 'string' + example: 'kovan' + connector: + type: 'string' + example: 'uniswap' + + TradeResponse: + type: 'object' + required: + - 'network' + - 'timestamp' + - 'latency' + - 'base' + - 'quote' + - 'amount' + - 'price' + - 'gasPrice' + - 'gasPriceToken' + - 'gasLimit' + - 'gasCost' + - 'nonce' + properties: + network: + type: 'string' + example: 'mainnet' + timestamp: + type: 'integer' + example: 1636368085740 + latency: + type: 'number' + example: 0.5 + base: + type: 'string' + example: '0x4f96fe3b7a6cf9725f59d353f723c1bdb64ca6aa' + quote: + type: 'string' + example: '0xd0A1E359811322d97991E03f863a0C30C2cF029C' + amount: + type: 'string' + example: '10' + expectedIn: + type: 'string' + expectedOut: + type: 'string' + price: + type: 'string' + gasPrice: + type: 'string' + gasPriceToken: + type: 'string' + example: 'ETH' + gasLimit: + type: 'string' + gasCost: + type: 'string' + nonce: + type: 'string' + txHash: + type: 'string' + + CancelRequest: + type: 'object' + required: + - 'nonce' + - 'address' + - 'chain' + - 'network' + properties: + nonce: + type: 'integer' + example: 123 + address: + type: 'string' + example: '0xd0A1E359811322d97991E03f863a0C30C2cF029C' + chain: + type: 'string' + example: 'ethereum' + network: + type: 'string' + example: 'kovan' + + CancelResponse: + type: 'object' + required: + - 'network' + - 'timestamp' + - 'latency' + properties: + network: + type: 'string' + example: 'mainnet' + timestamp: + type: 'integer' + example: 1636368085740 + latency: + type: 'number' + example: 0.5 + txHash: + type: 'string' + example: '0xa321bbe8888c3bc88ecb1ad4f03f22a71e6f5715dfcb19e0a2dca9036c981b6d' # noqa: documentation + + AddWalletRequest: + type: 'object' + required: + - 'chainName' + - 'privateKey' + properties: + chainName: + type: 'string' + example: 'ethereum' + privateKey: + type: 'string' + example: '6078d949c953351685fd2026646028f2a862e6148d25d504967ba63898d720c0' # noqa: documentation + + RemoveWalletRequest: + type: 'object' + required: + - 'chainName' + - 'address' + properties: + chainName: + type: 'string' + example: 'ethereum' + address: + type: 'string' + example: '0xd0A1E359811322d97991E03f863a0C30C2cF029C' + + GetWalletResponse: + type: 'object' + required: + - 'chain' + - 'walletAddresses' + properties: + chain: + type: 'string' + tokenSymbols: + type: 'array' + items: 'string' + example: ['0xd0A1E359811322d97991E03f863a0C30C2cF029C', '0xd0A1E359811322d97991E03f863a0C30C2XXXXXX'] + + ConfigUpdateRequest: + type: 'object' + required: + - 'configPath' + - 'configValue' + properties: + configPath: + type: 'string' + configValue: + OneOf: + - type: 'boolean' + - type: 'number' + + CosmosConfigResponse: + type: 'object' + required: + - 'network' + - 'rpcUrl' + - 'connection' + - 'timestamp' + properties: + network: + type: 'string' + example: 'mainnet' + rpcUrl: + type: 'string' + example: 'https://rpc.cosmos.network/' + connection: + type: 'boolean' + example: true + timestamp: + type: 'integer' + example: 1641889489132 + + CosmosBalanceRequest: + type: 'object' + required: + - 'address' + - 'tokenSymbols' + properties: + address: + type: 'string' + example: 'cosmos1pc8m5m7n0z8xe7sx2tawkvc0v6qkjql83js0dr' + tokenSymbols: + type: 'array' + items: 'string' + example: ['ATOM', 'NETA'] + + CosmosPollRequest: + type: 'object' + required: + - 'txHash' + properties: + txHash: + type: 'string' + example: 'E0E02A6C27A75F4442B0746676BDAF5F66AFF1E71928C54624A35B48D5A4B3AF' + + CosmosPollResponse: + type: 'object' + required: + - 'network' + - 'timestamp' + - 'txHash' + - 'currentBlock' + - 'txBlock' + - 'gasUsed' + - 'gasWanted' + - 'txData' + properties: + network: + type: 'string' + example: 'mainnet' + timestamp: + type: 'integer' + example: 1636368085740 + currentBlock: + type: 'integer' + example: 112646487 + txHash: + type: 'string' + example: 'oaMWkrYr1g9JBcDUPRqz21cJBxowM4CEbDy2FsCgNK569CjZSr4wa51d4k9DpTRJU8GUHfp3e9YX2pGXaBS5Tta' + txBlock: + type: 'number' + example: 11581899 + gasUsed: + type: 'number' + example: 89054 + gasWanted: + type: 'number' + example: 130000 + txData: + $ref: '#/definitions/CosmosTransaction' + + TokensResponse: + type: 'object' + required: + - 'tokens' + properties: + tokens: + type: 'object' + example: ' + { + tokens: [ + { + "address": "0x006BeA43Baa3f7A6f765F14f10A1a1b08334EF45", + "chainId": "1", + "name": "Stox", + "symbol": "STX", + "decimals": "18", + "logoURI": "https://tokens.1inch.io/0x006bea43baa3f7a6f765f14f10a1a1b08334ef45.png" + }, + { + "address": "0x0327112423F3A68efdF1fcF402F6c5CB9f7C33fd", + "chainId": "1", + "name": "PieDAOBTC", + "symbol": "BTC", + "decimals": "18", + "logoURI": "https://tokens.1inch.io/0x0327112423f3a68efdf1fcf402f6c5cb9f7c33fd.png" + } + ] + }' + + NetworkSelectionRequest: + type: 'object' + required: + - 'chain' + - 'network' + - 'connector' + properties: + chain: + type: 'string' + example: 'ethereum' + network: + type: 'string' + example: 'kovan' + connector: + type: 'string' + example: 'uniswap' + + EstimateGasResponse: + type: 'object' + required: + - 'network' + - 'timestamp' + - 'gasPrice' + - 'gasPriceToken' + - 'gasLimit' + - 'gasCost' + properties: + network: + type: 'string' + example: 'mainnet' + timestamp: + type: 'integer' + example: 1636368085740 + gasPrice: + type: 'number' + example: 96 + gasPriceToken: + type: 'string' + example: 'ETH' + gasLimit: + type: 'number' + example: 150688 + gasCost: + type: 'string' + example: '0.014466048000000000' + + LiquidityAddRequest: + type: 'object' + required: + - 'address' + - 'token0' + - 'token1' + - 'amount0' + - 'amount1' + - 'fee' + - 'lowerPrice' + - 'upperPrice' + properties: + address: + type: 'string' + example: '0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D' + token0: + type: 'string' + example: 'DAI' + token1: + type: 'string' + example: 'WETH' + amount0: + type: 'string' + example: '10' + amount1: + type: 'string' + example: '10' + lowerPrice: + type: 'number' + example: 1 + upperPrice: + type: number + example: 5 + maxFeePerGas: + type: number + maxPriorityFeePerGas: + type: number + chain: + type: 'string' + example: 'ethereum' + network: + type: 'string' + example: 'kovan' + connector: + type: 'string' + example: 'uniswapLP' + + LiquidityAddResponse: + type: 'object' + required: + - 'network' + - 'timestamp' + - 'token0' + - 'token1' + - 'gasPrice' + - 'gasPriceToken' + - 'gasLimit' + - 'gasCost' + - 'nonce' + properties: + network: + type: 'string' + example: 'kovan' + timestamp: + type: 'integer' + example: 1636368085740 + token0: + type: 'string' + example: 'DAI' + token1: + type: 'string' + example: 'WETH' + gasPrice: + type: 'string' + gasPriceToken: + type: 'string' + example: 'ETH' + gasLimit: + type: 'string' + gasCost: + type: 'string' + nonce: + type: 'string' + txHash: + type: 'string' + example: '0x0000000000000000000000000000000000000000' + + LiquidityRemoveRequest: + type: 'object' + required: + - 'address' + - 'tokenId' + properties: + address: + type: 'string' + example: '0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D' + tokenId: + type: 'number' + example: 12 + maxFeePerGas: + type: number + maxPriorityFeePerGas: + type: number + chain: + type: 'string' + example: 'ethereum' + network: + type: 'string' + example: 'kovan' + connector: + type: 'string' + example: 'uniswapLP' + + LiquidityRemoveResponse: + type: 'object' + required: + - 'network' + - 'timestamp' + - 'tokenId' + - 'gasPrice' + - 'gasPriceToken' + - 'gasLimit' + - 'gasCost' + - 'nonce' + properties: + network: + type: 'string' + example: 'kovan' + timestamp: + type: 'integer' + example: 1636368085740 + tokenId: + type: 'number' + example: 12 + gasPrice: + type: 'string' + gasPriceToken: + type: 'string' + example: 'ETH' + gasLimit: + type: 'string' + gasCost: + type: 'string' + nonce: + type: 'string' + txHash: + type: 'string' + example: '0x0000000000000000000000000000000000000000' + + LiquidityCollectRequest: + type: 'object' + required: + - 'address' + - 'tokenId' + properties: + address: + type: 'string' + example: '0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D' + tokenId: + type: 'number' + example: 12 + maxFeePerGas: + type: number + maxPriorityFeePerGas: + type: number + chain: + type: 'string' + example: 'ethereum' + network: + type: 'string' + example: 'kovan' + connector: + type: 'string' + example: 'uniswapLP' + + LiquidityCollectResponse: + type: 'object' + required: + - 'network' + - 'timestamp' + - 'tokenId' + - 'gasPrice' + - 'gasPriceToken' + - 'gasLimit' + - 'gasCost' + - 'nonce' + properties: + network: + type: 'string' + example: 'kovan' + timestamp: + type: 'integer' + example: 1636368085740 + tokenId: + type: 'number' + example: 12 + gasPrice: + type: 'string' + gasPriceToken: + type: 'string' + example: 'ETH' + gasLimit: + type: 'string' + gasCost: + type: 'string' + nonce: + type: 'string' + txHash: + type: 'string' + example: '0x0000000000000000000000000000000000000000' + + LiquidityPositionRequest: + type: 'object' + required: + - 'tokenId' + properties: + tokenId: + type: 'number' + example: 12 + chain: + type: 'string' + example: 'ethereum' + network: + type: 'string' + example: 'kovan' + connector: + type: 'string' + example: 'uniswapLP' + + LiquidityPositionResponse: + type: 'object' + required: + - 'network' + - 'timestamp' + - 'tokenId' + - 'token0' + - 'token1' + - 'fee' + - 'lowerPrice' + - 'upperPrice' + - 'amount0' + - 'amount1' + - 'unclaimedToken0' + - 'unclaimedToken1' + properties: + network: + type: 'string' + example: 'kovan' + timestamp: + type: 'integer' + example: 1636368085740 + tokenId: + type: 'number' + example: 12 + token0: + type: 'string' + example: 'DAI' + token1: + type: 'string' + example: 'WETH' + fee: + type: 'string' + example: 'LOW' + lowerPrice: + type: 'string' + example: '1' + upperPrice: + type: 'string' + example: '5' + amount0: + type: 'string' + example: '1' + amount1: + type: 'string' + example: '1' + unclaimedToken0: + type: 'string' + example: '2' + unclaimedToken1: + type: 'string' + example: '2' + + LiquidityPriceRequest: + type: 'object' + required: + - 'token0' + - 'token1' + - 'fee' + - 'period' + - 'interval' + properties: + token0: + type: 'string' + example: 'DAI' + token1: + type: 'string' + example: 'WETH' + fee: + type: 'string' + example: 'LOW' + period: + type: 'number' + example: 60 + interval: + type: 'number' + example: 5 + chain: + type: 'string' + example: 'ethereum' + network: + type: 'string' + example: 'kovan' + connector: + type: 'string' + example: 'uniswapLP' + + LiquidityPriceResponse: + type: 'object' + required: + - 'network' + - 'timestamp' + - 'token0' + - 'token1' + - 'fee' + - 'period' + - 'interval' + properties: + network: + type: 'string' + example: 'kovan' + timestamp: + type: 'integer' + example: 1636368085740 + token0: + type: 'string' + example: 'DAI' + token1: + type: 'string' + example: 'WETH' + fee: + type: 'string' + example: 'LOW' + period: + type: 'number' + example: 60 + interval: + type: 'number' + example: 5 + prices: + type: 'object' + example: ['1', '2', '3'] + + + PerpPairsRequest: + type: 'object' + required: + - 'chain' + - 'network' + - 'connector' + properties: + chain: + type: 'string' + example: 'ethereum' + network: + type: 'string' + example: 'optimism' + connector: + type: 'string' + example: 'perp' + + PerpPairsResponse: + type: 'object' + required: + - 'network' + - 'timestamp' + - 'latency' + - 'pairs' + properties: + network: + type: 'string' + example: 'optimism' + timestamp: + type: 'integer' + example: 1636368085740 + latency: + type: 'number' + example: 1 + pairs: + type: 'array' + items: 'string' + example: ['AAVEUSD', 'PERPUSD', 'BTCUSD'] + + PerpPriceRequest: + type: 'object' + required: + - 'chain' + - 'network' + - 'connector' + - 'base' + - 'quote' + properties: + chain: + type: 'string' + example: 'ethereum' + network: + type: 'string' + example: 'optimism' + connector: + type: 'string' + example: 'perp' + base: + type: 'string' + example: 'AAVE' + quote: + type: 'string' + example: 'USD' + + PerpPriceResponse: + type: 'object' + required: + - 'network' + - 'timestamp' + - 'latency' + - 'base' + - 'quote' + - 'markPrice' + - 'indexPrice' + - 'indexTwapPrice' + properties: + network: + type: 'string' + example: 'mainnet' + timestamp: + type: 'integer' + example: 1636368085740 + latency: + type: 'number' + example: 1 + base: + type: 'string' + example: 'AAVE' + quote: + type: 'string' + example: 'USD' + markPrice: + type: 'string' + example: '0.1' + indexPrice: + type: 'string' + example: '0.2' + indexTwapPrice: + type: 'string' + example: '0.3' + + PerpStatusResponse: + type: 'object' + required: + - 'network' + - 'timestamp' + - 'latency' + - 'base' + - 'quote' + - 'isActive' + properties: + network: + type: 'string' + example: 'mainnet' + timestamp: + type: 'integer' + example: 1636368085740 + latency: + type: 'number' + example: 1 + base: + type: 'string' + example: 'AAVE' + quote: + type: 'string' + example: 'USD' + isActive: + type: 'boolean' + example: 'true' + + PerpPositionRequest: + type: 'object' + required: + - 'chain' + - 'network' + - 'connector' + - 'base' + - 'quote' + - 'address' + properties: + chain: + type: 'string' + example: 'ethereum' + network: + type: 'string' + example: 'optimism' + connector: + type: 'string' + example: 'perp' + base: + type: 'string' + example: 'AAVE' + quote: + type: 'string' + example: 'USD' + address: + type: 'string' + example: '0x...' + + PerpPositionResponse: + type: 'object' + required: + - 'network' + - 'timestamp' + - 'latency' + - 'base' + - 'quote' + - 'positionAmt' + - 'positionSide' + - 'unrealizedProfit' + - 'leverage' + - 'entryPrice' + - 'tickerSymbol' + properties: + network: + type: 'string' + example: 'mainnet' + timestamp: + type: 'integer' + example: 1636368085740 + latency: + type: 'number' + example: 1 + base: + type: 'string' + example: 'AAVE' + quote: + type: 'string' + example: 'USD' + positionAmt: + type: 'string' + example: '0.1' + positionSide: + type: 'string' + example: 'LONG' + unrealizedProfit: + type: 'string' + example: '0.3' + leverage: + type: 'string' + example: '1' + entryPrice: + type: 'string' + example: '100.3' + tickerSymbol: + type: 'string' + example: 'AAVEUSD' + + PerpBalanceRequest: + type: 'object' + required: + - 'chain' + - 'network' + - 'connector' + - 'address' + properties: + chain: + type: 'string' + example: 'ethereum' + network: + type: 'string' + example: 'optimism' + connector: + type: 'string' + example: 'perp' + address: + type: 'string' + example: '0x...' + + PerpBalanceResponse: + type: 'object' + required: + - 'network' + - 'timestamp' + - 'latency' + - 'balance' + + properties: + network: + type: 'string' + example: 'mainnet' + timestamp: + type: 'integer' + example: 1636368085740 + latency: + type: 'number' + example: 1 + balance: + type: 'string' + example: '100' + + PerpOpenRequest: + type: 'object' + required: + - 'quote' + - 'base' + - 'amount' + - 'side' + - 'chain' + - 'network' + - 'connector' + - 'address' + properties: + quote: + type: 'string' + example: 'AAVE' + base: + type: 'string' + example: 'USD' + amount: + type: 'string' + example: '10' + side: + type: 'string' + example: 'LONG' + nonce: + type: number + chain: + type: 'string' + example: 'ethereum' + network: + type: 'string' + example: 'optimism' + connector: + type: 'string' + example: 'perp' + address: + type: 'string' + example: '0x...' + + PerpOpenResponse: + type: 'object' + required: + - 'network' + - 'timestamp' + - 'latency' + - 'base' + - 'quote' + - 'amount' + - 'gasPrice' + - 'gasPriceToken' + - 'gasLimit' + - 'gasCost' + - 'nonce' + properties: + network: + type: 'string' + example: 'mainnet' + timestamp: + type: 'integer' + example: 1636368085740 + latency: + type: 'number' + example: 0.5 + base: + type: 'string' + example: 'AAVE' + quote: + type: 'string' + example: 'USD' + amount: + type: 'string' + example: '10' + gasPrice: + type: 'string' + gasPriceToken: + type: 'string' + example: 'ETH' + gasLimit: + type: 'string' + gasCost: + type: 'string' + nonce: + type: 'string' + txHash: + type: 'string' + + PerpCloseRequest: + type: 'object' + required: + - 'quote' + - 'base' + - 'chain' + - 'network' + - 'connector' + - 'address' + properties: + quote: + type: 'string' + example: 'AAVE' + base: + type: 'string' + example: 'USD' + nonce: + type: number + chain: + type: 'string' + example: 'ethereum' + network: + type: 'string' + example: 'optimism' + connector: + type: 'string' + example: 'perp' + address: + type: 'string' + example: '0x...' + + PerpCloseResponse: + type: 'object' + required: + - 'network' + - 'timestamp' + - 'latency' + - 'base' + - 'gasPrice' + - 'gasPriceToken' + - 'gasLimit' + - 'gasCost' + - 'nonce' + properties: + network: + type: 'string' + example: 'mainnet' + timestamp: + type: 'integer' + example: 1636368085740 + latency: + type: 'number' + example: 0.5 + base: + type: 'string' + example: 'AAVE' + gasPrice: + type: 'string' + gasPriceToken: + type: 'string' + example: 'ETH' + gasLimit: + type: 'string' + gasCost: + type: 'string' + nonce: + type: 'string' + txHash: + type: 'string' + + NearBalancesRequest: + type: 'object' + required: + - 'address' + - 'tokenSymbols' + - 'chain' + - 'network' + properties: + privateKey: + type: 'string' + example: 'hummingbot.near' + tokenSymbols: + type: 'array' + items: 'string' + example: ["NEAR", "ETH", "AURORA"] + chain: + type: 'string' + example: 'near' + network: + type: 'string' + example: 'testnet' + + NearBalancesResponse: + type: 'object' + required: + - 'network' + - 'timestamp' + - 'latency' + - 'balances' + properties: + network: + type: 'string' + example: 'testnet' + timestamp: + type: 'integer' + example: 1636368085740 + latency: + type: 'number' + example: 0.5 + balances: + type: 'object' + properties: + id: + type: 'string' + name: + type: 'string' + example: '{"NEAR": "1.5", "ETH": "100", "AURORA": "300"}' + + NearPollRequest: + type: 'object' + required: + - 'address' + - 'txHash' + - 'chain' + - 'network' + properties: + address: + type: 'string' + example: 'hummingbot.near' + txHash: + type: 'string' + example: 'HnpRwb8PjrtLjExxz4YxdiyJ2AwuRFhZHKa9WUASwyxk' + chain: + type: 'string' + example: 'near' + network: + type: 'string' + example: 'testnet' + + NearPollResponse: + type: 'object' + required: + - 'network' + - 'timestamp' + - 'currentBlock' + - 'txHash' + - 'txStatus' + - 'txReceipt' + properties: + network: + type: 'string' + example: 'testnet' + timestamp: + type: 'integer' + example: 1636368085740 + currentBlock: + type: 'integer' + example: 28243911 + txHash: + type: 'string' + example: 'HnpRwb8PjrtLjExxz4YxdiyJ2AwuRFhZHKa9WUASwyxk' + txStatus: + type: 'number' + example: 1 + txReceipt: + type: 'object' + diff --git a/docs/swagger/evm-routes.yml b/docs/swagger/evm-routes.yml new file mode 100644 index 0000000000..6e7a292af2 --- /dev/null +++ b/docs/swagger/evm-routes.yml @@ -0,0 +1,104 @@ +paths: + /evm/nonce: + post: + tags: + - 'evm' + summary: 'Get the current nonce for the provided private key' + operationId: 'nonce' + consumes: + - 'application/json' + produces: + - 'application/json' + parameters: + - in: 'body' + name: 'body' + required: true + schema: + $ref: '#/definitions/NonceRequest' + responses: + '200': + schema: + $ref: '#/definitions/NonceResponse' + + /evm/nextNonce: + post: + tags: + - 'evm' + summary: 'Get the next nonce for the provided private key' + operationId: 'nonce' + consumes: + - 'application/json' + produces: + - 'application/json' + parameters: + - in: 'body' + name: 'body' + required: true + schema: + $ref: '#/definitions/NonceRequest' + responses: + '200': + schema: + $ref: '#/definitions/NonceResponse' + + /evm/allowances: + post: + tags: + - 'evm' + summary: 'Get the ERC20 allowances for a spender on a given private key' + operationId: 'allowances' + consumes: + - 'application/json' + produces: + - 'application/json' + parameters: + - in: 'body' + name: 'body' + required: true + schema: + $ref: '#/definitions/AllowancesRequest' + responses: + '200': + schema: + $ref: '#/definitions/AllowancesResponse' + /evm/approve: + post: + tags: + - 'evm' + summary: 'Create an ERC20 approval for a spender on an private key' + operationId: 'approve' + consumes: + - 'application/json' + produces: + - 'application/json' + parameters: + - in: 'body' + name: 'body' + required: true + schema: + $ref: '#/definitions/ApproveRequest' + responses: + '200': + schema: + $ref: '#/definitions/ApproveResponse' + + /evm/cancel: + post: + tags: + - 'evm' + summary: 'Cancel transaction' + operationId: 'cancel' + consumes: + - 'application/json' + produces: + - 'application/json' + parameters: + - in: 'body' + name: 'body' + required: true + schema: + $ref: '#/definitions/CancelRequest' + responses: + '200': + schema: + $ref: '#/definitions/CancelResponse' diff --git a/docs/swagger/main-routes.yml b/docs/swagger/main-routes.yml new file mode 100644 index 0000000000..181f30085f --- /dev/null +++ b/docs/swagger/main-routes.yml @@ -0,0 +1,37 @@ +paths: + /: + get: + tags: + - 'system' + summary: 'Ping the server to see that it is running' + produces: + - 'application/json' + responses: '200' + /restart: + post: + tags: + - 'system' + summary: 'Restart gateway. It is recommended to call this route after calling /config/update succesfully' + description: 'Restart the gateway server.' + operationId: 'restart' + parameters: + - in: 'body' + name: 'body' + required: false + responses: '200' + /config/update: + post: + tags: + - 'system' + summary: 'Updates Gateway configuration' + description: 'Many changes will not have an effect until the gateway server is restarted. Try calling /restart afterwards.' + operationId: 'update' + consumes: + - 'application/json' + parameters: + - in: 'body' + name: 'body' + required: true + schema: + $ref: '#/definitions/ConfigUpdateRequest' + responses: '200' diff --git a/docs/swagger/near-routes.yml b/docs/swagger/near-routes.yml new file mode 100644 index 0000000000..cafdd30f30 --- /dev/null +++ b/docs/swagger/near-routes.yml @@ -0,0 +1,63 @@ +paths: + /near/balances: + get: + tags: + - 'near' + summary: 'Get the balances of an Near private key' + operationId: 'near.balances' + consumes: + - 'application/json' + produces: + - 'application/json' + parameters: + - in: 'body' + name: 'body' + required: true + schema: + $ref: '#/definitions/NearBalancesRequest' + responses: + '200': + schema: + $ref: '#/definitions/NearBalancesResponse' + + /near/tokens: + get: + tags: + - 'near' + summary: 'Request token information and balance of requested token symbol' + operationId: 'near.token' + consumes: + - 'application/json' + produces: + - 'application/json' + parameters: + - in: 'body' + name: 'body' + required: true + schema: + $ref: '#/definitions/NetworkSelectionRequest' + responses: + '200': + schema: + $ref: '#/definitions/TokensResponse' + + /near/poll: + post: + tags: + - 'near' + summary: 'Poll the status of a Near transaction' + operationId: 'near.poll' + consumes: + - 'application/json' + produces: + - 'application/json' + parameters: + - in: 'body' + name: 'body' + required: true + schema: + $ref: '#/definitions/NearPollRequest' + responses: + '200': + schema: + $ref: '#/definitions/NearPollResponse' diff --git a/docs/swagger/network-routes.yml b/docs/swagger/network-routes.yml new file mode 100644 index 0000000000..71196c060e --- /dev/null +++ b/docs/swagger/network-routes.yml @@ -0,0 +1,82 @@ +paths: + /network/config: + get: + tags: + - 'network' + summary: 'Get every gateway configuration option' + produces: + - 'application/json' + responses: '200' + /network/status: + get: + tags: + - 'network' + summary: 'Returns a list of the currently connected networks' + produces: + - 'application/json' + responses: '200' + /network/poll: + post: + tags: + - 'network' + summary: 'Poll the status of a transaction' + operationId: 'poll' + consumes: + - 'application/json' + produces: + - 'application/json' + parameters: + - in: 'body' + name: 'body' + required: true + schema: + $ref: '#/definitions/PollRequest' + responses: + '200': + schema: + $ref: '#/definitions/PollResponse' + /network/balances: + post: + tags: + - 'network' + summary: 'Get the balances of a private key' + operationId: 'balances' + consumes: + - 'application/json' + produces: + - 'application/json' + parameters: + - in: 'body' + name: 'body' + required: true + schema: + $ref: '#/definitions/BalancesRequest' + responses: + '200': + schema: + $ref: '#/definitions/BalancesResponse' + /network/tokens: + get: + tags: + - 'network' + summary: 'Returns a list of tokens available on the specified network' + produces: + - 'application/json' + parameters: + - in: 'query' + name: 'chain' + required: true + type: 'string' + example: 'ethereum' + - in: 'query' + name: 'network' + required: true + type: 'string' + example: 'kovan' + - in: 'query' + name: 'tokenSymbols' + required: false + responses: + '200': + schema: + $ref: '#/definitions/TokensResponse' diff --git a/docs/swagger/swagger.yml b/docs/swagger/swagger.yml new file mode 100644 index 0000000000..09ad5d067d --- /dev/null +++ b/docs/swagger/swagger.yml @@ -0,0 +1,40 @@ +swagger: '2.0' + +info: + description: 'Gateway allows clients to interoperate with blockchains and DeFi protocols via a REST API. This allows for a language agnostic way to use official SDKs for blockchains.' + version: '1.0.0' + title: 'gateway' + contact: + email: 'dev@hummingbot.io' + license: + name: 'Apache 2.0' + url: 'http://www.apache.org/licenses/LICENSE-2.0.html' + +host: 'localhost:15888' + +tags: + - name: 'system' + description: 'Get information about the currently running Gateway program' + - name: 'network' + description: 'Get information about specific networks' + - name: 'wallet' + description: 'Manage private keys available for use in Gateway' + - name: 'amm' + description: 'Interact with AMM decentralized exchanges' + - name: 'clob' + description: 'Interact with CLOB decentralized exchanges' + - name: 'amm/liquidity' + description: 'Interact with AMM LP contracts' + - name: 'evm' + description: 'Interact with EVM based blockchains' + - name: 'cosmos' + description: 'Interact with the Cosmos blockchain' + - name: 'near' + description: 'Interact with the Near blockchain' + +schemes: + - 'http' + +externalDocs: + description: 'Find out more about gateway' + url: 'https://github.com/hummingbot/hummingbot' diff --git a/docs/swagger/wallet-routes.yml b/docs/swagger/wallet-routes.yml new file mode 100644 index 0000000000..795a19cb75 --- /dev/null +++ b/docs/swagger/wallet-routes.yml @@ -0,0 +1,46 @@ +paths: + /wallet: + get: + tags: + - 'wallet' + summary: 'Get list of all added wallets and chains' + operationId: 'get' + produces: + - 'application/json' + responses: + '200': + description: 'Wallet list' + schema: + $ref: '#/definitions/GetWalletResponse' + + /wallet/add: + post: + tags: + - 'wallet' + summary: 'Add wallet to gateway' + operationId: 'add' + consumes: + - 'application/json' + parameters: + - in: 'body' + name: 'body' + required: true + schema: + $ref: '#/definitions/AddWalletRequest' + responses: '200' + + /wallet/remove: + delete: + tags: + - 'wallet' + summary: 'Removes a wallet from gateway' + operationId: 'delete' + consumes: + - 'application/json' + parameters: + - in: 'body' + name: 'body' + required: true + schema: + $ref: '#/definitions/RemoveWalletRequest' + responses: '200' diff --git a/docs/testing.md b/docs/testing.md new file mode 100644 index 0000000000..d3068e380a --- /dev/null +++ b/docs/testing.md @@ -0,0 +1,196 @@ +# Unit tests for gateway + +Gateway is written in [TypeScript](https://www.typescriptlang.org/) for a NodeJS environment. +The majority of block chain SDKs we use have type annotations for TypeScript so they integrate +smoothly into this project. + +Our main tool for unit testing is [jest](https://jestjs.io). Our configurations +for jest are located [here](../jest.config.js). + +We use [prettier](https://prettier.io/) for formatting. Configuration file +[here](../.prettierrc). + +We use [ESLint](https://eslint.org/) for linting. Configuration file +[here](../.eslintrc.js). + +## Running the unit tests + +We primarily use `yarn` for development, but `npm` should work as well. + +First install dependencies: + +``` +yarn install --frozen-lockfile +``` + +Then build the gateway package: + +``` +yarn build +``` + +Then you can run the unit tests: + +``` +yarn test:unit +``` + +You do not actually need to build before running, but if you have any compiler +errors, the unit tests will crash, so in practice if you make changes, it is +best to run build first. + +## Run individual unit test file + +`yarn test:unit` runs all of the tests. Alternatively, you can run the unit tests +from a single file with `yarn jest path/to/test`. For example: + +``` +yarn jest test/chains/ethereum/ethereum.controller.test.ts +``` + +## Test coverage + +Our github repository has requirements for test coverage. These requirements may +change, so specifically look at our [workflow file](../../.github/workflows/workflow.yml) +and find the section for gateway unit tests. If you are interested in merging a PR, +you will need to make sure unit test coverage meets the requirements. + +To see the current coverage, run the following: + +``` +yarn test:cov +``` + +This will produce a table with absolute numbers, percentages and line numbers that +are not being tested. These are helpful for knowing where to increment tests. + +### Coverage areas + +When you run test coverage, you will see a table of information with the following +concepts: + +function coverage: the percentage of declared functions that are tested (this +ignores details of how much internal function code is run). + +branch coverage: percentage of decision conditions like loop, if/else, while that +are called. + +statement coverage: the percentage of executable statements this includes function calls, +assignment, branches that are called + +line coverage: the percentage of lines of declared code that are called. + +uncovered lines: the line numbers of code that is not called + + +## Jest: describe, it, before, after + +The main tools from Jest we use are `describe` and `it`. + +`describe` is a collection of one or more related unit tests. For example, +the expected result of adding one to different numbers. You should include a +description. + + +`it` is an individual unit test with a description. + +```TypeScript +describe('addition', () => { + it('1+1=2', () => { + expect(1+1).toEqual(2); + }); + + it('1+2=3', () => { + expect(1+2).toEqual(3); + }); +}); + +``` + +Some useful tools to reduce repetition are: + +- `beforeAll`: run code before any test in the file is run. +- `afterAll`: run code after all the tests in a file are run. +- `beforeEach`: run code before every test in scope. +- `afterEach`: run code after every test in scope. + +## Testing for Failure + +Not only do we want to test that things work properly, we also want to +test when we expect things to fail. Consider adding expected error throwing +to your unit test code. + +## Network Calls and Mock Values + +Our philosophy for unit testing is to avoid any outside network calls. Unit tests +requiring calls to APIs may be fragile and slow. Instead we try to mock the values that +would be returned from an API. This will allow us to test the logic of the code, without +worrying about the value returned from a network call. + +### patch and unpatch + +We designed our own patching system in [patch.ts](../test/services/patch.ts) since we +did not find a good tool for TypeScript or JavaScript. The main idea is to mock values +and function return values on objects, namespaces and modules, and remove these changes +after a test. + +Here is an example: + +```TypeScript + patch(eth, 'getWallet', () => { + return { + address: '0...', + }; + }); +``` + +Normally `eth.getWallet` would take a private key and return a `Wallet` object +with some information from the Ethereum block chain. This would require a network +call. Instead, we only need the address. + +Generally you will find in our unit tests the following code: + +```TypeScript + afterEach(() => { + unpatch(); + }); +``` + +This means after each test `it`, remove any applied patch. This way there will not +be unexpected patches applied in other tests. + +Please keep in mind that [patch.ts](../test/services/patch.ts) was only designed +for our current use cases, and may not support patching all TypeScript data types. + +## Testing Non-Network I/0, Files, etc. + +Other than network calls, we generally allow system I/O for testing, for example: +[local-storage.test.ts](../test/services/local-storage.test.s) tests how we use leveldb, +and [config-manager-v2.test.ts](../test/services/config-manager-v2.test.s) creates +temporary files. The general rule of thumb is to store files with `mkdtemp` and +remove them when they are no longer needed. + +# Manual Testing + +We also do a lot of manual testing of gateway to ensure API endpoints behave +correctly. It is best to start doing these tests on test networks to ensure +you do not lose valuable cryptocurrencies. + +The main source of testing is a [curl file](../manual-tests/curl.sh). This outlines +a number of curl commands that are paired with JSON request bodies stored in files. +By storing them in files, they are easier to edit. + +Currently the following env varables are expected, depending on the route: + +```bash +AVALANCHE_ADDRESSS='0000...' +ETH_ADDRESS='000...' +GATEWAY_CERT='/absolute/path/to/certs/client_cert.pem' +GATEWAY_KEY='/absolut/path/to/certs/client_key.pem' +``` + +You may also replace these values with hard coded ones if you like. Please be +careful when storing private keys in the environment or in a file. Never commit +these values to a git repository. + +If you add new routes to gateway, add a corresponding curl call in [curl.sh](../manual-tests/curl.sh). diff --git a/hooks/README.md b/hooks/README.md new file mode 100644 index 0000000000..3f4e8340dc --- /dev/null +++ b/hooks/README.md @@ -0,0 +1,5 @@ +# Docker Autobuild Hooks + +This folder containers hooks for docker autobuild. + +[Hummingbot builds](https://hub.docker.com/r/coinalpha/hummingbot/builds) \ No newline at end of file diff --git a/hooks/build b/hooks/build new file mode 100644 index 0000000000..165ae1ded3 --- /dev/null +++ b/hooks/build @@ -0,0 +1,7 @@ +#!/usr/bin/env sh + +# Get the build time stamp +BUILD_DATE=$(date -u +"%Y-%m-%dT%H:%M:%SZ") +# IMAGE_NAME=gateway-v2-image + +docker build --build-arg COMMIT=$GIT_TAG --build-arg BRANCH=$SOURCE_BRANCH --build-arg BUILD_DATE=$BUILD_DATE -t $IMAGE_NAME -f Dockerfile . \ No newline at end of file diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 0000000000..06dc1a0f89 --- /dev/null +++ b/jest.config.js @@ -0,0 +1,39 @@ +module.exports = { + preset: 'ts-jest', + testEnvironment: 'node', + forceExit: true, + coveragePathIgnorePatterns: [ + 'src/app.ts', + 'src/https.ts', + 'src/paths.ts', + 'src/services/ethereum-base.ts', + 'src/services/cosmos-base.ts', + 'src/services/telemetry-transport.ts', + 'src/chains/cronos/cronos.ts', + 'src/chains/binance-smart-chain/binance-smart-chain.ts', + 'src/chains/ethereum/ethereum.ts', + 'src/chains/avalanche/avalanche.ts', + 'src/chains/avalanche/pangolin/pangolin.ts', + 'src/chains/cosmos/cosmos.ts', + 'src/chains/near/near.ts', + 'src/chains/near/near.base.ts', + 'src/connectors/uniswap/uniswap.config.ts', + 'src/connectors/uniswap/uniswap.ts', + 'src/connectors/uniswap/uniswap.lp.helper.ts', + 'src/connectors/defikingdoms/defikingdoms.ts', + 'src/connectors/defira/defira.ts', + 'src/connectors/openocean/openocean.ts', + 'src/connectors/pangolin/pangolin.ts', + 'src/connectors/quickswap/quickswap.ts', + 'src/connectors/sushiswap/sushiswap.ts', + 'src/connectors/traderjoe/traderjoe.ts', + 'src/network/network.controllers.ts', + 'src/services/ethereum-base.ts', + 'src/services/telemetry-transport.ts', + 'test/*', + ], + modulePathIgnorePatterns: ['/dist/'], + setupFilesAfterEnv: ['/test/setupTests.js'], + globalSetup: '/test/setup.ts', + globalTeardown: '/test/teardown.ts', +}; diff --git a/manual-tests/curl.sh b/manual-tests/curl.sh new file mode 100644 index 0000000000..d1a0fe6ac0 --- /dev/null +++ b/manual-tests/curl.sh @@ -0,0 +1,205 @@ +# you need to install to programs: curl and envsubst + +# You must the following values in your command line +# export ETH_ADDRESS='' +# export AVALANCHE_ADDRESS='' +# export NEAR_ADDRESS='/dev/null 2>&1 ; pwd -P )/../conf" + +TEMPLATE_DIR="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )/../src/templates" + +echo "HOST_CONF_PATH=$HOST_CONF_PATH" + +mkdir $HOST_CONF_PATH + +# copy the following files + +cp $TEMPLATE_DIR/**.yml $HOST_CONF_PATH +echo "All configuration files have been created." \ No newline at end of file diff --git a/src/@types/buffer-layout.d.ts b/src/@types/buffer-layout.d.ts new file mode 100644 index 0000000000..69ceddae11 --- /dev/null +++ b/src/@types/buffer-layout.d.ts @@ -0,0 +1,8 @@ +declare module 'buffer-layout' { + export class Blob {} + // eslint-disable-next-line @typescript-eslint/no-unused-vars + export class Layout {} + export class Structure {} + export class UInt {} + export class Union {} +} diff --git a/src/@types/cycle.d.ts b/src/@types/cycle.d.ts new file mode 100644 index 0000000000..cb407def96 --- /dev/null +++ b/src/@types/cycle.d.ts @@ -0,0 +1,3 @@ +declare module 'cycle' { + export const cycle: any; +} diff --git a/src/amm/amm.controllers.ts b/src/amm/amm.controllers.ts new file mode 100644 index 0000000000..dd9ab9b52b --- /dev/null +++ b/src/amm/amm.controllers.ts @@ -0,0 +1,252 @@ +import { + EstimateGasResponse, + PerpAvailablePairsResponse, + PerpCreateTakerRequest, + PerpCreateTakerResponse, + PerpMarketRequest, + PerpMarketResponse, + PerpPositionRequest, + PerpPositionResponse, + PerpPricesResponse, + PriceRequest, + PriceResponse, + TradeRequest, + TradeResponse, + AddLiquidityRequest, + AddLiquidityResponse, + RemoveLiquidityRequest, + RemoveLiquidityResponse, + CollectEarnedFeesRequest, + PositionRequest, + PositionResponse, + PoolPriceRequest, + PoolPriceResponse, + PerpBalanceRequest, + PerpBalanceResponse, +} from './amm.requests'; +import { + price as uniswapPrice, + trade as uniswapTrade, + addLiquidity as uniswapV3AddLiquidity, + removeLiquidity as uniswapV3RemoveLiquidity, + collectEarnedFees as uniswapV3CollectEarnedFees, + positionInfo as uniswapV3PositionInfo, + poolPrice as uniswapV3PoolPrice, + estimateGas as uniswapEstimateGas, +} from '../connectors/uniswap/uniswap.controllers'; +import { + price as refPrice, + trade as refTrade, + estimateGas as refEstimateGas, +} from '../connectors/ref/ref.controllers'; +import { + getPriceData as perpPriceData, + createTakerOrder, + estimateGas as perpEstimateGas, + getPosition, + getAvailablePairs, + checkMarketStatus, + getAccountValue, +} from '../connectors/perp/perp.controllers'; +import { getChain, getConnector } from '../services/connection-manager'; +import { + Ethereumish, + Nearish, + NetworkSelectionRequest, + Perpish, + RefAMMish, + Uniswapish, + UniswapLPish, +} from '../services/common-interfaces'; + +export async function price(req: PriceRequest): Promise { + const chain = await getChain(req.chain, req.network); + const connector: Uniswapish | RefAMMish = await getConnector< + Uniswapish | RefAMMish + >(req.chain, req.network, req.connector); + + // we currently use the presence of routerAbi to distinguish Uniswapish from RefAMMish + if ('routerAbi' in connector) { + return uniswapPrice(chain, connector, req); + } else { + return refPrice(chain, connector, req); + } +} + +export async function trade(req: TradeRequest): Promise { + const chain = await getChain(req.chain, req.network); + const connector: Uniswapish | RefAMMish = await getConnector< + Uniswapish | RefAMMish + >(req.chain, req.network, req.connector); + + // we currently use the presence of routerAbi to distinguish Uniswapish from RefAMMish + if ('routerAbi' in connector) { + return uniswapTrade(chain, connector, req); + } else { + return refTrade(chain, connector, req); + } +} + +export async function addLiquidity( + req: AddLiquidityRequest +): Promise { + const chain = await getChain(req.chain, req.network); + const connector: UniswapLPish = await getConnector( + req.chain, + req.network, + req.connector + ); + + return uniswapV3AddLiquidity(chain, connector, req); +} + +export async function reduceLiquidity( + req: RemoveLiquidityRequest +): Promise { + const chain = await getChain(req.chain, req.network); + const connector: UniswapLPish = await getConnector( + req.chain, + req.network, + req.connector + ); + + return uniswapV3RemoveLiquidity(chain, connector, req); +} + +export async function collectFees( + req: CollectEarnedFeesRequest +): Promise { + const chain = await getChain(req.chain, req.network); + const connector: UniswapLPish = await getConnector( + req.chain, + req.network, + req.connector + ); + return uniswapV3CollectEarnedFees(chain, connector, req); +} + +export async function positionInfo( + req: PositionRequest +): Promise { + const chain = await getChain(req.chain, req.network); + const connector: UniswapLPish = await getConnector( + req.chain, + req.network, + req.connector + ); + return uniswapV3PositionInfo(chain, connector, req); +} + +export async function poolPrice( + req: PoolPriceRequest +): Promise { + const chain = await getChain(req.chain, req.network); + const connector: UniswapLPish = await getConnector( + req.chain, + req.network, + req.connector + ); + return uniswapV3PoolPrice(chain, connector, req); +} + +export async function estimateGas( + req: NetworkSelectionRequest +): Promise { + const chain = await getChain(req.chain, req.network); + const connector: Uniswapish | RefAMMish = await getConnector< + Uniswapish | RefAMMish + >(req.chain, req.network, req.connector); + + // we currently use the presence of routerAbi to distinguish Uniswapish from RefAMMish + if ('routerAbi' in connector) { + return uniswapEstimateGas(chain, connector); + } else { + return refEstimateGas(chain, connector); + } +} + +// perp +export async function perpMarketPrices( + req: PriceRequest +): Promise { + const chain = await getChain(req.chain, req.network); + const connector: Perpish = await getConnector( + req.chain, + req.network, + req.connector + ); + return perpPriceData(chain, connector, req); +} + +export async function perpOrder( + req: PerpCreateTakerRequest, + isOpen: boolean +): Promise { + const chain = await getChain(req.chain, req.network); + const connector: Perpish = await getConnector( + req.chain, + req.network, + req.connector, + req.address + ); + return createTakerOrder(chain, connector, req, isOpen); +} + +export async function perpPosition( + req: PerpPositionRequest +): Promise { + const chain = await getChain(req.chain, req.network); + const connector: Perpish = await getConnector( + req.chain, + req.network, + req.connector, + req.address + ); + return getPosition(chain, connector, req); +} + +export async function perpBalance( + req: PerpBalanceRequest +): Promise { + const chain = await getChain(req.chain, req.network); + const connector: Perpish = ( + await getConnector(req.chain, req.network, req.connector, req.address) + ); + return getAccountValue(chain, connector); +} + +export async function perpPairs( + req: NetworkSelectionRequest +): Promise { + const chain = await getChain(req.chain, req.network); + const connector: Perpish = await getConnector( + req.chain, + req.network, + req.connector + ); + return getAvailablePairs(chain, connector); +} + +export async function getMarketStatus( + req: PerpMarketRequest +): Promise { + const chain = await getChain(req.chain, req.network); + const connector: Perpish = await getConnector( + req.chain, + req.network, + req.connector + ); + return checkMarketStatus(chain, connector, req); +} + +export async function estimatePerpGas( + req: NetworkSelectionRequest +): Promise { + const chain = await getChain(req.chain, req.network); + const connector: Perpish = await getConnector( + req.chain, + req.network, + req.connector + ); + return perpEstimateGas(chain, connector); +} diff --git a/src/amm/amm.requests.ts b/src/amm/amm.requests.ts new file mode 100644 index 0000000000..d22d2b5e24 --- /dev/null +++ b/src/amm/amm.requests.ts @@ -0,0 +1,238 @@ +import { PerpPosition } from '../connectors/perp/perp'; +import { + NetworkSelectionRequest, + PositionInfo as LPPositionInfo, +} from '../services/common-interfaces'; +export type Side = 'BUY' | 'SELL'; +export type PerpSide = 'LONG' | 'SHORT'; + +export interface PriceRequest extends NetworkSelectionRequest { + quote: string; + base: string; + amount: string; + side: Side; + allowedSlippage?: string; +} + +export interface PriceResponse { + base: string; + quote: string; + amount: string; + rawAmount: string; + expectedAmount: string; + price: string; + network: string; + timestamp: number; + latency: number; + gasPrice: number; + gasPriceToken: string; + gasLimit: number; + gasCost: string; +} + +export interface PoolPriceRequest extends NetworkSelectionRequest { + token0: string; + token1: string; + fee: string; + period: number; + interval: number; +} + +export interface PoolPriceResponse { + token0: string; + token1: string; + fee: string; + period: number; + interval: number; + prices: string[]; + network: string; + timestamp: number; + latency: number; +} + +export interface TradeRequest extends NetworkSelectionRequest { + quote: string; + base: string; + amount: string; + address: string; + side: Side; + limitPrice?: string; // integer as string + nonce?: number; + maxFeePerGas?: string; + maxPriorityFeePerGas?: string; + allowedSlippage?: string; +} + +export interface TradeResponse { + network: string; + timestamp: number; + latency: number; + base: string; + quote: string; + amount: string; + rawAmount: string; + expectedIn?: string; + expectedOut?: string; + price: string; + gasPrice: number; + gasPriceToken: string; + gasLimit: number; + gasCost: string; + nonce?: number; + txHash: string | any | undefined; +} + +export interface AddLiquidityRequest extends NetworkSelectionRequest { + address: string; + token0: string; + token1: string; + amount0: string; + amount1: string; + fee: string; + lowerPrice: string; // integer as string + upperPrice: string; // integer as string + tokenId?: number; + nonce?: number; + maxFeePerGas?: string; + maxPriorityFeePerGas?: string; +} + +export interface AddLiquidityResponse { + network: string; + timestamp: number; + latency: number; + token0: string; + token1: string; + fee: string; + tokenId: number; + gasPrice: number; + gasPriceToken: string; + gasLimit: number; + gasCost: string; + nonce: number; + txHash: string | undefined; +} + +export interface CollectEarnedFeesRequest extends NetworkSelectionRequest { + address: string; + tokenId: number; + nonce?: number; + maxFeePerGas?: string; + maxPriorityFeePerGas?: string; +} + +export interface RemoveLiquidityRequest extends CollectEarnedFeesRequest { + decreasePercent?: number; +} + +export interface RemoveLiquidityResponse { + network: string; + timestamp: number; + latency: number; + tokenId: number; + gasPrice: number; + gasPriceToken: string; + gasLimit: number; + gasCost: string; + nonce: number; + txHash: string | undefined; +} + +export interface PositionRequest extends NetworkSelectionRequest { + tokenId: number; +} + +export interface PositionResponse extends LPPositionInfo { + network: string; + timestamp: number; + latency: number; +} + +export interface EstimateGasResponse { + network: string; + timestamp: number; + gasPrice: number; + gasPriceToken: string; + gasLimit: number; + gasCost: string; +} + +export interface PerpPricesResponse { + base: string; + quote: string; + network: string; + timestamp: number; + latency: number; + markPrice: string; + indexPrice: string; + indexTwapPrice: string; +} + +export interface PerpMarketRequest extends NetworkSelectionRequest { + quote: string; + base: string; +} + +export interface PerpMarketResponse { + network: string; + timestamp: number; + latency: number; + base: string; + quote: string; + isActive: boolean; +} + +export interface PerpBalanceRequest extends NetworkSelectionRequest { + address: string; +} + +export interface PerpBalanceResponse { + network: string; + timestamp: number; + latency: number; + balance: string; +} + +export interface PerpPositionRequest extends PerpMarketRequest { + address: string; +} + +export interface PerpPositionResponse extends PerpPosition { + network: string; + timestamp: number; + latency: number; + base: string; + quote: string; +} + +export interface PerpAvailablePairsResponse { + network: string; + timestamp: number; + latency: number; + pairs: string[]; +} + +export interface PerpCreateTakerRequest extends NetworkSelectionRequest { + quote: string; + base: string; + address: string; + amount?: string; + side?: PerpSide; + allowedSlippage?: string; + nonce?: number; +} + +export interface PerpCreateTakerResponse { + network: string; + timestamp: number; + latency: number; + base: string; + quote: string; + amount: string; + gasPrice: number; + gasPriceToken: string; + gasLimit: number; + gasCost: string; + nonce: number; + txHash: string | undefined; +} diff --git a/src/amm/amm.routes.ts b/src/amm/amm.routes.ts new file mode 100644 index 0000000000..702f0b8354 --- /dev/null +++ b/src/amm/amm.routes.ts @@ -0,0 +1,284 @@ +/* eslint-disable no-inner-declarations */ +/* eslint-disable @typescript-eslint/ban-types */ +import { Router, Request, Response } from 'express'; +import { asyncHandler } from '../services/error-handler'; +import { + price, + trade, + estimatePerpGas, + perpMarketPrices, + perpOrder, + getMarketStatus, + perpPosition, + perpPairs, + positionInfo, + addLiquidity, + reduceLiquidity, + collectFees, + poolPrice, + estimateGas, + perpBalance, +} from './amm.controllers'; +import { + EstimateGasResponse, + PerpAvailablePairsResponse, + PerpCreateTakerRequest, + PerpCreateTakerResponse, + PerpMarketRequest, + PerpMarketResponse, + PerpPositionRequest, + PerpPositionResponse, + PerpPricesResponse, + PriceRequest, + PriceResponse, + TradeRequest, + TradeResponse, + AddLiquidityRequest, + AddLiquidityResponse, + RemoveLiquidityRequest, + RemoveLiquidityResponse, + CollectEarnedFeesRequest, + PositionRequest, + PositionResponse, + PoolPriceRequest, + PoolPriceResponse, + PerpBalanceRequest, + PerpBalanceResponse, +} from './amm.requests'; +import { + validateEstimateGasRequest, + validatePerpCloseTradeRequest, + validatePerpMarketStatusRequest, + validatePerpOpenTradeRequest, + validatePerpPairsRequest, + validatePerpPositionRequest, + validatePriceRequest, + validateTradeRequest, + validateAddLiquidityRequest, + validateRemoveLiquidityRequest, + validateCollectFeeRequest, + validatePositionRequest, + validatePoolPriceRequest, + validatePerpBalanceRequest, +} from './amm.validators'; +import { NetworkSelectionRequest } from '../services/common-interfaces'; + +export namespace AmmRoutes { + export const router = Router(); + + router.post( + '/price', + asyncHandler( + async ( + req: Request<{}, {}, PriceRequest>, + res: Response + ) => { + validatePriceRequest(req.body); + res.status(200).json(await price(req.body)); + } + ) + ); + + router.post( + '/trade', + asyncHandler( + async ( + req: Request<{}, {}, TradeRequest>, + res: Response + ) => { + validateTradeRequest(req.body); + res.status(200).json(await trade(req.body)); + } + ) + ); + + router.post( + '/estimateGas', + asyncHandler( + async ( + req: Request<{}, {}, NetworkSelectionRequest>, + res: Response + ) => { + validateEstimateGasRequest(req.body); + res.status(200).json(await estimateGas(req.body)); + } + ) + ); +} + +export namespace AmmLiquidityRoutes { + export const router = Router(); + + router.post( + '/position', + asyncHandler( + async ( + req: Request<{}, {}, PositionRequest>, + res: Response + ) => { + validatePositionRequest(req.body); + res.status(200).json(await positionInfo(req.body)); + } + ) + ); + + router.post( + '/add', + asyncHandler( + async ( + req: Request<{}, {}, AddLiquidityRequest>, + res: Response + ) => { + validateAddLiquidityRequest(req.body); + res.status(200).json(await addLiquidity(req.body)); + } + ) + ); + + router.post( + '/remove', + asyncHandler( + async ( + req: Request<{}, {}, RemoveLiquidityRequest>, + res: Response + ) => { + validateRemoveLiquidityRequest(req.body); + res.status(200).json(await reduceLiquidity(req.body)); + } + ) + ); + + router.post( + '/collect_fees', + asyncHandler( + async ( + req: Request<{}, {}, CollectEarnedFeesRequest>, + res: Response + ) => { + validateCollectFeeRequest(req.body); + res.status(200).json(await collectFees(req.body)); + } + ) + ); + + router.post( + '/price', + asyncHandler( + async ( + req: Request<{}, {}, PoolPriceRequest>, + res: Response + ) => { + validatePoolPriceRequest(req.body); + res.status(200).json(await poolPrice(req.body)); + } + ) + ); +} + +export namespace PerpAmmRoutes { + export const router = Router(); + + router.post( + '/market-prices', + asyncHandler( + async ( + req: Request<{}, {}, PriceRequest>, + res: Response + ) => { + validatePerpMarketStatusRequest(req.body); + res.status(200).json(await perpMarketPrices(req.body)); + } + ) + ); + + router.post( + '/market-status', + asyncHandler( + async ( + req: Request<{}, {}, PerpMarketRequest>, + res: Response + ) => { + validatePerpMarketStatusRequest(req.body); + res.status(200).json(await getMarketStatus(req.body)); + } + ) + ); + + router.post( + '/pairs', + asyncHandler( + async ( + req: Request<{}, {}, NetworkSelectionRequest>, + res: Response + ) => { + validatePerpPairsRequest(req.body); + res.status(200).json(await perpPairs(req.body)); + } + ) + ); + + router.post( + '/position', + asyncHandler( + async ( + req: Request<{}, {}, PerpPositionRequest>, + res: Response + ) => { + validatePerpPositionRequest(req.body); + res.status(200).json(await perpPosition(req.body)); + } + ) + ); + + router.post( + '/balance', + asyncHandler( + async ( + req: Request<{}, {}, PerpBalanceRequest>, + res: Response + ) => { + validatePerpBalanceRequest(req.body); + res.status(200).json(await perpBalance(req.body)); + } + ) + ); + + router.post( + '/open', + asyncHandler( + async ( + req: Request<{}, {}, PerpCreateTakerRequest>, + res: Response + ) => { + validatePerpOpenTradeRequest(req.body); + res.status(200).json(await perpOrder(req.body, true)); + } + ) + ); + + router.post( + '/close', + asyncHandler( + async ( + req: Request<{}, {}, PerpCreateTakerRequest>, + res: Response + ) => { + validatePerpCloseTradeRequest(req.body); + res.status(200).json(await perpOrder(req.body, false)); + } + ) + ); + + router.post( + '/estimateGas', + asyncHandler( + async ( + req: Request<{}, {}, NetworkSelectionRequest>, + res: Response + ) => { + validateEstimateGasRequest(req.body); + res.status(200).json(await estimatePerpGas(req.body)); + } + ) + ); +} diff --git a/src/amm/amm.validators.ts b/src/amm/amm.validators.ts new file mode 100644 index 0000000000..329b5609c2 --- /dev/null +++ b/src/amm/amm.validators.ts @@ -0,0 +1,339 @@ +import { + isFloatString, + isFractionString, + mkValidator, + mkRequestValidator, + RequestValidator, + Validator, +} from '../services/validators'; + +import { + validateChain, + validateNetwork, + validateNonce, + validateAddress, + validateMaxFeePerGas, + validateMaxPriorityFeePerGas, +} from '../chains/ethereum/ethereum.validators'; + +import { FeeAmount } from '@uniswap/v3-sdk'; + +export const invalidConnectorError: string = + 'The connector param is not a string.'; + +export const invalidQuoteError: string = 'The quote param is not a string.'; + +export const invalidBaseError: string = 'The base param is not a string.'; + +export const invalidTokenError: string = + 'One of the token params is not a string.'; + +export const invalidAmountError: string = + 'The amount param must be a string of a non-negative integer.'; + +export const invalidSideError: string = + 'The side param must be a string of "BUY" or "SELL".'; + +export const invalidPerpSideError: string = + 'The side param must be a string of "LONG" or "SHORT".'; + +export const invalidFeeTier: string = 'Incorrect fee tier'; + +export const invalidLimitPriceError: string = + 'The limitPrice param may be null or a string of a float or integer number.'; + +export const invalidLPPriceError: string = + 'One of the LP prices may be null or a string of a float or integer number.'; + +export const invalidTokenIdError: string = + 'If tokenId is included it must be a non-negative integer.'; + +export const invalidTimeError: string = + 'Period or interval has to be a non-negative integer.'; + +export const invalidDecreasePercentError: string = + 'If decreasePercent is included it must be a non-negative integer.'; + +export const invalidAllowedSlippageError: string = + 'The allowedSlippage param may be null or a string of a fraction.'; + +export const validateConnector: Validator = mkValidator( + 'connector', + invalidConnectorError, + (val) => typeof val === 'string' +); + +export const validateQuote: Validator = mkValidator( + 'quote', + invalidQuoteError, + (val) => typeof val === 'string' +); + +export const validateBase: Validator = mkValidator( + 'base', + invalidBaseError, + (val) => typeof val === 'string' +); + +export const validateToken0: Validator = mkValidator( + 'token0', + invalidTokenError, + (val) => typeof val === 'string' +); + +export const validateToken1: Validator = mkValidator( + 'token1', + invalidTokenError, + (val) => typeof val === 'string' +); + +export const validateAmount: Validator = mkValidator( + 'amount', + invalidAmountError, + (val) => typeof val === 'string' && isFloatString(val) +); + +export const validateAmount0: Validator = mkValidator( + 'amount0', + invalidAmountError, + (val) => typeof val === 'string' +); + +export const validateAmount1: Validator = mkValidator( + 'amount1', + invalidAmountError, + (val) => typeof val === 'string' +); + +export const validateSide: Validator = mkValidator( + 'side', + invalidSideError, + (val) => typeof val === 'string' && (val === 'BUY' || val === 'SELL') +); + +export const validatePerpSide: Validator = mkValidator( + 'side', + invalidPerpSideError, + (val) => typeof val === 'string' && (val === 'LONG' || val === 'SHORT') +); + +export const validateFee: Validator = mkValidator( + 'fee', + invalidFeeTier, + (val) => + typeof val === 'string' && + Object.keys(FeeAmount).includes(val.toUpperCase()) +); + +export const validateLowerPrice: Validator = mkValidator( + 'lowerPrice', + invalidLPPriceError, + (val) => typeof val === 'string' && isFloatString(val), + true +); + +export const validateUpperPrice: Validator = mkValidator( + 'upperPrice', + invalidLPPriceError, + (val) => typeof val === 'string' && isFloatString(val), + true +); + +export const validateLimitPrice: Validator = mkValidator( + 'limitPrice', + invalidLimitPriceError, + (val) => typeof val === 'string' && isFloatString(val), + true +); + +export const validateTokenId: Validator = mkValidator( + 'tokenId', + invalidTokenIdError, + (val) => + typeof val === 'undefined' || + (typeof val === 'number' && val >= 0 && Number.isInteger(val)), + true +); + +export const validatePeriod: Validator = mkValidator( + 'period', + invalidTimeError, + (val) => typeof val === 'number' && val >= 0 && Number.isInteger(val), + true +); + +export const validateInterval: Validator = mkValidator( + 'interval', + invalidTimeError, + (val) => typeof val === 'number' && val >= 0 && Number.isInteger(val), + true +); + +export const validateDecreasePercent: Validator = mkValidator( + 'decreasePercent', + invalidDecreasePercentError, + (val) => + typeof val === 'undefined' || + (typeof val === 'number' && val >= 0 && Number.isFinite(val)), + true +); + +export const validateAllowedSlippage: Validator = mkValidator( + 'allowedSlippage', + invalidAllowedSlippageError, + (val) => typeof val === 'string' && isFractionString(val), + true +); + +export const validatePriceRequest: RequestValidator = mkRequestValidator([ + validateConnector, + validateChain, + validateNetwork, + validateQuote, + validateBase, + validateAmount, + validateSide, + validateAllowedSlippage, +]); + +export const validateTradeRequest: RequestValidator = mkRequestValidator([ + validateConnector, + validateChain, + validateNetwork, + validateQuote, + validateBase, + validateAmount, + validateSide, + validateLimitPrice, + validateNonce, + validateMaxFeePerGas, + validateMaxPriorityFeePerGas, + validateAllowedSlippage, +]); + +export const validatePerpPositionRequest: RequestValidator = mkRequestValidator( + [ + validateConnector, + validateChain, + validateNetwork, + validateQuote, + validateBase, + validateAddress, + ] +); + +export const validatePerpBalanceRequest: RequestValidator = mkRequestValidator([ + validateConnector, + validateChain, + validateNetwork, + validateAddress, +]); + +export const validatePerpMarketStatusRequest: RequestValidator = + mkRequestValidator([ + validateConnector, + validateChain, + validateNetwork, + validateQuote, + validateBase, + ]); + +export const validatePerpPairsRequest: RequestValidator = mkRequestValidator([ + validateConnector, + validateChain, + validateNetwork, +]); + +export const validatePerpOpenTradeRequest: RequestValidator = + mkRequestValidator([ + validateConnector, + validateChain, + validateNetwork, + validateQuote, + validateBase, + validateAmount, + validateAddress, + validatePerpSide, + validateNonce, + validateAllowedSlippage, + ]); + +export const validatePerpCloseTradeRequest: RequestValidator = + mkRequestValidator([ + validateConnector, + validateChain, + validateNetwork, + validateQuote, + validateBase, + validateAddress, + validateNonce, + validateAllowedSlippage, + ]); + +export const validateEstimateGasRequest: RequestValidator = mkRequestValidator([ + validateConnector, + validateChain, + validateNetwork, +]); + +export const validateAddLiquidityRequest: RequestValidator = mkRequestValidator( + [ + validateConnector, + validateChain, + validateNetwork, + validateToken0, + validateToken1, + validateAmount0, + validateAmount1, + validateAddress, + validateFee, + validateUpperPrice, + validateLowerPrice, + validateTokenId, + validateNonce, + validateMaxFeePerGas, + validateMaxPriorityFeePerGas, + ] +); + +export const validateRemoveLiquidityRequest: RequestValidator = + mkRequestValidator([ + validateConnector, + validateChain, + validateNetwork, + validateAddress, + validateTokenId, + validateDecreasePercent, + validateNonce, + validateMaxFeePerGas, + validateMaxPriorityFeePerGas, + ]); + +export const validateCollectFeeRequest: RequestValidator = mkRequestValidator([ + validateConnector, + validateChain, + validateNetwork, + validateAddress, + validateTokenId, + validateNonce, + validateMaxFeePerGas, + validateMaxPriorityFeePerGas, +]); + +export const validatePositionRequest: RequestValidator = mkRequestValidator([ + validateConnector, + validateChain, + validateNetwork, + validateTokenId, +]); + +export const validatePoolPriceRequest: RequestValidator = mkRequestValidator([ + validateConnector, + validateChain, + validateNetwork, + validateToken0, + validateToken1, + validateFee, + validateInterval, + validatePeriod, +]); diff --git a/src/app.ts b/src/app.ts new file mode 100644 index 0000000000..49a8508fe0 --- /dev/null +++ b/src/app.ts @@ -0,0 +1,175 @@ +/* eslint-disable @typescript-eslint/ban-types */ +import express from 'express'; +import { Request, Response, NextFunction } from 'express'; +import { ConfigRoutes } from './services/config/config.routes'; +import { CosmosRoutes } from './chains/cosmos/cosmos.routes'; +import { WalletRoutes } from './services/wallet/wallet.routes'; +import { logger } from './services/logger'; +import { addHttps } from './https'; +import { + asyncHandler, + HttpException, + NodeError, + gatewayErrorMiddleware, +} from './services/error-handler'; +import { ConfigManagerV2 } from './services/config-manager-v2'; +import { SwaggerManager } from './services/swagger-manager'; +import { NetworkRoutes } from './network/network.routes'; +import { ConnectorsRoutes } from './connectors/connectors.routes'; +import { EVMRoutes } from './evm/evm.routes'; +import { AmmRoutes, AmmLiquidityRoutes, PerpAmmRoutes } from './amm/amm.routes'; +import { MadMeerkatConfig } from './connectors/mad_meerkat/mad_meerkat.config'; +import { PangolinConfig } from './connectors/pangolin/pangolin.config'; +import { QuickswapConfig } from './connectors/quickswap/quickswap.config'; +import { TraderjoeConfig } from './connectors/traderjoe/traderjoe.config'; +import { UniswapConfig } from './connectors/uniswap/uniswap.config'; +import { OpenoceanConfig } from './connectors/openocean/openocean.config'; +import { VVSConfig } from './connectors/vvs/vvs.config'; +import { AvailableNetworks } from './services/config-manager-types'; +import morgan from 'morgan'; +import { SushiswapConfig } from './connectors/sushiswap/sushiswap.config'; +import { DefikingdomsConfig } from './connectors/defikingdoms/defikingdoms.config'; +import { PancakeSwapConfig } from './connectors/pancakeswap/pancakeswap.config'; + +import swaggerUi from 'swagger-ui-express'; +import { NearRoutes } from './chains/near/near.routes'; + +export const gatewayApp = express(); + +// parse body for application/json +gatewayApp.use(express.json()); + +// parse url for application/x-www-form-urlencoded +gatewayApp.use(express.urlencoded({ extended: true })); + +// logging middleware +// skip logging path '/' or `/network/status` +gatewayApp.use( + morgan('combined', { + skip: function (req, _res) { + return ( + req.originalUrl === '/' || req.originalUrl.includes('/network/status') + ); + }, + }) +); + +// mount sub routers +gatewayApp.use('/config', ConfigRoutes.router); +gatewayApp.use('/network', NetworkRoutes.router); +gatewayApp.use('/evm', EVMRoutes.router); +gatewayApp.use('/connectors', ConnectorsRoutes.router); + +gatewayApp.use('/amm', AmmRoutes.router); +gatewayApp.use('/amm/perp', PerpAmmRoutes.router); +gatewayApp.use('/amm/liquidity', AmmLiquidityRoutes.router); +gatewayApp.use('/wallet', WalletRoutes.router); +gatewayApp.use('/cosmos', CosmosRoutes.router); +gatewayApp.use('/near', NearRoutes.router); + +// a simple route to test that the server is running +gatewayApp.get('/', (_req: Request, res: Response) => { + res.status(200).json({ status: 'ok' }); +}); + +interface ConnectorsResponse { + [key: string]: Array; +} + +gatewayApp.get( + '/connectors', + asyncHandler(async (_req, res: Response) => { + res.status(200).json({ + uniswap: UniswapConfig.config.availableNetworks, + pangolin: PangolinConfig.config.availableNetworks, + quickswap: QuickswapConfig.config.availableNetworks, + sushiswap: SushiswapConfig.config.availableNetworks, + openocean: OpenoceanConfig.config.availableNetworks, + traderjoe: TraderjoeConfig.config.availableNetworks, + defikingdoms: DefikingdomsConfig.config.availableNetworks, + mad_meerkat: MadMeerkatConfig.config.availableNetworks, + vvs: VVSConfig.config.availableNetworks, + pancakeswap: PancakeSwapConfig.config.availableNetworks, + }); + }) +); + +gatewayApp.post( + '/restart', + asyncHandler(async (_req, res) => { + // kill the current process and trigger the exit event + process.exit(1); + // this is only to satisfy the compiler, it will never be called. + res.status(200).json(); + }) +); + +// handle any error thrown in the gateway api route +gatewayApp.use( + ( + err: Error | NodeError | HttpException, + _req: Request, + res: Response, + _next: NextFunction + ) => { + const response = gatewayErrorMiddleware(err); + logger.error(err); + return res.status(response.httpErrorCode).json(response); + } +); + +export const swaggerDocument = SwaggerManager.generateSwaggerJson( + './docs/swagger/swagger.yml', + './docs/swagger/definitions.yml', + [ + './docs/swagger/main-routes.yml', + './docs/swagger/connectors-routes.yml', + './docs/swagger/wallet-routes.yml', + './docs/swagger/amm-routes.yml', + './docs/swagger/amm-liquidity-routes.yml', + './docs/swagger/evm-routes.yml', + './docs/swagger/network-routes.yml', + './docs/swagger/near-routes.yml', + './docs/swagger/cosmos-routes.yml', + ] +); + +export const startSwagger = async () => { + const swaggerApp = express(); + const swaggerPort = 8080; + + logger.info( + `⚡️ Swagger listening on port ${swaggerPort}. Read the Gateway API documentation at 127.0.0.1:${swaggerPort}` + ); + + swaggerApp.use('/', swaggerUi.serve, swaggerUi.setup(swaggerDocument)); + + await swaggerApp.listen(swaggerPort); +}; + +export const startGateway = async () => { + const port = ConfigManagerV2.getInstance().get('server.port'); + if (!ConfigManagerV2.getInstance().get('server.id')) { + ConfigManagerV2.getInstance().set( + 'server.id', + Math.random().toString(16).substr(2, 14) + ); + } + logger.info(`⚡️ Starting Gateway API on port ${port}...`); + if (ConfigManagerV2.getInstance().get('server.unsafeDevModeWithHTTP')) { + logger.info('Running in UNSAFE HTTP! This could expose private keys.'); + await gatewayApp.listen(port); + } else { + try { + await addHttps(gatewayApp).listen(port); + logger.info('The gateway server is secured behind HTTPS.'); + } catch (e) { + logger.error( + `Failed to start the server with https. Confirm that the SSL certificate files exist and are correct. Error: ${e}` + ); + process.exit(); + } + } + + await startSwagger(); +}; diff --git a/src/chains/avalanche/avalanche.ts b/src/chains/avalanche/avalanche.ts new file mode 100644 index 0000000000..c903fff874 --- /dev/null +++ b/src/chains/avalanche/avalanche.ts @@ -0,0 +1,128 @@ +import abi from '../../services/ethereum.abi.json'; +import { logger } from '../../services/logger'; +import { Contract, Transaction, Wallet } from 'ethers'; +import { EthereumBase } from '../../services/ethereum-base'; +import { getEthereumConfig as getAvalancheConfig } from '../ethereum/ethereum.config'; +import { Provider } from '@ethersproject/abstract-provider'; +import { TraderjoeConfig } from '../../connectors/traderjoe/traderjoe.config'; +import { PangolinConfig } from '../../connectors/pangolin/pangolin.config'; +import { OpenoceanConfig } from '../../connectors/openocean/openocean.config'; +import { Ethereumish } from '../../services/common-interfaces'; +import { ConfigManagerV2 } from '../../services/config-manager-v2'; + +export class Avalanche extends EthereumBase implements Ethereumish { + private static _instances: { [name: string]: Avalanche }; + private _gasPrice: number; + private _gasPriceRefreshInterval: number | null; + private _nativeTokenSymbol: string; + private _chain: string; + + private constructor(network: string) { + const config = getAvalancheConfig('avalanche', network); + super( + 'avalanche', + config.network.chainID, + config.network.nodeURL, + config.network.tokenListSource, + config.network.tokenListType, + config.manualGasPrice, + config.gasLimitTransaction, + ConfigManagerV2.getInstance().get('database.nonceDbPath'), + ConfigManagerV2.getInstance().get('database.transactionDbPath') + ); + this._chain = config.network.name; + this._nativeTokenSymbol = config.nativeCurrencySymbol; + + this._gasPrice = config.manualGasPrice; + + this._gasPriceRefreshInterval = + config.network.gasPriceRefreshInterval !== undefined + ? config.network.gasPriceRefreshInterval + : null; + + this.updateGasPrice(); + } + + public static getInstance(network: string): Avalanche { + if (Avalanche._instances === undefined) { + Avalanche._instances = {}; + } + if (!(network in Avalanche._instances)) { + Avalanche._instances[network] = new Avalanche(network); + } + + return Avalanche._instances[network]; + } + + public static getConnectedInstances(): { [name: string]: Avalanche } { + return Avalanche._instances; + } + + // getters + + public get gasPrice(): number { + return this._gasPrice; + } + + public get nativeTokenSymbol(): string { + return this._nativeTokenSymbol; + } + + public get chain(): string { + return this._chain; + } + + getContract(tokenAddress: string, signerOrProvider?: Wallet | Provider) { + return new Contract(tokenAddress, abi.ERC20Abi, signerOrProvider); + } + + getSpender(reqSpender: string): string { + let spender: string; + if (reqSpender === 'pangolin') { + spender = PangolinConfig.config.routerAddress(this._chain); + } else if (reqSpender === 'openocean') { + spender = OpenoceanConfig.config.routerAddress(this._chain); + } else if (reqSpender === 'traderjoe') { + spender = TraderjoeConfig.config.routerAddress(this._chain); + } else { + spender = reqSpender; + } + return spender; + } + + // cancel transaction + async cancelTx(wallet: Wallet, nonce: number): Promise { + logger.info( + 'Canceling any existing transaction(s) with nonce number ' + nonce + '.' + ); + return super.cancelTxWithGasPrice(wallet, nonce, this._gasPrice * 2); + } + + /** + * Automatically update the prevailing gas price on the network. + */ + async updateGasPrice(): Promise { + if (this._gasPriceRefreshInterval === null) { + return; + } + + const gasPrice = await this.getGasPrice(); + if (gasPrice !== null) { + this._gasPrice = gasPrice; + } else { + logger.info('gasPrice is unexpectedly null.'); + } + + setTimeout( + this.updateGasPrice.bind(this), + this._gasPriceRefreshInterval * 1000 + ); + } + + async close() { + await super.close(); + if (this._chain in Avalanche._instances) { + delete Avalanche._instances[this._chain]; + } + } +} diff --git a/src/chains/avalanche/avalanche.validators.ts b/src/chains/avalanche/avalanche.validators.ts new file mode 100644 index 0000000000..a1f2ca2c52 --- /dev/null +++ b/src/chains/avalanche/avalanche.validators.ts @@ -0,0 +1,42 @@ +import { + mkRequestValidator, + mkValidator, + RequestValidator, + Validator, + validateAmount, + validateToken, + validateTokenSymbols, +} from '../../services/validators'; +import { + isAddress, + validateNonce, + validateAddress, +} from '../ethereum/ethereum.validators'; + +export const invalidSpenderError: string = + 'The spender param is not a valid Avalanche address (0x followed by 40 hexidecimal characters).'; + +// given a request, look for a key called spender that is 'uniswap' or an Ethereum address +export const validateSpender: Validator = mkValidator( + 'spender', + invalidSpenderError, + + (val) => + typeof val === 'string' && + (val === 'pangolin' || + val === 'traderjoe' || + val === 'openocean' || + isAddress(val)) +); + +export const validateAvalancheApproveRequest: RequestValidator = + mkRequestValidator([ + validateAddress, + validateSpender, + validateToken, + validateAmount, + validateNonce, + ]); + +export const validateAvalancheAllowancesRequest: RequestValidator = + mkRequestValidator([validateAddress, validateSpender, validateTokenSymbols]); diff --git a/src/chains/avalanche/avalanche_tokens_fuji.json b/src/chains/avalanche/avalanche_tokens_fuji.json new file mode 100644 index 0000000000..bdda0dc6b1 --- /dev/null +++ b/src/chains/avalanche/avalanche_tokens_fuji.json @@ -0,0 +1,37 @@ +{ + "name": "Fuji Token List", + "logoURI": "https://i.imgur.com/tt0vG2N.png", + "version": { + "major": 0, + "minor": 2, + "patch": 0 + }, + "keywords": [], + "timestamp": "2022-02-21T00:00:00+00:00", + "tokens": [ + { + "address": "0x2058ec2791dD28b6f67DB836ddf87534F4Bbdf22", + "chainId": 43113, + "name": "The Fuji stablecoin", + "symbol": "FUJISTABLE", + "decimals": 6, + "logoURI": "https://i.imgur.com/LPZDXoT.png" + }, + { + "address": "0x97132C109c6816525F7f338DCb7435E1412A7668", + "chainId": 43113, + "name": "To the Moon", + "symbol": "FUJIMOON", + "decimals": 9, + "logoURI": "https://i.imgur.com/jNTqyQA.png" + }, + { + "address": "0xF561800EdedF4CE146ED427Cacf1Fb8aB3B2D452", + "chainId": 43113, + "name": "Wrapped WAGMI", + "symbol": "WWAGMI", + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/antiyro/WagmiTokenList/master/wagmi.png" + } + ] +} diff --git a/src/chains/avalanche/avanlanche_tokens.json b/src/chains/avalanche/avanlanche_tokens.json new file mode 100644 index 0000000000..b9a5053ee8 --- /dev/null +++ b/src/chains/avalanche/avanlanche_tokens.json @@ -0,0 +1,1573 @@ +{ + "name": "Pangolin Tokenlist", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x60781C2586D68229fde47564546784ab3fACA982/logo_48.png", + "keywords": [], + "version": { + "major": 3, + "minor": 11, + "patch": 1 + }, + "timestamp": "2022-12-15T12:00:00+00:00", + "tokens": [ + { + "chainId": 114, + "address": "0x6169CD307Be7E24152dF23a7A945A1ea3eC7b438", + "decimals": 18, + "name": "Pangolin Coston2", + "symbol": "PCT2", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/114/0x6169CD307Be7E24152dF23a7A945A1ea3eC7b438/logo_24.png" + }, + { + "chainId": 296, + "address": "0x0000000000000000000000000000000002DfA5b2", + "decimals": 8, + "name": "Wrapped Hedera", + "symbol": "WHBAR", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/296/0x0000000000000000000000000000000002DfA5b2/logo_24.png" + }, + { + "chainId": 296, + "address": "0x0000000000000000000000000000000002D9E4F8", + "decimals": 6, + "name": "USDC", + "symbol": "USDC", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/296/0x0000000000000000000000000000000002D9E4F8/logo_24.png" + }, + { + "chainId": 296, + "address": "0x0000000000000000000000000000000002Db0600", + "decimals": 8, + "name": "Pangolin Hedera", + "symbol": "PBAR", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/296/0x0000000000000000000000000000000002Db0600/logo_24.png" + }, + { + "chainId": 296, + "address": "0x0000000000000000000000000000000002bE71e8", + "decimals": 6, + "name": "Sauce", + "symbol": "SAUCE", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/296/0x0000000000000000000000000000000002bE71e8/logo_24.png" + }, + { + "chainId": 16, + "address": "0x0A8744c2a48b0e09a3e4C3A381A8E0d8d900bAFe", + "decimals": 18, + "name": "Pangolin", + "symbol": "PCT", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/16/0x0A8744c2a48b0e09a3e4C3A381A8E0d8d900bAFe/logo_24.png" + }, + { + "chainId": 11111, + "address": "0xbdf33c7128fBB220fc0e4Be277697cEeef8BdfF5", + "decimals": 18, + "name": "Pangolin", + "symbol": "wagmiPNG", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/11111/0xbdf33c7128fBB220fc0e4Be277697cEeef8BdfF5/logo_24.png" + }, + { + "chainId": 11111, + "address": "0x3Ee7094DADda15810F191DD6AcF7E4FFa37571e4", + "decimals": 18, + "name": "Wrapped WAGMI", + "symbol": "wWAGMI", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/11111/0x3Ee7094DADda15810F191DD6AcF7E4FFa37571e4/logo_24.png" + }, + { + "chainId": 11111, + "address": "0xf1db872E6454D553686b088c1Ea3889cF2FE3ABe", + "decimals": 18, + "name": "OG", + "symbol": "OG", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/11111/0xf1db872E6454D553686b088c1Ea3889cF2FE3ABe/logo_24.png" + }, + { + "chainId": 11111, + "address": "0x4eaA03A9C9c9CE745517538d262653B9e43c51f2", + "decimals": 18, + "name": "staySAFU", + "symbol": "staySAFU", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/11111/0x4eaA03A9C9c9CE745517538d262653B9e43c51f2/logo_24.png" + }, + { + "chainId": 19, + "address": "0x02f0826ef6aD107Cfc861152B32B52fD11BaB9ED", + "decimals": 18, + "name": "Wrapped Songbird", + "symbol": "WSGB", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/19/0x02f0826ef6aD107Cfc861152B32B52fD11BaB9ED/logo_24.png" + }, + { + "chainId": 19, + "address": "0xb2987753D1561570f726Aa373F48E77e27aa5FF4", + "decimals": 18, + "name": "Pangolin Songbird", + "symbol": "PSB", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/19/0xb2987753D1561570f726Aa373F48E77e27aa5FF4/logo_24.png" + }, + { + "chainId": 19, + "address": "0x697bb3B5E1eCf4fEbE6016321b0648d3d6C270B6", + "decimals": 18, + "name": "sDOOD Token", + "symbol": "sDOOD", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/19/0x697bb3B5E1eCf4fEbE6016321b0648d3d6C270B6/logo_24.png" + }, + { + "chainId": 19, + "address": "0x8d32E20d119d936998575B4AAff66B9999011D27", + "decimals": 18, + "name": "CanaryX", + "symbol": "CNYX", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/19/0x8d32E20d119d936998575B4AAff66B9999011D27/logo_24.png" + }, + { + "chainId": 19, + "address": "0xD7565b16b65376e2Ddb6c71E7971c7185A7Ff3Ff", + "decimals": 18, + "name": "OracleSwap", + "symbol": "ORACLE", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/19/0xD7565b16b65376e2Ddb6c71E7971c7185A7Ff3Ff/logo_24.png" + }, + { + "chainId": 19, + "address": "0xC348F894d0E939FE72c467156E6d7DcbD6f16e21", + "decimals": 18, + "name": "Experimental Finance Token", + "symbol": "EXFI", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/19/0xC348F894d0E939FE72c467156E6d7DcbD6f16e21/logo_24.png" + }, + { + "chainId": 19, + "address": "0x9E2E6c16803878C18E54Ed74F05AeafCCe464626", + "decimals": 18, + "name": "sFortuna", + "symbol": "SFORT", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/19/0x9E2E6c16803878C18E54Ed74F05AeafCCe464626/logo_24.png" + }, + { + "chainId": 19, + "address": "0x9dC8639bff70B019088f0b7D960561654269B5BE", + "decimals": 18, + "name": "Honey Stick", + "symbol": "HS", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/19/0x9dC8639bff70B019088f0b7D960561654269B5BE/logo_24.png" + }, + { + "chainId": 19, + "address": "0xe4671844Fcb3cA9A80A1224B6f9A0A6c2Ba2a7d5", + "decimals": 18, + "name": "Cootie Coin", + "symbol": "COOT", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/19/0xe4671844Fcb3cA9A80A1224B6f9A0A6c2Ba2a7d5/logo_24.png" + }, + { + "chainId": 19, + "address": "0x671ee7ac6ef2803776dD1711e577540A6007cC25", + "decimals": 18, + "name": "Ocean", + "symbol": "OCN", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/19/0x671ee7ac6ef2803776dD1711e577540A6007cC25/logo_24.png" + }, + { + "chainId": 19, + "address": "0xd46bd7A5EBE52199BD6f0EfD59a1d7CeF7f35eae", + "decimals": 18, + "name": "Infinty Token", + "symbol": "INFT", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/19/0xd46bd7A5EBE52199BD6f0EfD59a1d7CeF7f35eae/logo_24.png" + }, + { + "chainId": 11111, + "address": "0x21cf0eB2E3Ab483a67C900b27dA8F34185991982", + "decimals": 18, + "name": "Wrapped AVAX", + "symbol": "WAVAX", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/11111/0x21cf0eB2E3Ab483a67C900b27dA8F34185991982/logo_24.png" + }, + { + "chainId": 43113, + "address": "0x2058ec2791dD28b6f67DB836ddf87534F4Bbdf22", + "name": "The Fuji stablecoin", + "symbol": "FUJISTABLE", + "decimals": 6, + "logoURI": "https://i.imgur.com/LPZDXoT.png" + }, + { + "chainId": 43113, + "address": "0x97132C109c6816525F7f338DCb7435E1412A7668", + "name": "To the Moon", + "symbol": "FUJIMOON", + "decimals": 9, + "logoURI": "https://i.imgur.com/jNTqyQA.png" + }, + { + "chainId": 43113, + "address": "0xF561800EdedF4CE146ED427Cacf1Fb8aB3B2D452", + "name": "Wrapped WAGMI", + "symbol": "WWAGMI", + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43113/0xF561800EdedF4CE146ED427Cacf1Fb8aB3B2D452/logo_24.png" + }, + { + "chainId": 43113, + "address": "0x224695Ba2a98E4a096a519B503336E06D9116E48", + "name": "The Crypt", + "symbol": "RIP", + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/antiyro/WagmiTokenList/master/wagmi.png" + }, + { + "chainId": 43113, + "address": "0xAF5D473b3f8F96A5B21c6bbB97e09b491335acb9", + "name": "Fuji PNG", + "symbol": "fujiPNG", + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43113/0xAF5D473b3f8F96A5B21c6bbB97e09b491335acb9/logo_24.png" + }, + { + "chainId": 43113, + "address": "0x0a8c21858aC24e1305BaFBDdf4DfB73a2CC9ddBC", + "name": "JAWZ Fuji TestNet", + "symbol": "JAWZ", + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43113/0x0a8c21858aC24e1305BaFBDdf4DfB73a2CC9ddBC/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x60781C2586D68229fde47564546784ab3fACA982", + "decimals": 18, + "name": "Pangolin", + "symbol": "PNG", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x60781C2586D68229fde47564546784ab3fACA982/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7", + "decimals": 18, + "name": "Wrapped AVAX", + "symbol": "WAVAX", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x78ea17559B3D2CF85a7F9C2C704eda119Db5E6dE", + "decimals": 18, + "name": "Avaware", + "symbol": "AVE", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x78ea17559B3D2CF85a7F9C2C704eda119Db5E6dE/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xdb333724fAE72b4253FC3d44c8270CBBC86d147b", + "decimals": 18, + "name": "Cabbage.Cash", + "symbol": "CABAG", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xdb333724fAE72b4253FC3d44c8270CBBC86d147b/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x488F73cddDA1DE3664775fFd91623637383D6404", + "decimals": 18, + "name": "YetiSwap", + "symbol": "YTS", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x488F73cddDA1DE3664775fFd91623637383D6404/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xC38f41A296A4493Ff429F1238e030924A1542e50", + "decimals": 18, + "name": "Snowball", + "symbol": "SNOB", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xC38f41A296A4493Ff429F1238e030924A1542e50/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x6e7f5C0b9f4432716bDd0a77a3601291b9D9e985", + "decimals": 9, + "name": "Spore", + "symbol": "SPORE", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x6e7f5C0b9f4432716bDd0a77a3601291b9D9e985/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xe896CDeaAC9615145c0cA09C8Cd5C25bced6384c", + "decimals": 18, + "name": "PenguinToken", + "symbol": "PEFI", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xe896CDeaAC9615145c0cA09C8Cd5C25bced6384c/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xC931f61B1534EB21D8c11B24f3f5Ab2471d4aB50", + "decimals": 8, + "name": "Blocknet", + "symbol": "aaBLOCK", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xC931f61B1534EB21D8c11B24f3f5Ab2471d4aB50/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x4C9B4E1AC6F24CdE3660D5E4Ef1eBF77C710C084", + "decimals": 18, + "name": "LydiaFinance Token", + "symbol": "LYD", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x4C9B4E1AC6F24CdE3660D5E4Ef1eBF77C710C084/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x846D50248BAf8b7ceAA9d9B53BFd12d7D7FBB25a", + "decimals": 18, + "name": "VersoToken", + "symbol": "VSO", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x846D50248BAf8b7ceAA9d9B53BFd12d7D7FBB25a/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x1ECd47FF4d9598f89721A2866BFEb99505a413Ed", + "decimals": 18, + "name": "AVME", + "symbol": "AVME", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x1ECd47FF4d9598f89721A2866BFEb99505a413Ed/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x65378b697853568dA9ff8EaB60C13E1Ee9f4a654", + "decimals": 18, + "name": "Husky", + "symbol": "HUSKY", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x65378b697853568dA9ff8EaB60C13E1Ee9f4a654/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xD606199557c8Ab6F4Cc70bD03FaCc96ca576f142", + "decimals": 18, + "name": "Gondola", + "symbol": "GDL", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xD606199557c8Ab6F4Cc70bD03FaCc96ca576f142/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x81440C939f2C1E34fc7048E518a637205A632a74", + "decimals": 18, + "name": "Cycle Token", + "symbol": "CYCLE", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x81440C939f2C1E34fc7048E518a637205A632a74/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xd1c3f94DE7e5B45fa4eDBBA472491a9f4B166FC4", + "decimals": 18, + "name": "Avalaunch", + "symbol": "XAVA", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xd1c3f94DE7e5B45fa4eDBBA472491a9f4B166FC4/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x8D88e48465F30Acfb8daC0b3E35c9D6D7d36abaf", + "decimals": 18, + "name": "Canary", + "symbol": "CNR", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x8D88e48465F30Acfb8daC0b3E35c9D6D7d36abaf/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xa5E59761eBD4436fa4d20E1A27cBa29FB2471Fc6", + "decimals": 18, + "name": "Sherpa", + "symbol": "SHERPA", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xa5E59761eBD4436fa4d20E1A27cBa29FB2471Fc6/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x961C8c0B1aaD0c0b10a51FeF6a867E3091BCef17", + "decimals": 18, + "name": "Dypius", + "symbol": "DYP", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x961C8c0B1aaD0c0b10a51FeF6a867E3091BCef17/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x264c1383EA520f73dd837F915ef3a732e204a493", + "decimals": 18, + "name": "Binance", + "symbol": "BNB", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x264c1383EA520f73dd837F915ef3a732e204a493/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xB1466d4cf0DCfC0bCdDcf3500F473cdACb88b56D", + "decimals": 18, + "name": "Weble Ecosystem Token", + "symbol": "WET", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xB1466d4cf0DCfC0bCdDcf3500F473cdACb88b56D/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x59414b3089ce2AF0010e7523Dea7E2b35d776ec7", + "decimals": 18, + "name": "Yak Token", + "symbol": "YAK", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x59414b3089ce2AF0010e7523Dea7E2b35d776ec7/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x8729438EB15e2C8B576fCc6AeCdA6A148776C0F5", + "decimals": 18, + "name": "BENQI", + "symbol": "QI", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x8729438EB15e2C8B576fCc6AeCdA6A148776C0F5/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x9E037dE681CaFA6E661e6108eD9c2bd1AA567Ecd", + "decimals": 18, + "name": "Wrapped AllianceBlock Token", + "symbol": "WALBT", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x9E037dE681CaFA6E661e6108eD9c2bd1AA567Ecd/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x21c5402C3B7d40C89Cc472C9dF5dD7E51BbAb1b1", + "decimals": 18, + "name": "TundraToken", + "symbol": "TUNDRA", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x21c5402C3B7d40C89Cc472C9dF5dD7E51BbAb1b1/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x595c8481c48894771CE8FaDE54ac6Bf59093F9E8", + "decimals": 18, + "name": "Gaj Finance", + "symbol": "GAJ", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x595c8481c48894771CE8FaDE54ac6Bf59093F9E8/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x094bd7B2D99711A1486FB94d4395801C6d0fdDcC", + "decimals": 18, + "name": "TEDDY", + "symbol": "TEDDY", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x094bd7B2D99711A1486FB94d4395801C6d0fdDcC/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x6e84a6216eA6dACC71eE8E6b0a5B7322EEbC0fDd", + "decimals": 18, + "name": "JoeToken", + "symbol": "JOE", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x6e84a6216eA6dACC71eE8E6b0a5B7322EEbC0fDd/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x9Fda7cEeC4c18008096C2fE2B85F05dc300F94d0", + "decimals": 18, + "name": "MarginSwap", + "symbol": "MFI", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x9Fda7cEeC4c18008096C2fE2B85F05dc300F94d0/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x440aBbf18c54b2782A4917b80a1746d3A2c2Cce1", + "decimals": 18, + "name": "SHIBAVAX", + "symbol": "SHIBX", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x440aBbf18c54b2782A4917b80a1746d3A2c2Cce1/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xD67de0e0a0Fd7b15dC8348Bb9BE742F3c5850454", + "decimals": 18, + "name": "Frax Share", + "symbol": "FXS", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xD67de0e0a0Fd7b15dC8348Bb9BE742F3c5850454/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xc12e249FaBe1c5Eb7C558E5F50D187687a244E31", + "decimals": 18, + "name": "Blue Token", + "symbol": "BLUE", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xc12e249FaBe1c5Eb7C558E5F50D187687a244E31/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x01C2086faCFD7aA38f69A6Bd8C91BEF3BB5adFCa", + "decimals": 18, + "name": "YAY Games", + "symbol": "YAY", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x01C2086faCFD7aA38f69A6Bd8C91BEF3BB5adFCa/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x397bBd6A0E41bdF4C3F971731E180Db8Ad06eBc1", + "decimals": 6, + "name": "Avaxtars Token", + "symbol": "AVXT", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x397bBd6A0E41bdF4C3F971731E180Db8Ad06eBc1/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xae9d2385Ff2E2951Dd4fA061e74c4d3deDD24347", + "decimals": 8, + "name": "TOK", + "symbol": "TOK", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xae9d2385Ff2E2951Dd4fA061e74c4d3deDD24347/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xb54f16fB19478766A268F172C9480f8da1a7c9C3", + "decimals": 9, + "name": "Time", + "symbol": "TIME", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xb54f16fB19478766A268F172C9480f8da1a7c9C3/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x90842eb834cFD2A1DB0b1512B254a18E4D396215", + "decimals": 9, + "name": "Good Bridging", + "symbol": "GB", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x90842eb834cFD2A1DB0b1512B254a18E4D396215/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x0ebd9537A25f56713E34c45b38F421A1e7191469", + "decimals": 18, + "name": "OpenOcean", + "symbol": "OOE", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x0ebd9537A25f56713E34c45b38F421A1e7191469/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x3709E8615E02C15B096f8a9B460ccb8cA8194e86", + "decimals": 18, + "name": "Vee", + "symbol": "VEE", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x3709E8615E02C15B096f8a9B460ccb8cA8194e86/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x938FE3788222A74924E062120E7BFac829c719Fb", + "decimals": 18, + "name": "Ape In", + "symbol": "APEIN", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x938FE3788222A74924E062120E7BFac829c719Fb/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xfC108f21931576a21D0b4b301935DAc80d9E5086", + "decimals": 18, + "name": "Iron Finance ICE Token", + "symbol": "IronICE", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xfC108f21931576a21D0b4b301935DAc80d9E5086/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xA384Bc7Cdc0A93e686da9E7B8C0807cD040F4E0b", + "decimals": 18, + "name": "WOWSwap", + "symbol": "WOW", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xA384Bc7Cdc0A93e686da9E7B8C0807cD040F4E0b/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xCE1bFFBD5374Dac86a2893119683F4911a2F7814", + "decimals": 18, + "name": "Spell Token", + "symbol": "SPELL", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xCE1bFFBD5374Dac86a2893119683F4911a2F7814/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xb27c8941a7Df8958A1778c0259f76D1F8B711C35", + "decimals": 18, + "name": "Kalao Token", + "symbol": "KLO", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xb27c8941a7Df8958A1778c0259f76D1F8B711C35/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x027dbcA046ca156De9622cD1e2D907d375e53aa7", + "decimals": 9, + "name": "Ampleforth", + "symbol": "AMPL", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x027dbcA046ca156De9622cD1e2D907d375e53aa7/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x8B1d98A91F853218ddbb066F20b8c63E782e2430", + "decimals": 18, + "name": "OrcaDAO", + "symbol": "ORCA", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x8B1d98A91F853218ddbb066F20b8c63E782e2430/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x544c42fBB96B39B21DF61cf322b5EDC285EE7429", + "decimals": 18, + "name": "INSUR Token", + "symbol": "INSUR", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x544c42fBB96B39B21DF61cf322b5EDC285EE7429/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x6C6f910A79639dcC94b4feEF59Ff507c2E843929", + "decimals": 18, + "name": "Ankr Avalanche Reward Earning Bond", + "symbol": "aAVAXb", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x6C6f910A79639dcC94b4feEF59Ff507c2E843929/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xB00F1ad977a949a3CCc389Ca1D1282A2946963b0", + "decimals": 18, + "name": "Boo Finance Token", + "symbol": "BOOFI", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xB00F1ad977a949a3CCc389Ca1D1282A2946963b0/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x45C13620B55C35A5f539d26E88247011Eb10fDbd", + "decimals": 18, + "name": "Hurricane Token", + "symbol": "HCT", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x45C13620B55C35A5f539d26E88247011Eb10fDbd/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x214DB107654fF987AD859F34125307783fC8e387", + "decimals": 18, + "name": "Frax Share", + "symbol": "FXS", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x214DB107654fF987AD859F34125307783fC8e387/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xb2a85C5ECea99187A977aC34303b80AcbDdFa208", + "decimals": 18, + "name": "ROCO", + "symbol": "ROCO", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xb2a85C5ECea99187A977aC34303b80AcbDdFa208/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xeA6887e4a9CdA1B77E70129E5Fba830CdB5cdDef", + "decimals": 18, + "name": "IMX", + "symbol": "IMX.a", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xeA6887e4a9CdA1B77E70129E5Fba830CdB5cdDef/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x340fE1D898ECCAad394e2ba0fC1F93d27c7b717A", + "decimals": 18, + "name": "Orbs", + "symbol": "ORBS", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x340fE1D898ECCAad394e2ba0fC1F93d27c7b717A/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xA32608e873F9DdEF944B24798db69d80Bbb4d1ed", + "decimals": 18, + "name": "CRA", + "symbol": "CRA", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xA32608e873F9DdEF944B24798db69d80Bbb4d1ed/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x885d748C00A279B67A7749EC6b03301700dd0455", + "decimals": 18, + "name": "Maximus", + "symbol": "MAXI", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x885d748C00A279B67A7749EC6b03301700dd0455/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x7C08413cbf02202a1c13643dB173f2694e0F73f0", + "decimals": 9, + "name": "Maximizer", + "symbol": "MAXI", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x7C08413cbf02202a1c13643dB173f2694e0F73f0/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x4f60a160D8C2DDdaAfe16FCC57566dB84D674BD6", + "decimals": 18, + "name": "Jewels", + "symbol": "JEWEL", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x4f60a160D8C2DDdaAfe16FCC57566dB84D674BD6/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x8aE8be25C23833e0A01Aa200403e826F611f9CD2", + "decimals": 18, + "name": "CRAFT", + "symbol": "CRAFT", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x8aE8be25C23833e0A01Aa200403e826F611f9CD2/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x321E7092a180BB43555132ec53AaA65a5bF84251", + "decimals": 18, + "name": "Governance OHM", + "symbol": "gOHM", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x321E7092a180BB43555132ec53AaA65a5bF84251/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x637afeff75ca669fF92e4570B14D6399A658902f", + "decimals": 18, + "name": "Poly-Peg COOK", + "symbol": "COOK", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x637afeff75ca669fF92e4570B14D6399A658902f/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x9E3Ca00f2d4A9E5d4f0add0900de5f15050812cF", + "decimals": 18, + "name": "NFTrade Token", + "symbol": "NFTD", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x9E3Ca00f2d4A9E5d4f0add0900de5f15050812cF/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xec3492a2508DDf4FDc0cD76F31f340b30d1793e6", + "decimals": 18, + "name": "Colony Token", + "symbol": "CLY", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xec3492a2508DDf4FDc0cD76F31f340b30d1793e6/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xf69c2fcd9128d49DfA22348C69177f9380438eB8", + "decimals": 6, + "name": "NFTSoccerGames", + "symbol": "NFSG", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xf69c2fcd9128d49DfA22348C69177f9380438eB8/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x483416eB3aFA601B9C6385f63CeC0C82B6aBf1fb", + "decimals": 18, + "name": "Skill Token", + "symbol": "SKILL", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x483416eB3aFA601B9C6385f63CeC0C82B6aBf1fb/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xBD100d061E120b2c67A24453CF6368E63f1Be056", + "decimals": 18, + "name": "iDeFiYieldProtocol", + "symbol": "iDYP", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xBD100d061E120b2c67A24453CF6368E63f1Be056/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x22d4002028f537599bE9f666d1c4Fa138522f9c8", + "decimals": 18, + "name": "Platypus", + "symbol": "PTP", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x22d4002028f537599bE9f666d1c4Fa138522f9c8/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xcA220F1e486A8e35d6F1DCD62073Ad8DD04659ED", + "decimals": 6, + "name": "BiAltin", + "symbol": "GLDB", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xcA220F1e486A8e35d6F1DCD62073Ad8DD04659ED/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x7086e045b78E1e72F741F25231c08d238812CF8a", + "decimals": 18, + "name": "RaceX", + "symbol": "RACEX", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x7086e045b78E1e72F741F25231c08d238812CF8a/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xb84527D59b6Ecb96F433029ECc890D4492C5dCe1", + "decimals": 18, + "name": "Tomb", + "symbol": "TOMB", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xb84527D59b6Ecb96F433029ECc890D4492C5dCe1/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xbca7f1998Dc9FFB70b086543a808960a460aBcA7", + "decimals": 18, + "name": "Kitty", + "symbol": "KITTY", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xbca7f1998Dc9FFB70b086543a808960a460aBcA7/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x721C299E6BF7D6a430d9bEA3364Ea197314bcE09", + "decimals": 18, + "name": "MilkyWay Token by SpaceSwap v2", + "symbol": "MILK2", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x721C299E6BF7D6a430d9bEA3364Ea197314bcE09/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xC1d02E488a9Ce2481BFdcd797d5373Dd2E70a9C2", + "decimals": 18, + "name": "SHAKE token by SpaceSwap v2", + "symbol": "SHAKE", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xC1d02E488a9Ce2481BFdcd797d5373Dd2E70a9C2/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x47EB6F7525C1aA999FBC9ee92715F5231eB1241D", + "decimals": 18, + "name": "Defrost Finance Token", + "symbol": "MELT", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x47EB6F7525C1aA999FBC9ee92715F5231eB1241D/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xe0Ce60AF0850bF54072635e66E79Df17082A1109", + "decimals": 18, + "name": "IceToken", + "symbol": "ICE", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xe0Ce60AF0850bF54072635e66E79Df17082A1109/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xf693248F96Fe03422FEa95aC0aFbBBc4a8FdD172", + "decimals": 18, + "name": "Treasure Under Sea", + "symbol": "TUS", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xf693248F96Fe03422FEa95aC0aFbBBc4a8FdD172/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xF891214fdcF9cDaa5fdC42369eE4F27F226AdaD6", + "decimals": 18, + "name": "Imperium Empires Token", + "symbol": "IME", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xF891214fdcF9cDaa5fdC42369eE4F27F226AdaD6/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xB15f02F9Da8CD1f99E9dd375F21dc96D25ddd82C", + "decimals": 18, + "name": "HERMES", + "symbol": "HERMES", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xB15f02F9Da8CD1f99E9dd375F21dc96D25ddd82C/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xfa4B6db72A650601E7Bd50a0A9f537c9E98311B2", + "decimals": 18, + "name": "HERMES Shares", + "symbol": "HSHARES", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xfa4B6db72A650601E7Bd50a0A9f537c9E98311B2/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x1DB749847C4abB991d8B6032102383e6BfD9B1c7", + "decimals": 18, + "name": "Dogeon Token", + "symbol": "DON", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x1DB749847C4abB991d8B6032102383e6BfD9B1c7/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x3EeFb18003D033661f84e48360eBeCD181A84709", + "decimals": 18, + "name": "Islander", + "symbol": "ISA", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x3EeFb18003D033661f84e48360eBeCD181A84709/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x7f041ce89A2079873693207653b24C15B5e6A293", + "decimals": 18, + "name": "LOOT", + "symbol": "LOOT", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x7f041ce89A2079873693207653b24C15B5e6A293/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xE6B9d092223f39013656702A40dbE6B7DeCc5746", + "decimals": 18, + "name": "ANGLE", + "symbol": "ANGLE", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xE6B9d092223f39013656702A40dbE6B7DeCc5746/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x921f99719Eb6C01b4B8f0BA7973A7C24891e740A", + "decimals": 18, + "name": "MetaBrands", + "symbol": "MAGE", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x921f99719Eb6C01b4B8f0BA7973A7C24891e740A/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x9C8E99eb130AED653Ef90fED709D9C3E9cC8b269", + "decimals": 18, + "name": "Hertz Token", + "symbol": "HTZ", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x9C8E99eb130AED653Ef90fED709D9C3E9cC8b269/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x0fEc6d8A84A85b79A1FFE0E28c1902E08b653EFE", + "decimals": 18, + "name": "Hoopoe Ventures", + "symbol": "HOOP", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x0fEc6d8A84A85b79A1FFE0E28c1902E08b653EFE/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xC7f4debC8072e23fe9259A5C0398326d8EfB7f5c", + "decimals": 18, + "name": "HeroesChained", + "symbol": "HeC", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xC7f4debC8072e23fe9259A5C0398326d8EfB7f5c/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x7b2B702706D9b361dfE3f00bD138C0CFDA7FB2Cf", + "decimals": 18, + "name": "Pollen", + "symbol": "PLN", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x7b2B702706D9b361dfE3f00bD138C0CFDA7FB2Cf/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x7761E2338B35bCEB6BdA6ce477EF012bde7aE611", + "decimals": 18, + "name": "chikn egg", + "symbol": "EGG", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x7761E2338B35bCEB6BdA6ce477EF012bde7aE611/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xab592d197ACc575D16C3346f4EB70C703F308D1E", + "decimals": 18, + "name": "chikn feed", + "symbol": "FEED", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xab592d197ACc575D16C3346f4EB70C703F308D1E/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x100Cc3a819Dd3e8573fD2E46D1E66ee866068f30", + "decimals": 18, + "name": "Dragon Crypto Aurum", + "symbol": "DCAU", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x100Cc3a819Dd3e8573fD2E46D1E66ee866068f30/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x120AD3e5A7c796349e591F1570D9f7980F4eA9cb", + "decimals": 6, + "name": "Axelar Wrapped LUNA", + "symbol": "LUNA", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x120AD3e5A7c796349e591F1570D9f7980F4eA9cb/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xf32398dae246C5f672B52A54e9B413dFFcAe1A44", + "decimals": 18, + "name": "Kassandra", + "symbol": "KACY", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xf32398dae246C5f672B52A54e9B413dFFcAe1A44/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x402FD175049e95CeF2cC9ca1FECdb6d9736e690d", + "decimals": 18, + "name": "Catoshi", + "symbol": "CATS", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x402FD175049e95CeF2cC9ca1FECdb6d9736e690d/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x1fE4751d9bDabaC8D90067056cB45AB6823d2C12", + "decimals": 18, + "name": "ArgonToken", + "symbol": "ARGON", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x1fE4751d9bDabaC8D90067056cB45AB6823d2C12/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x7F29e7086453ed97283893E763aE0989F4B70f8d", + "decimals": 6, + "name": "DGC Token", + "symbol": "DGC", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x7F29e7086453ed97283893E763aE0989F4B70f8d/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x164334Ed9E63FbEdC8B52E6dbD408Af4F051419f", + "decimals": 6, + "name": "ENXT Token", + "symbol": "ENXT", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x164334Ed9E63FbEdC8B52E6dbD408Af4F051419f/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xE06fba763C2104dB5027F57f6A5Be0a0D86308af", + "decimals": 18, + "name": "Akitavax", + "symbol": "AKITAX", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xE06fba763C2104dB5027F57f6A5Be0a0D86308af/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xf03Dccaec9A28200A6708c686cf0b8BF26dDc356", + "decimals": 18, + "name": "YDragon", + "symbol": "YDR", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xf03Dccaec9A28200A6708c686cf0b8BF26dDc356/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xEd2b42D3C9c6E97e11755BB37df29B6375ede3EB", + "decimals": 18, + "name": "HonToken", + "symbol": "HON", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xEd2b42D3C9c6E97e11755BB37df29B6375ede3EB/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xd9D90f882CDdD6063959A9d837B05Cb748718A05", + "decimals": 18, + "name": "More Token", + "symbol": "MORE", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xd9D90f882CDdD6063959A9d837B05Cb748718A05/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x312eE43Df66d1Fd1EA28e5b28F355Da84dCA13C2", + "decimals": 12, + "name": "SwapXI Token", + "symbol": "SWAPXI", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x312eE43Df66d1Fd1EA28e5b28F355Da84dCA13C2/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xfcc6CE74f4cd7eDEF0C5429bB99d38A3608043a5", + "decimals": 18, + "name": "FIRE", + "symbol": "FIRE", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xfcc6CE74f4cd7eDEF0C5429bB99d38A3608043a5/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xCe2fbed816E320258161CeD52c2d0CEBcdFd8136", + "decimals": 18, + "name": "BRIBE", + "symbol": "BRIBE", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xCe2fbed816E320258161CeD52c2d0CEBcdFd8136/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xe19A1684873faB5Fb694CfD06607100A632fF21c", + "decimals": 18, + "name": "BavaToken", + "symbol": "BAVA", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xe19A1684873faB5Fb694CfD06607100A632fF21c/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x63a72806098Bd3D9520cC43356dD78afe5D386D9", + "decimals": 18, + "name": "Aave Token", + "symbol": "AAVE.e", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x63a72806098Bd3D9520cC43356dD78afe5D386D9/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x5947BB275c521040051D82396192181b413227A3", + "decimals": 18, + "name": "Chainlink Token", + "symbol": "LINK.e", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x5947BB275c521040051D82396192181b413227A3/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x37B608519F91f70F2EeB0e5Ed9AF4061722e4F76", + "decimals": 18, + "name": "SushiToken", + "symbol": "SUSHI.e", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x37B608519F91f70F2EeB0e5Ed9AF4061722e4F76/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x50b7545627a5162F82A992c33b87aDc75187B218", + "decimals": 8, + "name": "Wrapped BTC", + "symbol": "WBTC.e", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x50b7545627a5162F82A992c33b87aDc75187B218/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x152b9d0FdC40C096757F570A51E494bd4b943E50", + "decimals": 8, + "name": "Bitcoin", + "symbol": "BTC.b", + "logoURI": "https://raw.githubusercontent.com/traderjoe-xyz/joe-tokenlists/main/logos/0x152b9d0FdC40C096757F570A51E494bd4b943E50/logo.png" + }, + { + "chainId": 43114, + "address": "0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB", + "decimals": 18, + "name": "Wrapped Ether", + "symbol": "WETH.e", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x00EE200Df31b869a321B10400Da10b561F3ee60d", + "decimals": 18, + "name": "Arable Protocol", + "symbol": "ACRE", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x00EE200Df31b869a321B10400Da10b561F3ee60d/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x2b2C81e08f1Af8835a78Bb2A90AE924ACE0eA4bE", + "decimals": 18, + "name": "Staked AVAX", + "symbol": "sAVAX", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x2b2C81e08f1Af8835a78Bb2A90AE924ACE0eA4bE/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x0659133127749Cc0616Ed6632912ddF7cc8D7545", + "decimals": 18, + "name": "DefiLaunch Token", + "symbol": "DLAUNCH", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x0659133127749Cc0616Ed6632912ddF7cc8D7545/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xb67a9374Da03d4114a6FB8f0E7F2b82b5cB34ee3", + "decimals": 18, + "name": "Augmented Finance", + "symbol": "AGF", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xb67a9374Da03d4114a6FB8f0E7F2b82b5cB34ee3/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xB0a6e056B587D0a85640b39b1cB44086F7a26A1E", + "decimals": 18, + "name": "OddzToken", + "symbol": "ODDZ", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xB0a6e056B587D0a85640b39b1cB44086F7a26A1E/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xf3EC49ACb3084618121741e4BBB20996D383E9b2", + "decimals": 18, + "name": "KING", + "symbol": "KING", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xf3EC49ACb3084618121741e4BBB20996D383E9b2/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x94d649E017625dE1Aa04733aA046dE0161DF18eF", + "decimals": 18, + "name": "King Shares", + "symbol": "KSHARE", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x94d649E017625dE1Aa04733aA046dE0161DF18eF/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x4960bc6032351ab87627B8F36b37B4938A44C7eF", + "decimals": 18, + "name": "RICH", + "symbol": "RICH", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x4960bc6032351ab87627B8F36b37B4938A44C7eF/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x44754455564474A89358B2C2265883DF993b12F0", + "decimals": 18, + "name": "ZeroSwapToken", + "symbol": "ZEE", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x44754455564474A89358B2C2265883DF993b12F0/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xD4d026322C88C2d49942A75DfF920FCfbC5614C1", + "decimals": 18, + "name": "DEAPCOIN", + "symbol": "DEP", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xD4d026322C88C2d49942A75DfF920FCfbC5614C1/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x15c841043e13fFAA9a99FabEa236D40F45615623", + "decimals": 18, + "name": "BUSINESSES", + "symbol": "BUSINESSES", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x15c841043e13fFAA9a99FabEa236D40F45615623/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x4B322765D761984C0f9E72200B62a9b445F38caC", + "decimals": 18, + "name": "dolla", + "symbol": "DOLLA", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x4B322765D761984C0f9E72200B62a9b445F38caC/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xc69Eba65e87889f0805dB717Af06797055A0BA07", + "decimals": 18, + "name": "NitroNetwork", + "symbol": "ncash", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xc69Eba65e87889f0805dB717Af06797055A0BA07/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x979fFD8eEd7a43629eA29581DF4Bfe2b3F224e47", + "decimals": 18, + "name": "Omlira", + "symbol": "OML", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x979fFD8eEd7a43629eA29581DF4Bfe2b3F224e47/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xE16253892F126D068E711C2fdde6DB56969dBCf6", + "decimals": 18, + "name": "Splash Token", + "symbol": "SPLASH", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x4ec58f9D205F9c919920313932cc71EC68d123C7/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xbc6f589171d6d66EB44ebCC92dFFb570Db4208da", + "decimals": 18, + "name": "Wave Token", + "symbol": "WAVE", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xbc6f589171d6d66EB44ebCC92dFFb570Db4208da/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x97E7044ab98B7891546485f5f66EDcc2F58be106", + "decimals": 18, + "name": "EMERALD", + "symbol": "EM", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x97E7044ab98B7891546485f5f66EDcc2F58be106/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x80D18b1c9Ab0c9B5D6A6d5173575417457d00a12", + "decimals": 6, + "name": "Axelar Wrapped ATOM", + "symbol": "axlATOM", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x80D18b1c9Ab0c9B5D6A6d5173575417457d00a12/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x449674B82F05d498E126Dd6615a1057A9c088f2C", + "decimals": 18, + "name": "LostToken", + "symbol": "LOST", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x449674B82F05d498E126Dd6615a1057A9c088f2C/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x1B88D7aD51626044Ec62eF9803EA264DA4442F32", + "decimals": 18, + "name": "ZooToken", + "symbol": "ZOO", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x1B88D7aD51626044Ec62eF9803EA264DA4442F32/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x056D114fF1e01dE3BCA30F0Efa3655DF42880e5B", + "decimals": 18, + "name": "KyteOne", + "symbol": "KTE", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x056D114fF1e01dE3BCA30F0Efa3655DF42880e5B/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x1111111111182587795eF1098ac7da81a108C97a", + "decimals": 18, + "name": "Bold Point Token", + "symbol": "BPT", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x1111111111182587795eF1098ac7da81a108C97a/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xd13eB71515DC48a8a367D12F844e5737bab415dF", + "decimals": 18, + "name": "Spice", + "symbol": "SFI", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xd13eB71515DC48a8a367D12F844e5737bab415dF/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x5a15Bdcf9a3A8e799fa4381E666466a516F2d9C8", + "decimals": 18, + "name": "Snail Trail", + "symbol": "SLIME", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x5a15Bdcf9a3A8e799fa4381E666466a516F2d9C8/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x714f020C54cc9D104B6F4f6998C63ce2a31D1888", + "decimals": 18, + "name": "STEP.APP", + "symbol": "FITFI", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x714f020C54cc9D104B6F4f6998C63ce2a31D1888/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x4156F18bF7C1ef04248632C66Aa119De152D8f2E", + "decimals": 18, + "name": "Zeus Node Finance", + "symbol": "ZEUS", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x4156F18bF7C1ef04248632C66Aa119De152D8f2E/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xc7198437980c041c805A1EDcbA50c1Ce5db95118", + "decimals": 6, + "name": "Tether USD", + "symbol": "USDT.e", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xc7198437980c041c805A1EDcbA50c1Ce5db95118/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664", + "decimals": 6, + "name": "USD Coin", + "symbol": "USDC.e", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xd586E7F844cEa2F87f50152665BCbc2C279D8d70", + "decimals": 18, + "name": "Dai Stablecoin", + "symbol": "DAI.e", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xd586E7F844cEa2F87f50152665BCbc2C279D8d70/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x564A341Df6C126f90cf3ECB92120FD7190ACb401", + "decimals": 6, + "name": "BiLira", + "symbol": "TRYB", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x564A341Df6C126f90cf3ECB92120FD7190ACb401/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x19860CCB0A68fd4213aB9D8266F7bBf05A8dDe98", + "decimals": 18, + "name": "Binance USD", + "symbol": "BUSD.e", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x19860CCB0A68fd4213aB9D8266F7bBf05A8dDe98/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x4fbf0429599460D327BD5F55625E30E4fC066095", + "decimals": 18, + "name": "TSD Stablecoin", + "symbol": "TSD", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x4fbf0429599460D327BD5F55625E30E4fC066095/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x130966628846BFd36ff31a822705796e8cb8C18D", + "decimals": 18, + "name": "Magic Internet Money", + "symbol": "MIM", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x130966628846BFd36ff31a822705796e8cb8C18D/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x783C08b5F26E3daf8C4681F3bf49844e425b6393", + "decimals": 18, + "name": "Avaware USD", + "symbol": "AUSD", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x783C08b5F26E3daf8C4681F3bf49844e425b6393/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x346A59146b9b4a77100D369a3d18E8007A9F46a6", + "decimals": 18, + "name": "AVAI", + "symbol": "AVAI", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x346A59146b9b4a77100D369a3d18E8007A9F46a6/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xD24C2Ad096400B6FBcd2ad8B24E7acBc21A1da64", + "decimals": 18, + "name": "Frax", + "symbol": "FRAX", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xD24C2Ad096400B6FBcd2ad8B24E7acBc21A1da64/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x5c49b268c9841AFF1Cc3B0a418ff5c3442eE3F3b", + "decimals": 18, + "name": "miMatic", + "symbol": "MAI", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x5c49b268c9841AFF1Cc3B0a418ff5c3442eE3F3b/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x026187BdbC6b751003517bcb30Ac7817D5B766f8", + "decimals": 18, + "name": "Defrost Finance H2O", + "symbol": "H2O", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x026187BdbC6b751003517bcb30Ac7817D5B766f8/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E", + "decimals": 6, + "name": "USD Coin", + "symbol": "USDC", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x6feFd97F328342a8A840546A55FDcfEe7542F9A8", + "decimals": 18, + "name": "agEUR", + "symbol": "agEUR", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x6feFd97F328342a8A840546A55FDcfEe7542F9A8/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x260Bbf5698121EB85e7a74f2E45E16Ce762EbE11", + "decimals": 6, + "name": "Axelar Wrapped UST", + "symbol": "axlUST", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x260Bbf5698121EB85e7a74f2E45E16Ce762EbE11/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7", + "decimals": 6, + "name": "TetherToken", + "symbol": "USDT", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x0f577433Bf59560Ef2a79c124E9Ff99fCa258948", + "decimals": 18, + "name": "Moremoney USD", + "symbol": "MONEY", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x0f577433Bf59560Ef2a79c124E9Ff99fCa258948/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x431D5dfF03120AFA4bDf332c61A6e1766eF37BDB", + "decimals": 18, + "name": "JPY Coin", + "symbol": "JPYC", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x431D5dfF03120AFA4bDf332c61A6e1766eF37BDB/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xb599c3590F42f8F995ECfa0f85D2980B76862fc1", + "decimals": 6, + "name": "Wormhole UST", + "symbol": "UST", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xb599c3590F42f8F995ECfa0f85D2980B76862fc1/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x61eCd63e42C27415696e10864d70ecEA4aA11289", + "decimals": 18, + "name": "Rugpull Prevention", + "symbol": "RUGPULL", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x61eCd63e42C27415696e10864d70ecEA4aA11289/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xcF8419A615c57511807236751c0AF38Db4ba3351", + "decimals": 18, + "name": "AxialToken", + "symbol": "AXIAL", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xcF8419A615c57511807236751c0AF38Db4ba3351/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x491a4eB4f1FC3BfF8E1d2FC856a6A46663aD556f", + "decimals": 4, + "name": "BRZ", + "symbol": "BRZ", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x491a4eB4f1FC3BfF8E1d2FC856a6A46663aD556f/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x827eb4bada6cb76c90f887969b3fe5faD585FFe3", + "decimals": 18, + "name": "XETA", + "symbol": "XETA", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x827eb4bada6cb76c90f887969b3fe5faD585FFe3/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x6B56Ec4a92765203508FB40feC9fa23E549B705a", + "decimals": 18, + "name": "Unbound Dollar", + "symbol": "UND", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x6B56Ec4a92765203508FB40feC9fa23E549B705a/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xF915fDDa4c882731C0456a4214548Cd13A822886", + "decimals": 18, + "name": "Unbound", + "symbol": "UNB", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xF915fDDa4c882731C0456a4214548Cd13A822886/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x51e48670098173025C477D9AA3f0efF7BF9f7812", + "decimals": 18, + "name": "DegenX", + "symbol": "DGNX", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x51e48670098173025C477D9AA3f0efF7BF9f7812/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xcf799767d366d789e8B446981C2D578E241fa25c", + "decimals": 18, + "name": "Decentralized USD", + "symbol": "USDD", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xcf799767d366d789e8B446981C2D578E241fa25c/logo_24.png" + }, + { + "chainId": 43114, + "address": "0x9C9e5fD8bbc25984B178FdCE6117Defa39d2db39", + "decimals": 18, + "name": "BUSD Token", + "symbol": "BUSD", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0x9C9e5fD8bbc25984B178FdCE6117Defa39d2db39/logo_24.png" + }, + { + "chainId": 43114, + "address": "0xbBAAA0420D474B34Be197f95A323C2fF3829E811", + "decimals": 18, + "name": "LODE Token", + "symbol": "LODE", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/43114/0xbBAAA0420D474B34Be197f95A323C2fF3829E811/logo_24.png" + }, + { + "chainId": 80001, + "address": "0x4828a3D98E428e73184374845f23C40eB76bA695", + "decimals": 18, + "name": "Pangolin", + "symbol": "mumbaiPNG", + "logoURI": "https://raw.githubusercontent.com/pangolindex/tokens/main/assets/80001/0x4828a3D98E428e73184374845f23C40eB76bA695/logo_24.png" + } + ] + } \ No newline at end of file diff --git a/src/chains/binance-smart-chain/bep20_tokens_mainnet.json b/src/chains/binance-smart-chain/bep20_tokens_mainnet.json new file mode 100755 index 0000000000..a01e11ca3f --- /dev/null +++ b/src/chains/binance-smart-chain/bep20_tokens_mainnet.json @@ -0,0 +1,990 @@ +{ + "name": "PancakeSwap Default List", + "timestamp": "2021-03-17T09:56:23Z", + "version": { + "major": 2, + "minor": 0, + "patch": 1 + }, + "tags": {}, + "logoURI": "https://exchange.pancakeswap.finance/images/pancakeswap.png", + "keywords": ["pancake", "default"], + "tokens": [ + { + "name": "WBNB Token", + "symbol": "WBNB", + "address": "0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c.png" + }, + { + "name": "Bakery Token", + "symbol": "BAKE", + "address": "0xe02df9e3e622debdd69fb838bb799e3f168902c5", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0xe02df9e3e622debdd69fb838bb799e3f168902c5.png" + }, + { + "name": "BUSD Token", + "symbol": "BUSD", + "address": "0xe9e7cea3dedca5984780bafc599bd69add087d56", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0xe9e7cea3dedca5984780bafc599bd69add087d56.png" + }, + { + "name": "Ethereum Token", + "symbol": "ETH", + "address": "0x2170ed0880ac9a755fd29b2688956bd959f933f8", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x2170ed0880ac9a755fd29b2688956bd959f933f8.png" + }, + { + "name": "BTCB Token", + "symbol": "BTCB", + "address": "0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c.png" + }, + { + "name": "BAND Protocol Token", + "symbol": "BAND", + "address": "0xad6caeb32cd2c308980a548bd0bc5aa4306c6c18", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0xad6caeb32cd2c308980a548bd0bc5aa4306c6c18.png" + }, + { + "name": "EOS Token", + "symbol": "EOS", + "address": "0x56b6fb708fc5732dec1afc8d8556423a2edccbd6", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x56b6fb708fc5732dec1afc8d8556423a2edccbd6.png" + }, + { + "name": "Tether USD", + "symbol": "USDT", + "address": "0x55d398326f99059ff775485246999027b3197955", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x55d398326f99059ff775485246999027b3197955.png" + }, + { + "name": "XRP Token", + "symbol": "XRP", + "address": "0x1d2f0da169ceb9fc7b3144628db156f3f6c60dbe", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x1d2f0da169ceb9fc7b3144628db156f3f6c60dbe.png" + }, + { + "name": "Bitcoin Cash Token", + "symbol": "BCH", + "address": "0x8ff795a6f4d97e7887c79bea79aba5cc76444adf", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x8ff795a6f4d97e7887c79bea79aba5cc76444adf.png" + }, + { + "name": "Litecoin Token", + "symbol": "LTC", + "address": "0x4338665cbb7b2485a8855a139b75d5e34ab0db94", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x4338665cbb7b2485a8855a139b75d5e34ab0db94.png" + }, + { + "name": "Cardano Token", + "symbol": "ADA", + "address": "0x3ee2200efb3400fabb9aacf31297cbdd1d435d47", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x3ee2200efb3400fabb9aacf31297cbdd1d435d47.png" + }, + { + "name": "Cosmos Token", + "symbol": "ATOM", + "address": "0x0eb3a705fc54725037cc9e008bdede697f62f335", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x0eb3a705fc54725037cc9e008bdede697f62f335.png" + }, + { + "name": "Tezos Token", + "symbol": "XTZ", + "address": "0x16939ef78684453bfdfb47825f8a5f714f12623a", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x16939ef78684453bfdfb47825f8a5f714f12623a.png" + }, + { + "name": "Ontology Token", + "symbol": "ONT", + "address": "0xfd7b3a77848f1c2d67e05e54d78d174a0c850335", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0xfd7b3a77848f1c2d67e05e54d78d174a0c850335.png" + }, + { + "name": "Zcash Token", + "symbol": "ZEC", + "address": "0x1ba42e5193dfa8b03d15dd1b86a3113bbbef8eeb", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x1ba42e5193dfa8b03d15dd1b86a3113bbbef8eeb.png" + }, + { + "name": "Dai Token", + "symbol": "DAI", + "address": "0x1af3f329e8be154074d8769d1ffa4ee058b1dbc3", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x1af3f329e8be154074d8769d1ffa4ee058b1dbc3.png" + }, + { + "name": "YFII.finance Token", + "symbol": "YFII", + "address": "0x7f70642d88cf1c4a3a7abb072b53b929b653eda5", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x7f70642d88cf1c4a3a7abb072b53b929b653eda5.png" + }, + { + "name": "Cream", + "symbol": "CREAM", + "address": "0xd4cb328a82bdf5f03eb737f37fa6b370aef3e888", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0xd4cb328a82bdf5f03eb737f37fa6b370aef3e888.png" + }, + { + "name": "Prometeus", + "symbol": "PROM", + "address": "0xaf53d56ff99f1322515e54fdde93ff8b3b7dafd5", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0xaf53d56ff99f1322515e54fdde93ff8b3b7dafd5.png" + }, + { + "name": "CanYaCoin", + "symbol": "CAN", + "address": "0x007ea5c0ea75a8df45d288a4debdd5bb633f9e56", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x007ea5c0ea75a8df45d288a4debdd5bb633f9e56.png" + }, + { + "name": "Polkadot Token", + "symbol": "DOT", + "address": "0x7083609fce4d1d8dc0c979aab8c869ea2c873402", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x7083609fce4d1d8dc0c979aab8c869ea2c873402.png" + }, + { + "name": "PancakeSwap Token", + "symbol": "CAKE", + "address": "0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82.png" + }, + { + "name": "Streamity", + "symbol": "STM", + "address": "0x90df11a8cce420675e73922419e3f4f3fe13cccb", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x90df11a8cce420675e73922419e3f4f3fe13cccb.png" + }, + { + "name": "Ankr", + "symbol": "ANKR", + "address": "0xf307910a4c7bbc79691fd374889b36d8531b08e3", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0xf307910a4c7bbc79691fd374889b36d8531b08e3.png" + }, + { + "name": "ChainLink Token", + "symbol": "LINK", + "address": "0xf8a0bf9cf54bb92f17374d9e9a321e6a111a51bd", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0xf8a0bf9cf54bb92f17374d9e9a321e6a111a51bd.png" + }, + { + "name": "Burger Swap", + "symbol": "BURGER", + "address": "0xae9269f27437f0fcbc232d39ec814844a51d6b8f", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0xae9269f27437f0fcbc232d39ec814844a51d6b8f.png" + }, + { + "name": "Dice.finance Token", + "symbol": "DICE", + "address": "0x748ad98b14c814b28812eb42ad219c8672909879", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x748ad98b14c814b28812eb42ad219c8672909879.png" + }, + { + "name": "JNTR/b", + "symbol": "JNTR/b", + "address": "0x3c037c4c2296f280bb318d725d0b454b76c199b9", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x3c037c4c2296f280bb318d725d0b454b76c199b9.png" + }, + { + "name": "SPARTAN PROTOCOL TOKEN", + "symbol": "SPART", + "address": "0xe4ae305ebe1abe663f261bc00534067c80ad677c", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0xe4ae305ebe1abe663f261bc00534067c80ad677c.png" + }, + { + "name": "Trust Wallet", + "symbol": "TWT", + "address": "0x4b0f1812e5df2a09796481ff14017e6005508003", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x4b0f1812e5df2a09796481ff14017e6005508003.png" + }, + { + "name": "Venus", + "symbol": "XVS", + "address": "0xcf6bb5389c92bdda8a3747ddb454cb7a64626c63", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0xcf6bb5389c92bdda8a3747ddb454cb7a64626c63.png" + }, + { + "name": "Beer Garden", + "symbol": "Beer", + "address": "0xbb8db5e17bbe9c90da8e3445e335b82d7cc53575", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0xbb8db5e17bbe9c90da8e3445e335b82d7cc53575.png" + }, + { + "name": "AlphaToken", + "symbol": "ALPHA", + "address": "0xa1faa113cbe53436df28ff0aee54275c13b40975", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0xa1faa113cbe53436df28ff0aee54275c13b40975.png" + }, + { + "name": "Beefy.finance", + "symbol": "BIFI", + "address": "0xCa3F508B8e4Dd382eE878A314789373D80A5190A", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0xCa3F508B8e4Dd382eE878A314789373D80A5190A.png" + }, + { + "name": "yearn.finance", + "symbol": "YFI", + "address": "0x88f1a5ae2a3bf98aeaf342d26b30a79438c9142e", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x88f1a5ae2a3bf98aeaf342d26b30a79438c9142e.png" + }, + { + "name": "Uniswap", + "symbol": "UNI", + "address": "0xbf5140a22578168fd562dccf235e5d43a02ce9b1", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0xbf5140a22578168fd562dccf235e5d43a02ce9b1.png" + }, + { + "name": "fry.world", + "symbol": "FRIES", + "address": "0x393B312C01048b3ed2720bF1B090084C09e408A1", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x393B312C01048b3ed2720bF1B090084C09e408A1.png" + }, + { + "name": "StableXSwap", + "symbol": "STAX", + "address": "0x0da6ed8b13214ff28e9ca979dd37439e8a88f6c4", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x0da6ed8b13214ff28e9ca979dd37439e8a88f6c4.png" + }, + { + "name": "Filecoin", + "symbol": "FIL", + "address": "0x0d8ce2a99bb6e3b7db580ed848240e4a0f9ae153", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x0d8ce2a99bb6e3b7db580ed848240e4a0f9ae153.png" + }, + { + "name": "KAVA", + "symbol": "KAVA", + "address": "0x5F88AB06e8dfe89DF127B2430Bba4Af600866035", + "chainId": 56, + "decimals": 6, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x5F88AB06e8dfe89DF127B2430Bba4Af600866035.png" + }, + { + "name": "USDX", + "symbol": "USDX", + "address": "0x1203355742e76875154c0d13eb81dcd7711dc7d9", + "chainId": 56, + "decimals": 6, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x1203355742e76875154c0d13eb81dcd7711dc7d9.png" + }, + { + "name": "Injective Protocol", + "symbol": "INJ", + "address": "0xa2B726B1145A4773F68593CF171187d8EBe4d495", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0xa2B726B1145A4773F68593CF171187d8EBe4d495.png" + }, + { + "name": "Swipe", + "symbol": "SXP", + "address": "0x47bead2563dcbf3bf2c9407fea4dc236faba485a", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x47bead2563dcbf3bf2c9407fea4dc236faba485a.png" + }, + { + "name": "Binance-Peg USD Coin", + "symbol": "USDC", + "address": "0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d.png" + }, + { + "name": "CertiK Token", + "symbol": "CTK", + "address": "0xa8c2b8eec3d368c0253ad3dae65a5f2bbb89c929", + "chainId": 56, + "decimals": 6, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0xa8c2b8eec3d368c0253ad3dae65a5f2bbb89c929.png" + }, + { + "name": "NAR Token", + "symbol": "NAR", + "address": "0xa1303e6199b319a891b79685f0537d289af1fc83", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0xa1303e6199b319a891b79685f0537d289af1fc83.png" + }, + { + "name": "Nyanswop Token", + "symbol": "NYA", + "address": "0xbfa0841f7a90c4ce6643f651756ee340991f99d5", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0xbfa0841f7a90c4ce6643f651756ee340991f99d5.png" + }, + { + "name": "DANGO", + "symbol": "DANGO", + "address": "0x0957c57c9eb7744850dcc95db5a06ed4a246236e", + "chainId": 56, + "decimals": 6, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x0957c57c9eb7744850dcc95db5a06ed4a246236e.png" + }, + { + "name": "HARD", + "symbol": "HARD", + "address": "0xf79037f6f6be66832de4e7516be52826bc3cbcc4", + "chainId": 56, + "decimals": 6, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0xf79037f6f6be66832de4e7516be52826bc3cbcc4.png" + }, + { + "name": "ROOBEE", + "symbol": "bROOBEE", + "address": "0xe64f5cb844946c1f102bd25bbd87a5ab4ae89fbe", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0xe64f5cb844946c1f102bd25bbd87a5ab4ae89fbe.png" + }, + { + "name": "Unifi Token", + "symbol": "UNFI", + "address": "0x728C5baC3C3e370E372Fc4671f9ef6916b814d8B", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x728C5baC3C3e370E372Fc4671f9ef6916b814d8B.png" + }, + { + "name": "BLINk", + "symbol": "BLK", + "address": "0x63870A18B6e42b01Ef1Ad8A2302ef50B7132054F", + "chainId": 56, + "decimals": 6, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x63870A18B6e42b01Ef1Ad8A2302ef50B7132054F.png" + }, + { + "name": "QUSD Stablecoin", + "symbol": "QUSD", + "address": "0xb8C540d00dd0Bf76ea12E4B4B95eFC90804f924E", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0xb8C540d00dd0Bf76ea12E4B4B95eFC90804f924E.png" + }, + { + "name": "Qian Governance Token", + "symbol": "KUN", + "address": "0x1A2fb0Af670D0234c2857FaD35b789F8Cb725584", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x1A2fb0Af670D0234c2857FaD35b789F8Cb725584.png" + }, + { + "name": "VAI Stablecoin", + "symbol": "VAI", + "address": "0x4bd17003473389a42daf6a0a729f6fdb328bbbd7", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x4bd17003473389a42daf6a0a729f6fdb328bbbd7.png" + }, + { + "name": "Juventus", + "symbol": "JUV", + "address": "0xc40c9a843e1c6d01b7578284a9028854f6683b1b", + "chainId": 56, + "decimals": 2, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0xc40c9a843e1c6d01b7578284a9028854f6683b1b.png" + }, + { + "name": "Paris Saint-Germain", + "symbol": "PSG", + "address": "0xbc5609612b7c44bef426de600b5fd1379db2ecf1", + "chainId": 56, + "decimals": 2, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0xbc5609612b7c44bef426de600b5fd1379db2ecf1.png" + }, + { + "name": "Ditto", + "symbol": "DITTO", + "address": "0x233d91A0713155003fc4DcE0AFa871b508B3B715", + "chainId": 56, + "decimals": 9, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x233d91A0713155003fc4DcE0AFa871b508B3B715.png" + }, + { + "name": "Math", + "symbol": "MATH", + "address": "0xf218184af829cf2b0019f8e6f0b2423498a36983", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0xf218184af829cf2b0019f8e6f0b2423498a36983.png" + }, + { + "name": "Fuel", + "symbol": "FUEL", + "address": "0x2090c8295769791ab7A3CF1CC6e0AA19F35e441A", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x2090c8295769791ab7A3CF1CC6e0AA19F35e441A.png" + }, + { + "name": "Nuls", + "symbol": "NULS", + "address": "0x8cd6e29d3686d24d3c2018cee54621ea0f89313b", + "chainId": 56, + "decimals": 8, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x8cd6e29d3686d24d3c2018cee54621ea0f89313b.png" + }, + { + "name": "NerveNetwork", + "symbol": "NVT", + "address": "0xf0e406c49c63abf358030a299c0e00118c4c6ba5", + "chainId": 56, + "decimals": 8, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0xf0e406c49c63abf358030a299c0e00118c4c6ba5.png" + }, + { + "name": "Reef", + "symbol": "REEF", + "address": "0xf21768ccbc73ea5b6fd3c687208a7c2def2d966e", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0xf21768ccbc73ea5b6fd3c687208a7c2def2d966e.png" + }, + { + "name": "OG", + "symbol": "OG", + "address": "0xf05e45ad22150677a017fbd94b84fbb63dc9b44c", + "chainId": 56, + "decimals": 2, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0xf05e45ad22150677a017fbd94b84fbb63dc9b44c.png" + }, + { + "name": "Atletico de Madrid", + "symbol": "ATM", + "address": "0x25e9d05365c867e59c1904e7463af9f312296f9e", + "chainId": 56, + "decimals": 2, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x25e9d05365c867e59c1904e7463af9f312296f9e.png" + }, + { + "name": "AS Roma", + "symbol": "ASR", + "address": "0x80d5f92c2c8c682070c95495313ddb680b267320", + "chainId": 56, + "decimals": 2, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x80d5f92c2c8c682070c95495313ddb680b267320.png" + }, + { + "name": "AllianceBlock", + "symbol": "bALBT", + "address": "0x72faa679e1008ad8382959ff48e392042a8b06f7", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x72faa679e1008ad8382959ff48e392042a8b06f7.png" + }, + { + "name": "Tenet", + "symbol": "TEN", + "address": "0xdff8cb622790b7f92686c722b02cab55592f152c", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0xdff8cb622790b7f92686c722b02cab55592f152c.png" + }, + { + "name": "Helmet.insure", + "symbol": "Helmet", + "address": "0x948d2a81086a075b3130bac19e4c6dee1d2e3fe8", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x948d2a81086a075b3130bac19e4c6dee1d2e3fe8.png" + }, + { + "name": "BSCEX", + "symbol": "BSCX", + "address": "0x5ac52ee5b2a633895292ff6d8a89bb9190451587", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x5ac52ee5b2a633895292ff6d8a89bb9190451587.png" + }, + { + "name": "Standard BTC Hashrate Token", + "symbol": "BTCST", + "address": "0x78650b139471520656b9e7aa7a5e9276814a38e9", + "chainId": 56, + "decimals": 17, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x78650b139471520656b9e7aa7a5e9276814a38e9.png" + }, + { + "name": "Frontier Token", + "symbol": "FRONT", + "address": "0x928e55daB735aa8260AF3cEDadA18B5f70C72f1b", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x928e55daB735aa8260AF3cEDadA18B5f70C72f1b.png" + }, + { + "name": "Soteria", + "symbol": "wSOTE", + "address": "0x541e619858737031a1244a5d0cd47e5ef480342c", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x541e619858737031a1244a5d0cd47e5ef480342c.png" + }, + { + "name": "Mirror TSLA Token", + "symbol": "mTSLA", + "address": "0xF215A127A196e3988C09d052e16BcFD365Cd7AA3", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0xF215A127A196e3988C09d052e16BcFD365Cd7AA3.png" + }, + { + "name": "Mirror AMZN Token", + "symbol": "mAMZN", + "address": "0x3947B992DC0147D2D89dF0392213781b04B25075", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x3947B992DC0147D2D89dF0392213781b04B25075.png" + }, + { + "name": "Mirror NFLX Token", + "symbol": "mNFLX", + "address": "0xa04F060077D90Fe2647B61e4dA4aD1F97d6649dc", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0xa04F060077D90Fe2647B61e4dA4aD1F97d6649dc.png" + }, + { + "name": "Mirror GOOGL Token", + "symbol": "mGOOGL", + "address": "0x62D71B23bF15218C7d2D7E48DBbD9e9c650B173f", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x62D71B23bF15218C7d2D7E48DBbD9e9c650B173f.png" + }, + { + "name": "UST Token", + "symbol": "UST", + "address": "0x23396cF899Ca06c4472205fC903bDB4de249D6fC", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x23396cF899Ca06c4472205fC903bDB4de249D6fC.png" + }, + { + "name": "b.earnfi", + "symbol": "BFI", + "address": "0x81859801b01764D4f0Fa5E64729f5a6C3b91435b", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x81859801b01764D4f0Fa5E64729f5a6C3b91435b.png" + }, + { + "name": "bDollar", + "symbol": "BDO", + "address": "0x190b589cf9Fb8DDEabBFeae36a813FFb2A702454", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x190b589cf9Fb8DDEabBFeae36a813FFb2A702454.png" + }, + { + "name": "bDollar Share", + "symbol": "sBDO", + "address": "0x0d9319565be7f53CeFE84Ad201Be3f40feAE2740", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x0d9319565be7f53CeFE84Ad201Be3f40feAE2740.png" + }, + { + "name": "Elrond", + "symbol": "EGLD", + "address": "0xbf7c81fff98bbe61b40ed186e4afd6ddd01337fe", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0xbf7c81fff98bbe61b40ed186e4afd6ddd01337fe.png" + }, + { + "name": "AUTOv2", + "symbol": "AUTO", + "address": "0xa184088a740c695e156f91f5cc086a06bb78b827", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0xa184088a740c695e156f91f5cc086a06bb78b827.png" + }, + { + "name": "Hedget", + "symbol": "HGET", + "address": "0xC7d8D35EBA58a0935ff2D5a33Df105DD9f071731", + "chainId": 56, + "decimals": 6, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0xC7d8D35EBA58a0935ff2D5a33Df105DD9f071731.png" + }, + { + "name": "Litentry", + "symbol": "LIT", + "address": "0xb59490ab09a0f526cc7305822ac65f2ab12f9723", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0xb59490ab09a0f526cc7305822ac65f2ab12f9723.png" + }, + { + "name": "Linear Finance", + "symbol": "LINA", + "address": "0x762539b45a1dcce3d36d080f74d1aed37844b878", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x762539b45a1dcce3d36d080f74d1aed37844b878.png" + }, + { + "name": "Beacon ETH", + "symbol": "BETH", + "address": "0x250632378e573c6be1ac2f97fcdf00515d0aa91b", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x250632378e573c6be1ac2f97fcdf00515d0aa91b.png" + }, + { + "name": "lUSD", + "symbol": "lUSD", + "address": "0x23e8a70534308a4AAF76fb8C32ec13d17a3BD89e", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x23e8a70534308a4AAF76fb8C32ec13d17a3BD89e.png" + }, + { + "name": "SafePal Token", + "symbol": "SFP", + "address": "0xd41fdb03ba84762dd66a0af1a6c8540ff1ba5dfb", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0xd41fdb03ba84762dd66a0af1a6c8540ff1ba5dfb.png" + }, + { + "name": "Compound Finance", + "symbol": "COMP", + "address": "0x52ce071bd9b1c4b00a0b92d298c512478cad67e8", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x52ce071bd9b1c4b00a0b92d298c512478cad67e8.png" + }, + { + "name": "Swirge Pay", + "symbol": "SWGb", + "address": "0xe40255c5d7fa7ceec5120408c78c787cecb4cfdb", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0xe40255c5d7fa7ceec5120408c78c787cecb4cfdb.png" + }, + { + "name": "renBTC", + "symbol": "renBTC", + "address": "0xfCe146bF3146100cfe5dB4129cf6C82b0eF4Ad8c", + "chainId": 56, + "decimals": 8, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0xfCe146bF3146100cfe5dB4129cf6C82b0eF4Ad8c.png" + }, + { + "name": "renDOGE", + "symbol": "renDOGE", + "address": "0xc3fed6eb39178a541d274e6fc748d48f0ca01cc3", + "chainId": 56, + "decimals": 8, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0xc3fed6eb39178a541d274e6fc748d48f0ca01cc3.png" + }, + { + "name": "anyMTLX", + "symbol": "anyMTLX", + "address": "0x5921dee8556c4593eefcfad3ca5e2f618606483b", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x5921dee8556c4593eefcfad3ca5e2f618606483b.png" + }, + { + "name": "ZeroSwapToken", + "symbol": "ZEE", + "address": "0x44754455564474a89358b2c2265883df993b12f0", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x44754455564474a89358b2c2265883df993b12f0.png" + }, + { + "name": "Berry", + "symbol": "BRY", + "address": "0xf859Bf77cBe8699013d6Dbc7C2b926Aaf307F830", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0xf859Bf77cBe8699013d6Dbc7C2b926Aaf307F830.png" + }, + { + "name": "Swingby", + "symbol": "SWINGBY", + "address": "0x71DE20e0C4616E7fcBfDD3f875d568492cBE4739", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x71DE20e0C4616E7fcBfDD3f875d568492cBE4739.png" + }, + { + "name": "Dodo", + "symbol": "DODO", + "address": "0x67ee3cb086f8a16f34bee3ca72fad36f7db929e2", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x67ee3cb086f8a16f34bee3ca72fad36f7db929e2.png" + }, + { + "name": "Sushi", + "symbol": "SUSHI", + "address": "0x947950bcc74888a40ffa2593c5798f11fc9124c4", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x947950bcc74888a40ffa2593c5798f11fc9124c4.png" + }, + { + "name": "OPEN Governance Token", + "symbol": "bOPEN", + "address": "0xF35262a9d427F96d2437379eF090db986eaE5d42", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0xF35262a9d427F96d2437379eF090db986eaE5d42.png" + }, + { + "name": "BoringDAO", + "symbol": "BOR", + "address": "0x92d7756c60dcfd4c689290e8a9f4d263b3b32241", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x92d7756c60dcfd4c689290e8a9f4d263b3b32241.png" + }, + { + "name": "renZEC", + "symbol": "renZEC", + "address": "0x695FD30aF473F2960e81Dc9bA7cB67679d35EDb7", + "chainId": 56, + "decimals": 8, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x695FD30aF473F2960e81Dc9bA7cB67679d35EDb7.png" + }, + { + "name": "Multiplier", + "symbol": "bMXX", + "address": "0x4131b87f74415190425ccd873048c708f8005823", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x4131b87f74415190425ccd873048c708f8005823.png" + }, + { + "name": "IoTeX", + "symbol": "IOTX", + "address": "0x9678e42cebeb63f23197d726b29b1cb20d0064e5", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x9678e42cebeb63f23197d726b29b1cb20d0064e5.png" + }, + { + "name": "xMARK", + "symbol": "xMARK", + "address": "0x26a5dfab467d4f58fb266648cae769503cec9580", + "chainId": 56, + "decimals": 9, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x26a5dfab467d4f58fb266648cae769503cec9580.png" + }, + { + "name": "TokenPocket", + "symbol": "TPT", + "address": "0xeca41281c24451168a37211f0bc2b8645af45092", + "chainId": 56, + "decimals": 4, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0xeca41281c24451168a37211f0bc2b8645af45092.png" + }, + { + "name": "Yieldwatch", + "symbol": "WATCH", + "address": "0x7a9f28eb62c791422aa23ceae1da9c847cbec9b0", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x7a9f28eb62c791422aa23ceae1da9c847cbec9b0.png" + }, + { + "name": "Bella Protocol", + "symbol": "BEL", + "address": "0x8443f091997f06a61670b735ed92734f5628692f", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x8443f091997f06a61670b735ed92734f5628692f.png" + }, + { + "name": "DeXe", + "symbol": "DEXE", + "address": "0x039cb485212f996a9dbb85a9a75d898f94d38da6", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x039cb485212f996a9dbb85a9a75d898f94d38da6.png" + }, + { + "name": "Ramp DEFI", + "symbol": "RAMP", + "address": "0x8519ea49c997f50ceffa444d240fb655e89248aa", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x8519ea49c997f50ceffa444d240fb655e89248aa.png" + }, + { + "name": "Belt", + "symbol": "BELT", + "address": "0xE0e514c71282b6f4e823703a39374Cf58dc3eA4f", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0xE0e514c71282b6f4e823703a39374Cf58dc3eA4f.png" + }, + { + "name": "Basic Attention Token", + "symbol": "BAT", + "address": "0x101d82428437127bf1608f699cd651e6abf9766e", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x101d82428437127bf1608f699cd651e6abf9766e.png" + }, + { + "name": "BUX", + "symbol": "BUX", + "address": "0x211ffbe424b90e25a15531ca322adf1559779e45", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x211ffbe424b90e25a15531ca322adf1559779e45.png" + }, + { + "name": "ForTube", + "symbol": "FOR", + "address": "0x658A109C5900BC6d2357c87549B651670E5b0539", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x658A109C5900BC6d2357c87549B651670E5b0539.png" + }, + { + "name": "My Neigbor Alice", + "symbol": "ALICE", + "address": "0xac51066d7bec65dc4589368da368b212745d63e8", + "chainId": 56, + "decimals": 6, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0xac51066d7bec65dc4589368da368b212745d63e8.png" + }, + { + "name": "Pancake Bunny", + "symbol": "BUNNY", + "address": "0xc9849e6fdb743d08faee3e34dd2d1bc69ea11a51", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0xc9849e6fdb743d08faee3e34dd2d1bc69ea11a51.png" + }, + { + "name": "Dego.Finance", + "symbol": "DEGO", + "address": "0x3fda9383a84c05ec8f7630fe10adf1fac13241cc", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x3fda9383a84c05ec8f7630fe10adf1fac13241cc.png" + }, + { + "name": "LTO Network", + "symbol": "LTO", + "address": "0x857b222fc79e1cbbf8ca5f78cb133d1b7cf34bbd", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x857b222fc79e1cbbf8ca5f78cb133d1b7cf34bbd.png" + }, + { + "name": "Contentos", + "symbol": "COS", + "address": "0x96dd399f9c3afda1f194182f71600f1b65946501", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x96dd399f9c3afda1f194182f71600f1b65946501.png" + }, + { + "name": "Tixl", + "symbol": "TXL", + "address": "0x1ffd0b47127fdd4097e54521c9e2c7f0d66aafc5", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x1ffd0b47127fdd4097e54521c9e2c7f0d66aafc5.png" + }, + { + "name": "Alpaca", + "symbol": "ALPACA", + "address": "0x8f0528ce5ef7b51152a59745befdd91d97091d2f", + "chainId": 56, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x8f0528ce5ef7b51152a59745befdd91d97091d2f.png" + } + ] +} diff --git a/src/chains/binance-smart-chain/bep20_tokens_testnet.json b/src/chains/binance-smart-chain/bep20_tokens_testnet.json new file mode 100755 index 0000000000..1f1b094fb6 --- /dev/null +++ b/src/chains/binance-smart-chain/bep20_tokens_testnet.json @@ -0,0 +1,53 @@ +{ + "name": "BSC Testnet Token List", + "logoURI": "https://bsctokenlists.org/static/media/color.657056ae.png", + "version": { + "major": 0, + "minor": 2, + "patch": 0 + }, + "keywords": [], + "timestamp": "2022-07-15T00:00:00+00:00", + "tokens": [ + { + "name": "WBNB Token", + "symbol": "WBNB", + "address": "0xae13d989dac2f0debff460ac112a837c89baa7cd", + "chainId": 97, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c.png" + }, + { + "name": "BUSD Token", + "symbol": "BUSD", + "address": "0x78867BbEeF44f2326bF8DDd1941a4439382EF2A7", + "chainId": 97, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0xe9e7cea3dedca5984780bafc599bd69add087d56.png" + }, + { + "name": "Ethereum Token", + "symbol": "ETH", + "address": "0x8babbb98678facc7342735486c851abd7a0d17ca", + "chainId": 97, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x2170ed0880ac9a755fd29b2688956bd959f933f8.png" + }, + { + "name": "Tether USD", + "symbol": "USDT", + "address": "0x7ef95a0fee0dd31b22626fa2e10ee6a223f8a684", + "chainId": 97, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x55d398326f99059ff775485246999027b3197955.png" + }, + { + "name": "Dai Token", + "symbol": "DAI", + "address": "0x8a9424745056Eb399FD19a0EC26A14316684e274", + "chainId": 97, + "decimals": 18, + "logoURI": "https://exchange.pancakeswap.finance/images/coins/0x1af3f329e8be154074d8769d1ffa4ee058b1dbc3.png" + } + ] +} diff --git a/src/chains/binance-smart-chain/binance-smart-chain.ts b/src/chains/binance-smart-chain/binance-smart-chain.ts new file mode 100644 index 0000000000..117a78f6c7 --- /dev/null +++ b/src/chains/binance-smart-chain/binance-smart-chain.ts @@ -0,0 +1,116 @@ +import abi from '../../services/ethereum.abi.json'; +import { logger } from '../../services/logger'; +import { Contract, Transaction, Wallet } from 'ethers'; +import { EthereumBase } from '../../services/ethereum-base'; +import { getEthereumConfig as getBinanceSmartChainConfig } from '../ethereum/ethereum.config'; +import { Provider } from '@ethersproject/abstract-provider'; +import { Ethereumish } from '../../services/common-interfaces'; +import { PancakeSwapConfig } from '../../connectors/pancakeswap/pancakeswap.config'; +import { SushiswapConfig } from '../../connectors/sushiswap/sushiswap.config'; +import { ConfigManagerV2 } from '../../services/config-manager-v2'; + +export class BinanceSmartChain extends EthereumBase implements Ethereumish { + private static _instances: { [name: string]: BinanceSmartChain }; + private _chain: string; + private _gasPrice: number; + private _gasPriceRefreshInterval: number | null; + private _nativeTokenSymbol: string; + + private constructor(network: string) { + const config = getBinanceSmartChainConfig('binance-smart-chain', network); + super( + 'binance-smart-chain', + config.network.chainID, + config.network.nodeURL, + config.network.tokenListSource, + config.network.tokenListType, + config.manualGasPrice, + config.gasLimitTransaction, + ConfigManagerV2.getInstance().get('database.nonceDbPath'), + ConfigManagerV2.getInstance().get('database.transactionDbPath') + ); + this._chain = config.network.name; + this._nativeTokenSymbol = config.nativeCurrencySymbol; + this._gasPrice = config.manualGasPrice; + this._gasPriceRefreshInterval = + config.network.gasPriceRefreshInterval !== undefined + ? config.network.gasPriceRefreshInterval + : null; + + this.updateGasPrice(); + } + + public static getInstance(network: string): BinanceSmartChain { + if (BinanceSmartChain._instances === undefined) { + BinanceSmartChain._instances = {}; + } + if (!(network in BinanceSmartChain._instances)) { + BinanceSmartChain._instances[network] = new BinanceSmartChain(network); + } + + return BinanceSmartChain._instances[network]; + } + + public static getConnectedInstances(): { [name: string]: BinanceSmartChain } { + return BinanceSmartChain._instances; + } + + /** + * Automatically update the prevailing gas price on the network from the connected RPC node. + */ + async updateGasPrice(): Promise { + if (this._gasPriceRefreshInterval === null) { + return; + } + + const gasPrice: number = (await this.provider.getGasPrice()).toNumber(); + + this._gasPrice = gasPrice * 1e-9; + + setTimeout( + this.updateGasPrice.bind(this), + this._gasPriceRefreshInterval * 1000 + ); + } + + // getters + + public get gasPrice(): number { + return this._gasPrice; + } + + public get nativeTokenSymbol(): string { + return this._nativeTokenSymbol; + } + + public get chain(): string { + return this._chain; + } + + getContract(tokenAddress: string, signerOrProvider?: Wallet | Provider) { + return new Contract(tokenAddress, abi.ERC20Abi, signerOrProvider); + } + + getSpender(reqSpender: string): string { + let spender: string; + if (reqSpender === 'pancakeswap') { + spender = PancakeSwapConfig.config.routerAddress(this._chain); + } else if (reqSpender === 'sushiswap') { + spender = SushiswapConfig.config.sushiswapRouterAddress( + this.chainName, + this._chain + ); + } else { + spender = reqSpender; + } + return spender; + } + + // cancel transaction + async cancelTx(wallet: Wallet, nonce: number): Promise { + logger.info( + 'Canceling any existing transaction(s) with nonce number ' + nonce + '.' + ); + return super.cancelTxWithGasPrice(wallet, nonce, this._gasPrice * 2); + } +} diff --git a/src/chains/cosmos/cosmos-middlewares.ts b/src/chains/cosmos/cosmos-middlewares.ts new file mode 100644 index 0000000000..f252de081b --- /dev/null +++ b/src/chains/cosmos/cosmos-middlewares.ts @@ -0,0 +1,15 @@ +import { Cosmos } from './cosmos'; +import { NextFunction, Request, Response } from 'express'; +import { CosmosConfig } from './cosmos.config'; + +export const verifyCosmosIsAvailable = async ( + _req: Request, + _res: Response, + next: NextFunction +) => { + const cosmos = Cosmos.getInstance(CosmosConfig.config.network.name); + if (!cosmos.ready()) { + await cosmos.init(); + } + return next(); +}; diff --git a/src/chains/cosmos/cosmos.config.ts b/src/chains/cosmos/cosmos.config.ts new file mode 100644 index 0000000000..9204ed1e29 --- /dev/null +++ b/src/chains/cosmos/cosmos.config.ts @@ -0,0 +1,39 @@ +import { TokenListType } from '../../services/base'; +import { ConfigManagerV2 } from '../../services/config-manager-v2'; +export interface NetworkConfig { + name: string; + rpcURL: string; + tokenListType: TokenListType; + tokenListSource: string; +} + +export interface Config { + network: NetworkConfig; + nativeCurrencySymbol: string; + manualGasPrice: number; +} + +export namespace CosmosConfig { + export const config: Config = getCosmosConfig('cosmos'); +} + +export function getCosmosConfig(chainName: string): Config { + const configManager = ConfigManagerV2.getInstance(); + const network = configManager.get(chainName + '.network'); + return { + network: { + name: network, + rpcURL: configManager.get(chainName + '.networks.' + network + '.rpcURL'), + tokenListType: configManager.get( + chainName + '.networks.' + network + '.tokenListType' + ), + tokenListSource: configManager.get( + chainName + '.networks.' + network + '.tokenListSource' + ), + }, + nativeCurrencySymbol: configManager.get( + chainName + '.nativeCurrencySymbol' + ), + manualGasPrice: configManager.get(chainName + '.manualGasPrice'), + }; +} diff --git a/src/chains/cosmos/cosmos.controllers.ts b/src/chains/cosmos/cosmos.controllers.ts new file mode 100644 index 0000000000..3444650d25 --- /dev/null +++ b/src/chains/cosmos/cosmos.controllers.ts @@ -0,0 +1,87 @@ +import { Cosmos } from './cosmos'; +import { + CosmosBalanceRequest, + CosmosBalanceResponse, + CosmosPollRequest, + CosmosPollResponse, +} from './cosmos.requests'; +import { latency, TokenValue, tokenValueToString } from '../../services/base'; +import { + HttpException, + TOKEN_NOT_SUPPORTED_ERROR_CODE, + TOKEN_NOT_SUPPORTED_ERROR_MESSAGE, +} from '../../services/error-handler'; + +const { decodeTxRaw } = require('@cosmjs/proto-signing'); + +export async function balances( + cosmosish: Cosmos, + req: CosmosBalanceRequest +): Promise { + const initTime = Date.now(); + + const wallet = await cosmosish.getWallet(req.address, 'cosmos'); + + const { tokenSymbols } = req; + + tokenSymbols.forEach((symbol: string) => { + const token = cosmosish.getTokenForSymbol(symbol); + + if (!token) { + throw new HttpException( + 500, + TOKEN_NOT_SUPPORTED_ERROR_MESSAGE + symbol, + TOKEN_NOT_SUPPORTED_ERROR_CODE + ); + } + }); + + const balances = await cosmosish.getBalances(wallet); + const filteredBalances = toCosmosBalances(balances, tokenSymbols); + + return { + network: cosmosish.chain, + timestamp: initTime, + latency: latency(initTime, Date.now()), + balances: filteredBalances, + }; +} + +export const toCosmosBalances = ( + balances: Record, + tokenSymbols: Array +): Record => { + const walletBalances: Record = {}; + + tokenSymbols.forEach((symbol) => { + let balance = '0.0'; + + if (balances[symbol]) { + balance = tokenValueToString(balances[symbol]); + } + + walletBalances[symbol] = balance; + }); + + return walletBalances; +}; + +export async function poll( + cosmos: Cosmos, + req: CosmosPollRequest +): Promise { + const initTime = Date.now(); + const transaction = await cosmos.getTransaction(req.txHash); + const currentBlock = await cosmos.getCurrentBlockNumber(); + + return { + network: cosmos.chain, + timestamp: initTime, + txHash: req.txHash, + currentBlock, + txBlock: transaction.height, + gasUsed: transaction.gasUsed, + gasWanted: transaction.gasWanted, + txData: decodeTxRaw(transaction.tx), + }; +} diff --git a/src/chains/cosmos/cosmos.requests.ts b/src/chains/cosmos/cosmos.requests.ts new file mode 100644 index 0000000000..3329dab41d --- /dev/null +++ b/src/chains/cosmos/cosmos.requests.ts @@ -0,0 +1,37 @@ +import { DecodedTxRaw } from '@cosmjs/proto-signing'; +export interface CosmosBalanceRequest { + address: string; // the user's Cosmos address as Bech32 + tokenSymbols: string[]; // a list of token symbol +} + +export interface CosmosBalanceResponse { + network: string; + timestamp: number; + latency: number; + balances: Record; +} + +export interface CosmosTokenRequest { + address: string; + token: string; +} + +export interface CosmosPollRequest { + txHash: string; +} + +export enum TransactionResponseStatusCode { + FAILED = -1, + CONFIRMED = 1, +} + +export interface CosmosPollResponse { + network: string; + timestamp: number; + txHash: string; + currentBlock: number; + txBlock: number; + gasUsed: number; + gasWanted: number; + txData: DecodedTxRaw | null; +} diff --git a/src/chains/cosmos/cosmos.routes.ts b/src/chains/cosmos/cosmos.routes.ts new file mode 100644 index 0000000000..9d1b514017 --- /dev/null +++ b/src/chains/cosmos/cosmos.routes.ts @@ -0,0 +1,74 @@ +/* eslint-disable @typescript-eslint/ban-types */ +import { NextFunction, Router, Request, Response } from 'express'; +import { verifyCosmosIsAvailable } from './cosmos-middlewares'; +import { asyncHandler } from '../../services/error-handler'; +import { Cosmos } from './cosmos'; +import { balances, poll } from './cosmos.controllers'; +import { + CosmosBalanceResponse, + CosmosBalanceRequest, + CosmosPollRequest, + CosmosPollResponse, +} from './cosmos.requests'; +import { + validateCosmosBalanceRequest, + validateCosmosPollRequest, +} from './cosmos.validators'; + +export namespace CosmosRoutes { + export const router = Router(); + export const getCosmos = async (request: Request) => { + const cosmos = await Cosmos.getInstance(request.body.network); + await cosmos.init(); + + return cosmos; + }; + + router.use(asyncHandler(verifyCosmosIsAvailable)); + + router.get( + '/', + asyncHandler(async (_req: Request, res: Response) => { + const { rpcUrl, chain } = await getCosmos(_req); + + res.status(200).json({ + network: chain, + rpcUrl: rpcUrl, + connection: true, + timestamp: Date.now(), + }); + }) + ); + + // Get balance for wallet + router.post( + '/balances', + asyncHandler( + async ( + req: Request<{}, {}, CosmosBalanceRequest>, + res: Response, + _next: NextFunction + ) => { + const cosmos = await getCosmos(req); + validateCosmosBalanceRequest(req.body); + res.status(200).json(await balances(cosmos, req.body)); + } + ) + ); + + // Gets status information about given transaction hash + router.post( + '/poll', + asyncHandler( + async ( + req: Request<{}, {}, CosmosPollRequest>, + res: Response + ) => { + const cosmos = await getCosmos(req); + + validateCosmosPollRequest(req.body); + res.status(200).json(await poll(cosmos, req.body)); + } + ) + ); +} diff --git a/src/chains/cosmos/cosmos.ts b/src/chains/cosmos/cosmos.ts new file mode 100644 index 0000000000..3954130892 --- /dev/null +++ b/src/chains/cosmos/cosmos.ts @@ -0,0 +1,87 @@ +import { Cosmosish } from '../../services/common-interfaces'; +import { CosmosBase } from '../../services/cosmos-base'; +import { getCosmosConfig } from './cosmos.config'; +import { logger } from '../../services/logger'; + +export class Cosmos extends CosmosBase implements Cosmosish { + private static _instances: { [name: string]: Cosmos }; + private _gasPrice: number; + private _nativeTokenSymbol: string; + private _chain: string; + private _requestCount: number; + private _metricsLogInterval: number; + + private constructor(network: string) { + const config = getCosmosConfig('cosmos'); + super( + 'cosmos', + config.network.rpcURL, + config.network.tokenListSource, + config.network.tokenListType, + config.manualGasPrice + ); + this._chain = network; + this._nativeTokenSymbol = config.nativeCurrencySymbol; + + this._gasPrice = config.manualGasPrice; + + this._requestCount = 0; + this._metricsLogInterval = 300000; // 5 minutes + + setInterval(this.metricLogger.bind(this), this.metricsLogInterval); + } + + public static getInstance(network: string): Cosmos { + if (Cosmos._instances === undefined) { + Cosmos._instances = {}; + } + if (!(network in Cosmos._instances)) { + Cosmos._instances[network] = new Cosmos(network); + } + return Cosmos._instances[network]; + } + + public static getConnectedInstances(): { [name: string]: Cosmos } { + return Cosmos._instances; + } + + public requestCounter(msg: any): void { + if (msg.action === 'request') this._requestCount += 1; + } + + public metricLogger(): void { + logger.info( + this.requestCount + + ' request(s) sent in last ' + + this.metricsLogInterval / 1000 + + ' seconds.' + ); + this._requestCount = 0; // reset + } + + public get gasPrice(): number { + return this._gasPrice; + } + + public get chain(): string { + return this._chain; + } + + public get nativeTokenSymbol(): string { + return this._nativeTokenSymbol; + } + + public get requestCount(): number { + return this._requestCount; + } + + public get metricsLogInterval(): number { + return this._metricsLogInterval; + } + + async close() { + if (this._chain in Cosmos._instances) { + delete Cosmos._instances[this._chain]; + } + } +} diff --git a/src/chains/cosmos/cosmos.validators.ts b/src/chains/cosmos/cosmos.validators.ts new file mode 100644 index 0000000000..c913931ffd --- /dev/null +++ b/src/chains/cosmos/cosmos.validators.ts @@ -0,0 +1,36 @@ +import { + validateTokenSymbols, + mkValidator, + mkRequestValidator, + RequestValidator, + Validator, + validateTxHash, +} from '../../services/validators'; +import { normalizeBech32 } from '@cosmjs/encoding'; + +export const invalidCosmosAddressError: string = + 'The spender param is not a valid Cosmos address. (Bech32 format)'; + +export const isValidCosmosAddress = (str: string): boolean => { + try { + normalizeBech32(str); + + return true; + } catch (e) { + return false; + } +}; + +// given a request, look for a key called address that is a Cosmos address +export const validatePublicKey: Validator = mkValidator( + 'address', + invalidCosmosAddressError, + (val) => typeof val === 'string' && isValidCosmosAddress(val) +); + +export const validateCosmosBalanceRequest: RequestValidator = + mkRequestValidator([validatePublicKey, validateTokenSymbols]); + +export const validateCosmosPollRequest: RequestValidator = mkRequestValidator([ + validateTxHash, +]); diff --git a/src/chains/cronos/cronos.ts b/src/chains/cronos/cronos.ts new file mode 100755 index 0000000000..9b2ae7eee9 --- /dev/null +++ b/src/chains/cronos/cronos.ts @@ -0,0 +1,114 @@ +import abi from '../../services/ethereum.abi.json'; +import { logger } from '../../services/logger'; +import { Contract, Transaction, Wallet } from 'ethers'; +import { EthereumBase } from '../../services/ethereum-base'; +import { getEthereumConfig as getCronosConfig } from '../ethereum/ethereum.config'; +import { Provider } from '@ethersproject/abstract-provider'; +import { Ethereumish } from '../../services/common-interfaces'; +import { MadMeerkatConfig } from '../../connectors/mad_meerkat/mad_meerkat.config'; +import { VVSConfig } from '../../connectors/vvs/vvs.config'; +import { ConfigManagerV2 } from '../../services/config-manager-v2'; + +export class Cronos extends EthereumBase implements Ethereumish { + private static _instances: { [name: string]: Cronos }; + private _gasPrice: number; + private _gasPriceRefreshInterval: number | null; + private _nativeTokenSymbol: string; + private _chain: string; + + private constructor(network: string) { + const config = getCronosConfig('cronos', network); + super( + 'cronos', + config.network.chainID, + config.network.nodeURL, + config.network.tokenListSource, + config.network.tokenListType, + config.manualGasPrice, + config.gasLimitTransaction, + ConfigManagerV2.getInstance().get('database.nonceDbPath'), + ConfigManagerV2.getInstance().get('database.transactionDbPath') + ); + this._chain = config.network.name; + this._nativeTokenSymbol = config.nativeCurrencySymbol; + this._gasPrice = config.manualGasPrice; + + this._gasPriceRefreshInterval = + config.network.gasPriceRefreshInterval !== undefined + ? config.network.gasPriceRefreshInterval + : null; + + this.updateGasPrice(); + } + + public static getInstance(network: string): Cronos { + if (Cronos._instances === undefined) { + Cronos._instances = {}; + } + if (!(network in Cronos._instances)) { + Cronos._instances[network] = new Cronos(network); + } + + return Cronos._instances[network]; + } + + public static getConnectedInstances(): { [name: string]: Cronos } { + return Cronos._instances; + } + + /** + * Automatically update the prevailing gas price on the network from the connected RPC node. + */ + async updateGasPrice(): Promise { + if (this._gasPriceRefreshInterval === null) { + return; + } + + const gasPrice: number = (await this.provider.getGasPrice()).toNumber(); + + this._gasPrice = gasPrice * 1e-9; + + setTimeout( + this.updateGasPrice.bind(this), + this._gasPriceRefreshInterval * 1000 + ); + } + + // getters + + public get gasPrice(): number { + return this._gasPrice; + } + + public get nativeTokenSymbol(): string { + return this._nativeTokenSymbol; + } + + public get chain(): string { + return this._chain; + } + + getContract(tokenAddress: string, signerOrProvider?: Wallet | Provider) { + return new Contract(tokenAddress, abi.ERC20Abi, signerOrProvider); + } + + getSpender(reqSpender: string): string { + let spender: string; + if (reqSpender === 'mad_meerkat') { + spender = MadMeerkatConfig.config.routerAddress(this._chain); + } else if (reqSpender == 'vvs') { + spender = VVSConfig.config.routerAddress(this._chain); + } else { + spender = reqSpender; + } + return spender; + } + + // cancel transaction + async cancelTx(wallet: Wallet, nonce: number): Promise { + logger.info( + 'Canceling any existing transaction(s) with nonce number ' + nonce + '.' + ); + return super.cancelTxWithGasPrice(wallet, nonce, this._gasPrice * 2); + } +} diff --git a/src/chains/cronos/mainnet_beta.json b/src/chains/cronos/mainnet_beta.json new file mode 100755 index 0000000000..6b74571ba5 --- /dev/null +++ b/src/chains/cronos/mainnet_beta.json @@ -0,0 +1,720 @@ +{ + "name": "Cronos Mainnet Beta Token List", + "URI": "https://github.com/crypto-org-chain/cronos-docs/blob/gitbook/for-dapp-developers/cronos-smart-contract/token-contract-addresses.md", + "tokens": [ + { + "name": "", + "symbol": "WCRO", + "address": "0x5C7F8A570d578ED84E63fdFA7b1eE72dEae1AE23", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "WETH", + "address": "0xe44Fd7fCb2b1581822D0c862B68222998a0c299a", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "WBTC", + "address": "0x062E66477Faf219F25D27dCED647BF57C3107d52", + "decimals": 8, + "chainId": 25 + }, + { + "name": "", + "symbol": "USDC", + "address": "0xc21223249CA28397B4B6541dfFaEcC539BfF0c59", + "decimals": 6, + "chainId": 25 + }, + { + "name": "", + "symbol": "USDT", + "address": "0x66e428c3f67a68878562e79A0234c1F83c208770", + "decimals": 6, + "chainId": 25 + }, + { + "name": "", + "symbol": "DAI", + "address": "0xF2001B145b43032AAF5Ee2884e456CCd805F677D", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "SHIB", + "address": "0xbED48612BC69fA1CaB67052b42a95FB30C1bcFee", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "DOGE", + "address": "0x1a8E39ae59e5556B56b76fCBA98d22c9ae557396", + "decimals": 8, + "chainId": 25 + }, + { + "name": "", + "symbol": "ATOM", + "address": "0xB888d8Dd1733d72681b30c00ee76BDE93ae7aa93", + "decimals": 6, + "chainId": 25 + }, + { + "name": "", + "symbol": "LINK", + "address": "0xBc6f24649CCd67eC42342AccdCECCB2eFA27c9d9", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "ENJ", + "address": "0x0A92ea8a197919aCb9BC26660Ed0D43D01ed26b7", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "ELON", + "address": "0x02DCcaf514C98451320a9365C5b46C61d3246ff3", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "TUSD", + "address": "0x87EFB3ec1576Dec8ED47e58B832bEdCd86eE186e", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "LUNC", + "address": "0x9278C8693e7328bef49804BacbFb63253565dffD", + "decimals": 6, + "chainId": 25 + }, + { + "name": "", + "symbol": "DOT", + "address": "0x994047FE66406CbD646cd85B990E11D7F5dB8fC7", + "decimals": 10, + "chainId": 25 + }, + { + "name": "", + "symbol": "ADA", + "address": "0x0e517979C2c1c1522ddB0c73905e0D39b3F990c0", + "decimals": 6, + "chainId": 25 + }, + { + "name": "", + "symbol": "RADAR", + "address": "0xa58e3AeAeA3292c3E260378e55E9684C59E7A27a", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "DERC", + "address": "0x98616a1427a1734DaEbA1E1894db48051244A065", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "PENDLE", + "address": "0x49c3bBB239f4FB44327073510f4bA72D207a81D6", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "TUSD", + "address": "0x87EFB3ec1576Dec8ED47e58B832bEdCd86eE186e", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "XLM", + "address": "0x747d6C858168B8cD6e537160320b5dE58FD3367C", + "decimals": 7, + "chainId": 25 + }, + { + "name": "", + "symbol": "EOS", + "address": "0xA37caA841072a305a0799718aFA16cd504C52118", + "decimals": 4, + "chainId": 25 + }, + { + "name": "", + "symbol": "QRDO", + "address": "0x70BB395F1A824D9a3F9D510C25e699cEaf603dEc", + "decimals": 8, + "chainId": 25 + }, + { + "name": "", + "symbol": "ALI", + "address": "0x45C135C1CDCE8d25A3B729A28659561385C52671", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "APE", + "address": "0x9C62F89a8C9907582f21205Ce90443730361EA05", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "MATIC", + "address": "0xf78a326ACd53651F8dF5D8b137295e434B7c8ba5", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "FTM", + "address": "0x63888BaFc5975630E4E5CF50c3845a3250115F64", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "AKT", + "address": "0x39a65A74Dc5A778Ff93d1765Ea51F57BC49c81B3", + "decimals": 6, + "chainId": 25 + }, + { + "name": "", + "symbol": "CRV", + "address": "0xfEf44a0C77eca218F443382d3128a7A251a8C542", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "ALICE", + "address": "0x46EfE38eC0558C48352e2eBc85AF3bd2E87Fb2A1", + "decimals": 6, + "chainId": 25 + }, + { + "name": "", + "symbol": "AXS", + "address": "0xE27753e456AbA584f10aCEf0B4e367EF38f01e14", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "GALA", + "address": "0x7A887D4f8a3221e1aaFA2f4435b774D51429A3e1", + "decimals": 8, + "chainId": 25 + }, + { + "name": "", + "symbol": "LTC", + "address": "0x9d97Be214b68C7051215BB61059B4e299Cd792c3", + "decimals": 8, + "chainId": 25 + }, + { + "name": "", + "symbol": "ICP", + "address": "0x8Bf3E654075E269c1C415e4889C12D9837452be0", + "decimals": 8, + "chainId": 25 + }, + { + "name": "", + "symbol": "SAND", + "address": "0x9097eA65B55dfC7383A7EFB465e8fFC18D46e784", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "BCH", + "address": "0x7589B70aBb83427bb7049e08ee9fC6479ccB7a23", + "decimals": 8, + "chainId": 25 + }, + { + "name": "", + "symbol": "ALGO", + "address": "0x2fEfe47989214c2e74A6319076c138d395681407", + "decimals": 6, + "chainId": 25 + }, + { + "name": "", + "symbol": "MANA", + "address": "0x6Ed8c99E5c6B2c551e012E4272d8f3d1DF23a71A", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "UNI", + "address": "0x16aD43896f7C47a5d9Ee546c44A22205738B329c", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "SOL", + "address": "0xc9DE0F3e08162312528FF72559db82590b481800", + "decimals": 9, + "chainId": 25 + }, + { + "name": "", + "symbol": "AVAX", + "address": "0x8d58088D4E8Ffe75A8b6357ba5ff17B93B912640", + "decimals": 9, + "chainId": 25 + }, + { + "name": "", + "symbol": "ZIL", + "address": "0xc70ed252E55d68A7020A754Fb92Fa5c68e3c199f", + "decimals": 12, + "chainId": 25 + }, + { + "name": "", + "symbol": "FLOW", + "address": "0x22EF9d73EA90E774CfB21fADDF84b37BD54FE7a6", + "decimals": 8, + "chainId": 25 + }, + { + "name": "", + "symbol": "IMX", + "address": "0x8f27dB0E597B67F33d5Fb58D5EEcD6A3CC780942", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "OMG", + "address": "0x5a56509C61ad80680caF5b3B980E6C88319eeE33", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "AAVE", + "address": "0xE657b115bc45c0786274c824f83e3e02CE809185", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "LRC", + "address": "0xAF760dE3201fEeD80FEeA59FB16A8360C8c4d1a2", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "DAR", + "address": "0x5893915Fe3d15e4004F7232c80036bFa92aCa564", + "decimals": 6, + "chainId": 25 + }, + { + "name": "", + "symbol": "GRT", + "address": "0x4c523222Cd0DE11616F7aD685f24145B9FaF7996", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "CHZ", + "address": "0x4E4F362170bFb88D3c9378FF7818d93fC2fbd257", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "INJ", + "address": "0x4E05F3C7ee6155e3add224470E1c4583D4F424A3", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "KNC", + "address": "0xd73EBf885C4157D3E88c6D87ad3b8018B4a32fEF", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "XTZ", + "address": "0x9D5a7d02D51Dc523197e62c2865907dbB53642Af", + "decimals": 6, + "chainId": 25 + }, + { + "name": "", + "symbol": "RUNE", + "address": "0x171C8AAA57D0107d0187f54Ccf4CC03406E76a4E", + "decimals": 8, + "chainId": 25 + }, + { + "name": "", + "symbol": "KSM", + "address": "0x0BD48A8A9565385649D9d7f1c945D1d0C4543E26", + "decimals": 12, + "chainId": 25 + }, + { + "name": "", + "symbol": "HNT", + "address": "0x61426C150207AbF8a215f3377a0819dDcA842aF3", + "decimals": 8, + "chainId": 25 + }, + { + "name": "", + "symbol": "YFI", + "address": "0x7bDF81a86f4AA8B442Ca05670Cbf296BB22Bc7bB", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "SUSHI", + "address": "0xdb3de0AAC8A39490932FA19c2e32F179368Ab840", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "QNT", + "address": "0x7d54F4E05f273a9317f723997612Ed64eF53C900", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "MKR", + "address": "0xab9Cf8C5A9B6Cf5215c82D088D37d04bB146704A", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "HOT", + "address": "0xc4010CfB5172D82A348bcBC8cD543733c1e9BF89", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "QTUM", + "address": "0x32529346958711B3beF92B96507C14821e50C9c8", + "decimals": 8, + "chainId": 25 + }, + { + "name": "", + "symbol": "CELR", + "address": "0xfA0235feF8644C107f7e531Fa9CFe0613Fbe8909", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "REN", + "address": "0x2b4eE166a125E01Aba019885932C944cEfED2932", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "BAT", + "address": "0x2F712E0a6f92e3f865EaEb86f07BAFc67974d26c", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "SRM", + "address": "0xB858e614779f148992949A3b15E6127dDA204ca4", + "decimals": 6, + "chainId": 25 + }, + { + "name": "", + "symbol": "DYDX", + "address": "0x4442C740cc5B47F032983106E66E3C9dC945676C", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "UMA", + "address": "0x33564807CC70c6422124d867B344D7b90bF21A76", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "CHR", + "address": "0xcdee9300A1527E0000b054320D371A9C8c4a8AF6", + "decimals": 6, + "chainId": 25 + }, + { + "name": "", + "symbol": "EFI", + "address": "0x47E16f9EE811d3651D979941325c545Da6385daF", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "STX", + "address": "0x30BBA7b57952E7028c47d5c6AB295D0Da7139eF9", + "decimals": 6, + "chainId": 25 + }, + { + "name": "", + "symbol": "ENS", + "address": "0xA0913e0D7A85954e89452e7Ccb8d1235db74C330", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "PLA", + "address": "0x044597363b0054986aE4289d25CD7D0D451766Fc", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "AGLD", + "address": "0xD3BB5C6961157eB4eb03658Dc5D4144808828168", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "SNX", + "address": "0x9Aa8F72dd2C06EAff0113bD0380255E1fbDAeaC4", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "SPELL", + "address": "0xB37e6457C17A370b2eAEb40849d20dcaEa5f7e92", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "XYO", + "address": "0x211153266F15F9314B214A7dd614d90f850a8D6a", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "HBAR", + "address": "0xe0C7226a58f54db71eDc6289Ba2dc80349B41974", + "decimals": 8, + "chainId": 25 + }, + { + "name": "", + "symbol": "AURORA", + "address": "0xB4f1D9A65816da7e112F11C9A2900b8C5beeD525", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "RNDR", + "address": "0xEaEA1a708DaB6f732E35F06588293204318ac48F", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "1INCH", + "address": "0xEea900FE18F77593C7D7C105fBa9bd714164AC95", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "JASMY", + "address": "0x227EdF65f866255A0ED4B5b453fe43A41182EC3A", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "COMP", + "address": "0x4Fb1af9D09DB3fbbda96071EaE0aeae6E871F9AC", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "ANKR", + "address": "0x1FE0f470736548794b47AFe5613d3A309d964d3c", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "YGG", + "address": "0xfF9620d9F80F80056cbE4Bb84403a9E9C5174213", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "PAXG", + "address": "0x81749e7258f9e577f61f49ABeeB426b70F561b89", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "OGN", + "address": "0x78E9974A74d6c980De4E3F8039248320c5A2d714", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "AR ", + "address": "0xeB6B3AEdA7A2705fAC5e2350fA4D71a64b393b37", + "decimals": 12, + "chainId": 25 + }, + { + "name": "", + "symbol": "GLMR", + "address": "0x268B344bF8bbCd9Dd4e4FA68264309B05F15820a", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "ACA", + "address": "0x213E6fb02009c13692bAA23C63FdE8D623d22705", + "decimals": 12, + "chainId": 25 + }, + { + "name": "", + "symbol": "SPS", + "address": "0x1B554fda68bA95924E5bbD0BaF8e769F039e775B", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "CKB", + "address": "0x5dEED46f39c485bA03b61d83763d0f6357dc4737", + "decimals": 8, + "chainId": 25 + }, + { + "name": "", + "symbol": "VOXEL", + "address": "0x5fdbFE38E050829374001630B8710BDd05Ea55C0", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "MMF", + "address": "0x97749c9B61F878a880DfE312d2594AE07AEd7656", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "KRL", + "address": "0x62E622fa4E180C391f2E089FC1d5eA7AdCB96575", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "3MM", + "address": "0x74759c8BCb6787ef25eD2ff432FE33ED57CcCB0D", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "MUSD", + "address": "0x95aEaF383E2e86A47c11CffdE1F7944eCB2C38C2", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "VVS", + "address": "0x2D03bECE6747ADC00E1a131BBA1469C15fD11e03", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "BIFI", + "address": "0xe6801928061CDbE32AC5AD0634427E140EFd05F9", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "TONIC", + "address": "0xdd73dea10abc2bff99c60882ec5b2b81bb1dc5b2", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "SINGLE", + "address": "0x0804702a4e749d39a35fde73d1df0b1f1d6b8347", + "decimals": 18, + "chainId": 25 + }, + { + "name": "", + "symbol": "LUNA", + "address": "0x9278C8693e7328bef49804BacbFb63253565dffD", + "decimals": 18, + "chainId": 25 + } + ] +} diff --git a/src/chains/cronos/testnet.json b/src/chains/cronos/testnet.json new file mode 100755 index 0000000000..0305774907 --- /dev/null +++ b/src/chains/cronos/testnet.json @@ -0,0 +1,48 @@ +{ + "name": "Cronos Testnet Beta Token List", + "URI": "https://github.com/crypto-org-chain/cronos-docs/blob/gitbook/for-dapp-developers/cronos-smart-contract/token-contract-addresses.md", + "tokens": [ + { + "name": "", + "symbol": "WCRO", + "address": "0x6a3173618859C7cd40fAF6921b5E9eB6A76f1fD4", + "decimals": 18, + "chainId": 338 + }, + { + "name": "", + "symbol": "WETH", + "address": "0x796135E94527c38433e9c42f4Cd91ca931E5e6A6", + "decimals": 18, + "chainId": 338 + }, + { + "name": "", + "symbol": "WBTC", + "address": "0xEE200f25d7B1B9518AC944fd60b113d39bee209c", + "decimals": 8, + "chainId": 338 + }, + { + "name": "", + "symbol": "USDC", + "address": "0x25f0965F285F03d6F6B3B21c8EC3367412Fd0ef6", + "decimals": 6, + "chainId": 338 + }, + { + "name": "", + "symbol": "USDT", + "address": "0xa144617Afd9205AF1ceDE3Cc671da1a409A82c5a", + "decimals": 6, + "chainId": 338 + }, + { + "name": "", + "symbol": "DAI", + "address": "0x8662A8111daEC7570a1bDF3dbd3E163d41563904", + "decimals": 18, + "chainId": 338 + } + ] +} diff --git a/src/chains/ethereum/arbitrum_one_tokens.json b/src/chains/ethereum/arbitrum_one_tokens.json new file mode 100644 index 0000000000..e8031c1cdd --- /dev/null +++ b/src/chains/ethereum/arbitrum_one_tokens.json @@ -0,0 +1,2798 @@ +{ + "name": "Arb Whitelist Era", + "timestamp": "2022-03-01T22:44:18.339Z", + "version": { + "major": 4, + "minor": 2, + "patch": 1 + }, + "tokens": [ + { + "logoURI": "https://assets.coingecko.com/coins/images/4454/thumb/0xbtc.png?1561603765", + "chainId": 42161, + "address": "0x7cb16cb78ea464aD35c8a50ABF95dff3c9e09d5d", + "name": "0xBitcoin Token", + "symbol": "0xBTC", + "decimals": 8, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0xb6ed7644c69416d67b522e20bc294a9a9b405b31", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0xb6ed7644c69416d67b522e20bc294a9a9b405b31", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "chainId": 42161, + "address": "0x03b95f1C84Af0607afd5dD87ca1FDE7572aa827F", + "name": "Agave", + "symbol": "AGVE", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x0b006e475620af076915257c6a9e40635abdbbad", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x0b006e475620af076915257c6a9e40635abdbbad", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://assets.coingecko.com/coins/images/14719/thumb/sbEW5W8.png?1617939648", + "chainId": 42161, + "address": "0x0e15258734300290a651FdBAe8dEb039a8E7a2FA", + "name": "Alchemy", + "symbol": "ALCH", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x0000a1c00009a619684135b824ba02f7fbf3a572", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x0000a1c00009a619684135b824ba02f7fbf3a572", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://assets.coingecko.com/coins/images/14379/thumb/uaLoLU8c_400x400_%281%29.png?1627873106", + "chainId": 42161, + "address": "0x9b3fa2A7C3EB36d048A5d38d81E7fAFC6bc47B25", + "name": "Aluna", + "symbol": "ALN", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x8185bc4757572da2a610f887561c32298f1a5748", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x8185bc4757572da2a610f887561c32298f1a5748", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://assets.coingecko.com/coins/images/2165/thumb/Auc_Discord_Avatar1.png?1618983355", + "chainId": 42161, + "address": "0xea986d33eF8a20A96120ecc44dBdD49830192043", + "name": "Auctus Token", + "symbol": "AUC", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0xc12d099be31567add4e4e4d0d45691c3f58f5663", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0xc12d099be31567add4e4e4d0d45691c3f58f5663", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://assets.coingecko.com/coins/images/13246/thumb/BAC.png?1613231642", + "chainId": 42161, + "address": "0x6F67043201C903bbCBC129750CB3b328Dd56a0a5", + "name": "BAC", + "symbol": "BAC", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x3449fc1cd036255ba1eb19d65ff4ba2b8903a69a", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x3449fc1cd036255ba1eb19d65ff4ba2b8903a69a", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://etherscan.io/token/images/badger_32.png", + "chainId": 42161, + "address": "0xBfa641051Ba0a0Ad1b0AcF549a89536A0D76472E", + "name": "Badger", + "symbol": "BADGER", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x3472a5a71965499acd81997a54bba8d852c6e53d", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x3472a5a71965499acd81997a54bba8d852c6e53d", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://cryptologos.cc/logos/balancer-bal-logo.png", + "chainId": 42161, + "address": "0x040d1EdC9569d4Bab2D15287Dc5A4F10F56a56B8", + "name": "Balancer", + "symbol": "BAL", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0xba100000625a3754423978a60c9317c58a424e3d", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0xba100000625a3754423978a60c9317c58a424e3d", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "chainId": 42161, + "address": "0xBbFbde08Bf1BE235a3Fa97d6A27fFfA19Ac4a8a8", + "name": "BarkCoin", + "symbol": "BARK", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x5bd7ef7113a32b56127ac32272609c42c97849ff", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x5bd7ef7113a32b56127ac32272609c42c97849ff", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://etherscan.io/token/images/blanktoken_32.png", + "chainId": 42161, + "address": "0xA5eC9d64b64b8B9E94FEaA7538c084b38117E7Ba", + "name": "GoBlank Token", + "symbol": "BLANK", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x41a3dba3d677e573636ba691a70ff2d606c29666", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x41a3dba3d677e573636ba691a70ff2d606c29666", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://cryptologos.cc/logos/barnbridge-bond-logo.png", + "chainId": 42161, + "address": "0x0D81E50bC677fa67341c44D7eaA9228DEE64A4e1", + "name": "BarnBridge Governance Token", + "symbol": "BOND", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x0391d2021f89dc339f60fff84546ea23e337750f", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x0391d2021f89dc339f60fff84546ea23e337750f", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://etherscan.io/token/images/boostcoin_32.png", + "chainId": 42161, + "address": "0xd44e8F8768D4ed25119921a53802D8758A5b20dD", + "name": "Boost", + "symbol": "BOOST", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x4e0fca55a6c3a94720ded91153a27f60e26b9aa8", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x4e0fca55a6c3a94720ded91153a27f60e26b9aa8", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://etherscan.io/token/images/btu_32.png", + "chainId": 42161, + "address": "0xBA9a5Dd807c9F072850bE15a52dF3408BA25Fd18", + "name": "BTU Protocol", + "symbol": "BTU", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0xb683d83a532e2cb7dfa5275eed3698436371cc9f", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0xb683d83a532e2cb7dfa5275eed3698436371cc9f", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://assets.coingecko.com/coins/images/11775/thumb/CAP.png?1594083244", + "chainId": 42161, + "address": "0x031d35296154279DC1984dCD93E392b1f946737b", + "name": "Cap", + "symbol": "CAP", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x43044f861ec040db59a7e324c40507addb673142", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x43044f861ec040db59a7e324c40507addb673142", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://assets.coingecko.com/coins/images/4379/thumb/Celr.png?1554705437", + "chainId": 42161, + "address": "0x3a8B787f78D775AECFEEa15706D4221B40F345AB", + "name": "CelerToken", + "symbol": "CELR", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x4f9254c83eb525f9fcf346490bbb3ed28a81c667", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x4f9254c83eb525f9fcf346490bbb3ed28a81c667", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://etherscan.io/token/images/cryptionnetwork_32.png", + "chainId": 42161, + "address": "0x989D099d29F62b839C8CbD41c82c6554a5515752", + "name": "Cryption Network Token", + "symbol": "CNT", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x429876c4a6f89fb470e92456b8313879df98b63c", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x429876c4a6f89fb470e92456b8313879df98b63c", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://assets.coingecko.com/coins/images/10775/thumb/COMP.png?1592625425", + "chainId": 42161, + "address": "0x354A6dA3fcde098F8389cad84b0182725c6C91dE", + "name": "Compound", + "symbol": "COMP", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0xc00e94cb662c3520282e6f5717214004a7f26888", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0xc00e94cb662c3520282e6f5717214004a7f26888", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://cryptologos.cc/logos/coti-coti-logo.png", + "chainId": 42161, + "address": "0x6FE14d3CC2f7bDdffBa5CdB3BBE7467dd81ea101", + "name": "COTI Token", + "symbol": "COTI", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0xddb3422497e61e13543bea06989c0789117555c5", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0xddb3422497e61e13543bea06989c0789117555c5", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://cryptologos.cc/logos/cream-finance-cream-logo.png", + "chainId": 42161, + "address": "0xf4D48Ce3ee1Ac3651998971541bAdbb9A14D7234", + "name": "Cream", + "symbol": "CREAM", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x2ba592f78db6436527729929aaf6c908497cb200", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x2ba592f78db6436527729929aaf6c908497cb200", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://cryptologos.cc/logos/curve-dao-token-crv-logo.png", + "chainId": 42161, + "address": "0x11cDb42B0EB46D95f990BeDD4695A6e3fA034978", + "name": "Curve DAO Token", + "symbol": "CRV", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0xd533a949740bb3306d119cc777fa900ba034cd52", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0xd533a949740bb3306d119cc777fa900ba034cd52", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://assets.coingecko.com/coins/images/9956/thumb/4943.png?1636636734", + "chainId": 42161, + "address": "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1", + "name": "Dai Stablecoin", + "symbol": "DAI", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x6b175474e89094c44da98b954eedeac495271d0f", + "originBridgeAddress": "0x467194771dae2967aef3ecbedd3bf9a310c76c65", + "destBridgeAddress": "0xd3b5b60020504bc3489d6949d545893982ba3011" + } + }, + "l1Address": "0x6b175474e89094c44da98b954eedeac495271d0f", + "l2GatewayAddress": "0x467194771dae2967aef3ecbedd3bf9a310c76c65", + "l1GatewayAddress": "0xd3b5b60020504bc3489d6949d545893982ba3011" + } + }, + { + "logoURI": "https://assets.coingecko.com/coins/images/13691/thumb/thGDKHo.png?1610959947", + "chainId": 42161, + "address": "0xdeBa25AF35e4097146d7629055E0EC3C71706324", + "name": "DEFI Top 5 Tokens Index", + "symbol": "DEFI5", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0xfa6de2697d59e88ed7fc4dfe5a33dac43565ea41", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0xfa6de2697d59e88ed7fc4dfe5a33dac43565ea41", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://assets.coingecko.com/coins/images/14143/thumb/alpha_logo.png?1614651244", + "chainId": 42161, + "address": "0xAE6e3540E97b0b9EA8797B157B510e133afb6282", + "name": "DEGEN Index", + "symbol": "DEGEN", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x126c121f99e1e211df2e5f8de2d96fa36647c855", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x126c121f99e1e211df2e5f8de2d96fa36647c855", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://assets.coingecko.com/coins/images/9709/thumb/xlGxxIjI_400x400.jpg?1571006794", + "chainId": 42161, + "address": "0xaE6aab43C4f3E0cea4Ab83752C278f8dEbabA689", + "name": "dForce", + "symbol": "DF", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x431ad2ff6a9c365805ebad47ee021148d6f7dbe0", + "originBridgeAddress": "0x096760f208390250649e3e8763348e783aef5562", + "destBridgeAddress": "0xcEe284F754E854890e311e3280b767F80797180d" + } + }, + "l1Address": "0x431ad2ff6a9c365805ebad47ee021148d6f7dbe0", + "l2GatewayAddress": "0x096760f208390250649e3e8763348e783aef5562", + "l1GatewayAddress": "0xcEe284F754E854890e311e3280b767F80797180d" + } + }, + { + "logoURI": "https://etherscan.io/token/images/dfynnetwork_32.png", + "chainId": 42161, + "address": "0x1D54Aa7E322e02A0453c0F2fA21505cE7F2E9E93", + "name": "DFYN Token", + "symbol": "DFYN", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x9695e0114e12c0d3a3636fab5a18e6b737529023", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x9695e0114e12c0d3a3636fab5a18e6b737529023", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://etherscan.io/token/images/dHedge_32.png", + "chainId": 42161, + "address": "0x8038F3C971414FD1FC220bA727F2D4A0fC98cb65", + "name": "dHedge DAO Token", + "symbol": "DHT", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0xca1207647ff814039530d7d35df0e1dd2e91fa84", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0xca1207647ff814039530d7d35df0e1dd2e91fa84", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://etherscan.io/token/images/dodo_32.png", + "chainId": 42161, + "address": "0x69Eb4FA4a2fbd498C257C57Ea8b7655a2559A581", + "name": "DODO bird", + "symbol": "DODO", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x43dfc4159d86f3a37a5a4b3d4580b888ad7d4ddd", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x43dfc4159d86f3a37a5a4b3d4580b888ad7d4ddd", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://etherscan.io/token/images/thedogenft_32.png", + "chainId": 42161, + "address": "0x4425742F1EC8D98779690b5A3A6276Db85Ddc01A", + "name": "The Doge NFT", + "symbol": "DOG", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0xbaac2b4491727d78d2b78815144570b9f2fe8899", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0xbaac2b4491727d78d2b78815144570b9f2fe8899", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://etherscan.io/token/images/dopexgovernance_32.png", + "chainId": 42161, + "address": "0x6C2C06790b3E3E3c38e12Ee22F8183b37a13EE55", + "name": "Dopex Governance Token", + "symbol": "DPX", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0xeec2be5c91ae7f8a338e1e5f3b5de49d07afdc81", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0xeec2be5c91ae7f8a338e1e5f3b5de49d07afdc81", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://assets.coingecko.com/coins/images/17482/thumb/photo_2021-08-03_09-24-16.png?1627953917", + "chainId": 42161, + "address": "0xE212f5E733257ed5628a2FeBcEdBc9222e535F51", + "name": "Digital Standard Unit", + "symbol": "DSU", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x605d26fbd5be761089281d5cec2ce86eea667109", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x605d26fbd5be761089281d5cec2ce86eea667109", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://etherscan.io/token/images/dvf_32.png", + "chainId": 42161, + "address": "0xA7Aa2921618e3D63dA433829d448b58C9445A4c3", + "name": "DeversiFi Token", + "symbol": "DVF", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0xdddddd4301a082e62e84e43f474f044423921918", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0xdddddd4301a082e62e84e43f474f044423921918", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://assets.coingecko.com/coins/images/11148/thumb/dxdao.png?1607999331", + "chainId": 42161, + "address": "0xC3Ae0333F0F34aa734D5493276223d95B8F9Cb37", + "name": "DXdao", + "symbol": "DXD", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0xa1d65e8fb6e87b60feccbc582f7f97804b725521", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0xa1d65e8fb6e87b60feccbc582f7f97804b725521", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://assets.coingecko.com/coins/images/17481/thumb/photo_2021-08-03_03-26-29.png?1627953584", + "chainId": 42161, + "address": "0xCE32aA8d60807182c0003Ef9cc1976Fa10E5d312", + "name": "Empty Set Share", + "symbol": "ESS", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x24ae124c4cc33d6791f8e8b63520ed7107ac8b3e", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x24ae124c4cc33d6791f8e8b63520ed7107ac8b3e", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://etherscan.io/token/images/dforceeur_32.png", + "chainId": 42161, + "address": "0x969131D8ddC06C2Be11a13e6E7fACF22CF57d95e", + "name": "dForce EUR", + "symbol": "EUX", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0xb986f3a2d91d3704dc974a24fb735dcc5e3c1e70", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0xb986f3a2d91d3704dc974a24fb735dcc5e3c1e70", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://assets.coingecko.com/coins/images/11756/thumb/fluxres.png?1593748917", + "chainId": 42161, + "address": "0xF80D589b3Dbe130c270a69F1a69D050f268786Df", + "name": "Flux", + "symbol": "FLUX", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x469eda64aed3a3ad6f868c44564291aa415cb1d9", + "originBridgeAddress": "0x096760f208390250649e3e8763348e783aef5562", + "destBridgeAddress": "0xcEe284F754E854890e311e3280b767F80797180d" + } + }, + "l1Address": "0x469eda64aed3a3ad6f868c44564291aa415cb1d9", + "l2GatewayAddress": "0x096760f208390250649e3e8763348e783aef5562", + "l1GatewayAddress": "0xcEe284F754E854890e311e3280b767F80797180d" + } + }, + { + "logoURI": "https://cryptologos.cc/logos/zel-flux-logo.png", + "chainId": 42161, + "address": "0x2338a5d62E9A766289934e8d2e83a443e8065b83", + "name": "Flux Protocol", + "symbol": "FLUX", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x7645ddfeeceda57e41f92679c4acd83c56a81d14", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x7645ddfeeceda57e41f92679c4acd83c56a81d14", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://assets.coingecko.com/coins/images/8242/thumb/for.png?1606195375", + "chainId": 42161, + "address": "0x3816e40c1eB106c8fb7c05f901cfD58C7292D051", + "name": "The Force Token", + "symbol": "FOR", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x1fcdce58959f536621d76f5b7ffb955baa5a672f", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x1fcdce58959f536621d76f5b7ffb955baa5a672f", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://etherscan.io/token/images/futureswap2_32.png", + "chainId": 42161, + "address": "0x488cc08935458403a0458e45E20c0159c8AB2c92", + "name": "Futureswap Token", + "symbol": "FST", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x0e192d382a36de7011f795acc4391cd302003606", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x0e192d382a36de7011f795acc4391cd302003606", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://assets.coingecko.com/coins/images/10347/thumb/vUXKHEe.png?1601523640", + "chainId": 42161, + "address": "0xBDeF0E9ef12E689F366fe494A7A7D0dad25D9286", + "name": "Fuse Token", + "symbol": "FUSE", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x970b9bb2c0444f5e81e9d0efb84c8ccdcdcaf84d", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x970b9bb2c0444f5e81e9d0efb84c8ccdcdcaf84d", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "chainId": 42161, + "address": "0xfc5A1A6EB076a2C7aD06eD22C90d7E710E35ad0a", + "name": "GMX", + "symbol": "GMX", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0xbc30049adc73de06d7a98a5189203aac66b2c830", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0xbc30049adc73de06d7a98a5189203aac66b2c830", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://assets.coingecko.com/coins/images/662/thumb/logo_square_simple_300px.png?1609402668", + "chainId": 42161, + "address": "0xa0b862F60edEf4452F25B4160F177db44DeB6Cf1", + "name": "Gnosis Token", + "symbol": "GNO", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x6810e776880c02933d47db1b9fc05908e5386b96", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x6810e776880c02933d47db1b9fc05908e5386b96", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://assets.coingecko.com/coins/images/13875/thumb/GOVI.png?1612451531", + "chainId": 42161, + "address": "0x07E49d5dE43DDA6162Fa28D24d5935C151875283", + "name": "GOVI", + "symbol": "GOVI", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0xeeaa40b28a2d1b0b08f6f97bb1dd4b75316c6107", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0xeeaa40b28a2d1b0b08f6f97bb1dd4b75316c6107", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "chainId": 42161, + "address": "0x9623063377AD1B27544C965cCd7342f7EA7e88C7", + "name": "Graph Token", + "symbol": "GRT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13397/thumb/Graph_Token.png?1608145566", + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0xc944e90c64b2c07662a292be6244bdf05cda44a7", + "originBridgeAddress": "0x65E1a5e8946e7E87d9774f5288f41c30a99fD302", + "destBridgeAddress": "0x01cdc91b0a9ba741903aa3699bf4ce31d6c5cc06" + } + }, + "l1Address": "0xc944e90c64b2c07662a292be6244bdf05cda44a7", + "l2GatewayAddress": "0x65E1a5e8946e7E87d9774f5288f41c30a99fD302", + "l1GatewayAddress": "0x01cdc91b0a9ba741903aa3699bf4ce31d6c5cc06" + } + }, + { + "logoURI": "https://etherscan.io/token/images/impermax_32.png", + "chainId": 42161, + "address": "0x9c67eE39e3C4954396b9142010653F17257dd39C", + "name": "Impermax", + "symbol": "IMX", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x7b35ce522cb72e4077baeb96cb923a5529764a00", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x7b35ce522cb72e4077baeb96cb923a5529764a00", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://assets.coingecko.com/coins/images/13177/thumb/kun_logo.png?1605923919", + "chainId": 42161, + "address": "0x04cb2d263a7489f02d813eaaB9Ba1bb8466347F2", + "name": "QIAN governance token", + "symbol": "KUN", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x65d9bc970aa9b2413027fa339f7f179b3f3f2604", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x65d9bc970aa9b2413027fa339f7f179b3f3f2604", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://etherscan.io/token/images/farmland_32.png", + "chainId": 42161, + "address": "0x3CD1833Ce959E087D0eF0Cb45ed06BffE60F23Ba", + "name": "Land", + "symbol": "LAND", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x3258cd8134b6b28e814772dd91d5ecceea512818", + "originBridgeAddress": "0x096760f208390250649e3e8763348e783aef5562", + "destBridgeAddress": "0xcEe284F754E854890e311e3280b767F80797180d" + } + }, + "l1Address": "0x3258cd8134b6b28e814772dd91d5ecceea512818", + "l2GatewayAddress": "0x096760f208390250649e3e8763348e783aef5562", + "l1GatewayAddress": "0xcEe284F754E854890e311e3280b767F80797180d" + } + }, + { + "logoURI": "https://assets.coingecko.com/coins/images/877/thumb/chainlink-new-logo.png?1547034700", + "chainId": 42161, + "address": "0xf97f4df75117a78c1A5a0DBb814Af92458539FB4", + "name": "ChainLink Token", + "symbol": "LINK", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x514910771af9ca656af840dff83e8264ecf986ca", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x514910771af9ca656af840dff83e8264ecf986ca", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://cryptologos.cc/logos/loopring-lrc-logo.png", + "chainId": 42161, + "address": "0x46d0cE7de6247b0A95f67b43B589b4041BaE7fbE", + "name": "LoopringCoin V2", + "symbol": "LRC", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0xbbbbca6a901c926f240b89eacb641d8aec7aeafd", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0xbbbbca6a901c926f240b89eacb641d8aec7aeafd", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://assets.coingecko.com/coins/images/18623/thumb/Magic.png?1635755672", + "chainId": 42161, + "address": "0x539bdE0d7Dbd336b79148AA742883198BBF60342", + "name": "MAGIC", + "symbol": "MAGIC", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0xb0c7a3ba49c7a6eaba6cd4a96c55a1391070ac9a", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0xb0c7a3ba49c7a6eaba6cd4a96c55a1391070ac9a", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "chainId": 42161, + "address": "0xAA086809EFA469631DD90D8C6cB267bAb107E958", + "name": "My Alpha Leaderboard", + "symbol": "MAL", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x6619078bdd8324e01e9a8d4b3d761b050e5ecf06", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x6619078bdd8324e01e9a8d4b3d761b050e5ecf06", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://assets.coingecko.com/coins/images/11335/thumb/2020-05-19-token-200.png?1589940590", + "chainId": 42161, + "address": "0x99F40b01BA9C469193B360f72740E416B17Ac332", + "name": "MATH Token", + "symbol": "MATH", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x08d967bb0134f2d07f7cfb6e246680c53927dd30", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x08d967bb0134f2d07f7cfb6e246680c53927dd30", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://etherscan.io/token/images/antimatter_32.png", + "chainId": 42161, + "address": "0xaaA62D9584Cbe8e4D68A43ec91BfF4fF1fAdB202", + "name": "Antimatter.Finance Governance Token", + "symbol": "MATTER", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x9b99cca871be05119b2012fd4474731dd653febe", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x9b99cca871be05119b2012fd4474731dd653febe", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://assets.coingecko.com/coins/images/11796/thumb/mcb.png?1594355515", + "chainId": 42161, + "address": "0x4e352cF164E64ADCBad318C3a1e222E9EBa4Ce42", + "name": "MCDEX Token", + "symbol": "MCB", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x4e352cf164e64adcbad318c3a1e222e9eba4ce42", + "originBridgeAddress": "0x096760f208390250649e3e8763348e783aef5562", + "destBridgeAddress": "0xcEe284F754E854890e311e3280b767F80797180d" + } + }, + "l1Address": "0x4e352cf164e64adcbad318c3a1e222e9eba4ce42", + "l2GatewayAddress": "0x096760f208390250649e3e8763348e783aef5562", + "l1GatewayAddress": "0xcEe284F754E854890e311e3280b767F80797180d" + } + }, + { + "logoURI": "https://cryptologos.cc/logos/maker-mkr-logo.png", + "chainId": 42161, + "address": "0x2e9a6Df78E42a30712c10a9Dc4b1C8656f8F2879", + "name": "Maker", + "symbol": "MKR", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://assets.coingecko.com/coins/images/11846/thumb/mStable.png?1594950533", + "chainId": 42161, + "address": "0x5298Ee77A8f9E226898403eBAC33e68a62F770A0", + "name": "Meta", + "symbol": "MTA", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0xa3bed4e1c75d00fa6f4e5e6922db7261b5e9acd2", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0xa3bed4e1c75d00fa6f4e5e6922db7261b5e9acd2", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://assets.coingecko.com/coins/images/13546/thumb/indexed-light.74bb5471.png?1609712728", + "chainId": 42161, + "address": "0xB965029343D55189c25a7f3e0c9394DC0F5D41b1", + "name": "Indexed", + "symbol": "NDX", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x86772b1409b61c639eaac9ba0acfbb6e238e5f83", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x86772b1409b61c639eaac9ba0acfbb6e238e5f83", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "chainId": 42161, + "address": "0xd67D9F7E018B4e7613b0251BBe3Ba3988Baf7C16", + "name": "New era", + "symbol": "NEC", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x1353a77abd236207d0588bcbbb52bc3087f85351", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x1353a77abd236207d0588bcbbb52bc3087f85351", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://etherscan.io/token/images/feistydoge_32.png", + "chainId": 42161, + "address": "0xc9c2B86CD4cdbAB70cd65D22EB044574c3539F6c", + "name": "Feisty Doge NFT", + "symbol": "NFD", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0xdfdb7f72c1f195c5951a234e8db9806eb0635346", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0xdfdb7f72c1f195c5951a234e8db9806eb0635346", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://assets.coingecko.com/coins/images/12594/thumb/octofi-256x256-radius-22percent.png?1610679969", + "chainId": 42161, + "address": "0x52f5d9B3a2bB89D3aEC5829A3415c21115aCD633", + "name": "Octo.fi", + "symbol": "OCTO", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x7240ac91f01233baaf8b064248e80feaa5912ba3", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x7240ac91f01233baaf8b064248e80feaa5912ba3", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://assets.coingecko.com/coins/images/14483/thumb/token_OHM_%281%29.png?1628311611", + "chainId": 42161, + "address": "0x6E6a3D8F1AfFAc703B1aEF1F43B8D2321bE40043", + "name": "Olympus", + "symbol": "OHM", + "decimals": 9, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x383518188c0c6d7730d91b2c03a03c837814a899", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x383518188c0c6d7730d91b2c03a03c837814a899", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://assets.coingecko.com/coins/images/13429/thumb/ovr_logo.png?1608518911", + "chainId": 42161, + "address": "0x55704A0e9E2eb59E176C5b69655DbD3DCDCFc0F0", + "name": "OVR", + "symbol": "OVR", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x21bfbda47a0b4b5b1248c767ee49f7caa9b23697", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x21bfbda47a0b4b5b1248c767ee49f7caa9b23697", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://assets.coingecko.com/coins/images/12381/thumb/60d18e06844a844ad75901a9_mark_only_03.png?1628674771", + "chainId": 42161, + "address": "0x753D224bCf9AAFaCD81558c32341416df61D3DAC", + "name": "Perpetual", + "symbol": "PERP", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0xbc396689893d065f41bc2c6ecbee5e0085233447", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0xbc396689893d065f41bc2c6ecbee5e0085233447", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://etherscan.io/token/images/pickle_32.png", + "chainId": 42161, + "address": "0x965772e0E9c84b6f359c8597C891108DcF1c5B1A", + "name": "PickleToken", + "symbol": "PICKLE", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x429881672b9ae42b8eba0e26cd9c73711b891ca5", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x429881672b9ae42b8eba0e26cd9c73711b891ca5", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "chainId": 42161, + "address": "0x3642c0680329ae3e103E2B5AB29DDfed4d43CBE5", + "name": "Plenny", + "symbol": "PL2", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x3642c0680329ae3e103e2b5ab29ddfed4d43cbe5", + "originBridgeAddress": "0x096760f208390250649e3e8763348e783aef5562", + "destBridgeAddress": "0xcEe284F754E854890e311e3280b767F80797180d" + } + }, + "l1Address": "0x3642c0680329ae3e103e2b5ab29ddfed4d43cbe5", + "l2GatewayAddress": "0x096760f208390250649e3e8763348e783aef5562", + "l1GatewayAddress": "0xcEe284F754E854890e311e3280b767F80797180d" + } + }, + { + "logoURI": "https://assets.coingecko.com/coins/images/13962/thumb/apple-touch-icon.png?1623679482", + "chainId": 42161, + "address": "0x51fC0f6660482Ea73330E414eFd7808811a57Fa2", + "name": "Premia", + "symbol": "PREMIA", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x6399c842dd2be3de30bf99bc7d1bbf6fa3650e70", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x6399c842dd2be3de30bf99bc7d1bbf6fa3650e70", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://etherscan.io/token/images/raireflexindex_32.png", + "chainId": 42161, + "address": "0xaeF5bbcbFa438519a5ea80B4c7181B4E78d419f2", + "name": "Rai Reflex Index", + "symbol": "RAI", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x03ab458634910aad20ef5f1c8ee96f1d6ac54919", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x03ab458634910aad20ef5f1c8ee96f1d6ac54919", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://etherscan.io/token/images/dopexrebate_32.png", + "chainId": 42161, + "address": "0x32Eb7902D4134bf98A28b963D26de779AF92A212", + "name": "Dopex Rebate Token", + "symbol": "RDPX", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x0ff5a8451a839f5f0bb3562689d9a44089738d11", + "originBridgeAddress": "0x096760f208390250649e3e8763348e783aef5562", + "destBridgeAddress": "0xcEe284F754E854890e311e3280b767F80797180d" + } + }, + "l1Address": "0x0ff5a8451a839f5f0bb3562689d9a44089738d11", + "l2GatewayAddress": "0x096760f208390250649e3e8763348e783aef5562", + "l1GatewayAddress": "0xcEe284F754E854890e311e3280b767F80797180d" + } + }, + { + "logoURI": "https://etherscan.io/token/images/RariGovernanceToken_32.png", + "chainId": 42161, + "address": "0xef888bcA6AB6B1d26dbeC977C455388ecd794794", + "name": "Rari Governance Token", + "symbol": "RGT", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0xd291e7a03283640fdc51b121ac401383a46cc623", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0xd291e7a03283640fdc51b121ac401383a46cc623", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://assets.coingecko.com/coins/images/13709/thumb/route_token_200x200-19.png?1611057698", + "chainId": 42161, + "address": "0x5298060A95205BE6Dd4aBc21910A4bB23D6DCD8b", + "name": "Route", + "symbol": "ROUTE", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x16eccfdbb4ee1a85a33f3a9b21175cd7ae753db4", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x16eccfdbb4ee1a85a33f3a9b21175cd7ae753db4", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://assets.coingecko.com/coins/images/12428/thumb/sake.png?1599777402", + "chainId": 42161, + "address": "0x552E4e96A0Ce6D36d161b63984848c8dAC471ea2", + "name": "SakeToken", + "symbol": "SAKE", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x066798d9ef0833ccc719076dab77199ecbd178b0", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x066798d9ef0833ccc719076dab77199ecbd178b0", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://assets.coingecko.com/coins/images/13724/thumb/stakedao_logo.jpg?1611195011", + "chainId": 42161, + "address": "0x7bA4a00d54A07461D9DB2aEF539e91409943AdC9", + "name": "Stake DAO Token", + "symbol": "SDT", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x73968b9a57c6e53d41345fd57a6e6ae27d6cdb2f", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x73968b9a57c6e53d41345fd57a6e6ae27d6cdb2f", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "chainId": 42161, + "address": "0x5575552988A3A80504bBaeB1311674fCFd40aD4B", + "name": "Sperax", + "symbol": "SPA", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x2a95fe4c7e64e09856989f9ea0b57b9ab5f770cb", + "originBridgeAddress": "0x096760f208390250649e3e8763348e783aef5562", + "destBridgeAddress": "0xcEe284F754E854890e311e3280b767F80797180d" + } + }, + "l1Address": "0x2a95fe4c7e64e09856989f9ea0b57b9ab5f770cb", + "l2GatewayAddress": "0x096760f208390250649e3e8763348e783aef5562", + "l1GatewayAddress": "0xcEe284F754E854890e311e3280b767F80797180d" + } + }, + { + "logoURI": "https://etherscan.io/token/images/spelltoken_32.png", + "chainId": 42161, + "address": "0x3E6648C5a70A150A88bCE65F4aD4d506Fe15d2AF", + "name": "Spell Token", + "symbol": "SPELL", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x090185f2135308bad17527004364ebcc2d37e5f6", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x090185f2135308bad17527004364ebcc2d37e5f6", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://etherscan.io/token/images/strips_32.png", + "chainId": 42161, + "address": "0x326c33FD1113c1F29B35B4407F3d6312a8518431", + "name": "Strips Token", + "symbol": "STRP", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x97872eafd79940c7b24f7bcc1eadb1457347adc9", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x97872eafd79940c7b24f7bcc1eadb1457347adc9", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://etherscan.io/token/images/sumswap_32.png", + "chainId": 42161, + "address": "0x20f9628a485ebCc566622314f6e07E7Ee61fF332", + "name": "SUM", + "symbol": "SUM", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x043c308bb8a5ae96d0093444be7f56459f1340b1", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x043c308bb8a5ae96d0093444be7f56459f1340b1", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://cryptologos.cc/logos/sushiswap-sushi-logo.png", + "chainId": 42161, + "address": "0xd4d42F0b6DEF4CE0383636770eF773390d85c61A", + "name": "SushiToken", + "symbol": "SUSHI", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x6b3595068778dd592e39a122f4f5a5cf09c90fe2", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x6b3595068778dd592e39a122f4f5a5cf09c90fe2", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://assets.coingecko.com/coins/images/18740/thumb/swapr.jpg?1633516501", + "chainId": 42161, + "address": "0xdE903E2712288A1dA82942DDdF2c20529565aC30", + "name": "Swapr", + "symbol": "SWPR", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x6cacdb97e3fc8136805a9e7c342d866ab77d0957", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x6cacdb97e3fc8136805a9e7c342d866ab77d0957", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://etherscan.io/token/images/tkdcoop_32.png", + "chainId": 42161, + "address": "0xFa51B42d4C9EA35F1758828226AaEdBeC50DD54E", + "name": "Taekwondo Access Credit", + "symbol": "TAC", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0xdeeb6091a5adc78fa0332bee5a38a8908b6b566e", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0xdeeb6091a5adc78fa0332bee5a38a8908b6b566e", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://assets.coingecko.com/coins/images/18271/thumb/tracer_logo.png?1631176676", + "chainId": 42161, + "address": "0xA72159FC390f0E3C6D415e658264c7c4051E9b87", + "name": "Tracer", + "symbol": "TCR", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x9c4a4204b79dd291d6b6571c5be8bbcd0622f050", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x9c4a4204b79dd291d6b6571c5be8bbcd0622f050", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://images.prismic.io/tusd-homepage/fb4d581a-95ed-404c-b9de-7ab1365c1386_%E5%9B%BE%E5%B1%82+1.png", + "chainId": 42161, + "address": "0x4D15a3A2286D883AF0AA1B3f21367843FAc63E07", + "name": "TrueUSD", + "symbol": "TUSD", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x0000000000085d4780b73119b644ae5ecd22b376", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x0000000000085d4780b73119b644ae5ecd22b376", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://assets.coingecko.com/coins/images/2707/thumb/UnibrightLogo_colorful_500x500_preview.png?1547036916", + "chainId": 42161, + "address": "0x2aD62674A64E698C24831Faf824973C360430140", + "name": "UniBright", + "symbol": "UBT", + "decimals": 8, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x8400d94a5cb0fa0d041a3788e395285d61c9ee5e", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x8400d94a5cb0fa0d041a3788e395285d61c9ee5e", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://assets.coingecko.com/coins/images/14545/thumb/unlock.jpg?1616948136", + "chainId": 42161, + "address": "0xd5d3aA404D7562d09a848F96a8a8d5D65977bF90", + "name": "Unlock Discount Token", + "symbol": "UDT", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x90de74265a416e1393a450752175aed98fe11517", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x90de74265a416e1393a450752175aed98fe11517", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://assets.coingecko.com/coins/images/12504/thumb/uniswap-uni.png?1600306604", + "chainId": 42161, + "address": "0xFa7F8980b0f1E64A2062791cc3b0871572f1F7f0", + "name": "Uniswap", + "symbol": "UNI", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x1f9840a85d5af5bf1d1762f925bdaddc4201f984", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x1f9840a85d5af5bf1d1762f925bdaddc4201f984", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://etherscan.io/token/images/unitynetwork_32.png", + "chainId": 42161, + "address": "0x250F471385894fc81183a99d6fDe8CE9C5B142d6", + "name": "Unity Network", + "symbol": "UNT", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x8d610e20481f4c4f3acb87bba9c46bef7795fdfe", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x8d610e20481f4c4f3acb87bba9c46bef7795fdfe", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://assets.coingecko.com/coins/images/6319/thumb/USD_Coin_icon.png?1547042389", + "chainId": 42161, + "address": "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", + "name": "USD Coin (Arb1)", + "symbol": "USDC", + "decimals": 6, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "originBridgeAddress": "0x096760f208390250649e3e8763348e783aef5562", + "destBridgeAddress": "0xcEe284F754E854890e311e3280b767F80797180d" + } + }, + "l1Address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "l2GatewayAddress": "0x096760f208390250649e3e8763348e783aef5562", + "l1GatewayAddress": "0xcEe284F754E854890e311e3280b767F80797180d" + } + }, + { + "logoURI": "https://assets.coingecko.com/coins/images/325/thumb/Tether-logo.png?1598003707", + "chainId": 42161, + "address": "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9", + "name": "Tether USD", + "symbol": "USDT", + "decimals": 6, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "originBridgeAddress": "0x096760f208390250649e3e8763348e783aef5562", + "destBridgeAddress": "0xcEe284F754E854890e311e3280b767F80797180d" + } + }, + "l1Address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "l2GatewayAddress": "0x096760f208390250649e3e8763348e783aef5562", + "l1GatewayAddress": "0xcEe284F754E854890e311e3280b767F80797180d" + } + }, + { + "logoURI": "https://etherscan.io/token/images/dforceusd_32.png", + "chainId": 42161, + "address": "0xcd14C3A2ba27819B352aae73414A26e2b366dC50", + "name": "dForce USD", + "symbol": "USX", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x0a5e677a6a24b2f1a2bf4f3bffc443231d2fdec8", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x0a5e677a6a24b2f1a2bf4f3bffc443231d2fdec8", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://etherscan.io/token/images/validator_32.png", + "chainId": 42161, + "address": "0x8d1c89DcF613e3e709AfE9Abecae591D0e2B64Ca", + "name": "Validator", + "symbol": "VALX", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x27c4af9a860c4cadc358005f8b48140b2e434a7b", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x27c4af9a860c4cadc358005f8b48140b2e434a7b", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://assets.coingecko.com/coins/images/14381/thumb/visor_logo.png?1615782828", + "chainId": 42161, + "address": "0x995C235521820f2637303Ca1970c7c044583df44", + "name": "VISOR", + "symbol": "VISR", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0xf938424f7210f31df2aee3011291b658f872e91e", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0xf938424f7210f31df2aee3011291b658f872e91e", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://assets.coingecko.com/coins/images/12880/thumb/BSensIa.png?1603261093", + "chainId": 42161, + "address": "0x2eD14d1788dfB780fD216706096AeD018514ECcd", + "name": "Vox.Finance", + "symbol": "VOX", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x12d102f06da35cc0111eb58017fd2cd28537d0e1", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x12d102f06da35cc0111eb58017fd2cd28537d0e1", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://assets.coingecko.com/coins/images/7598/thumb/wrapped_bitcoin_wbtc.png?1548822744", + "chainId": 42161, + "address": "0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f", + "name": "Wrapped BTC", + "symbol": "WBTC", + "decimals": 8, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://assets.coingecko.com/coins/images/2091/thumb/xaya_logo-1.png?1547036406", + "chainId": 42161, + "address": "0xA64eCCe74F8CdB7a940766B71f1b108BAC69851a", + "name": "Wrapped CHI", + "symbol": "WCHI", + "decimals": 8, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x6dc02164d75651758ac74435806093e421b64605", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x6dc02164d75651758ac74435806093e421b64605", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://assets.coingecko.com/coins/images/2518/thumb/weth.png?1628852295", + "chainId": 42161, + "address": "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1", + "name": "Wrapped Ether", + "symbol": "WETH", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "originBridgeAddress": "0x6c411ad3e74de3e7bd422b94a27770f5b86c623b", + "destBridgeAddress": "0xd92023E9d9911199a6711321D1277285e6d4e2db" + } + }, + "l1Address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "l2GatewayAddress": "0x6c411ad3e74de3e7bd422b94a27770f5b86c623b", + "l1GatewayAddress": "0xd92023E9d9911199a6711321D1277285e6d4e2db" + } + }, + { + "logoURI": "https://assets.coingecko.com/coins/images/12921/thumb/w2UiemF__400x400.jpg?1603670367", + "chainId": 42161, + "address": "0xcAFcD85D8ca7Ad1e1C6F82F651fA15E33AEfD07b", + "name": "Wootrade Network", + "symbol": "WOO", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x4691937a7508860f876c9c0a2a617e7d9e945d4b", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x4691937a7508860f876c9c0a2a617e7d9e945d4b", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://assets.coingecko.com/coins/images/14089/thumb/xToken.png?1614226407", + "chainId": 42161, + "address": "0xF0A5717Ec0883eE56438932b0fe4A20822735fBa", + "name": "xToken", + "symbol": "XTK", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x7f3edcdd180dbe4819bd98fee8929b5cedb3adeb", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x7f3edcdd180dbe4819bd98fee8929b5cedb3adeb", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://cryptologos.cc/logos/yearn-finance-yfi-logo.png", + "chainId": 42161, + "address": "0x82e3A8F066a6989666b031d916c43672085b1582", + "name": "yearn.finance", + "symbol": "YFI", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://assets.coingecko.com/coins/images/4302/thumb/zippie.jpg?1547039665", + "chainId": 42161, + "address": "0x0F61B24272AF65EACF6adFe507028957698e032F", + "name": "Zippie", + "symbol": "ZIPT", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0xedd7c94fd7b4971b916d15067bc454b9e1bad980", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0xedd7c94fd7b4971b916d15067bc454b9e1bad980", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://assets.coingecko.com/coins/images/15500/thumb/ibbtc.png?1621077589", + "chainId": 42161, + "address": "0x9Ab3FD50FcAe73A1AEDa959468FD0D662c881b42", + "name": "Interest-Bearing Bitcoin", + "symbol": "ibBTC", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0xc4e15973e6ff2a35cc804c2cf9d2a1b817a8b40f", + "originBridgeAddress": "0x096760f208390250649e3e8763348e783aef5562", + "destBridgeAddress": "0xcEe284F754E854890e311e3280b767F80797180d" + } + }, + "l1Address": "0xc4e15973e6ff2a35cc804c2cf9d2a1b817a8b40f", + "l2GatewayAddress": "0x096760f208390250649e3e8763348e783aef5562", + "l1GatewayAddress": "0xcEe284F754E854890e311e3280b767F80797180d" + } + }, + { + "chainId": 42161, + "address": "0x4f947b40BEEB9D8130437781a560E5c7D089730f", + "name": "KAKI USDC", + "symbol": "kUSDC", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0xa124ff1e97e7f3e4a796f6a2d3bf5d0e2d41973d", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0xa124ff1e97e7f3e4a796f6a2d3bf5d0e2d41973d", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "logoURI": "https://assets.coingecko.com/coins/images/5013/thumb/sUSD.png?1616150765", + "chainId": 42161, + "address": "0xA970AF1a584579B618be4d69aD6F73459D112F95", + "name": "Synth sUSD", + "symbol": "sUSD", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "1": { + "tokenAddress": "0x57ab1ec28d129707052df4df418d58a2d46d5f51", + "originBridgeAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "destBridgeAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + "l1Address": "0x57ab1ec28d129707052df4df418d58a2d46d5f51", + "l2GatewayAddress": "0x09e9222e96e7b4ae2a407b98d48e330053351eee", + "l1GatewayAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC" + } + }, + { + "chainId": 1, + "name": "0xBitcoin", + "address": "0xb6ed7644c69416d67b522e20bc294a9a9b405b31", + "symbol": "0xBTC", + "decimals": 8, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/2837.png" + }, + { + "chainId": 1, + "name": "Agave", + "address": "0x0b006e475620af076915257c6a9e40635abdbbad", + "symbol": "AGVE", + "decimals": 18 + }, + { + "chainId": 1, + "name": "Alchemy", + "address": "0x0000a1c00009a619684135b824ba02f7fbf3a572", + "symbol": "ALCH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14719/thumb/sbEW5W8.png?1617939648" + }, + { + "chainId": 1, + "name": "Aluna.Social", + "address": "0x8185bc4757572da2a610f887561c32298f1a5748", + "symbol": "ALN", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/5544.png" + }, + { + "chainId": 1, + "name": "Auctus", + "address": "0xc12d099be31567add4e4e4d0d45691c3f58f5663", + "symbol": "AUC", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/2653.png" + }, + { + "chainId": 1, + "name": "Basis Cash", + "address": "0x3449FC1Cd036255BA1EB19d65fF4BA2b8903A69a", + "symbol": "BAC", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/7813.png" + }, + { + "chainId": 1, + "name": "Badger DAO", + "address": "0x3472a5a71965499acd81997a54bba8d852c6e53d", + "symbol": "BADGER", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/7859.png" + }, + { + "chainId": 1, + "name": "Balancer", + "address": "0xba100000625a3754423978a60c9317c58a424e3D", + "symbol": "BAL", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/5728.png" + }, + { + "chainId": 1, + "name": "BarkCoin", + "address": "0x5bd7ef7113a32b56127ac32272609c42c97849ff", + "symbol": "BARK", + "decimals": 18 + }, + { + "chainId": 1, + "name": "BlockWallet", + "address": "0x41a3dba3d677e573636ba691a70ff2d606c29666", + "symbol": "BLANK", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/8695.png" + }, + { + "chainId": 1, + "name": "BarnBridge", + "address": "0x0391D2021f89DC339F60Fff84546EA23E337750f", + "symbol": "BOND", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/7440.png" + }, + { + "chainId": 1, + "name": "Boost Coin", + "address": "0x4e0fca55a6c3a94720ded91153a27f60e26b9aa8", + "symbol": "BOOST", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/11216.png" + }, + { + "chainId": 1, + "name": "BTU Protocol", + "address": "0xb683d83a532e2cb7dfa5275eed3698436371cc9f", + "symbol": "BTU", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/3737.png" + }, + { + "chainId": 1, + "name": "Cap", + "address": "0x43044f861ec040DB59A7e324c40507adDb673142", + "symbol": "CAP", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/5809.png" + }, + { + "chainId": 1, + "name": "Celer Network", + "address": "0x4f9254c83eb525f9fcf346490bbb3ed28a81c667", + "symbol": "CELR", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/3814.png" + }, + { + "chainId": 1, + "name": "Cryption Network", + "address": "0x429876c4a6f89fb470e92456b8313879df98b63c", + "symbol": "CNT", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/9747.png" + }, + { + "chainId": 1, + "name": "Compound", + "address": "0xc00e94cb662c3520282e6f5717214004a7f26888", + "symbol": "COMP", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/5692.png" + }, + { + "chainId": 1, + "name": "COTI", + "address": "0xDDB3422497E61e13543BeA06989C0789117555c5", + "symbol": "COTI", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/3992.png" + }, + { + "chainId": 1, + "name": "Cream Finance", + "address": "0x2ba592f78db6436527729929aaf6c908497cb200", + "symbol": "CREAM", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/6193.png" + }, + { + "chainId": 1, + "name": "Curve DAO Token", + "address": "0xD533a949740bb3306d119CC777fa900bA034cd52", + "symbol": "CRV", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/6538.png" + }, + { + "chainId": 1, + "name": "Dai", + "address": "0x6b175474e89094c44da98b954eedeac495271d0f", + "symbol": "DAI", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/4943.png" + }, + { + "chainId": 1, + "name": "DEFI Top 5 Tokens Index", + "address": "0xfa6de2697d59e88ed7fc4dfe5a33dac43565ea41", + "symbol": "DEFI5", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/8430.png" + }, + { + "chainId": 1, + "name": "DEGEN Index", + "address": "0x126c121f99e1e211df2e5f8de2d96fa36647c855", + "symbol": "DEGEN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14143/thumb/alpha_logo.png?1614651244" + }, + { + "chainId": 1, + "name": "dForce", + "address": "0x431ad2ff6a9c365805ebad47ee021148d6f7dbe0", + "symbol": "DF", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/4758.png" + }, + { + "chainId": 1, + "name": "Dfyn Network", + "address": "0x9695e0114e12c0d3a3636fab5a18e6b737529023", + "symbol": "DFYN", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/9511.png" + }, + { + "chainId": 1, + "name": "dHedge DAO", + "address": "0xca1207647ff814039530d7d35df0e1dd2e91fa84", + "symbol": "DHT", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/7094.png" + }, + { + "chainId": 1, + "name": "DODO", + "address": "0x43dfc4159d86f3a37a5a4b3d4580b888ad7d4ddd", + "symbol": "DODO", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/7224.png" + }, + { + "chainId": 1, + "name": "The Doge NFT", + "address": "0xbaac2b4491727d78d2b78815144570b9f2fe8899", + "symbol": "DOG", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/11557.png" + }, + { + "chainId": 1, + "name": "Dopex", + "address": "0xeec2be5c91ae7f8a338e1e5f3b5de49d07afdc81", + "symbol": "DPX", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/11188.png" + }, + { + "chainId": 1, + "name": "Digital Standard Unit", + "address": "0x605d26fbd5be761089281d5cec2ce86eea667109", + "symbol": "DSU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17482/thumb/photo_2021-08-03_09-24-16.png?1627953917" + }, + { + "chainId": 1, + "name": "DeversiFi", + "address": "0xdddddd4301a082e62e84e43f474f044423921918", + "symbol": "DVF", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/10759.png" + }, + { + "chainId": 1, + "name": "DXdao", + "address": "0xa1d65e8fb6e87b60feccbc582f7f97804b725521", + "symbol": "DXD", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/5589.png" + }, + { + "chainId": 1, + "name": "Empty Set Share", + "address": "0x24ae124c4cc33d6791f8e8b63520ed7107ac8b3e", + "symbol": "ESS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17481/thumb/photo_2021-08-03_03-26-29.png?1627953584" + }, + { + "chainId": 1, + "name": "dForce EUR", + "address": "0xb986f3a2d91d3704dc974a24fb735dcc5e3c1e70", + "symbol": "EUX", + "decimals": 18, + "logoURI": "https://etherscan.io/token/images/dforceeur_32.png" + }, + { + "chainId": 1, + "name": "Datamine FLUX", + "address": "0x469eda64aed3a3ad6f868c44564291aa415cb1d9", + "symbol": "FLUX", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/5876.png" + }, + { + "chainId": 1, + "name": "Flux Protocol", + "address": "0x7645DdfEecedA57e41f92679c4aCd83c56A81D14", + "symbol": "FLUX", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/9837.png" + }, + { + "chainId": 1, + "name": "ForTube", + "address": "0x1fcdce58959f536621d76f5b7ffb955baa5a672f", + "symbol": "FOR", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/4118.png" + }, + { + "chainId": 1, + "name": "Futureswap", + "address": "0x0e192d382a36de7011f795acc4391cd302003606", + "symbol": "FST", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/8961.png" + }, + { + "chainId": 1, + "name": "Fuse Network", + "address": "0x970b9bb2c0444f5e81e9d0efb84c8ccdcdcaf84d", + "symbol": "FUSE", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/5634.png" + }, + { + "chainId": 1, + "name": "GMX", + "address": "0xbc30049adc73de06d7a98a5189203aac66b2c830", + "symbol": "GMX", + "decimals": 18 + }, + { + "chainId": 1, + "name": "Gnosis", + "address": "0x6810e776880c02933d47db1b9fc05908e5386b96", + "symbol": "GNO", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/1659.png" + }, + { + "chainId": 1, + "name": "Govi", + "address": "0xeeaa40b28a2d1b0b08f6f97bb1dd4b75316c6107", + "symbol": "GOVI", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/8408.png" + }, + { + "chainId": 1, + "name": "The Graph", + "address": "0xc944e90c64b2c07662a292be6244bdf05cda44a7", + "symbol": "GRT", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/6719.png" + }, + { + "chainId": 1, + "name": "Impermax", + "address": "0x7b35ce522cb72e4077baeb96cb923a5529764a00", + "symbol": "IMX", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/9532.png" + }, + { + "chainId": 1, + "name": "Chemix Ecology Governance Token", + "address": "0x65d9bC970aA9B2413027fA339F7f179B3F3f2604", + "symbol": "KUN", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/7721.png" + }, + { + "chainId": 1, + "name": "Land", + "address": "0x3258cd8134b6b28e814772dd91d5ecceea512818", + "symbol": "LAND", + "decimals": 18, + "logoURI": "https://etherscan.io/token/images/farmland_32.png" + }, + { + "chainId": 1, + "name": "Chainlink", + "address": "0x514910771af9ca656af840dff83e8264ecf986ca", + "symbol": "LINK", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/1975.png" + }, + { + "chainId": 1, + "name": "Loopring", + "address": "0xbbbbca6a901c926f240b89eacb641d8aec7aeafd", + "symbol": "LRC", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/1934.png" + }, + { + "chainId": 1, + "name": "MAGIC", + "address": "0xb0c7a3ba49c7a6eaba6cd4a96c55a1391070ac9a", + "symbol": "MAGIC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18623/thumb/Magic.png?1635755672" + }, + { + "chainId": 1, + "name": "My Alpha Leaderboard", + "address": "0x6619078bdd8324e01e9a8d4b3d761b050e5ecf06", + "symbol": "MAL", + "decimals": 18 + }, + { + "chainId": 1, + "name": "MATH", + "address": "0x08d967bb0134f2d07f7cfb6e246680c53927dd30", + "symbol": "MATH", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/5616.png" + }, + { + "chainId": 1, + "name": "AntiMatter Governance Token", + "address": "0x9B99CcA871Be05119B2012fd4474731dd653FEBe", + "symbol": "MATTER", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/8603.png" + }, + { + "chainId": 1, + "name": "MCDEX Token", + "address": "0x4e352cf164e64adcbad318c3a1e222e9eba4ce42", + "symbol": "MCB", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/5956.png" + }, + { + "chainId": 1, + "name": "Maker", + "address": "0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2", + "symbol": "MKR", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/1518.png" + }, + { + "chainId": 1, + "name": "Meta", + "address": "0xa3bed4e1c75d00fa6f4e5e6922db7261b5e9acd2", + "symbol": "MTA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11846/thumb/mStable.png?1594950533" + }, + { + "chainId": 1, + "name": "Indexed Finance", + "address": "0x86772b1409b61c639eaac9ba0acfbb6e238e5f83", + "symbol": "NDX", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/8260.png" + }, + { + "chainId": 1, + "name": "New era", + "address": "0x1353a77abd236207d0588bcbbb52bc3087f85351", + "symbol": "NEC", + "decimals": 18 + }, + { + "chainId": 1, + "name": "Feisty Doge NFT", + "address": "0xDFDb7f72c1F195C5951a234e8DB9806EB0635346", + "symbol": "NFD", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/11368.png" + }, + { + "chainId": 1, + "name": "OctoFi", + "address": "0x7240aC91f01233BaAf8b064248E80feaA5912BA3", + "symbol": "OCTO", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/7202.png" + }, + { + "chainId": 1, + "name": "Olympus v1", + "address": "0x383518188c0c6d7730d91b2c03a03c837814a899", + "symbol": "OHM", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/16209.png" + }, + { + "chainId": 1, + "name": "OVR", + "address": "0x21bfbda47a0b4b5b1248c767ee49f7caa9b23697", + "symbol": "OVR", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/8144.png" + }, + { + "chainId": 1, + "name": "Perpetual Protocol", + "address": "0xbc396689893d065f41bc2c6ecbee5e0085233447", + "symbol": "PERP", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/6950.png" + }, + { + "chainId": 1, + "name": "Pickle Finance", + "address": "0x429881672B9AE42b8EbA0E26cD9C73711b891Ca5", + "symbol": "PICKLE", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/7022.png" + }, + { + "chainId": 1, + "name": "Plenny", + "address": "0x3642c0680329ae3e103e2b5ab29ddfed4d43cbe5", + "symbol": "PL2", + "decimals": 18 + }, + { + "chainId": 1, + "name": "Premia", + "address": "0x6399C842dD2bE3dE30BF99Bc7D1bBF6Fa3650E70", + "symbol": "PREMIA", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/8476.png" + }, + { + "chainId": 1, + "name": "Rai Reflex Index", + "address": "0x03ab458634910aad20ef5f1c8ee96f1d6ac54919", + "symbol": "RAI", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/8525.png" + }, + { + "chainId": 1, + "name": "Dopex Rebate Token", + "address": "0x0ff5a8451a839f5f0bb3562689d9a44089738d11", + "symbol": "RDPX", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/12057.png" + }, + { + "chainId": 1, + "name": "Rari Governance Token", + "address": "0xd291e7a03283640fdc51b121ac401383a46cc623", + "symbol": "RGT", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/7486.png" + }, + { + "chainId": 1, + "name": "Router Protocol", + "address": "0x16eccfdbb4ee1a85a33f3a9b21175cd7ae753db4", + "symbol": "ROUTE", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/8292.png" + }, + { + "chainId": 1, + "name": "SakeToken", + "address": "0x066798d9ef0833ccc719076dab77199ecbd178b0", + "symbol": "SAKE", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/6997.png" + }, + { + "chainId": 1, + "name": "Stake DAO", + "address": "0x73968b9a57c6e53d41345fd57a6e6ae27d6cdb2f", + "symbol": "SDT", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/8299.png" + }, + { + "chainId": 1, + "name": "Spell Token", + "address": "0x090185f2135308bad17527004364ebcc2d37e5f6", + "symbol": "SPELL", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/11289.png" + }, + { + "chainId": 1, + "name": "Strips Finance", + "address": "0x97872EAfd79940C7b24f7BCc1EADb1457347ADc9", + "symbol": "STRP", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/11848.png" + }, + { + "chainId": 1, + "name": "SumSwap", + "address": "0x043c308bb8a5ae96d0093444be7f56459f1340b1", + "symbol": "SUM", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/11208.png" + }, + { + "chainId": 1, + "name": "SushiSwap", + "address": "0x6b3595068778dd592e39a122f4f5a5cf09c90fe2", + "symbol": "SUSHI", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/6758.png" + }, + { + "chainId": 1, + "name": "Swapr", + "address": "0x6cacdb97e3fc8136805a9e7c342d866ab77d0957", + "symbol": "SWPR", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/12368.png" + }, + { + "chainId": 1, + "name": "Taekwondo Access Credit", + "address": "0xdeeb6091a5adc78fa0332bee5a38a8908b6b566e", + "symbol": "TAC", + "decimals": 18, + "logoURI": "https://etherscan.io/token/images/tkdcoop_32.png" + }, + { + "chainId": 1, + "name": "Tracer DAO", + "address": "0x9c4a4204b79dd291d6b6571c5be8bbcd0622f050", + "symbol": "TCR", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/12341.png" + }, + { + "chainId": 1, + "name": "TrueUSD", + "address": "0x0000000000085d4780B73119b644AE5ecd22b376", + "symbol": "TUSD", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/2563.png" + }, + { + "chainId": 1, + "name": "Unibright", + "address": "0x8400d94a5cb0fa0d041a3788e395285d61c9ee5e", + "symbol": "UBT", + "decimals": 8, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/2758.png" + }, + { + "chainId": 1, + "name": "Unlock Protocol", + "address": "0x90de74265a416e1393a450752175aed98fe11517", + "symbol": "UDT", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/9364.png" + }, + { + "chainId": 1, + "name": "Uniswap", + "address": "0x1f9840a85d5af5bf1d1762f925bdaddc4201f984", + "symbol": "UNI", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/7083.png" + }, + { + "chainId": 1, + "name": "Unity Network", + "address": "0x8d610e20481f4c4f3acb87bba9c46bef7795fdfe", + "symbol": "UNT", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/14602.png" + }, + { + "chainId": 1, + "name": "USD Coin", + "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "symbol": "USDC", + "decimals": 6, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/3408.png" + }, + { + "chainId": 1, + "name": "Tether", + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "symbol": "USDT", + "decimals": 6, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/825.png" + }, + { + "chainId": 1, + "name": "dForce USD", + "address": "0x0a5e677a6a24b2f1a2bf4f3bffc443231d2fdec8", + "symbol": "USX", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/13080.png" + }, + { + "chainId": 1, + "name": "Validator", + "address": "0x27c4af9a860c4cadc358005f8b48140b2e434a7b", + "symbol": "VALX", + "decimals": 18, + "logoURI": "https://etherscan.io/token/images/validator_32.png" + }, + { + "chainId": 1, + "name": "Visor.Finance", + "address": "0xf938424f7210f31df2aee3011291b658f872e91e", + "symbol": "VISR", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/9170.png" + }, + { + "chainId": 1, + "name": "Vox.Finance", + "address": "0x12D102F06da35cC0111EB58017fd2Cd28537d0e1", + "symbol": "VOX", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/7465.png" + }, + { + "chainId": 1, + "name": "Wrapped Bitcoin", + "address": "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", + "symbol": "WBTC", + "decimals": 8, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/3717.png" + }, + { + "chainId": 1, + "name": "Xaya", + "address": "0x6DC02164d75651758aC74435806093E421b64605", + "symbol": "CHI", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/5541.png" + }, + { + "chainId": 1, + "name": "WETH", + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "symbol": "WETH", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/2396.png" + }, + { + "chainId": 1, + "name": "Sperax", + "address": "0x2a95FE4c7e64e09856989F9eA0b57B9AB5f770CB", + "symbol": "SPA", + "decimals": 18, + "logoURI": "https://etherscan.io/token/images/speraxtoken_32.png" + }, + { + "chainId": 1, + "name": "WOO Network", + "address": "0x4691937a7508860f876c9c0a2a617e7d9e945d4b", + "symbol": "WOO", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/7501.png" + }, + { + "chainId": 1, + "name": "xToken", + "address": "0x7f3edcdd180dbe4819bd98fee8929b5cedb3adeb", + "symbol": "XTK", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/8599.png" + }, + { + "chainId": 1, + "name": "yearn.finance", + "address": "0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e", + "symbol": "YFI", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/5864.png" + }, + { + "chainId": 1, + "name": "Zippie", + "address": "0xedd7c94fd7b4971b916d15067bc454b9e1bad980", + "symbol": "ZIPT", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/2724.png" + }, + { + "chainId": 1, + "name": "Interest-Bearing Bitcoin", + "address": "0xc4e15973e6ff2a35cc804c2cf9d2a1b817a8b40f", + "symbol": "ibBTC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15500/thumb/ibbtc.png?1621077589" + }, + { + "chainId": 1, + "name": "KAKI USDC", + "address": "0xa124ff1e97e7f3e4a796f6a2d3bf5d0e2d41973d", + "symbol": "kUSDC", + "decimals": 18 + }, + { + "chainId": 1, + "name": "sUSD", + "address": "0x57Ab1ec28D129707052df4dF418D58a2D46d5f51", + "symbol": "SUSD", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/2927.png" + } + ], + "logoURI": "ipfs://QmTvWJ4kmzq9koK74WJQ594ov8Es1HHurHZmMmhU8VY68y" + } + \ No newline at end of file diff --git a/src/chains/ethereum/arbitrum_rinkeby_tokens.json b/src/chains/ethereum/arbitrum_rinkeby_tokens.json new file mode 100644 index 0000000000..a5e8cfd216 --- /dev/null +++ b/src/chains/ethereum/arbitrum_rinkeby_tokens.json @@ -0,0 +1,152 @@ +{ + "name": "ArbRinkeby", + "timestamp": "2022-03-01T22:29:12.223Z", + "version": { + "major": 2, + "minor": 0, + "patch": 0 + }, + "tokens": [ + { + "chainId": 421611, + "address": "0xf3f0384583d0574955Dccbb044A64Ad249cf9C3E", + "name": "Corn", + "symbol": "CORN", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "4": { + "tokenAddress": "0xd6a87faf418c818f93be9ae8b63d1d4fe3e7df45", + "originBridgeAddress": "0x9b014455acc2fe90c52803849d0002aeec184a06", + "destBridgeAddress": "0x917dc9a69F65dC3082D518192cd3725E1Fa96cA2" + } + } + } + }, + { + "chainId": 421611, + "address": "0x2f3C1B6A51A469051A22986aA0dDF98466cc8D3c", + "name": "Dai Stablecoin", + "symbol": "DAI", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "4": { + "tokenAddress": "0x6a9865ade2b6207daac49f8bcba9705deb0b0e6d", + "originBridgeAddress": "0x195c107f3f75c4c93eba7d9a1312f19305d6375f", + "destBridgeAddress": "0x91169Dbb45e6804743F94609De50D511C437572E" + } + } + } + }, + { + "chainId": 421611, + "address": "0x2E228ef2A59686cC5c6fF06cD46ee302a4134F00", + "name": "Land", + "symbol": "LAND", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "4": { + "tokenAddress": "0x393fd5b96f6459511d7368778318c31d719720ad", + "originBridgeAddress": "0x9b014455acc2fe90c52803849d0002aeec184a06", + "destBridgeAddress": "0x917dc9a69F65dC3082D518192cd3725E1Fa96cA2" + } + } + } + }, + { + "logoURI": "https://assets.coingecko.com/coins/images/12504/thumb/uniswap-uni.png?1600306604", + "chainId": 421611, + "address": "0x049251A7175071316e089D0616d8B6aaCD2c93b8", + "name": "Uniswap", + "symbol": "UNI", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "4": { + "tokenAddress": "0x1f9840a85d5af5bf1d1762f925bdaddc4201f984", + "originBridgeAddress": "0x195c107f3f75c4c93eba7d9a1312f19305d6375f", + "destBridgeAddress": "0x91169Dbb45e6804743F94609De50D511C437572E" + } + } + } + }, + { + "chainId": 421611, + "address": "0x1E77ad77925Ac0075CF61Fb76bA35D884985019d", + "name": "USD Coin", + "symbol": "USDC", + "decimals": 6, + "extensions": { + "bridgeInfo": { + "4": { + "tokenAddress": "0x4dbcdf9b62e891a7cec5a2568c3f4faf9e8abe2b", + "originBridgeAddress": "0x195c107f3f75c4c93eba7d9a1312f19305d6375f", + "destBridgeAddress": "0x91169Dbb45e6804743F94609De50D511C437572E" + } + } + } + }, + { + "chainId": 421611, + "address": "0xB47e6A5f8b33b3F17603C83a0535A9dcD7E32681", + "name": "Wrapped Ether", + "symbol": "WETH", + "decimals": 18, + "extensions": { + "bridgeInfo": { + "4": { + "tokenAddress": "0xc778417e063141139fce010982780140aa0cd5ab", + "originBridgeAddress": "0xf94bc045c4e926cc0b34e8d1c41cd7a043304ac9", + "destBridgeAddress": "0x81d1a19cf7071732D4313c75dE8DD5b8CF697eFD" + } + } + } + }, + { + "chainId": 4, + "name": "Corn", + "address": "0xd6a87faf418c818f93be9ae8b63d1d4fe3e7df45", + "symbol": "CORN", + "decimals": 18 + }, + { + "chainId": 4, + "name": "Dai Stablecoin", + "address": "0x6a9865ade2b6207daac49f8bcba9705deb0b0e6d", + "symbol": "DAI", + "decimals": 18 + }, + { + "chainId": 4, + "name": "Land", + "address": "0x393fd5b96f6459511d7368778318c31d719720ad", + "symbol": "LAND", + "decimals": 18 + }, + { + "chainId": 4, + "name": "Uniswap", + "address": "0x1f9840a85d5af5bf1d1762f925bdaddc4201f984", + "symbol": "UNI", + "decimals": 18, + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/7083.png" + }, + { + "chainId": 4, + "name": "USD Coin", + "address": "0x4DBCdF9B62e891a7cec5A2568C3F4FAF9E8Abe2b", + "symbol": "USDC", + "decimals": 6 + }, + { + "chainId": 4, + "name": "Wrapped Ether", + "address": "0xc778417e063141139fce010982780140aa0cd5ab", + "symbol": "WETH", + "decimals": 18 + } + ], + "logoURI": "ipfs://QmTvWJ4kmzq9koK74WJQ594ov8Es1HHurHZmMmhU8VY68y" + } \ No newline at end of file diff --git a/src/chains/ethereum/balancer/balancer.config.ts b/src/chains/ethereum/balancer/balancer.config.ts new file mode 100644 index 0000000000..2a78dffdf7 --- /dev/null +++ b/src/chains/ethereum/balancer/balancer.config.ts @@ -0,0 +1,19 @@ +export namespace BalancerConfig { + export interface NetworkConfig { + balancerAddress: string; + } + + export interface Config { + mainnet: NetworkConfig; + kovan: NetworkConfig; + } + + export const config: Config = { + mainnet: { + balancerAddress: '0x3E66B66Fd1d0b02fDa6C811Da9E0547970DB2f21', + }, + kovan: { + balancerAddress: '0x4e67bf5bD28Dd4b570FBAFe11D0633eCbA2754Ec', + }, + }; +} diff --git a/src/chains/ethereum/erc20_tokens_goerli.json b/src/chains/ethereum/erc20_tokens_goerli.json new file mode 100644 index 0000000000..31a58ce028 --- /dev/null +++ b/src/chains/ethereum/erc20_tokens_goerli.json @@ -0,0 +1,148 @@ +{ + "name": "goerli", + "tokens": [ + { + "name": "Wrapped Ether", + "address": "0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6", + "symbol": "WETH", + "decimals": 18, + "chainId": 5, + "logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6/logo.png" + }, + { + "name": "Uniswap", + "address": "0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984", + "symbol": "UNI", + "decimals": 18, + "chainId": 5, + "logoURI": "ipfs://QmXttGpZrECX5qCyXbBQiqgQNytVGeZW5Anewvh2jc4psg" + }, + { + "chainId": 5, + "address": "0xe4E81Fa6B16327D4B78CFEB83AAdE04bA7075165", + "name": "0x Protocol Token", + "symbol": "ZRX", + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/compound-finance/token-list/master/assets/asset_ZRX.svg" + }, + { + "chainId": 5, + "address": "0xCEC4a43eBB02f9B80916F1c718338169d6d5C1F0", + "name": "Compound USD Coin", + "symbol": "cUSDC", + "decimals": 8, + "logoURI": "https://raw.githubusercontent.com/compound-finance/token-list/master/assets/ctoken_usdc.svg" + }, + { + "chainId": 5, + "address": "0x822397d9a55d0fefd20F5c4bCaB33C5F65bd28Eb", + "name": "Compound Dai", + "symbol": "cDAI", + "decimals": 8, + "logoURI": "https://raw.githubusercontent.com/compound-finance/token-list/master/assets/ctoken_dai.svg" + }, + { + "chainId": 5, + "address": "0xdc31Ee1784292379Fbb2964b3B9C4124D8F89C60", + "name": "Dai Stablecoin", + "symbol": "DAI", + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/compound-finance/token-list/master/assets/asset_DAI.svg" + }, + { + "chainId": 5, + "address": "0xe16C7165C8FeA64069802aE4c4c9C320783f2b6e", + "name": "Compound", + "symbol": "COMP", + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/compound-finance/token-list/master/assets/asset_COMP.svg" + }, + { + "chainId": 5, + "address": "0xCCaF265E7492c0d9b7C2f0018bf6382Ba7f0148D", + "name": "Compound Basic Attention Token", + "symbol": "cBAT", + "decimals": 8, + "logoURI": "https://raw.githubusercontent.com/compound-finance/token-list/master/assets/ctoken_bat.svg" + }, + { + "chainId": 5, + "address": "0x70cBa46d2e933030E2f274AE58c951C800548AeF", + "name": "Basic Attention Token", + "symbol": "BAT", + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/compound-finance/token-list/master/assets/asset_BAT.svg" + }, + { + "chainId": 5, + "address": "0x20572e4c090f15667cF7378e16FaD2eA0e2f3EfF", + "name": "Compound Ether", + "symbol": "cETH", + "decimals": 8, + "logoURI": "https://raw.githubusercontent.com/compound-finance/token-list/master/assets/ctoken_eth.svg" + }, + { + "chainId": 5, + "address": "0xC04B0d3107736C32e19F1c62b2aF67BE61d63a05", + "name": "Wrapped BTC", + "symbol": "WBTC", + "decimals": 8 + }, + { + "chainId": 5, + "address": "0x6CE27497A64fFFb5517AA4aeE908b1E7EB63B9fF", + "name": "Compound Wrapped BTC", + "symbol": "cWBTC", + "decimals": 8, + "logoURI": "https://raw.githubusercontent.com/compound-finance/token-list/master/assets/ctoken_wbtc.svg" + }, + { + "chainId": 5, + "address": "0xA253295eC2157B8b69C44b2cb35360016DAa25b1", + "name": "Compound 0x", + "symbol": "cZRX", + "decimals": 8, + "logoURI": "https://raw.githubusercontent.com/compound-finance/token-list/master/assets/ctoken_zrx.svg" + }, + { + "chainId": 5, + "address": "0xD87Ba7A50B2E7E660f678A895E4B72E7CB4CCd9C", + "name": "USD Coin USDC", + "symbol": "USDC", + "decimals": 6, + "logoURI": "https://raw.githubusercontent.com/compound-finance/token-list/master/assets/asset_USDC.svg" + }, + { + "chainId": 5, + "address": "0x1d70B01A2C3e3B2e56FcdcEfe50d5c5d70109a5D", + "name": "Compound Augur", + "symbol": "cREP", + "decimals": 8, + "logoURI": "https://raw.githubusercontent.com/compound-finance/token-list/master/assets/ctoken_rep.svg" + }, + { + "chainId": 5, + "address": "0x183Faf58c4461972765f3F90c6272A4ecE66Bd96", + "name": "Reputation", + "symbol": "REP", + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/compound-finance/token-list/master/assets/asset_REP.svg" + }, + { + "chainId": 5, + "address": "0x5D4373F8C1AF21C391aD7eC755762D8dD3CCA809", + "name": "Compound Sai", + "symbol": "cSAI", + "decimals": 8, + "logoURI": "https://raw.githubusercontent.com/compound-finance/token-list/master/assets/ctoken_sai.svg" + }, + { + "chainId": 5, + "address": "0x8e9192D6f9d903b1BEb3836F52a9f71E05846e42", + "name": "Sai Stablecoin v1.0", + "symbol": "SAI", + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/compound-finance/token-list/master/assets/asset_SAI.svg" + } + ] +} diff --git a/src/chains/ethereum/erc20_tokens_kovan.json b/src/chains/ethereum/erc20_tokens_kovan.json new file mode 100644 index 0000000000..d236eb4773 --- /dev/null +++ b/src/chains/ethereum/erc20_tokens_kovan.json @@ -0,0 +1,83 @@ +{ + "name": "kovan", + "tokens": [ + { + "symbol": "BAT", + "chainId": 42, + "address": "0x1f1f156E0317167c11Aa412E3d1435ea29Dc3cCE", + "decimals": 18 + }, + { + "symbol": "WETH", + "chainId": 42, + "address": "0xd0A1E359811322d97991E03f863a0C30C2cF029C", + "decimals": 18 + }, + { + "symbol": "DAI", + "chainId": 42, + "address": "0x4f96fe3b7a6cf9725f59d353f723c1bdb64ca6aa", + "decimals": 18 + }, + { + "symbol": "MKR", + "chainId": 42, + "address": "0xef13C0c8abcaf5767160018d268f9697aE4f5375", + "decimals": 18 + }, + { + "symbol": "USDC", + "chainId": 42, + "address": "0x2F375e94FC336Cdec2Dc0cCB5277FE59CBf1cAe5", + "decimals": 6 + }, + { + "symbol": "REP", + "chainId": 42, + "address": "0x8c9e6c40d3402480ACE624730524fACC5482798c", + "decimals": 18 + }, + { + "symbol": "WBTC", + "chainId": 42, + "address": "0xe0C9275E44Ea80eF17579d33c55136b7DA269aEb", + "decimals": 18 + }, + { + "symbol": "SNX", + "chainId": 42, + "address": "0x86436BcE20258a6DcfE48C9512d4d49A30C4d8c4", + "decimals": 18 + }, + { + "symbol": "ANT", + "chainId": 42, + "address": "0x37f03a12241E9FD3658ad6777d289c3fb8512Bc9", + "decimals": 18 + }, + { + "symbol": "ZRX", + "chainId": 42, + "address": "0xccb0F4Cf5D3F97f4a55bb5f5cA321C3ED033f244", + "decimals": 18 + }, + { + "symbol": "COIN1", + "chainId": 42, + "address": "0x809F5A762e7b0CC75C42cd76098b85CB7BD2BA64", + "decimals": 18 + }, + { + "symbol": "COIN2", + "chainId": 42, + "address": "0x9866c4043bc6cf47eaf845c56f6ab221c204e0df", + "decimals": 8 + }, + { + "symbol": "COIN3", + "chainId": 42, + "address": "0x3D2097889B97A9eF23B3eA8FC10c626fbda29099", + "decimals": 18 + } + ] +} diff --git a/src/chains/ethereum/erc20_tokens_mainnet.json b/src/chains/ethereum/erc20_tokens_mainnet.json new file mode 100644 index 0000000000..d713c0d28f --- /dev/null +++ b/src/chains/ethereum/erc20_tokens_mainnet.json @@ -0,0 +1,37707 @@ +{ + "name": "CoinGecko", + "logoURI": "https://www.coingecko.com/assets/thumbnail-007177f3eca19695592f0b8b0eabbdae282b54154e1be912285c9034ea6cbaf2.png", + "keywords": [ + "defi" + ], + "timestamp": "2022-12-15T13:07:03.578+00:00", + "tokens": [ + { + "chainId": 1, + "address": "0xb5fe099475d3030dde498c3bb6f3854f762a48ad", + "name": "Fnk com", + "symbol": "FNK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13483/thumb/fnk.png?1609039834" + }, + { + "chainId": 1, + "address": "0x213c53c96a01a89e6dcc5683cf16473203e17513", + "name": "Defi Shopping Stake", + "symbol": "DSS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12602/thumb/DSS.png?1601002204" + }, + { + "chainId": 1, + "address": "0x354e514c135c8603f840ffadb4c33cde6d2a37e0", + "name": "Unilock Network", + "symbol": "UNL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23576/thumb/unilock-logo.png?1650449646" + }, + { + "chainId": 1, + "address": "0x8720c8429b78df262360b0f39917a03f9b894746", + "name": "Frenzy", + "symbol": "FZY", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/11096/thumb/frenzy-singapore.jpg?1588212527" + }, + { + "chainId": 1, + "address": "0xe4f6d46c244bb7cf3e218cdfb5c35cf9a4d9c920", + "name": "Donkey", + "symbol": "DONK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15330/thumb/donkey_logo.jpg?1620549377" + }, + { + "chainId": 1, + "address": "0x3130c55d6138809687a1bfbe0f0cc258df37b81e", + "name": "Coil", + "symbol": "COIL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27777/thumb/R1JruDU3_400x400.jpg?1665728793" + }, + { + "chainId": 1, + "address": "0xb48b7e5bf6563b3e0a85055821a83deb8cfc12f6", + "name": "NOVA", + "symbol": "NOVA", + "decimals": 3, + "logoURI": "https://assets.coingecko.com/coins/images/6545/thumb/N7d0x35q_400x400.jpg?1547042760" + }, + { + "chainId": 1, + "address": "0xd39a2cecba2657e125ba6a5c98ad2f6b6d7e83fd", + "name": "Luxo", + "symbol": "LUXO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25545/thumb/ik7UTHJR_400x400.jpg?1652327828" + }, + { + "chainId": 1, + "address": "0x08ad83d779bdf2bbe1ad9cc0f78aa0d24ab97802", + "name": "Robonomics Web Services", + "symbol": "RWS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11885/thumb/rws_logo.png?1595745253" + }, + { + "chainId": 1, + "address": "0xf552b656022c218c26dad43ad88881fc04116f76", + "name": "MORK", + "symbol": "MORK", + "decimals": 4, + "logoURI": "https://assets.coingecko.com/coins/images/12183/thumb/mork-logo.png?1597941710" + }, + { + "chainId": 1, + "address": "0x47b28f365bf4cb38db4b6356864bde7bc4b35129", + "name": "FNB Protocol", + "symbol": "FNB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8157/thumb/FNB_protocol.jpg?1555650192" + }, + { + "chainId": 1, + "address": "0xbe393aa534f82c0ffac31bf06a23e283acb3352b", + "name": "TokenAsset", + "symbol": "NTB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13710/thumb/8284.png?1611097251" + }, + { + "chainId": 1, + "address": "0xae697f994fc5ebc000f8e22ebffee04612f98a0d", + "name": "LGCY Network", + "symbol": "LGCY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12181/thumb/LGCY_network.jpg?1597926587" + }, + { + "chainId": 1, + "address": "0x47e67ba66b0699500f18a53f94e2b9db3d47437e", + "name": "PlayGame", + "symbol": "PXG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7242/thumb/pxg-coin_3x.png?1547043841" + }, + { + "chainId": 1, + "address": "0x07e3c70653548b04f0a75970c1f81b4cbbfb606f", + "name": "Agrello", + "symbol": "DLT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/900/thumb/delta_200x200.png?1616645398" + }, + { + "chainId": 1, + "address": "0x6bea7cfef803d1e3d5f7c0103f7ded065644e197", + "name": "Gamma Strategies", + "symbol": "GAMMA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21975/thumb/gamma-token-200.png?1640566576" + }, + { + "chainId": 1, + "address": "0xe99de844ef3ef72806cf006224ef3b813e82662f", + "name": "YouMinter", + "symbol": "UMINT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24564/thumb/xXlHazn__400x400.jpg?1648190269" + }, + { + "chainId": 1, + "address": "0x1500205f50bf3fd976466d0662905c9ff254fc9c", + "name": "BitBoost", + "symbol": "BBT", + "decimals": 4, + "logoURI": "https://assets.coingecko.com/coins/images/1194/thumb/bitboost.jpg?1547035224" + }, + { + "chainId": 1, + "address": "0x81dbc1c8e40c3095071949eda9800c2209a7279a", + "name": "Pupper", + "symbol": "PUP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16038/thumb/puppy.PNG?1622680387" + }, + { + "chainId": 1, + "address": "0x990e081a7b7d3ccba26a2f49746a68cc4ff73280", + "name": "KStarCoin", + "symbol": "KSC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1630/thumb/ksc.png?1547035850" + }, + { + "chainId": 1, + "address": "0xa0cf46eb152656c7090e769916eb44a138aaa406", + "name": "Spheroid Universe", + "symbol": "SPH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11968/thumb/spheroid-sph-icon-400x400.png?1597307957" + }, + { + "chainId": 1, + "address": "0xf2051511b9b121394fa75b8f7d4e7424337af687", + "name": "DAOhaus", + "symbol": "HAUS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14551/thumb/jN3kkqke_400x400.png?1616990048" + }, + { + "chainId": 1, + "address": "0xb045f7f363fe4949954811b113bd56d208c67b23", + "name": "Spider Tanks", + "symbol": "SILK", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/28057/thumb/SILK_Logo.png?1667295996" + }, + { + "chainId": 1, + "address": "0x78b039921e84e726eb72e7b1212bb35504c645ca", + "name": "Sether", + "symbol": "SETH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2101/thumb/sether.png?1548609212" + }, + { + "chainId": 1, + "address": "0x40e0a6ef9dbadfc83c5e0d15262feb4638588d77", + "name": "APE", + "symbol": "APE", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/20762/thumb/uXhjvO7.png?1637651257" + }, + { + "chainId": 1, + "address": "0x69fa0fee221ad11012bab0fdb45d444d3d2ce71c", + "name": "Thorstarter", + "symbol": "XRUNE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16835/thumb/thorstarter.jpg?1625279004" + }, + { + "chainId": 1, + "address": "0xdaab5e695bb0e8ce8384ee56ba38fa8290618e52", + "name": "CRDT", + "symbol": "CRDT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11859/thumb/image_%281%29.png?1600937373" + }, + { + "chainId": 1, + "address": "0xa10740ff9ff6852eac84cdcff9184e1d6d27c057", + "name": "Wrapped Gen 0 CryptoKitties", + "symbol": "WG0", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12870/thumb/wg0_logo.png?1603176705" + }, + { + "chainId": 1, + "address": "0xe692c8d72bd4ac7764090d54842a305546dd1de5", + "name": "ANY Blocknet", + "symbol": "ABLOCK", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/14869/thumb/blocknet.jpg?1618816800" + }, + { + "chainId": 1, + "address": "0xcf58b4e4863c0d085bd1c65b3f2932e261547fab", + "name": "Lorde Edge", + "symbol": "EDGELON", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/20006/thumb/edgelon.png?1636365734" + }, + { + "chainId": 1, + "address": "0x296233e84c1d7bff11121bf6d60f0ffa39c3f0cf", + "name": "No One", + "symbol": "NOONE", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/19393/thumb/logo-200x200_%289%29.png?1635150101" + }, + { + "chainId": 1, + "address": "0x12fd19dac0fab61bed5e0f09091b470c452d4d61", + "name": "Echoin", + "symbol": "EC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9354/thumb/L32_KzNQ_400x400.jpg?1566513096" + }, + { + "chainId": 1, + "address": "0x08f7be99ed83369541501d60f4e66f8e34c3f736", + "name": "Cryptoku", + "symbol": "CKU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25813/thumb/Cryptoku.png?1653988443" + }, + { + "chainId": 1, + "address": "0xa14ea0e11121e6e951e87c66afe460a00bcd6a16", + "name": "IdleDAI Risk Adjusted ", + "symbol": "IDLEDAISAFE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11929/thumb/idledai-safe.png?1596263241" + }, + { + "chainId": 1, + "address": "0x0ff5a8451a839f5f0bb3562689d9a44089738d11", + "name": "Dopex Rebate", + "symbol": "RDPX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16659/thumb/rDPX_200x200_Coingecko.png?1624614475" + }, + { + "chainId": 1, + "address": "0x48be867b240d2ffaff69e0746130f2c027d8d3d2", + "name": "Elevate", + "symbol": "ELE", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/13802/thumb/elevate-logo.png?1611980666" + }, + { + "chainId": 1, + "address": "0xbbcd3e4eb43aa7f3f57286da31333d53b24d0d6a", + "name": "Laro", + "symbol": "LRC", + "decimals": 2, + "logoURI": "https://assets.coingecko.com/coins/images/25925/thumb/lorologo.png?1654673196" + }, + { + "chainId": 1, + "address": "0x5022cb6d39001cdd6f996e8a66500c86128f1cc4", + "name": "Shiwa", + "symbol": "SHIWA", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/28070/thumb/shiwa200.png?1667376980" + }, + { + "chainId": 1, + "address": "0x2b100be232f90dd33d3b6e4b9ad70d1e8ac0e208", + "name": "MarX", + "symbol": "MARX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16258/thumb/marx.PNG?1623402476" + }, + { + "chainId": 1, + "address": "0x187eff9690e1f1a61d578c7c492296eaab82701a", + "name": "Moar Finance", + "symbol": "MOAR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15057/thumb/moar.PNG?1619589388" + }, + { + "chainId": 1, + "address": "0xb3bace433288645114fe8e8aa91f87659cbf665b", + "name": "Wallet Plus X", + "symbol": "WPX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10302/thumb/WPX_LOGO_200X200.png?1577693149" + }, + { + "chainId": 1, + "address": "0x19fdc290974b574065ff8db4303a0b76aecf223e", + "name": "AGPC", + "symbol": "AGPC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17772/thumb/AGPC.jpg?1629441589" + }, + { + "chainId": 1, + "address": "0xde4c5a791913838027a2185709e98c5c6027ea63", + "name": "General Attention Currency", + "symbol": "XAC", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/9203/thumb/-LF1XcKS_400x400.png?1565131564" + }, + { + "chainId": 1, + "address": "0xbb70adbe39408cb1e5258702ea8ada7c81165b73", + "name": "AnteDAO", + "symbol": "ANTE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25855/thumb/ante_symbol.png?1654151638" + }, + { + "chainId": 1, + "address": "0x3a92bd396aef82af98ebc0aa9030d25a23b11c6b", + "name": "Tokenbox", + "symbol": "TBX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2644/thumb/tokenbox.png?1547036822" + }, + { + "chainId": 1, + "address": "0x81995ff7aee5c780192b47e0b42a7a86692d1415", + "name": "Speedcash", + "symbol": "SCS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2929/thumb/scs_logo_200x200.png?1606439865" + }, + { + "chainId": 1, + "address": "0x2aeccb42482cc64e087b6d2e5da39f5a7a7001f8", + "name": "Ruler Protocol", + "symbol": "RULER", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14183/thumb/ruler_token.png?1614821796" + }, + { + "chainId": 1, + "address": "0xcb4d749fd1ff081d6fea3bd978de87603e098e63", + "name": "Jenny DAO V2", + "symbol": "JENNY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28116/thumb/jenny.png?1667554356" + }, + { + "chainId": 1, + "address": "0xf1376bcef0f78459c0ed0ba5ddce976f1ddf51f4", + "name": "Universal ETH", + "symbol": "UNIETH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28477/thumb/uniETH_200.png?1671004791" + }, + { + "chainId": 1, + "address": "0x0d8775f648430679a709e98d2b0cb6250d2887ef", + "name": "Basic Attention", + "symbol": "BAT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/677/thumb/basic-attention-token.png?1547034427" + }, + { + "chainId": 1, + "address": "0x37e8789bb9996cac9156cd5f5fd32599e6b91289", + "name": "AidCoin", + "symbol": "AID", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2144/thumb/aid.png?1547036449" + }, + { + "chainId": 1, + "address": "0xecacab6725ac1711d97e55df35d525b863b8b9f7", + "name": "Trillion", + "symbol": "TT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17216/thumb/EC65-CF15-3575-41-C7-8-D2-F-0-B2-FDC82-DF96.jpg?1626877437" + }, + { + "chainId": 1, + "address": "0x9cf77be84214beb066f26a4ea1c38ddcc2afbcf7", + "name": "Meta Shiba", + "symbol": "MSHIBA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19962/thumb/mshiba.png?1636342508" + }, + { + "chainId": 1, + "address": "0x96ef7f9cf1b6ecc66e482a6598fc9f009e9277da", + "name": "Pomi", + "symbol": "POMI", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/22428/thumb/pomilogo.png?1641821967" + }, + { + "chainId": 1, + "address": "0x36d076480eb31c717137f400f9761a5151124c4b", + "name": "FLYPE DAO", + "symbol": "FLYP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27283/thumb/FLYPE_LOGO_200X200.jpg?1663140374" + }, + { + "chainId": 1, + "address": "0x043c308bb8a5ae96d0093444be7f56459f1340b1", + "name": "SumSwap", + "symbol": "SUM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17586/thumb/sunswap.PNG?1628570741" + }, + { + "chainId": 1, + "address": "0x66e5d4063219a54a8244078affb49e23982d9640", + "name": "UZURAS", + "symbol": "UZZ", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/7306/thumb/uzura.png?1572096519" + }, + { + "chainId": 1, + "address": "0x398dc1c12a268b657abd0cd88999156228acb91a", + "name": "Peacockcoin ETH ", + "symbol": "PEKC", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/18373/thumb/pekc.jpg?1631679728" + }, + { + "chainId": 1, + "address": "0x672a1ad4f667fb18a333af13667aa0af1f5b5bdd", + "name": "Verify", + "symbol": "CRED", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1349/thumb/verify.png?1548759755" + }, + { + "chainId": 1, + "address": "0x46e98ffe40e408ba6412beb670507e083c8b95ff", + "name": "Primate", + "symbol": "PRIMATE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25245/thumb/benji-logo-512x512.png?1651028701" + }, + { + "chainId": 1, + "address": "0x66bcd0c22bb15cd1ba7199c7a383dc89528f4427", + "name": "Buhund", + "symbol": "BUH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27835/thumb/CG.jpeg?1665996180" + }, + { + "chainId": 1, + "address": "0xc949fc82a15964fb5b97e5cf8f9ffed139086821", + "name": "PGPay", + "symbol": "PGPAY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6351/thumb/pgpay-logo.jpg?1582515723" + }, + { + "chainId": 1, + "address": "0x24ae124c4cc33d6791f8e8b63520ed7107ac8b3e", + "name": "Empty Set Share", + "symbol": "ESS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17481/thumb/photo_2021-08-03_03-26-29.png?1627953584" + }, + { + "chainId": 1, + "address": "0x1095d4a344a4760900071025d6103a17a361abad", + "name": "Erzurumspor Token", + "symbol": "ERZ", + "decimals": 2, + "logoURI": "https://assets.coingecko.com/coins/images/24809/thumb/17059.png?1649024114" + }, + { + "chainId": 1, + "address": "0x514910771af9ca656af840dff83e8264ecf986ca", + "name": "Chainlink", + "symbol": "LINK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/877/thumb/chainlink-new-logo.png?1547034700" + }, + { + "chainId": 1, + "address": "0x4d224452801aced8b2f0aebe155379bb5d594381", + "name": "ApeCoin", + "symbol": "APE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24383/thumb/apecoin.jpg?1647476455" + }, + { + "chainId": 1, + "address": "0x8be6a6158f6b8a19fe60569c757d16e546c2296d", + "name": "YFF Finance", + "symbol": "YFF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12578/thumb/5ymP5emT_400x400.jpg?1600913790" + }, + { + "chainId": 1, + "address": "0x3a82d3111ab5faf39d847d46023d9090261a658f", + "name": "Tycoon", + "symbol": "TYC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15165/thumb/coingecko.png?1622177525" + }, + { + "chainId": 1, + "address": "0x07bac35846e5ed502aa91adf6a9e7aa210f2dcbe", + "name": "Sifchain", + "symbol": "EROWAN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14044/thumb/EROWAN.png?1614656300" + }, + { + "chainId": 1, + "address": "0xee0f286776639cd363da810daf3e0623f82576b0", + "name": "Lung Protocol", + "symbol": "L2P", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11799/thumb/64280570.png?1594359841" + }, + { + "chainId": 1, + "address": "0x6d0f5149c502faf215c89ab306ec3e50b15e2892", + "name": "Portion", + "symbol": "PRT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13617/thumb/OKeO2FI.png?1610327038" + }, + { + "chainId": 1, + "address": "0x19b58d95929586ad750893caad43e77aa6e8ce9e", + "name": "CelCoin", + "symbol": "CELC", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/6078/thumb/celcoin-logo.png?1547042055" + }, + { + "chainId": 1, + "address": "0x73d7c860998ca3c01ce8c808f5577d94d545d1b4", + "name": "IX Swap", + "symbol": "IXS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18069/thumb/ixswap.PNG?1630375152" + }, + { + "chainId": 1, + "address": "0x214feebda3ae6bb842bd17d91a0f346eebcd7898", + "name": "Autentica", + "symbol": "AUT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27154/thumb/coingecko_200x200.png?1662205740" + }, + { + "chainId": 1, + "address": "0xe2fe5e7e206e7b46cad6a5146320e5b4b9a18e97", + "name": "Bitcomo", + "symbol": "BM", + "decimals": 2, + "logoURI": "https://assets.coingecko.com/coins/images/4127/thumb/Webp.net-resizeimage_%2828%29.png?1547039349" + }, + { + "chainId": 1, + "address": "0xef7a985e4ff9b5dccd6eddf58577486887288711", + "name": "HOMT", + "symbol": "HOMT", + "decimals": 15, + "logoURI": "https://assets.coingecko.com/coins/images/11597/thumb/HOM-Token-Logo.jpg?1591668252" + }, + { + "chainId": 1, + "address": "0xe9fa21e671bcfb04e6868784b89c19d5aa2424ea", + "name": "Eurocoin ECTE", + "symbol": "ECTE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7634/thumb/logotoken200x200.png?1550742362" + }, + { + "chainId": 1, + "address": "0x6d6554939d646f274d0fc3cecb7dab5d76bc908f", + "name": "Morphswap", + "symbol": "MS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28114/thumb/mslogo200.png?1668056773" + }, + { + "chainId": 1, + "address": "0x3ebb4a4e91ad83be51f8d596533818b246f4bee1", + "name": "Signata", + "symbol": "SATA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14704/thumb/logo.png?1617853256" + }, + { + "chainId": 1, + "address": "0x6769d86f9c430f5ac6d9c861a0173613f1c5544c", + "name": "KoaCombat", + "symbol": "KOACOMBAT", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/23827/thumb/jGYAi2LB_400x400.jpg?1645515278" + }, + { + "chainId": 1, + "address": "0xfffffffff15abf397da76f1dcc1a1604f45126db", + "name": "Falconswap", + "symbol": "FSW", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12256/thumb/falconswap.png?1598534184" + }, + { + "chainId": 1, + "address": "0x0829d2d5cc09d3d341e813c821b0cfae272d9fb2", + "name": "Social Rocket", + "symbol": "ROCKS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12994/thumb/logo-256x256-1.png?1604759401" + }, + { + "chainId": 1, + "address": "0xe9966c1184f8552fcb16f65addba9dd08fe8f4ea", + "name": "MY Ceremonial Event", + "symbol": "MYCE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19182/thumb/BuoVrgpA_400x400.png?1634613857" + }, + { + "chainId": 1, + "address": "0x4f2ab9d03ce5b8d0d3bca09259c78005d2775e08", + "name": "Mewtwo Inu", + "symbol": "MEWTWO", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/19562/thumb/mewtwo_update.png?1635422500" + }, + { + "chainId": 1, + "address": "0xed0889f7e1c7c7267407222be277e1f1ef4d4892", + "name": "MELX", + "symbol": "MEL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15028/thumb/melx.jpeg?1637156878" + }, + { + "chainId": 1, + "address": "0xbf682bd31a615123d28d611b38b0ae3d2b675c2c", + "name": "OT PENDLE ETH", + "symbol": "OT-PE-29DEC2022", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18136/thumb/ot-pendle_eth_slp.573d443c.png?1630640424" + }, + { + "chainId": 1, + "address": "0x1f31dd60b84ea2a273cfc56876437e069ae80afd", + "name": "Shinji Inu", + "symbol": "SHINJI", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/22846/thumb/Attachment_1645539736.png?1646300191" + }, + { + "chainId": 1, + "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "name": "USD Coin", + "symbol": "USDC", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/6319/thumb/USD_Coin_icon.png?1547042389" + }, + { + "chainId": 1, + "address": "0x70fadbe1f2cccbaf98ac88fdcf94a0509a48e46d", + "name": "Green Light", + "symbol": "GL", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/11015/thumb/greenlight.PNG?1587114464" + }, + { + "chainId": 1, + "address": "0xe0c8087ce1a17bdd5d6c12eb52f8d7eff7791987", + "name": "Linfinity", + "symbol": "LFC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5364/thumb/Linfinity-logo.jpg?1547040963" + }, + { + "chainId": 1, + "address": "0x00d8318e44780edeefcf3020a5448f636788883c", + "name": "dAppstore", + "symbol": "DAPPX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15780/thumb/large-logo.png?1621841062" + }, + { + "chainId": 1, + "address": "0x1dea979ae76f26071870f824088da78979eb91c8", + "name": "SPINDLE", + "symbol": "SPD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3714/thumb/spindle-core-logo.png?1547038741" + }, + { + "chainId": 1, + "address": "0x7d1356bfcaa08af4ab0d643af1b6b4cd75ccc2d0", + "name": "Arcade Canine", + "symbol": "OKINU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27748/thumb/SwJ8JwH.png?1665645891" + }, + { + "chainId": 1, + "address": "0xad7ca17e23f13982796d27d1e6406366def6ee5f", + "name": "rHEGIC2", + "symbol": "RHEGIC2", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13969/thumb/ezgif-4-b5306690cb32.jpg?1613385300" + }, + { + "chainId": 1, + "address": "0x76dbcba41e11784bfa95ce30e529fa533c3fa4ad", + "name": "Smart Marketing", + "symbol": "SMT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21905/thumb/smt-logo.png?1640234993" + }, + { + "chainId": 1, + "address": "0xa8eda9d4aee0eb882f8752c6ba7e16d9233c9ad2", + "name": "LevelApp", + "symbol": "LVL", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/5588/thumb/n5DaGBqY_400x400.jpg?1559789019" + }, + { + "chainId": 1, + "address": "0x155ff1a85f440ee0a382ea949f24ce4e0b751c65", + "name": "Behodler", + "symbol": "EYE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12804/thumb/etherscan-eye-2-1.png?1629881415" + }, + { + "chainId": 1, + "address": "0xcdd2fa4c2b36a1a14edc41da1c9f9b2cb9f981aa", + "name": "Duzce", + "symbol": "DUZCE", + "decimals": 2, + "logoURI": "https://assets.coingecko.com/coins/images/25979/thumb/20569.png?1655113117" + }, + { + "chainId": 1, + "address": "0xe74dc43867e0cbeb208f1a012fc60dcbbf0e3044", + "name": "DeFIRE", + "symbol": "CWAP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15722/thumb/defire.PNG?1621635373" + }, + { + "chainId": 1, + "address": "0xeadd9b69f96140283f9ff75da5fd33bcf54e6296", + "name": "Crypto Carbon Energy", + "symbol": "CYCE", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/17806/thumb/cyceicon.png?1629464571" + }, + { + "chainId": 1, + "address": "0x1fbd3df007eb8a7477a1eab2c63483dcc24effd6", + "name": "Scaleswap", + "symbol": "SCA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16360/thumb/thumbnail_1170823958_vertical_logo_lateral_radiance.png?1623810516" + }, + { + "chainId": 1, + "address": "0x1e05f68b29b286fb3bbad3c688d7e2abda549b80", + "name": "Picipo", + "symbol": "PICIPO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18758/thumb/kEpQ95VG_400x400.jpg?1633350594" + }, + { + "chainId": 1, + "address": "0x8feef860e9fa9326ff9d7e0058f637be8579cc29", + "name": "Timers", + "symbol": "IPM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12649/thumb/logo200x200_%282%29.png?1601421807" + }, + { + "chainId": 1, + "address": "0xe0c05ec44775e4ad62cdc2eecdf337aa7a143363", + "name": "Mancium", + "symbol": "MANC", + "decimals": 2, + "logoURI": "https://assets.coingecko.com/coins/images/25084/thumb/IKpuMYuGaMHEE0nrDUwpf6DqLQ5zTfZ1sak6ZqeIe2snV4GqQbh4Eic6hHcPl_OpBmlhcrRJ5kqoGzwB1CezMiDYnwR6rDT08_l8zb3-y3aPhTv7_0x5g4IO9JpQXDViEIqTZ7gYzTXqkcP6MH_uCFxQF-l-ohR0-FdT8O-ZTmNUKm--OuqEf9DVa-miAFp4t2pN-kcJ5Jv8woPj51yk-zna8c.jpg?1650265130" + }, + { + "chainId": 1, + "address": "0x0258f474786ddfd37abce6df6bbb1dd5dfc4434a", + "name": "Orion Protocol", + "symbol": "ORN", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/11841/thumb/orion_logo.png?1594943318" + }, + { + "chainId": 1, + "address": "0xc278041fdd8249fe4c1aad1193876857eea3d68c", + "name": "IdleTUSD Best Yield ", + "symbol": "IDLETUSDYIELD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11935/thumb/idletusdv3mMaxyield_32.png?1596263719" + }, + { + "chainId": 1, + "address": "0x95b4ef2869ebd94beb4eee400a99824bf5dc325b", + "name": "cMKR", + "symbol": "CMKR", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/17528/thumb/cmkr.PNG?1628122490" + }, + { + "chainId": 1, + "address": "0xc8c424b91d8ce0137bab4b832b7f7d154156ba6c", + "name": "apM Coin", + "symbol": "APM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10069/thumb/PvDCvh5h_400x400.png?1575460334" + }, + { + "chainId": 1, + "address": "0x29cbd0510eec0327992cd6006e63f9fa8e7f33b7", + "name": "Tidal Finance", + "symbol": "TIDAL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14460/thumb/Tidal-mono.png?1616233894" + }, + { + "chainId": 1, + "address": "0x9b8c184439245b7bb24a5b2ec51ec81c39589e8a", + "name": "KIMEX", + "symbol": "KMX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8062/thumb/XSsfMr8.png?1554083098" + }, + { + "chainId": 1, + "address": "0x13b1e6b036ac0a1495f876313f92a0706cc10871", + "name": "ShipItPro", + "symbol": "SHPP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14687/thumb/photo_2020-12-28_16-37-33.jpg?1617785737" + }, + { + "chainId": 1, + "address": "0xa350da05405cc204e551c4eed19c3039646528d5", + "name": "Blocksport", + "symbol": "BSPT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23735/thumb/lUjOcgBNs1fSMbGND5bmUMSKaVYybK5oDblEFgqX5Tvcg89_U3yzRRHzcR5UMpzObjlps5ZpumoYjtP9R2ddgsUkP0xyw3p5R_VMAh5qIQfUu8IGicH2xEzzwHM5ayPOh8PaO_BEFxjvYlYpt1Fknz6OdOhQrTBhh8kBfG0De1HEGZLe7dJGKnoLRzlyYkzYcIimMy-rzp2swB.jpg?1645174474" + }, + { + "chainId": 1, + "address": "0x6cf9464b2c628db187f2bc1ddc0c43fda72efdd5", + "name": "Sivasspor", + "symbol": "SIV", + "decimals": 2, + "logoURI": "https://assets.coingecko.com/coins/images/22043/thumb/16528.png?1640674444" + }, + { + "chainId": 1, + "address": "0x36ce7a52cda404b8fa87a98d0d17ec7dd0b144ed", + "name": "Pinkslip Finance", + "symbol": "PSLIP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17960/thumb/MgCiNzk.png?1629943128" + }, + { + "chainId": 1, + "address": "0xc237868a9c5729bdf3173dddacaa336a0a5bb6e0", + "name": "Wagerr", + "symbol": "WGR", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/759/thumb/syGKmAT.png?1619597241" + }, + { + "chainId": 1, + "address": "0x70edf1c215d0ce69e7f16fd4e6276ba0d99d4de7", + "name": "CHEQD Network", + "symbol": "CHEQ", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/20855/thumb/79901197.png?1637791407" + }, + { + "chainId": 1, + "address": "0xc3ffbe26e9446ac52008ffc8c1191d60a12bdc48", + "name": "Medifakt", + "symbol": "FAKT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25248/thumb/fxOi9ZYI_400x400.png?1651031310" + }, + { + "chainId": 1, + "address": "0x4abb9cc67bd3da9eb966d1159a71a0e68bd15432", + "name": "KelVPN", + "symbol": "KEL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14851/thumb/logokelvpn200x200.png?1618797379" + }, + { + "chainId": 1, + "address": "0xd26a9c3437f7d121098c8c05c7413f5cc70bb070", + "name": "Azuma Coin", + "symbol": "AZUM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10483/thumb/WDncHJ5.png?1580161760" + }, + { + "chainId": 1, + "address": "0x5aaefe84e0fb3dd1f0fcff6fa7468124986b91bd", + "name": "Evedo", + "symbol": "EVED", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7721/thumb/Variations-09.png?1549979992" + }, + { + "chainId": 1, + "address": "0x9d47894f8becb68b9cf3428d256311affe8b068b", + "name": "Rope", + "symbol": "ROPE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12567/thumb/Rope_Icon.jpg?1604038203" + }, + { + "chainId": 1, + "address": "0xa0b73e1ff0b80914ab6fe0444e65848c4c34450b", + "name": "Cronos", + "symbol": "CRO", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/7310/thumb/cro_token_logo.png?1669699773" + }, + { + "chainId": 1, + "address": "0xe0cca86b254005889ac3a81e737f56a14f4a38f5", + "name": "Alta Finance", + "symbol": "ALTA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18713/thumb/AFN-token-Altafin-200.png?1633079552" + }, + { + "chainId": 1, + "address": "0xd81b71cbb89b2800cdb000aa277dc1491dc923c3", + "name": "NFTMart", + "symbol": "NMT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15811/thumb/NFTMART.png?1624962351" + }, + { + "chainId": 1, + "address": "0x62359ed7505efc61ff1d56fef82158ccaffa23d7", + "name": "cVault finance", + "symbol": "CORE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12635/thumb/cvault.finance_logo.png?1601353499" + }, + { + "chainId": 1, + "address": "0xacf3d402e5e2c3edd5b8129e966017d293f12a4c", + "name": "BoxAxis", + "symbol": "BAXS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7732/thumb/MaUNF_dJFGQujn1_y5zYWG_U1NCglt4yBsjyftdpPr5H7LqTsu0XEqcKnnRWcjTUA0DsOLCr1Ekhe37__Wpx83X29R-nbs0UTxz5eElpzw7Mcl0y8-ReYLck8dNYAxJpXG1k48pA4RousepQFj7H9JKq09h5Z4EzBwnJf2P6qFWALryESUUmAOmtByKUD5WoCWI4DIlRorsWSbbl6.jpg?1550108268" + }, + { + "chainId": 1, + "address": "0x4ca0654f4fc1025cf1a17b7459c20ac0479522ad", + "name": "Rigel Finance", + "symbol": "RIGEL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13674/thumb/logo-200x200_%282%29.png?1610682780" + }, + { + "chainId": 1, + "address": "0xd796b8eff23d5c4c71f43c99ffd7d8a3119f7475", + "name": "Metaverse Exchange", + "symbol": "METACEX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21179/thumb/metacex.png?1638707090" + }, + { + "chainId": 1, + "address": "0x87f5e8c3425218837f3cb67db941af0c01323e56", + "name": "BitCoin One", + "symbol": "BTCONE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5413/thumb/b-one.png?1574907888" + }, + { + "chainId": 1, + "address": "0x166f1a7ecae00bd43876a25b10a63c575e05c0e7", + "name": "VERA Exchange", + "symbol": "VERA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9766/thumb/hn9LRFGrVzyuPJrDIrVeCdUN2IfxIwWDk6mM5U9cGm_b0oPyENjOrXzTJ7vwHE65PIzM_H4nGlcHJHPBV5qHoQ8cfwRSud89RJHUngAGMnYIoLZ-UzEk9HuspfOmNu2Finm8RZW-UIM1_Jykw3Cj743iNPqjsqNxkuazLsa0h76oIwf61Sn3h9-IFiwgVLXyfRVuCO0bTY6q_aLJLwzE-P1OALNJfpLSVY52ygRlDGMZS1qj.jpg?1575358608" + }, + { + "chainId": 1, + "address": "0xbc19712feb3a26080ebf6f2f7849b417fdd792ca", + "name": "BoringDAO", + "symbol": "BORING", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16429/thumb/Tjq3pXEH_400x400.jpg?1623997009" + }, + { + "chainId": 1, + "address": "0xaec65404ddc3af3c897ad89571d5772c1a695f22", + "name": "Phoenix Finance", + "symbol": "PHX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17675/thumb/phx_logo.png?1628832432" + }, + { + "chainId": 1, + "address": "0xa6e7dc135bdf4b3fee7183eab2e87c0bb9684783", + "name": "BIGOCOIN", + "symbol": "BIGO", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/10564/thumb/Bigocoin_1200px.jpg?1597463586" + }, + { + "chainId": 1, + "address": "0xb44377b74ef1773639b663d0754cb8410a847d02", + "name": "Dream", + "symbol": "DREAM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24139/thumb/image0.jpeg?1659000537" + }, + { + "chainId": 1, + "address": "0xfd09911130e6930bf87f2b0554c44f400bd80d3e", + "name": "EthicHub", + "symbol": "ETHIX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3031/thumb/ETHIX_icon_256x256-256.png?1622195164" + }, + { + "chainId": 1, + "address": "0x7aa46a51f717404d944051af3075bbcb49b2288b", + "name": "Genebank", + "symbol": "GNBT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15963/thumb/Gene-Bank-500px.jpg?1622519558" + }, + { + "chainId": 1, + "address": "0x2af1df3ab0ab157e1e2ad8f88a7d04fbea0c7dc6", + "name": "Bankless BED Index", + "symbol": "BED", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17175/thumb/BED_Logo_-_No_border.png?1626833695" + }, + { + "chainId": 1, + "address": "0xe4f726adc8e89c6a6017f01eada77865db22da14", + "name": "PieDAO Balanced Crypto Pie", + "symbol": "BCP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13560/thumb/BCP.png?1609813753" + }, + { + "chainId": 1, + "address": "0xa13f0743951b4f6e3e3aa039f682e17279f52bc3", + "name": "Sentinel Chain", + "symbol": "SENC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2960/thumb/sentinel-chain.jpg?1547037201" + }, + { + "chainId": 1, + "address": "0xbc6669e7914a2b327ae428184086d8ac88d74efc", + "name": "Car Coin", + "symbol": "CCM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17119/thumb/CarCoin_icon_vector.png?1626356048" + }, + { + "chainId": 1, + "address": "0x6781a0f84c7e9e846dcb84a9a5bd49333067b104", + "name": "Zap", + "symbol": "ZAP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2180/thumb/zap.png?1547036476" + }, + { + "chainId": 1, + "address": "0xcd2828fc4d8e8a0ede91bb38cf64b1a81de65bf6", + "name": "Oddz", + "symbol": "ODDZ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14421/thumb/NewLogo.png?1645171454" + }, + { + "chainId": 1, + "address": "0xb37a769b37224449d92aac57de379e1267cd3b00", + "name": "Cova Unity", + "symbol": "COVA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4707/thumb/covalent.jpg?1547040005" + }, + { + "chainId": 1, + "address": "0x9e7cb236e43c4bd042fe463df6a175d4479ee186", + "name": "Halving", + "symbol": "HALV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12085/thumb/Halv-logo-200x200.png?1597009175" + }, + { + "chainId": 1, + "address": "0x5d64d850c8368008afb39224e92ad0dceff3cf38", + "name": "MINDOL", + "symbol": "MIN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6366/thumb/mindol-logo.png?1547042468" + }, + { + "chainId": 1, + "address": "0x29239242a83479a4074cb1c9e2a3e6705a4a4455", + "name": "Tozex", + "symbol": "TOZ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13772/thumb/Logo_toz_200x200.png?1611698823" + }, + { + "chainId": 1, + "address": "0xff44b937788215eca197baaf9af69dbdc214aa04", + "name": "Rocki", + "symbol": "ROCKI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13465/thumb/rocki_logo.png?1608786767" + }, + { + "chainId": 1, + "address": "0x1ef6a7e2c966fb7c5403efefde38338b1a95a084", + "name": "Shield SLD ", + "symbol": "SLD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16170/thumb/SLD_TOKEN.png?1656907214" + }, + { + "chainId": 1, + "address": "0x6f87d756daf0503d08eb8993686c7fc01dc44fb1", + "name": "Unitrade", + "symbol": "TRADE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11982/thumb/unitrade.PNG?1597009487" + }, + { + "chainId": 1, + "address": "0x74603e780545d02c4257e7d2be19c74de7be1952", + "name": "ETG Finance", + "symbol": "ETGF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13032/thumb/etgf_logo.png?1604482450" + }, + { + "chainId": 1, + "address": "0x130914e1b240a7f4c5d460b7d3a2fd3846b576fa", + "name": "Aureus Nummus Gold", + "symbol": "ANG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12134/thumb/AureusNummusGold-logo.png?1597462266" + }, + { + "chainId": 1, + "address": "0x46943113ae84e732bb510b5f7686d8b76ff56774", + "name": "UMI", + "symbol": "UMI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16953/thumb/umi.PNG?1625793521" + }, + { + "chainId": 1, + "address": "0xa1e770be76bde604f8ebb66f640250a787b9422b", + "name": "Anduschain", + "symbol": "DEB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20842/thumb/DEB.png?1637743593" + }, + { + "chainId": 1, + "address": "0xf70a642bd387f94380ffb90451c2c81d4eb82cbc", + "name": "Starbase", + "symbol": "STAR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1449/thumb/starbase.png?1548610771" + }, + { + "chainId": 1, + "address": "0x12b19d3e2ccc14da04fae33e63652ce469b3f2fd", + "name": "GridPlus OLD ", + "symbol": "GRID", + "decimals": 12, + "logoURI": "https://assets.coingecko.com/coins/images/1106/thumb/grid.png?1547743150" + }, + { + "chainId": 1, + "address": "0x727e8260877f8507f8d61917e9778b6af8491e63", + "name": "Charizard Inu", + "symbol": "CHARIZARD", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/19415/thumb/QXjLCDl.png?1635212769" + }, + { + "chainId": 1, + "address": "0x81824663353a9d29b01b2de9dd9a2bb271d298cd", + "name": "Bitcoin Volatility Token", + "symbol": "BVOL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11056/thumb/download_%2810%29.png?1587641855" + }, + { + "chainId": 1, + "address": "0xb3e6ee8d2c586fa03ab70aef96b8ae6d12d64ec7", + "name": "hiFIDENZA", + "symbol": "HIFIDENZA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28237/thumb/hifidenza.png?1668579144" + }, + { + "chainId": 1, + "address": "0xc37e8a31ba2d110c12f09f0239954a68b00bc599", + "name": "EUB Chain", + "symbol": "EUBC", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/6547/thumb/j2Lj7uGH_400x400.jpg?1547042762" + }, + { + "chainId": 1, + "address": "0x524ebc93beef838f70b4ae54b675d3e971d5884e", + "name": "Challenge Coin", + "symbol": "HERO", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/26567/thumb/bug-CC-200.png?1658812509" + }, + { + "chainId": 1, + "address": "0xbdbc2a5b32f3a5141acd18c39883066e4dab9774", + "name": "Emirex", + "symbol": "EMRX", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/9507/thumb/download.png?1568589320" + }, + { + "chainId": 1, + "address": "0x4332f8a38f14bd3d8d1553af27d7c7ac6c27278d", + "name": "Ape Finance", + "symbol": "APEFI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25625/thumb/APEFI.png?1652857977" + }, + { + "chainId": 1, + "address": "0xc0ea83113038987d974fe667831a36e442e661e7", + "name": "Libfx", + "symbol": "LIBFX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12225/thumb/libfx.png?1598306252" + }, + { + "chainId": 1, + "address": "0x4d67edef87a5ff910954899f4e5a0aaf107afd42", + "name": "BlueSparrow OLD ", + "symbol": "BLUESPARROW", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/19995/thumb/bluesparrow.png?1636361716" + }, + { + "chainId": 1, + "address": "0x92a5b04d0ed5d94d7a193d1d334d3d16996f4e13", + "name": "Eristica", + "symbol": "ERT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6485/thumb/6.jpg?1595305071" + }, + { + "chainId": 1, + "address": "0xfcc5c47be19d06bf83eb04298b026f81069ff65b", + "name": "Yearn CRV", + "symbol": "YCRV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27622/thumb/yearncrvnew_32.png?1664881722" + }, + { + "chainId": 1, + "address": "0xfec0cf7fe078a500abf15f1284958f22049c2c7e", + "name": "Maecenas", + "symbol": "ART", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1025/thumb/maecenas.png?1547034953" + }, + { + "chainId": 1, + "address": "0xe5867608b51a2c9c78b9587355cc093140a49b0a", + "name": "Speed Mining Service", + "symbol": "SMS", + "decimals": 3, + "logoURI": "https://assets.coingecko.com/coins/images/1807/thumb/speed-mining-service.png?1548610827" + }, + { + "chainId": 1, + "address": "0xebe807bfdf8b2092e36e964c75463a8aaa642139", + "name": "New Paradigm Assets Solution", + "symbol": "NPAS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24660/thumb/S3i9bI6n_400x400.jpg?1648529725" + }, + { + "chainId": 1, + "address": "0xf14b9adf84812ba463799357f4dc716b4384010b", + "name": "Pension Plan", + "symbol": "PP", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/19670/thumb/pensionplan-logo-200CG2.png?1635738403" + }, + { + "chainId": 1, + "address": "0x4c2e59d098df7b6cbae0848d66de2f8a4889b9c3", + "name": "Fodl Finance", + "symbol": "FODL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19040/thumb/Fodl_Symbol_Gradient.png?1651644153" + }, + { + "chainId": 1, + "address": "0x167e2a574669b0eeb552aaf3da47c728cb348a41", + "name": "Spartan", + "symbol": "300", + "decimals": 7, + "logoURI": "https://assets.coingecko.com/coins/images/13371/thumb/spartan300-200x200.png?1607986424" + }, + { + "chainId": 1, + "address": "0xf519381791c03dd7666c142d4e49fd94d3536011", + "name": "Asia Coin", + "symbol": "ASIA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18589/thumb/Ou7mp_R1TQ5B9vsBiZ8oQnSv36M6hiA2hESxV_7YSw0.png?1632556422" + }, + { + "chainId": 1, + "address": "0xeffea57067e02999fdcd0bb45c0f1071a29472d9", + "name": "Zantepay", + "symbol": "ZANTEPAY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7122/thumb/984cSZaC_400x400.jpg?1547043619" + }, + { + "chainId": 1, + "address": "0xdd16ec0f66e54d453e6756713e533355989040e4", + "name": "Tokenomy", + "symbol": "TEN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2286/thumb/logo_%281%29.png?1604543144" + }, + { + "chainId": 1, + "address": "0xe6b7743e2b9aa2d0a9b163c4e69186abb57817d9", + "name": "Kuky Star", + "symbol": "KUKY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7465/thumb/images_%283%29.jpeg?1547622295" + }, + { + "chainId": 1, + "address": "0xd0cd466b34a24fcb2f87676278af2005ca8a78c4", + "name": "Popcorn", + "symbol": "POP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21438/thumb/pop-1_200_x_200.png?1662607611" + }, + { + "chainId": 1, + "address": "0xe0b9bcd54bf8a730ea5d3f1ffce0885e911a502c", + "name": "ZUM", + "symbol": "ZUM", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/9721/thumb/zum256x256.png?1571264005" + }, + { + "chainId": 1, + "address": "0x80bb277f4355a43cdbb86a82f9876c946476d9eb", + "name": "DogDeFiCoin", + "symbol": "DOGDEFI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12912/thumb/dogdefi_logo.jpg?1603425386" + }, + { + "chainId": 1, + "address": "0x146d8d942048ad517479c9bab1788712af180fde", + "name": "MIB Coin", + "symbol": "MIB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5691/thumb/mibcoin.png?1547041559" + }, + { + "chainId": 1, + "address": "0x7db5af2b9624e1b3b4bb69d6debd9ad1016a58ac", + "name": "Volt Inu", + "symbol": "VOLT", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/25201/thumb/logo200.png?1653635992" + }, + { + "chainId": 1, + "address": "0x1a403e1c96792dfedb8232cf56400eb72ab95acb", + "name": "Saltmarble", + "symbol": "SML", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27504/thumb/SML_200px.png?1664331670" + }, + { + "chainId": 1, + "address": "0xffe510a92434a0df346c5e72a3494b043cf249eb", + "name": "LUX BIO EXCHANGE COIN", + "symbol": "LBXC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9482/thumb/sam7Fy3A_400x400.jpg?1568000741" + }, + { + "chainId": 1, + "address": "0xf8c17c840549974ec17c6573b3963f1e3046c0eb", + "name": "Prediqt", + "symbol": "PQT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14407/thumb/57197945.png?1615936268" + }, + { + "chainId": 1, + "address": "0x4639cd8cd52ec1cf2e496a606ce28d8afb1c792f", + "name": "CBDAO", + "symbol": "BREE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12096/thumb/cbdao_logo.jpg?1597059848" + }, + { + "chainId": 1, + "address": "0x8c543aed163909142695f2d2acd0d55791a9edb9", + "name": "Velas", + "symbol": "VLX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9651/thumb/logo_blue.png?1663764088" + }, + { + "chainId": 1, + "address": "0x747f564d258612ec5c4e24742c5fd4110bcbe46b", + "name": "Nodeseeds", + "symbol": "NDS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14658/thumb/n1EiZLt.png?1618374330" + }, + { + "chainId": 1, + "address": "0xc71d8baaa436aa7e42da1f40bec48f11ab3c9e4a", + "name": "iEthereum", + "symbol": "IETH", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/1065/thumb/ieth.png?1600765203" + }, + { + "chainId": 1, + "address": "0x57c75eccc8557136d32619a191fbcdc88560d711", + "name": "VeriDocGlobal", + "symbol": "VDG", + "decimals": 0, + "logoURI": "https://assets.coingecko.com/coins/images/5604/thumb/VDG-ICON.png?1547041457" + }, + { + "chainId": 1, + "address": "0xd3e133a0a14bb8b595e5fbf9851c7c783685ba69", + "name": "Locker Token", + "symbol": "LKT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28269/thumb/Locker.jpeg?1668995910" + }, + { + "chainId": 1, + "address": "0x8765b1a0eb57ca49be7eacd35b24a574d0203656", + "name": "MetaGameHub DAO", + "symbol": "MGH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20625/thumb/mgh.PNG?1637318966" + }, + { + "chainId": 1, + "address": "0xd6327ce1fb9d6020e8c2c0e124a1ec23dcab7536", + "name": "Cuminu", + "symbol": "CUMINU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15832/thumb/CUMINU.png?1628849016" + }, + { + "chainId": 1, + "address": "0x5e8422345238f34275888049021821e8e08caa1f", + "name": "Frax Ether", + "symbol": "FRXETH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28284/thumb/JjqQ9ROz_400x400.jpeg?1669170320" + }, + { + "chainId": 1, + "address": "0x3e9bc21c9b189c09df3ef1b824798658d5011937", + "name": "Linear", + "symbol": "LINA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12509/thumb/1649227343-linalogo200px.png?1649229117" + }, + { + "chainId": 1, + "address": "0x8ca9a0fbd8db501f013f2e9e33a1b9dc129a48e0", + "name": "People s Punk", + "symbol": "DDDD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17973/thumb/unnamed_%284%29.png?1629956290" + }, + { + "chainId": 1, + "address": "0xe67f943af5eb6051ef56f05979cc30b732717fa6", + "name": "WATTTON", + "symbol": "WATT", + "decimals": 4, + "logoURI": "https://assets.coingecko.com/coins/images/27215/thumb/CG_WATT_LOGO.png?1662611245" + }, + { + "chainId": 1, + "address": "0xe49cb97091b5bde1e8b7043e3d5717e64fde825e", + "name": "KuramaInu", + "symbol": "KUNU", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/19520/thumb/robert199805_Order_FO41AEBD476C8_KZ00A_R00A%28SY%29_copy.png?1641439224" + }, + { + "chainId": 1, + "address": "0xee2b297408063e0967096bafdcfd1278d5bf1b8a", + "name": "Dosa", + "symbol": "DOSA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27587/thumb/ed15a1c1-e0c5-4b6d-8cc5-54e69e296f96.png?1664703528" + }, + { + "chainId": 1, + "address": "0xe1a4c5bbb704a92599fedb191f451e0d3a1ed842", + "name": "PolkaDomain", + "symbol": "NAME", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14832/thumb/name.png?1618580733" + }, + { + "chainId": 1, + "address": "0x60c24407d01782c2175d32fe7c8921ed732371d1", + "name": "LemoChain", + "symbol": "LEMO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3108/thumb/lemochain.png?1547975597" + }, + { + "chainId": 1, + "address": "0x8e87f1811de0025d2335174dbc7338a43df6d7cc", + "name": "Virtual Goods", + "symbol": "VGO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8889/thumb/1QdEK96k_400x400.png?1562574531" + }, + { + "chainId": 1, + "address": "0x11afe7fa792589dd1236257f99ba09f510460ad9", + "name": "LNKO", + "symbol": "LNKO", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/9199/thumb/logo_%289%29.png?1565077907" + }, + { + "chainId": 1, + "address": "0x8400d94a5cb0fa0d041a3788e395285d61c9ee5e", + "name": "Unibright", + "symbol": "UBT", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/2707/thumb/UnibrightLogo_colorful_500x500_preview.png?1547036916" + }, + { + "chainId": 1, + "address": "0xfbbe9b1142c699512545f47937ee6fae0e4b0aa9", + "name": "EDDASwap", + "symbol": "EDDA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14368/thumb/edda.png?1615732928" + }, + { + "chainId": 1, + "address": "0xe4ae84448db5cfe1daf1e6fb172b469c161cb85f", + "name": "Utopia Genesis Foundation", + "symbol": "UOP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13428/thumb/logo_%2830%29.png?1608518506" + }, + { + "chainId": 1, + "address": "0x048eb9b9c08e2df45644cf0db1fcb3e866c401ad", + "name": "Live Swap Coin", + "symbol": "LSC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15287/thumb/lsc.PNG?1620356318" + }, + { + "chainId": 1, + "address": "0x482b078486079d66334389b55ab974bc8282984b", + "name": "No Limit Ape", + "symbol": "NLA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24299/thumb/nla200x200.png?1647268853" + }, + { + "chainId": 1, + "address": "0x77271813bd9167e75b5df9c230cf58d64f0a58fd", + "name": "Balkari", + "symbol": "BKR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18662/thumb/BKR_log_200.png?1632818558" + }, + { + "chainId": 1, + "address": "0x153ed9cc1b792979d2bde0bbf45cc2a7e436a5f9", + "name": "XOVBank", + "symbol": "XOV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5396/thumb/xov.jpg?1549857681" + }, + { + "chainId": 1, + "address": "0x5635ddeabf9cdda686995fe90beb5411831563fc", + "name": "TravelNote", + "symbol": "TVNT", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/7051/thumb/omwKldFY_400x400.jpg?1547043503" + }, + { + "chainId": 1, + "address": "0xb39185e33e8c28e0bb3dbbce24da5dea6379ae91", + "name": "PHUNK Vault NFTX ", + "symbol": "PHUNK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17074/thumb/Phunks.png?1626152056" + }, + { + "chainId": 1, + "address": "0x0a58531518dba2009bdfbf1af79602bfd312fdf1", + "name": "Squawk", + "symbol": "SQUAWK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25850/thumb/SYp95hCy_400x400.jpg?1654150818" + }, + { + "chainId": 1, + "address": "0xe5ef42d0e5e4aa6b36c613d00db8dad303d505f3", + "name": "BTour Chain", + "symbol": "MSOT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13141/thumb/BTour_Icon.png?1605595523" + }, + { + "chainId": 1, + "address": "0xce3f6f6672616c39d8b6858f8dac9902eca42c84", + "name": "DAO1", + "symbol": "DAO1", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16193/thumb/dao1.PNG?1623276970" + }, + { + "chainId": 1, + "address": "0x7ecbb21346c501fd07eb165e406120fa32381c16", + "name": "Ecoreal Estate", + "symbol": "ECOREAL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6431/thumb/golden_leave_in_200_x_200.png?1655886676" + }, + { + "chainId": 1, + "address": "0x92830ef7c8d651ed3a708053c602e807bad7db22", + "name": "SGD Tracker", + "symbol": "BLUSGD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28417/thumb/SGD.png?1670457460" + }, + { + "chainId": 1, + "address": "0x2b1d36f5b61addaf7da7ebbd11b35fd8cfb0de31", + "name": "Interport Token", + "symbol": "ITP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28338/thumb/ITP_Logo_200.png?1669794314" + }, + { + "chainId": 1, + "address": "0xc0e6737a29de7a00e2f6011924eb257106cb082f", + "name": "Glosfer", + "symbol": "GLO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9237/thumb/ItBMqQKt_400x400.jpg?1565336364" + }, + { + "chainId": 1, + "address": "0x7a2bc711e19ba6aff6ce8246c546e8c4b4944dfd", + "name": "WAXE", + "symbol": "WAXE", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/13508/thumb/waxe_logo.png?1609232755" + }, + { + "chainId": 1, + "address": "0x4edd66235349e353eb8cb8e40596599644bfe91c", + "name": "Vanywhere", + "symbol": "VANY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2701/thumb/vany.png?1547036908" + }, + { + "chainId": 1, + "address": "0xdd1ad9a21ce722c151a836373babe42c868ce9a4", + "name": "Universal Basic Income", + "symbol": "UBI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15269/thumb/ubi.png?1620287853" + }, + { + "chainId": 1, + "address": "0x5d843fa9495d23de997c394296ac7b4d721e841c", + "name": "Relay Chain", + "symbol": "RELAY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17816/thumb/relay-logo-200.png?1629339288" + }, + { + "chainId": 1, + "address": "0x0ae055097c6d159879521c384f1d2123d1f195e6", + "name": "STAKE", + "symbol": "STAKE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11061/thumb/xdai.png?1587714165" + }, + { + "chainId": 1, + "address": "0x8e9a29e7ed21db7c5b2e1cd75e676da0236dfb45", + "name": "Minter Hub", + "symbol": "HUB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14639/thumb/hub200.png?1651724396" + }, + { + "chainId": 1, + "address": "0x028171bca77440897b824ca71d1c56cac55b68a3", + "name": "Aave DAI", + "symbol": "ADAI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14242/thumb/aDAI.84b6c41f.png?1615528749" + }, + { + "chainId": 1, + "address": "0xb4272071ecadd69d933adcd19ca99fe80664fc08", + "name": "CryptoFranc", + "symbol": "XCHF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8465/thumb/WhuiuJBc_400x400.jpg?1558699947" + }, + { + "chainId": 1, + "address": "0x3209f98bebf0149b769ce26d71f7aea8e435efea", + "name": "Traxia", + "symbol": "TMT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3312/thumb/tmt.png?1547037907" + }, + { + "chainId": 1, + "address": "0xe65cdb6479bac1e22340e4e755fae7e509ecd06c", + "name": "cAAVE", + "symbol": "CAAVE", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/17527/thumb/caave.PNG?1628122171" + }, + { + "chainId": 1, + "address": "0xea4931bfcf3260da6dbf0550e27f5c214e3c268b", + "name": "MozoX", + "symbol": "MOZOX", + "decimals": 2, + "logoURI": "https://assets.coingecko.com/coins/images/10798/thumb/Wd7sb8F7VxkzGIkjbIHd1KAaguILwTMnafTK5-aJSWnOylO0D9otRGafiDdS9WBzxKUvqbLeguGq5iTdNdYJp3QJvGI-l_AsXscfjJGiTmn4Bw4G5bi_902OtUeKyQwvGEukbFnNpeoDyCyQ3tAW5-37sIjjj9WcgL3u3gLgdDSne6h0aRG7sBXl1AuYMQb9W_JnnplkyBoA37ZrWMfZc.jpg?1583724469" + }, + { + "chainId": 1, + "address": "0x3e7804c51a70ba26e904c2e0ab440c5623a8a83f", + "name": "GPEX", + "symbol": "GPX", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/22584/thumb/GPEX-E_200.png?1642142068" + }, + { + "chainId": 1, + "address": "0xf40edf22e4ab146a32ecd8d659cedc7a2a55cd43", + "name": "ONE PIECE", + "symbol": "ONEPIECE", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/19421/thumb/g842dxb.png?1635213981" + }, + { + "chainId": 1, + "address": "0x798d1be841a82a273720ce31c822c61a67a601c3", + "name": "DIGG", + "symbol": "DIGG", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/13737/thumb/digg.PNG?1611292196" + }, + { + "chainId": 1, + "address": "0xccb4dfdb4f95697ab5c389185f0ba9042a78576f", + "name": "NFTWiki", + "symbol": "NFTK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21970/thumb/PfGXwOcW_400x400.jpg?1640560379" + }, + { + "chainId": 1, + "address": "0x7c8155909cd385f120a56ef90728dd50f9ccbe52", + "name": "Nahmii", + "symbol": "NII", + "decimals": 15, + "logoURI": "https://assets.coingecko.com/coins/images/9786/thumb/nahmii-sm_icon-full-color.png?1608513773" + }, + { + "chainId": 1, + "address": "0xdac4ae188ace3c8985765edc6c9b4739d4845ddc", + "name": "InterValue", + "symbol": "INVE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4756/thumb/intervalue-logo.png?1547040078" + }, + { + "chainId": 1, + "address": "0x65032604dab202aff9adf89300cdb4bd0d059f55", + "name": "SOBA", + "symbol": "SOBA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14673/thumb/soba-logo-black.png?1617680379" + }, + { + "chainId": 1, + "address": "0xb4a677b0e363c3815d46326954a4e4d2b1ace357", + "name": "THENODE", + "symbol": "THE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10292/thumb/thenode_logo.png?1577334103" + }, + { + "chainId": 1, + "address": "0xe0b7927c4af23765cb51314a0e0521a9645f0e2a", + "name": "DigixDAO", + "symbol": "DGD", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/397/thumb/dgd.png?1547034124" + }, + { + "chainId": 1, + "address": "0x0947b0e6d821378805c9598291385ce7c791a6b2", + "name": "Lendingblock", + "symbol": "LND", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2988/thumb/LB_Icon__L.png?1631625796" + }, + { + "chainId": 1, + "address": "0xbdc5bac39dbe132b1e030e898ae3830017d7d969", + "name": "Snovian Space", + "symbol": "SNOV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1330/thumb/logo2.png?1547035355" + }, + { + "chainId": 1, + "address": "0x94eb98db969124178189bb765beaa2fd36f1c5a4", + "name": "Noblesscoin", + "symbol": "NBLS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26147/thumb/13-53-57-IMG-20220623-125356-998.jpg?1656040863" + }, + { + "chainId": 1, + "address": "0x51b0bcbeff204b39ce792d1e16767fe6f7631970", + "name": "Bitcoin Volatility Index Token", + "symbol": "BTCV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16717/thumb/logo_-_2021-06-28T092740.647.png?1624843667" + }, + { + "chainId": 1, + "address": "0xfc09c7cfd9c175dd9423ca02ae1249579ab12f12", + "name": "Totoro Inu", + "symbol": "TOTORO", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/20277/thumb/cLogo.png?1636708928" + }, + { + "chainId": 1, + "address": "0x3625b55f653f8c7c884ac668696881df43631d44", + "name": "Arti Project", + "symbol": "ARTI", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/18878/thumb/arti.PNG?1633688264" + }, + { + "chainId": 1, + "address": "0x03c7a08451ed5c820958d64116d74de1f7b285d8", + "name": "BlackSwan Nodes", + "symbol": "SWAN", + "decimals": 9 + }, + { + "chainId": 1, + "address": "0xbd9908b0cdd50386f92efcc8e1d71766c2782df0", + "name": "DAOSquare", + "symbol": "RICE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19084/thumb/tw5gu1dW_400x400.jpeg?1634389807" + }, + { + "chainId": 1, + "address": "0x9b31bb425d8263fa1b8b9d090b83cf0c31665355", + "name": "CoinsPaid", + "symbol": "CPD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18092/thumb/coinspaid.PNG?1630452234" + }, + { + "chainId": 1, + "address": "0x3b5e2df103a037509dcc8430e5462b9cd8f75f49", + "name": "GEMX", + "symbol": "GEMX", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/28437/thumb/525BA403-4DD8-4AB4-A3C1-0EFF8C8F3450.jpeg?1670568823" + }, + { + "chainId": 1, + "address": "0xeb4c2781e4eba804ce9a9803c67d0893436bb27d", + "name": "renBTC", + "symbol": "RENBTC", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/11370/thumb/Bitcoin.jpg?1628072791" + }, + { + "chainId": 1, + "address": "0x998b3b82bc9dba173990be7afb772788b5acb8bd", + "name": "Banca", + "symbol": "BANCA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2795/thumb/banca.png?1547036972" + }, + { + "chainId": 1, + "address": "0xe7c9c188138f7d70945d420d75f8ca7d8ab9c700", + "name": "Basis Dollar Share", + "symbol": "BSDS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13411/thumb/bshare.png?1608267551" + }, + { + "chainId": 1, + "address": "0x9a794dc1939f1d78fa48613b89b8f9d0a20da00e", + "name": "Arbidex", + "symbol": "ABX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5541/thumb/arbidex.png?1547041334" + }, + { + "chainId": 1, + "address": "0xd0929d411954c47438dc1d871dd6081f5c5e149c", + "name": "Refereum", + "symbol": "RFR", + "decimals": 4, + "logoURI": "https://assets.coingecko.com/coins/images/2102/thumb/refereum.png?1548608001" + }, + { + "chainId": 1, + "address": "0xcee1d3c3a02267e37e6b373060f79d5d7b9e1669", + "name": "yffi finance", + "symbol": "YFFI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11940/thumb/yffi-finance.jpg?1596289302" + }, + { + "chainId": 1, + "address": "0x1014613e2b3cbc4d575054d4982e580d9b99d7b1", + "name": "BitCapitalVendor", + "symbol": "BCV", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/5326/thumb/hqQw2WGE_400x400.jpg?1547040893" + }, + { + "chainId": 1, + "address": "0xd0983dd6a0334c71d0478255d1f794508026b888", + "name": "EGG Protocol", + "symbol": "EGG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18735/thumb/EGG_%281%29.png?1633308617" + }, + { + "chainId": 1, + "address": "0x6051c1354ccc51b4d561e43b02735deae64768b8", + "name": "yRise Finance", + "symbol": "YRISE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12853/thumb/logoyrise-200px.png?1603084410" + }, + { + "chainId": 1, + "address": "0x79126d32a86e6663f3aaac4527732d0701c1ae6c", + "name": "Dark Matter", + "symbol": "DMT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14223/thumb/dmt.jpg?1615089067" + }, + { + "chainId": 1, + "address": "0x21d486f6b7eb7b556978c5a0c96c79a08eb841de", + "name": "Grok", + "symbol": "GROK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24574/thumb/ZtRMy9Z7_400x400.png?1648197386" + }, + { + "chainId": 1, + "address": "0x8b1f49491477e0fb46a29fef53f1ea320d13c349", + "name": "MicroMoney", + "symbol": "AMM", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/1356/thumb/micromoney.png?1548085045" + }, + { + "chainId": 1, + "address": "0x77252494c25444f8598a0c74ffc90adc535291a9", + "name": "Nemesis", + "symbol": "NMS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18904/thumb/NMS-150x150.jpg?1633849465" + }, + { + "chainId": 1, + "address": "0x3392d8a60b77f8d3eaa4fb58f09d835bd31add29", + "name": "IndiGG", + "symbol": "INDI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23857/thumb/https___bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com_public_images_0cb39c1f-db6d-4dd9-9143-1f30ee38d74d_743x726.jpeg?1645594083" + }, + { + "chainId": 1, + "address": "0xc6dddb5bc6e61e0841c54f3e723ae1f3a807260b", + "name": "Aurox", + "symbol": "URUS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14122/thumb/Aurox.png?1648524329" + }, + { + "chainId": 1, + "address": "0xa1d65e8fb6e87b60feccbc582f7f97804b725521", + "name": "DXdao", + "symbol": "DXD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11148/thumb/dxdao.png?1607999331" + }, + { + "chainId": 1, + "address": "0x0f8c45b896784a1e408526b9300519ef8660209c", + "name": "XMax", + "symbol": "XMX", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/4643/thumb/xmx.png?1574682262" + }, + { + "chainId": 1, + "address": "0x578b49c45961f98d8df92854b53f1641af0a5036", + "name": "LINKA", + "symbol": "LINKA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9487/thumb/C2RRuVH6eVbXIDbew-0VJoGpPb_bMPjRjM9qlYud7tqtGgb1GskioTkIntKuugvXnX-Y3O54L-4zWeWWm_Fffo1kJiqJG5vE4Iu1FSvZ-N750y_tlB7yAGeYztAD-MDrwEPaF3Y9j6E94mPVyKuidqbxf9vBeR5r4GAya3friWZjMzpnJ_q9v0jiIBxEC5YAy1C0Zx6yqVoHJjiTW.jpg?1568013160" + }, + { + "chainId": 1, + "address": "0xfecba472b2540c5a2d3700b2c9e06f0aa7dc6462", + "name": "Pub Finance", + "symbol": "PINT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14016/thumb/PINT.png?1614064578" + }, + { + "chainId": 1, + "address": "0x173e552bf97bbd50b455514ac52991ef639ba703", + "name": "Shido", + "symbol": "SHIDO", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/26674/thumb/Shido.png?1667361249" + }, + { + "chainId": 1, + "address": "0x4f5fa8f2d12e5eb780f6082dd656c565c48e0f24", + "name": "Gourmet Galaxy", + "symbol": "GUM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13846/thumb/gum.png?1612320864" + }, + { + "chainId": 1, + "address": "0x82fdedfb7635441aa5a92791d001fa7388da8025", + "name": "Digital Ticks", + "symbol": "DTX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4898/thumb/digital-ticks-logo.jpg?1533010074" + }, + { + "chainId": 1, + "address": "0x4de2573e27e648607b50e1cfff921a33e4a34405", + "name": "Lendroid Support", + "symbol": "LST", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3485/thumb/lst-icon.png?1606992361" + }, + { + "chainId": 1, + "address": "0x6243d8cea23066d098a15582d81a598b4e8391f4", + "name": "Reflexer Ungovernance", + "symbol": "FLX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14123/thumb/EAfYdwgd_400x400.jpg?1614564508" + }, + { + "chainId": 1, + "address": "0x51bb3ab03ab49ec5cb3883705949657838a015fd", + "name": "CRYN", + "symbol": "CRYN", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/24601/thumb/cryn.png?1648365782" + }, + { + "chainId": 1, + "address": "0x2fe39f22eac6d3c1c86dd9d143640ebb94609fce", + "name": "JD Coin", + "symbol": "JDC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9958/thumb/Cv-2ca6p_400x400.jpg?1575926305" + }, + { + "chainId": 1, + "address": "0xa2ef2757d2ed560c9e3758d1946d7bcccbd5a7fe", + "name": "Adventure", + "symbol": "TWA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13284/thumb/twa_logo.jpg?1606979012" + }, + { + "chainId": 1, + "address": "0x432a2c54de2dde941a36d2eb8c424ed666f74aef", + "name": "Merculet", + "symbol": "MVP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3483/thumb/feature_token.png?1547038223" + }, + { + "chainId": 1, + "address": "0x60e683c6514edd5f758a55b6f393bebbafaa8d5e", + "name": "Page", + "symbol": "PAGE", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/19015/thumb/Page_Icon_LG.png?1634182470" + }, + { + "chainId": 1, + "address": "0xe8389374a482d031703ae0e4cb3fe34b045081ee", + "name": "Bal kesirspor Token", + "symbol": "BLKS", + "decimals": 2, + "logoURI": "https://assets.coingecko.com/coins/images/24811/thumb/18434.png?1649024433" + }, + { + "chainId": 1, + "address": "0xb8c6ad2586bb71d518c2aaf510efe91f82022f58", + "name": "Gomics", + "symbol": "GOM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9506/thumb/69581895_377122223186787_4719544883591774208_n.png?1568184472" + }, + { + "chainId": 1, + "address": "0xf0acf8949e705e0ebb6cb42c2164b0b986454223", + "name": "Barter", + "symbol": "BRTR", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/13401/thumb/BRTR.png?1612843022" + }, + { + "chainId": 1, + "address": "0xade6fdaba1643e4d1eef68da7170f234470938c6", + "name": "Harambe", + "symbol": "HARAMBE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23489/thumb/unnamed.jpg?1644220775" + }, + { + "chainId": 1, + "address": "0xfac8f483877f42702aad3c4fcb508cfba09153b5", + "name": "Evident Proof Transaction", + "symbol": "EPTT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22377/thumb/EPT.png?1641782531" + }, + { + "chainId": 1, + "address": "0xf8e1d008a98350abb4241139fbc851aaad51eda6", + "name": "Sleepy Shib", + "symbol": "SLEEPY-SHIB", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/20321/thumb/OYfY70z.png?1636877246" + }, + { + "chainId": 1, + "address": "0xd1be6c91352e5afca7c0db69eaa390dbcbfca762", + "name": "Liquinity", + "symbol": "LQNTY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26844/thumb/photo_5161276562430077559_x.jpg?1660391137" + }, + { + "chainId": 1, + "address": "0x00fc270c9cc13e878ab5363d00354bebf6f05c15", + "name": "VNX Exchange", + "symbol": "VNXLU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9945/thumb/vnx.PNG?1573639467" + }, + { + "chainId": 1, + "address": "0x4f7aff8f0c78b51c0e30f02f27a67b5a6a11552b", + "name": "Decentralized Business Systems", + "symbol": "DBS", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/25489/thumb/27e0a1_7f0b762e0eeb4584af7cff0fdccedc8e_mv2.png?1652856877" + }, + { + "chainId": 1, + "address": "0x42edc1c5ff57ff5240c90e2d8dfa269d77d68013", + "name": "Bitnorm", + "symbol": "BN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14920/thumb/logo_2.71b730c9.png?1619043921" + }, + { + "chainId": 1, + "address": "0xcf81e6fdb8d7a743c3d4c3542a5356ff197ea1c0", + "name": "Global Gaming", + "symbol": "GMNG", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/12792/thumb/output-onlinepngtools.png_small.png?1602581337" + }, + { + "chainId": 1, + "address": "0x36a28c7c9b3dea22f07f4df67833cbe764feeeb4", + "name": "Cryptonits", + "symbol": "CRT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13392/thumb/logo-200x200.png?1608100148" + }, + { + "chainId": 1, + "address": "0x3ffffa8f3cc943e43f9f17a83cbb18f4bbb9f4ac", + "name": "Rewardiqa", + "symbol": "REW", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11614/thumb/REW_medium.png?1594698840" + }, + { + "chainId": 1, + "address": "0xb63b606ac810a52cca15e44bb630fd42d8d1d83d", + "name": "MCO", + "symbol": "MCO", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/739/thumb/1776.png?1648537078" + }, + { + "chainId": 1, + "address": "0x1a4f4d457786314668bd5de0e49f89fe6e2a4802", + "name": "The Ape", + "symbol": "TA", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/27950/thumb/THE_Ape.png?1666666627" + }, + { + "chainId": 1, + "address": "0xb24cd494fae4c180a89975f1328eab2a7d5d8f11", + "name": "Developer DAO", + "symbol": "CODE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27011/thumb/CHWxD9GV_400x400.jpeg?1661421133" + }, + { + "chainId": 1, + "address": "0x170b275ced089fffaebfe927f445a350ed9160dc", + "name": "OWNDATA", + "symbol": "OWN", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/3903/thumb/owndata.png?1548330403" + }, + { + "chainId": 1, + "address": "0xc18360217d8f7ab5e7c516566761ea12ce7f9d72", + "name": "Ethereum Name Service", + "symbol": "ENS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19785/thumb/acatxTm8_400x400.jpg?1635850140" + }, + { + "chainId": 1, + "address": "0xc2d3ae29c8309c14994d02ecd228cf86f3efde77", + "name": "CurrySwap", + "symbol": "CURRY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13656/thumb/curry_logo.jpg?1610581982" + }, + { + "chainId": 1, + "address": "0x8e14c88ab0644ef41bd7138ab91c0160d8c1583a", + "name": "FrenChain", + "symbol": "FREN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28113/thumb/200.png?1667550745" + }, + { + "chainId": 1, + "address": "0xffed56a180f23fd32bc6a1d8d3c09c283ab594a8", + "name": "Freeliquid", + "symbol": "FL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13698/thumb/freeliquid_logo.png?1610980336" + }, + { + "chainId": 1, + "address": "0xd64809f5f7d772d9112a6bd379de00a77188199e", + "name": "Lyfe Silver", + "symbol": "LSILVER", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14939/thumb/LSILVER-Logo-200.png?1619082811" + }, + { + "chainId": 1, + "address": "0xd64126835cecaca345c8f137bda68e975f5ab790", + "name": "Yeni Malatyaspor Token", + "symbol": "YMS", + "decimals": 2, + "logoURI": "https://assets.coingecko.com/coins/images/24815/thumb/Yeni_Malatyaspor_logo.svg.png?1649029086" + }, + { + "chainId": 1, + "address": "0xf0bc1ae4ef7ffb126a8347d06ac6f8add770e1ce", + "name": "1Million", + "symbol": "1MT", + "decimals": 7, + "logoURI": "https://assets.coingecko.com/coins/images/8495/thumb/1MTp.png?1586964391" + }, + { + "chainId": 1, + "address": "0xf6269e2e0c271fb6af35e7f8a539ebc7155e33bb", + "name": "Hayfever", + "symbol": "HAY", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/21063/thumb/Contagion_Crew_5-2.jpg?1651745521" + }, + { + "chainId": 1, + "address": "0x44dcf4dc9ec228b7748422c51b6c5c57f5f229ec", + "name": "Quannabu", + "symbol": "QBU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17892/thumb/HsYrOmEy_400x400.jpg?1629717802" + }, + { + "chainId": 1, + "address": "0x47b9f01b16e9c9cb99191dca68c9cc5bf6403957", + "name": "Onston", + "symbol": "ONSTON", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20669/thumb/onston.PNG?1637547859" + }, + { + "chainId": 1, + "address": "0xcd46d92c46be1dbbd5ccc497e95611abe9d507bc", + "name": "FACE Vault NFTX ", + "symbol": "FACE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17039/thumb/FACE.png?1626146356" + }, + { + "chainId": 1, + "address": "0x00281dfce4cfd72c0b6fda2aaaf077258743f9e8", + "name": "NuriFootBall", + "symbol": "NRFB", + "decimals": 0, + "logoURI": "https://assets.coingecko.com/coins/images/23360/thumb/pcMlP25e_400x400.jpg?1643945452" + }, + { + "chainId": 1, + "address": "0x95a4492f028aa1fd432ea71146b433e7b4446611", + "name": "APY Finance", + "symbol": "APY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13041/thumb/1*AvkD-OLocausbxqUzezZ0A.png?1604577922" + }, + { + "chainId": 1, + "address": "0x9c38688e5acb9ed6049c8502650db5ac8ef96465", + "name": "Lif", + "symbol": "LIF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1760/thumb/lif-logo.png?1622196538" + }, + { + "chainId": 1, + "address": "0x69d9905b2e5f6f5433212b7f3c954433f23c1572", + "name": "Onooks", + "symbol": "OOKS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16281/thumb/onooks-logo.png?1623637635" + }, + { + "chainId": 1, + "address": "0x92925acf2771bc59143228499f9610fe5176eb9c", + "name": "SYLTARE", + "symbol": "SYL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26962/thumb/syl_tokenlogo.png?1661078949" + }, + { + "chainId": 1, + "address": "0x37cd4e8875e3edaffdfe9be63958f07effbd0bfd", + "name": "void cash", + "symbol": "VCASH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26976/thumb/Avatar_v2.png?1661168692" + }, + { + "chainId": 1, + "address": "0x21d5678a62dfe63a47062469ebb2fac2817d8832", + "name": "YOLOCash", + "symbol": "YLC", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/4368/thumb/received_2320303067998561.png?1547039717" + }, + { + "chainId": 1, + "address": "0x1b2a76da77d03b7fc21189d9838f55bd849014af", + "name": "DeFiScale", + "symbol": "DFC", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/14974/thumb/logo200x200-2.png?1619214186" + }, + { + "chainId": 1, + "address": "0xfe5f141bf94fe84bc28ded0ab966c16b17490657", + "name": "Libra Credit", + "symbol": "LBA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3673/thumb/libra-credit.png?1547975828" + }, + { + "chainId": 1, + "address": "0xddb3422497e61e13543bea06989c0789117555c5", + "name": "COTI", + "symbol": "COTI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2962/thumb/Coti.png?1559653863" + }, + { + "chainId": 1, + "address": "0x93b1e78a3e652cd2e71c4a767595b77282344932", + "name": "BITO Coin", + "symbol": "BITO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7796/thumb/bitopro_28.png?1550628495" + }, + { + "chainId": 1, + "address": "0xc741f06082aa47f93729070ad0dd95e223bda091", + "name": "Education Ecosystem", + "symbol": "LEDU", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/3451/thumb/LEDU-education-ecosystem.png?1547038165" + }, + { + "chainId": 1, + "address": "0x56b4f8c39e07d4d5d91692acf9d0f6d4d3493763", + "name": "Trism", + "symbol": "TRISM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13549/thumb/76106366.png?1609715454" + }, + { + "chainId": 1, + "address": "0x4c601dc69affb0d4fc8de1ac303705e432a4a27e", + "name": "Konnect", + "symbol": "KCT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25756/thumb/EAO_5JhW_400x400.jpg?1653516279" + }, + { + "chainId": 1, + "address": "0x72b886d09c117654ab7da13a14d603001de0b777", + "name": "XDEFI", + "symbol": "XDEFI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19524/thumb/xdefi.png?1637917251" + }, + { + "chainId": 1, + "address": "0xbe7a4f88c6b15a722aa960b487badf9880184ec5", + "name": "SupplyCon", + "symbol": "SPLC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28192/thumb/SupplyCon_Logo_.png?1668327647" + }, + { + "chainId": 1, + "address": "0x505a84a03e382331a1be487b632cf357748b65d6", + "name": "SHIBGF", + "symbol": "SHIBGF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19699/thumb/shibgf_logo.png?1637293051" + }, + { + "chainId": 1, + "address": "0xc1f33e0cf7e40a67375007104b929e49a581bafe", + "name": "Spot", + "symbol": "SPOT", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/28426/thumb/ezgif.com-gif-maker_%285%29.jpg?1670547152" + }, + { + "chainId": 1, + "address": "0x62959c699a52ec647622c91e79ce73344e4099f5", + "name": "DeFine", + "symbol": "DFA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17579/thumb/define.PNG?1628558827" + }, + { + "chainId": 1, + "address": "0xe138fda441fc31b36171122397a8a11d6cd2c479", + "name": "Global Trust Coin", + "symbol": "GTC", + "decimals": 0, + "logoURI": "https://assets.coingecko.com/coins/images/7752/thumb/gtib.png?1550222444" + }, + { + "chainId": 1, + "address": "0x5166e09628b696285e3a151e84fb977736a83575", + "name": "Volatility Protocol", + "symbol": "VOL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17374/thumb/volatility.PNG?1627448569" + }, + { + "chainId": 1, + "address": "0x80a2ae356fc9ef4305676f7a3e2ed04e12c33946", + "name": "cYFI", + "symbol": "CYFI", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/17530/thumb/cyfi.PNG?1628123155" + }, + { + "chainId": 1, + "address": "0xfc4b8ed459e00e5400be803a9bb3954234fd50e3", + "name": "Aave WBTC v1", + "symbol": "AWBTC", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/11734/thumb/aWBTC.png?1593087741" + }, + { + "chainId": 1, + "address": "0x228ba514309ffdf03a81a205a6d040e429d6e80c", + "name": "Global Social Chain", + "symbol": "GSC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4304/thumb/global-social-chain.png?1547742843" + }, + { + "chainId": 1, + "address": "0x3d26dcd840fcc8e4b2193ace8a092e4a65832f9f", + "name": "Aave AMM UniUNIWETH", + "symbol": "AAMMUNIUNIWETH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17225/thumb/aAmmUniUNIWETH.png?1626881095" + }, + { + "chainId": 1, + "address": "0x1892f6ff5fbe11c31158f8c6f6f6e33106c5b10e", + "name": "MegaWorld", + "symbol": "MEGA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28456/thumb/Twitter_AVA1.jpg?1670810440" + }, + { + "chainId": 1, + "address": "0x5f02cf3c7ada49dfc4a3645fc85c8ae86808dd9b", + "name": "COST COIN ", + "symbol": "AKM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11705/thumb/akm.PNG?1592984686" + }, + { + "chainId": 1, + "address": "0x41545f8b9472d758bb669ed8eaeeecd7a9c4ec29", + "name": "Forta", + "symbol": "FORT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25060/thumb/Forta_lgo_%281%29.png?1655353696" + }, + { + "chainId": 1, + "address": "0x1a87077c4f834884691b8ba4fc808d2ec93a9f30", + "name": "Winry Inu", + "symbol": "WINRY", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/19420/thumb/winry.png?1640575013" + }, + { + "chainId": 1, + "address": "0x62199b909fb8b8cf870f97bef2ce6783493c4908", + "name": "pTokens BTC", + "symbol": "PBTC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25861/thumb/wMTpRljt_400x400.png?1654228097" + }, + { + "chainId": 1, + "address": "0x1dd80016e3d4ae146ee2ebb484e8edd92dacc4ce", + "name": "Lead", + "symbol": "LEAD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12384/thumb/lead.jpg?1599491466" + }, + { + "chainId": 1, + "address": "0x11c1a6b3ed6bb362954b29d3183cfa97a0c806aa", + "name": "Starwire", + "symbol": "STR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18232/thumb/starwirelogo_%281%29.png?1631064145" + }, + { + "chainId": 1, + "address": "0xde74bb5a16000deea9eb26ef3941344325dbdb8c", + "name": "Fluffy Inu", + "symbol": "FLUFFY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21769/thumb/fluffy-logo-md.png?1639994182" + }, + { + "chainId": 1, + "address": "0x84f20bf5bb4be345d3ab37c565f732753435dbe3", + "name": "JustCarbon Removal", + "symbol": "JCR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25251/thumb/Just-Carbon-JCR-2.png?1651132559" + }, + { + "chainId": 1, + "address": "0x2dca19e944453e46d9130950ca135461b3bc0c30", + "name": "EYES Protocol", + "symbol": "EYES", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9734/thumb/pTaAZUI6_400x400.jpg?1571308667" + }, + { + "chainId": 1, + "address": "0x34f797e7190c131cf630524655a618b5bd8738e7", + "name": "BaconDAO", + "symbol": "BACON", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18059/thumb/xDV_bhdA_400x400.jpg?1630333329" + }, + { + "chainId": 1, + "address": "0x57652fc91f522f9eff0b38cdf1d51f5fb5764215", + "name": "Buddy", + "symbol": "BUD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4697/thumb/buddy.jpg?1554103368" + }, + { + "chainId": 1, + "address": "0x0a8b16b27d5219c8c6b57d5442ce31d81573eee4", + "name": "Wrapped ATROMG8", + "symbol": "WAG8", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/15182/thumb/ag8.jpg?1620031331" + }, + { + "chainId": 1, + "address": "0xa92cdf011c895780733b2a6a6e15c4c1ed836148", + "name": "DeFi ch", + "symbol": "DFCH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18842/thumb/defi200px.png?1633586754" + }, + { + "chainId": 1, + "address": "0xd1e94958defb1c56516329a21f072951b22301aa", + "name": "Shiboki", + "symbol": "SHIBOKI", + "decimals": 2, + "logoURI": "https://assets.coingecko.com/coins/images/24620/thumb/Shiboki.jpeg?1648446706" + }, + { + "chainId": 1, + "address": "0xd2d9e0b2942943269d5224e0048bbc32380ac19b", + "name": "DoraemonInu", + "symbol": "DORAEMONINU", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/19141/thumb/DI.jpg?1634528340" + }, + { + "chainId": 1, + "address": "0xf4c17bc4979c1dc7b4ca50115358dec58c67fd9d", + "name": "Omega Protocol Money", + "symbol": "OPM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12337/thumb/opm-200px.png?1599136480" + }, + { + "chainId": 1, + "address": "0x9e78b8274e1d6a76a0dbbf90418894df27cbceb5", + "name": "Covenants", + "symbol": "UNIFI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12258/thumb/Unifi.png?1598548933" + }, + { + "chainId": 1, + "address": "0x4cf89ca06ad997bc732dc876ed2a7f26a9e7f361", + "name": "Mysterium", + "symbol": "MYST", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/757/thumb/mysterium.png?1547034503" + }, + { + "chainId": 1, + "address": "0x8d26cca0d58913932157dd4b294d4c95066172df", + "name": "Millennium Sapphire", + "symbol": "MSTO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24020/thumb/eliUfGAG_400x400.jpg?1646040397" + }, + { + "chainId": 1, + "address": "0x8b3870df408ff4d7c3a26df852d41034eda11d81", + "name": "IOI", + "symbol": "IOI", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/15952/thumb/IOI_new_logo.png?1636797701" + }, + { + "chainId": 1, + "address": "0x43567eb78638a55bbe51e9f9fb5b2d7ad1f125aa", + "name": "Hackspace Capital", + "symbol": "HAC", + "decimals": 4, + "logoURI": "https://assets.coingecko.com/coins/images/2336/thumb/hac.png?1547036543" + }, + { + "chainId": 1, + "address": "0x809826cceab68c387726af962713b64cb5cb3cca", + "name": "Nucleus Vision", + "symbol": "NCASH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3135/thumb/nv.jpg?1547037544" + }, + { + "chainId": 1, + "address": "0x88aa4a6c5050b9a1b2aa7e34d0582025ca6ab745", + "name": "Vela Exchange", + "symbol": "DXP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25114/thumb/1_0w4P8R5heRFwRomJ4vPCWQ.png?1650348942" + }, + { + "chainId": 1, + "address": "0x2c756e74b7309d785b5e2960ef262c4f14a87930", + "name": "SPENDER X", + "symbol": "SPDX", + "decimals": 0, + "logoURI": "https://assets.coingecko.com/coins/images/9259/thumb/spdx.PNG?1565650786" + }, + { + "chainId": 1, + "address": "0x16f812be7fff02caf662b85d5d58a5da6572d4df", + "name": "United Traders", + "symbol": "UTT", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/1741/thumb/utt.png?1547036018" + }, + { + "chainId": 1, + "address": "0x24b20da7a2fa0d1d5afcd693e1c8afff20507efd", + "name": "Medi", + "symbol": "MEDI", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/23037/thumb/Medi_200_x_200.PNG?1643096227" + }, + { + "chainId": 1, + "address": "0x1c720999a4f8b2b0e9199039d353d2c9a77a73fc", + "name": "TigerQueen", + "symbol": "TQUEEN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22531/thumb/Logo-Tiger-Queen.png?1641997189" + }, + { + "chainId": 1, + "address": "0x8b7c94bc9ec137d67fbddb203b2814f0f1f9b377", + "name": "WHALE Vault NFTX ", + "symbol": "WHALE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18347/thumb/whale.png?1631603573" + }, + { + "chainId": 1, + "address": "0x9dfc4b433d359024eb3e810d77d60fbe8b0d9b82", + "name": "Dandy Dego", + "symbol": "DANDY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12764/thumb/487ogltc_400x400.jpg?1602463048" + }, + { + "chainId": 1, + "address": "0xe5097d9baeafb89f9bcb78c9290d545db5f9e9cb", + "name": "Hummingbot", + "symbol": "HBOT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21717/thumb/PDPuf0tJ_400x400.jpg?1639863782" + }, + { + "chainId": 1, + "address": "0x0b5326da634f9270fb84481dd6f94d3dc2ca7096", + "name": "Etho Protocol", + "symbol": "ETHO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5194/thumb/ether1new-transparent.png?1578298993" + }, + { + "chainId": 1, + "address": "0x9b99cca871be05119b2012fd4474731dd653febe", + "name": "AntiMatter", + "symbol": "MATTER", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14112/thumb/antimatter_icon.png?1614395992" + }, + { + "chainId": 1, + "address": "0x0cf0ee63788a0849fe5297f3407f701e122cc023", + "name": "Streamr XDATA", + "symbol": "XDATA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1115/thumb/streamr.png?1547035101" + }, + { + "chainId": 1, + "address": "0x508626d9a29d13eba26f843a2bd7bf7b00a45be5", + "name": "Bluelight", + "symbol": "KALE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28031/thumb/kale.png?1667109844" + }, + { + "chainId": 1, + "address": "0xf17a3fe536f8f7847f1385ec1bc967b2ca9cae8d", + "name": "Alongside Crypto Market Index", + "symbol": "AMKT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28496/thumb/AMKT-Circle.png?1671108971" + }, + { + "chainId": 1, + "address": "0x834ce7ad163ab3be0c5fd4e0a81e67ac8f51e00c", + "name": "Polkainsure Finance", + "symbol": "PIS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13544/thumb/Logo_Polkainsure___Final-200x200-01.png?1609686092" + }, + { + "chainId": 1, + "address": "0xa91464abd4625a23ab719e3f0fce84dadd54e546", + "name": "Inoovi", + "symbol": "IVI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10372/thumb/Bvp7U25U_400x400.jpg?1578674638" + }, + { + "chainId": 1, + "address": "0xbd356a39bff2cada8e9248532dd879147221cf76", + "name": "WOM Protocol", + "symbol": "WOM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4559/thumb/wom_logo_small.png?1572098941" + }, + { + "chainId": 1, + "address": "0x86efc496dca70bcfd92d19194290e8457a375773", + "name": "Silent Notary", + "symbol": "UBSN", + "decimals": 0, + "logoURI": "https://assets.coingecko.com/coins/images/1599/thumb/silent-notary.png?1548609544" + }, + { + "chainId": 1, + "address": "0x3505f494c3f0fed0b594e01fa41dd3967645ca39", + "name": "Swarm Network", + "symbol": "SWM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/197/thumb/swarm.jpg?1547033949" + }, + { + "chainId": 1, + "address": "0x849ba2278cdae7fa7006c0661fea1c35d5af3336", + "name": "The Citadel", + "symbol": "THECITADEL", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/20445/thumb/B307-A646-EBD2-456-C-B29-D-1-B00-A470-F8-CE.jpg?1637041816" + }, + { + "chainId": 1, + "address": "0xa69f7a10df90c4d6710588bc18ad9bf08081f545", + "name": "Cexlt", + "symbol": "CLT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13171/thumb/clt_logo.png?1605855281" + }, + { + "chainId": 1, + "address": "0x07ef9e82721ac16809d24dafbe1792ce01654db4", + "name": "Chimpion", + "symbol": "BNANA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7522/thumb/banana-token-logo.jpg?1548167777" + }, + { + "chainId": 1, + "address": "0xd1cd47746b8e72359b28c1c84a4f6a19dc1a0ee5", + "name": "Sonic Suite", + "symbol": "SONIC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28489/thumb/155EE8AF-26AA-4CEC-9EC5-18532E779474.jpeg?1671091323" + }, + { + "chainId": 1, + "address": "0x5b322514ff727253292637d9054301600c2c81e8", + "name": "DAD", + "symbol": "DAD", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/9833/thumb/q_Vt0ajV_400x400.jpg?1572475136" + }, + { + "chainId": 1, + "address": "0xb73404280697080da0116cfac0e577fafdf44b37", + "name": "Quick Mining", + "symbol": "QM", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/15916/thumb/qm.PNG?1622427094" + }, + { + "chainId": 1, + "address": "0x0e8d2eb7d6bdf28393c25a1966385ad32ff0259a", + "name": "Streamer Inu", + "symbol": "STREAMERINU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27994/thumb/logo.png?1666922914" + }, + { + "chainId": 1, + "address": "0x470ebf5f030ed85fc1ed4c2d36b9dd02e77cf1b7", + "name": "TempleDAO", + "symbol": "TEMPLE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20040/thumb/LPK15ZOW_400x400.jpg?1636425070" + }, + { + "chainId": 1, + "address": "0xc05d14442a510de4d3d71a3d316585aa0ce32b50", + "name": "LINA", + "symbol": "LINA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5412/thumb/3083.png?1642981471" + }, + { + "chainId": 1, + "address": "0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9", + "name": "Aave", + "symbol": "AAVE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12645/thumb/AAVE.png?1601374110" + }, + { + "chainId": 1, + "address": "0x724dd18be5de3ed3d6ad7bb46d7387d867cdbdcc", + "name": "Avakus", + "symbol": "AVAK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18337/thumb/avakus.PNG?1631588881" + }, + { + "chainId": 1, + "address": "0xf7dd746a613fb6362d44ecedeb743f62ade6c3aa", + "name": "FIFTYONEFIFTY", + "symbol": "FIFTY", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/18207/thumb/5150icon.png?1630980446" + }, + { + "chainId": 1, + "address": "0xabbbb6447b68ffd6141da77c18c7b5876ed6c5ab", + "name": "DATx", + "symbol": "DATX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2942/thumb/datx.png?1547037168" + }, + { + "chainId": 1, + "address": "0x961c8c0b1aad0c0b10a51fef6a867e3091bcef17", + "name": "Dypius", + "symbol": "DYP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13480/thumb/DYP-200x200px.png?1670915896" + }, + { + "chainId": 1, + "address": "0x923108a439c4e8c2315c4f6521e5ce95b44e9b4c", + "name": "Devery", + "symbol": "EVE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2681/thumb/devery.png?1547036885" + }, + { + "chainId": 1, + "address": "0x1cc481ce2bd2ec7bf67d1be64d4878b16078f309", + "name": "Iron Bank CHF", + "symbol": "IBCHF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18577/thumb/logo-128_%284%29.png?1632470239" + }, + { + "chainId": 1, + "address": "0x297d33e17e61c2ddd812389c2105193f8348188a", + "name": "Strudel Finance", + "symbol": "TRDL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13854/thumb/1614634281474-TRDL_LOGO_PNG.png?1614671874" + }, + { + "chainId": 1, + "address": "0x755eb14d2feff2939eb3026f5cad9d03775b9ff4", + "name": "Bunny", + "symbol": "BUNNY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3185/thumb/bunnytoken.png?1547564097" + }, + { + "chainId": 1, + "address": "0xedc87cab8bd12ca39088deaf9fdfb63503f19f85", + "name": "Universe Coin", + "symbol": "UNIS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10389/thumb/9lTQkX7d_400x400.jpg?1578868716" + }, + { + "chainId": 1, + "address": "0x331fa6c97c64e47475164b9fc8143b533c5ef529", + "name": "EXMR FDN", + "symbol": "EXMR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3285/thumb/exmr_transparent.png?1604655926" + }, + { + "chainId": 1, + "address": "0xb4fbed161bebcb37afb1cb4a6f7ca18b977ccb25", + "name": "Dogeswap", + "symbol": "DOGES", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12763/thumb/20200926-220107.png?1622520018" + }, + { + "chainId": 1, + "address": "0x37a15c92e67686aa268df03d4c881a76340907e8", + "name": "Pixiu Finance", + "symbol": "PIXIU", + "decimals": 0, + "logoURI": "https://assets.coingecko.com/coins/images/17297/thumb/pixiu_picture_.png?1627264684" + }, + { + "chainId": 1, + "address": "0x87edffde3e14c7a66c9b9724747a1c5696b742e6", + "name": "SWAG Finance", + "symbol": "SWAG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12805/thumb/photo_2020-10-14_23.17.02.jpeg?1602688642" + }, + { + "chainId": 1, + "address": "0x147faf8de9d8d8daae129b187f0d02d819126750", + "name": "GeoDB", + "symbol": "GEO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11130/thumb/geodb.png?1588941704" + }, + { + "chainId": 1, + "address": "0x1234567461d3f8db7496581774bd869c83d51c93", + "name": "BitClave", + "symbol": "CAT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1585/thumb/bitclave.png?1547035768" + }, + { + "chainId": 1, + "address": "0x1cf4592ebffd730c7dc92c1bdffdfc3b9efcf29a", + "name": "Waves", + "symbol": "WAVES", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/425/thumb/waves.png?1548386117" + }, + { + "chainId": 1, + "address": "0xc744df3419a8c9bd4d6b9852a503eb1c5308a326", + "name": "RED TOKEN", + "symbol": "RED", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27153/thumb/red.png?1662204588" + }, + { + "chainId": 1, + "address": "0x02d3a27ac3f55d5d91fb0f52759842696a864217", + "name": "Charged Particles", + "symbol": "IONX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15836/thumb/DrKjSQMH_400x400.png?1622080222" + }, + { + "chainId": 1, + "address": "0xd5281bb2d1ee94866b03a0fccdd4e900c8cb5091", + "name": "Husky", + "symbol": "HUSKY", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/14842/thumb/husky_logo.png?1618634383" + }, + { + "chainId": 1, + "address": "0xeb9a4b185816c354db92db09cc3b50be60b901b6", + "name": "Origin Sport", + "symbol": "ORS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4646/thumb/origin-sport-logo.png?1547039912" + }, + { + "chainId": 1, + "address": "0x3afa1902b1f8a802abc18e5ad982d1bcd34afe22", + "name": "GrEarn", + "symbol": "GST", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6193/thumb/GVlSl0Oi_400x400.jpg?1547042222" + }, + { + "chainId": 1, + "address": "0xaa61d5dec73971cd4a026ef2820bb87b4a4ed8d6", + "name": "CRE8R DAO", + "symbol": "CRE8R", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22568/thumb/cropped-FINALwithbrick-2-1-1.png?1642060468" + }, + { + "chainId": 1, + "address": "0xc5ec4f1fc86da45ae788ec98756ba70b57676409", + "name": "Oje", + "symbol": "OJE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19811/thumb/Hv-ROnYV_400x400.jpg?1635924634" + }, + { + "chainId": 1, + "address": "0x3d3a4098bca71f1fee2e28d0b9db9bbe0f708ea5", + "name": "Wellness Convertible", + "symbol": "WCV", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/24849/thumb/WCV-TOKEN-LOGO-Wellness-Group.png?1649131483" + }, + { + "chainId": 1, + "address": "0x011c5c4e4a86fc95a7a6d5c49a69cdf0cb1d0467", + "name": "HK Coin", + "symbol": "HKC", + "decimals": 2, + "logoURI": "https://assets.coingecko.com/coins/images/20747/thumb/HKC200x200.png?1637634544" + }, + { + "chainId": 1, + "address": "0x67cc621ab2d086a101cff3340df0a065ac75827c", + "name": "Floki Musk", + "symbol": "FLOKI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18850/thumb/1632145919586.png?1633592006" + }, + { + "chainId": 1, + "address": "0x89551b940e2a8ed8eccf509935bac9213fe30584", + "name": "DoDreamChain", + "symbol": "DRM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10469/thumb/57414069_286321078958466_8377709696580059136_n.jpg?1579733292" + }, + { + "chainId": 1, + "address": "0x6b785a0322126826d8226d77e173d75dafb84d11", + "name": "Bankroll Vault", + "symbol": "VLT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11638/thumb/vlt-200.png?1592272725" + }, + { + "chainId": 1, + "address": "0xf33121a2209609cadc7349acc9c40e41ce21c730", + "name": "Blockchain Adventurers Guild", + "symbol": "BAG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14863/thumb/3iw7MAi.png?1618810870" + }, + { + "chainId": 1, + "address": "0x0b498ff89709d3838a063f1dfa463091f9801c2b", + "name": "BTC 2x Flexible Leverage Index", + "symbol": "BTC2X-FLI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15406/thumb/Copy_of_BTC2x-FLI_token_logo.png?1646749417" + }, + { + "chainId": 1, + "address": "0x69bbc3f8787d573f1bbdd0a5f40c7ba0aee9bcc9", + "name": "Yup", + "symbol": "YUP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12322/thumb/photo_2021-10-26_00-47-35.jpg?1635227479" + }, + { + "chainId": 1, + "address": "0x1ec184ec2db325140b041f9214f98a537f80e1a7", + "name": "Deploying More Capital", + "symbol": "DMC", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/27564/thumb/dmc-logo.png?1664520787" + }, + { + "chainId": 1, + "address": "0x3fab0bbaa03bceaf7c49e2b12877db0142be65fc", + "name": "Castello Coin", + "symbol": "CAST", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/25216/thumb/19705.png?1650866493" + }, + { + "chainId": 1, + "address": "0x48515e2baee5283e3b7cdc624f3c63caef13140a", + "name": "MarvinInu", + "symbol": "MARVIN", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/19028/thumb/ea3lTPa.png?1634193762" + }, + { + "chainId": 1, + "address": "0xcef46305d096fa876dd23048bf80f9345282e3fc", + "name": "Banque Universal", + "symbol": "CBU", + "decimals": 0, + "logoURI": "https://assets.coingecko.com/coins/images/8112/thumb/png_tr.png?1554952499" + }, + { + "chainId": 1, + "address": "0xc88f47067db2e25851317a2fdae73a22c0777c37", + "name": "Legacy oneBTC", + "symbol": "ONEBTC", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/15082/thumb/G9oJy1-R.png?1619660359" + }, + { + "chainId": 1, + "address": "0x910524678c0b1b23ffb9285a81f99c29c11cbaed", + "name": "Azuki", + "symbol": "AZUKI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13091/thumb/bdUBSCo.png?1605169403" + }, + { + "chainId": 1, + "address": "0x42d6622dece394b54999fbd73d108123806f6a18", + "name": "SpankChain", + "symbol": "SPANK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1226/thumb/spankchain.png?1548610811" + }, + { + "chainId": 1, + "address": "0x28a06c02287e657ec3f8e151a13c36a1d43814b0", + "name": "BondAppetit Governance", + "symbol": "BAG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14724/thumb/BAG2x.png?1618568573" + }, + { + "chainId": 1, + "address": "0xda86006036540822e0cd2861dbd2fd7ff9caa0e8", + "name": "TUBE2", + "symbol": "TUBE2", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18754/thumb/Tube-2.png?1633328940" + }, + { + "chainId": 1, + "address": "0x63f88a2298a5c4aee3c216aa6d926b184a4b2437", + "name": "GameCredits", + "symbol": "GAME", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/193/thumb/XlQmXoU.png?1595304945" + }, + { + "chainId": 1, + "address": "0xe172f366678ec7b559f6c2913a437baadfd4e6c8", + "name": "Kauri", + "symbol": "KAU", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/17802/thumb/200%C3%97200-logo.png?1629291816" + }, + { + "chainId": 1, + "address": "0x881a7e25d44591c467a37da96adf3c3705e7251b", + "name": "Elynet", + "symbol": "ELYX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13326/thumb/KakaoTalk_20201208_102026847.png?1607483005" + }, + { + "chainId": 1, + "address": "0xc5bcc8ba3f33ab0d64f3473e861bdc0685b19ef5", + "name": "Mechanium", + "symbol": "MECHA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24374/thumb/w4K4OOMo_400x400.jpg?1647940092" + }, + { + "chainId": 1, + "address": "0xf45f6c8bb3d77ea762175b8f7ca4d251941649fa", + "name": "Lemond", + "symbol": "LEMD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14964/thumb/D-smP_i-_400x400.png?1619166250" + }, + { + "chainId": 1, + "address": "0x38a94e92a19e970c144ded0b2dd47278ca11cc1f", + "name": "Falcon Nine", + "symbol": "F9", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/16858/thumb/logo-f9.png?1625465513" + }, + { + "chainId": 1, + "address": "0xa7de94227eb6828497f4343b9923959e41ae9cd1", + "name": "MUNI", + "symbol": "MUNI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28166/thumb/I03PYZqO_400x400-removebg-preview.png?1668172860" + }, + { + "chainId": 1, + "address": "0xe857734840dc188b4283d5af14ab8685467ab87d", + "name": "ESG Chain", + "symbol": "ESGC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22085/thumb/logo-01.png?1640761969" + }, + { + "chainId": 1, + "address": "0x5c1a02211072d7633465c64a1ed115d98d987394", + "name": "GTraX", + "symbol": "GTRX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27506/thumb/lcSVRB3TqwxffjniiK5S4n4C4lMRhx0wXIWA02iiQCHvz6sS96X69Iy_kb4YZXpe1OpmJTjE7518Bl6nmFh8BhpB_vTVWzk3pGiEjHJ4dHvQKkioP6xcO7VUCkwj2QqY6iN7j39OjzDp_FuBvN1ua4Ov1wVxxkeC6ozV37cLKcU5uuC0N5gFx6lioJyybw8QQ9rOwSEmdWPpJ5KAMgjr9ii-Hj4GwW3M6q8DsTZHy4gXXvH.jpeg?1664333232" + }, + { + "chainId": 1, + "address": "0x7cda79830faf07ed696fe220566116951ced36a7", + "name": "Maya Preferred", + "symbol": "MAYP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8081/thumb/2u0OXhT9_400x400.png?1554426529" + }, + { + "chainId": 1, + "address": "0x3fe7940616e5bc47b0775a0dccf6237893353bb4", + "name": "IdleDAI Best Yield ", + "symbol": "IDLEDAIYIELD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11901/thumb/idledai_32.png?1595990312" + }, + { + "chainId": 1, + "address": "0x9f76ff3336597feab30f5a66a053ae4a4a7ebe13", + "name": "Token Play", + "symbol": "TP3", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17996/thumb/WyzcFow.png?1630047790" + }, + { + "chainId": 1, + "address": "0xf3a2ace8e48751c965ea0a1d064303aca53842b9", + "name": "HXY Money", + "symbol": "HXY", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/11225/thumb/hexmoneygradientsmall.png?1595305947" + }, + { + "chainId": 1, + "address": "0x358aa737e033f34df7c54306960a38d09aabd523", + "name": "Ares Protocol", + "symbol": "ARES", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15153/thumb/Ares-logo.png?1620638611" + }, + { + "chainId": 1, + "address": "0x8c9e4cf756b9d01d791b95bc2d0913ef2bf03784", + "name": "AEROTOKEN", + "symbol": "AET", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9772/thumb/sVM73x16_400x400.jpg?1571707385" + }, + { + "chainId": 1, + "address": "0x23ccc43365d9dd3882eab88f43d515208f832430", + "name": "Midas Protocol", + "symbol": "MAS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4287/thumb/Bestand_000.png?1607560518" + }, + { + "chainId": 1, + "address": "0x872d63d889d4b445c89a0887dcdbcc179b026432", + "name": "Axus Coin", + "symbol": "AXUS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20713/thumb/-rUSqDLk_400x400.png?1637575970" + }, + { + "chainId": 1, + "address": "0xff0e5e014cf97e0615cb50f6f39da6388e2fae6e", + "name": "Origo", + "symbol": "OGO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4377/thumb/Origo_Logo_png.png?1580430001" + }, + { + "chainId": 1, + "address": "0x7b2df125567815ac9b57da04b620f50bc93b320c", + "name": "Archetypal Network", + "symbol": "ACTP", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/5946/thumb/logo_%284%29.png?1547041885" + }, + { + "chainId": 1, + "address": "0xa16a609ff4e1a15b6ccb469e7a5dd14e89305283", + "name": "Spume", + "symbol": "SPUME", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27089/thumb/D6lMeW9k_400x400.jpeg?1661824399" + }, + { + "chainId": 1, + "address": "0xd85a6ae55a7f33b0ee113c234d2ee308edeaf7fd", + "name": "Cobak", + "symbol": "CBK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13459/thumb/cbk-128-128.png?1608760936" + }, + { + "chainId": 1, + "address": "0xd0345d30fd918d7682398acbcdf139c808998709", + "name": "Lixir Finance", + "symbol": "LIX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15333/thumb/SVxrN7DF_400x400.jpg?1637855435" + }, + { + "chainId": 1, + "address": "0x4e4a47cac6a28a62dcc20990ed2cda9bc659469f", + "name": "I will poop it NFT", + "symbol": "SHIT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25945/thumb/PCNoOl8.png?1654833800" + }, + { + "chainId": 1, + "address": "0x8d610e20481f4c4f3acb87bba9c46bef7795fdfe", + "name": "Unity Network", + "symbol": "UNT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17143/thumb/unity.PNG?1626658763" + }, + { + "chainId": 1, + "address": "0xaa6e8127831c9de45ae56bb1b0d4d4da6e5665bd", + "name": "Index Coop ETH 2x Flexible Leverage I", + "symbol": "ETH2X-FLI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14392/thumb/ETH2x-FLI_%281%29.png?1615875910" + }, + { + "chainId": 1, + "address": "0xf6ec87dfe1ed3a7256cc0c38e3c8139103e9af3b", + "name": "Gene", + "symbol": "GENE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14145/thumb/logo.a60a0c80_%281%29.png?1614653629" + }, + { + "chainId": 1, + "address": "0x5c872500c00565505f3624ab435c222e558e9ff8", + "name": "CoTrader", + "symbol": "COT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4205/thumb/logo_black.png?1547039508" + }, + { + "chainId": 1, + "address": "0x111111111117dc0aa78b770fa6a738034120c302", + "name": "1inch", + "symbol": "1INCH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13469/thumb/1inch-token.png?1608803028" + }, + { + "chainId": 1, + "address": "0x5c6ee304399dbdb9c8ef030ab642b10820db8f56", + "name": "Balancer 80 BAL 20 WETH", + "symbol": "B-80BAL-20WETH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26452/thumb/0x5c6ee304399dbdb9c8ef030ab642b10820db8f56.png?1658113613" + }, + { + "chainId": 1, + "address": "0x301c755ba0fca00b1923768fffb3df7f4e63af31", + "name": "Global Digital Content", + "symbol": "GDC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10122/thumb/Vp4L1x4Hu4HEuEPUl0gSocDaVifkXlCqSd8A72ml_Q0uwEc9uBWBTwjS43_NP8eiiZVveJDIQXguWUXYk3MLZiFOER-8CGO120I0NGU_L8aTJ8c50a-O_AbkY-4nUkPYhUTNgf3rkcqkXnKecixQwLfkJG2XTCLwNvo_ox05x0_hU1Z__FOT4O7AeU-PC6skc85NCVS68cnZjxcUBOY9K.jpg?1576124937" + }, + { + "chainId": 1, + "address": "0x34769d3e122c93547836addd3eb298035d68f1c3", + "name": "NumisMe", + "symbol": "NUME", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24766/thumb/nume_token_logo.png?1648817270" + }, + { + "chainId": 1, + "address": "0xea7aa1edd21735a5ab05ee3e90869016191e274e", + "name": "Junca cash", + "symbol": "JCC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12889/thumb/junca.jpg?1603279160" + }, + { + "chainId": 1, + "address": "0xc5bddf9843308380375a611c18b50fb9341f502a", + "name": "veCRV DAO yVault", + "symbol": "YVE-CRVDAO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13065/thumb/yearn_veCRV.png?1612862859" + }, + { + "chainId": 1, + "address": "0xf920e4f3fbef5b3ad0a25017514b769bdc4ac135", + "name": "BABB", + "symbol": "BAX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2168/thumb/babb.png?1547036466" + }, + { + "chainId": 1, + "address": "0x5af28eb9dec75e86cdfbd2e41a474b54b211c1c2", + "name": "Tangle", + "symbol": "TNGL", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/18312/thumb/tangle.PNG?1631510159" + }, + { + "chainId": 1, + "address": "0x9724f51e3afb6b2ae0a5d86fd3b88c73283bc38f", + "name": "WAGMI", + "symbol": "WAGMI", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/20531/thumb/PbEXCkig.jpg?1637201496" + }, + { + "chainId": 1, + "address": "0x6307b25a665efc992ec1c1bc403c38f3ddd7c661", + "name": "Global Coin Research", + "symbol": "GCR", + "decimals": 4, + "logoURI": "https://assets.coingecko.com/coins/images/14815/thumb/gcr.jpeg?1641461197" + }, + { + "chainId": 1, + "address": "0x9c405acf8688afb61b3197421cdeec1a266c6839", + "name": "DogeYield", + "symbol": "DOGY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13734/thumb/dogy200px.png?1611266985" + }, + { + "chainId": 1, + "address": "0x1ccf27211e8bf052f6255329ed641b4e94e80603", + "name": "Metababy", + "symbol": "BABY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27175/thumb/7psZaqh0_400x400.jpeg?1662369176" + }, + { + "chainId": 1, + "address": "0x179e31fb25e433441a2839389a7b8ec9c4654b7b", + "name": "SynchroBitcoin", + "symbol": "SNB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10727/thumb/Logosnb.png?1582667361" + }, + { + "chainId": 1, + "address": "0xd8c82fbc4d8ed0644a7ec04cf973e84c6153c1d7", + "name": "Rizen Coin Old ", + "symbol": "RZN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13373/thumb/Rizen_logo_black.png?1620206327" + }, + { + "chainId": 1, + "address": "0xcbeaec699431857fdb4d37addbbdc20e132d4903", + "name": "YOYOW", + "symbol": "YOYOW", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1270/thumb/yoyow.png?1548761123" + }, + { + "chainId": 1, + "address": "0xa15690e9205de386ce849889831c1668c300c1ad", + "name": "pETH18C", + "symbol": "PETH18C", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14646/thumb/peth8a.png?1617489575" + }, + { + "chainId": 1, + "address": "0x9c354503c38481a7a7a51629142963f98ecc12d0", + "name": "Origin Dollar Governance", + "symbol": "OGV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26353/thumb/ogv-200x200.png?1657606918" + }, + { + "chainId": 1, + "address": "0x00d1793d7c3aae506257ba985b34c76aaf642557", + "name": "Tacos", + "symbol": "TACO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12108/thumb/photo_2020-08-12_05-50-46.jpg?1597217863" + }, + { + "chainId": 1, + "address": "0xadf0ac3059400edfb6131b9fe65feea6ca83ad76", + "name": "Turtle Shell Islands", + "symbol": "SHELL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26925/thumb/slogo.png?1660833387" + }, + { + "chainId": 1, + "address": "0x71dc40668682a124231301414167e4cf7f55383c", + "name": "Mimir", + "symbol": "MIMIR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19551/thumb/xaq5Xlzg_400x400.jpg?1635401626" + }, + { + "chainId": 1, + "address": "0xe9cb6838902ccf711f16a9ea5a1170f8e9853c02", + "name": "StripCoin", + "symbol": "STRIP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20242/thumb/um7swakg.png?1636696116" + }, + { + "chainId": 1, + "address": "0x97abee33cd075c58bfdd174e0885e08e8f03556f", + "name": "Sentiment", + "symbol": "SENT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16388/thumb/94SwpUOP_400x400.jpg?1623894898" + }, + { + "chainId": 1, + "address": "0x3b08c03fa8278cf81b9043b228183760376fcdbb", + "name": "Reptilian", + "symbol": "RPTC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18989/thumb/rept.PNG?1634114856" + }, + { + "chainId": 1, + "address": "0xd38de88687172bde440755b5237987e4a87c23a7", + "name": "AEN Smart", + "symbol": "AENS", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/15163/thumb/x58-DmSw.png?1620007469" + }, + { + "chainId": 1, + "address": "0x30df7d7ee52c1b03cd009e656f00ab875adceed2", + "name": "MetaReset", + "symbol": "RESET", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26631/thumb/logo.png?1659325867" + }, + { + "chainId": 1, + "address": "0x93ecdfe316de6dc44c2104183b7f6736d83521c2", + "name": "Meta Inu Token", + "symbol": "META", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20466/thumb/META-INU.png?1637064437" + }, + { + "chainId": 1, + "address": "0x2341dd0a96a0dab62aa1efb93d59ff7f3bdb8932", + "name": "ProStarter", + "symbol": "PROT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15259/thumb/rpot.PNG?1620269970" + }, + { + "chainId": 1, + "address": "0x3802c218221390025bceabbad5d8c59f40eb74b8", + "name": "Guarded Ether", + "symbol": "GETH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14001/thumb/guarda-shield-logo.png?1613603915" + }, + { + "chainId": 1, + "address": "0x2c9aceb63181cd08a093d052ec041e191f229692", + "name": "Angryb", + "symbol": "ANB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17270/thumb/AngryBlockchain.png?1627005396" + }, + { + "chainId": 1, + "address": "0x888888888888f195e27a2e0f98d712952ab9348e", + "name": "IPI Shorter", + "symbol": "IPISTR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27002/thumb/box-1.png?1661329648" + }, + { + "chainId": 1, + "address": "0xb1a30851e3f7d841b231b086479608e17198363a", + "name": "Homeros", + "symbol": "HMR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11048/thumb/g1jAE5knZSlNUdLN8fEAQFMI4mTXCuNdrjj3i77rWhsIQADp3VWH2BHTkH7-oWwExxJk7Fu545LPeT3gMNzGlCZ63oX3-9sTjiqlSDo3fRLwHmhUgjD_jtKTl1AJ_F_UOOpsTqob9CxiWHXsSTlz0zODxOrjnqpMe4_cPT_C4EskSEVee_oooTasTQ6ONrv85Zcvc8Eeb8cHLsV.jpg?1587532938" + }, + { + "chainId": 1, + "address": "0xc944e90c64b2c07662a292be6244bdf05cda44a7", + "name": "The Graph", + "symbol": "GRT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13397/thumb/Graph_Token.png?1608145566" + }, + { + "chainId": 1, + "address": "0xa86a0da9d05d0771955df05b44ca120661af16de", + "name": "OTCBTC", + "symbol": "OTB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5246/thumb/otcbtc-token.jpg?1547040734" + }, + { + "chainId": 1, + "address": "0xd9af2d11d788da0097076f4eb21bd1c5533743d9", + "name": "Legal Block", + "symbol": "LBK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9524/thumb/62783498_2399147633483417_3919658167318872064_n.jpg?1568605802" + }, + { + "chainId": 1, + "address": "0x833e4c02c47b7e38f5b9a80b26eb07d23d1961f4", + "name": "The Bitcoin Family", + "symbol": "FAMILY", + "decimals": 4, + "logoURI": "https://assets.coingecko.com/coins/images/13776/thumb/the_bitcoin_family.png?1611712529" + }, + { + "chainId": 1, + "address": "0xb3207935ff56120f3499e8ad08461dd403bf16b8", + "name": "dAMM", + "symbol": "DAMM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28082/thumb/dAMM_logo_round_-_dark.png?1667443628" + }, + { + "chainId": 1, + "address": "0x29a5c1db7321c5c9eae57f9366ee8eef00ca11fb", + "name": "SHKOOBY INU", + "symbol": "SHKOOBY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19790/thumb/shkooby.png?1645255468" + }, + { + "chainId": 1, + "address": "0xadb2437e6f65682b85f814fbc12fec0508a7b1d0", + "name": "UniCrypt", + "symbol": "UNCX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12871/thumb/unicrypt_logo.png?1603178739" + }, + { + "chainId": 1, + "address": "0x434cb4fc4b952872967914d430878eee53ebd502", + "name": "ALLPAYCOIN", + "symbol": "APCG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26836/thumb/apcg.png?1660299504" + }, + { + "chainId": 1, + "address": "0x0a3bb08b3a15a19b4de82f8acfc862606fb69a2d", + "name": "iZUMi Bond USD", + "symbol": "IUSD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25388/thumb/iusd-logo-symbol-10k%E5%A4%A7%E5%B0%8F.png?1651660620" + }, + { + "chainId": 1, + "address": "0x08037036451c768465369431da5c671ad9b37dbc", + "name": "NFT Stars", + "symbol": "NFTS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16141/thumb/j2KHi8zR_400x400.png?1623116004" + }, + { + "chainId": 1, + "address": "0x96c645d3d3706f793ef52c19bbace441900ed47d", + "name": "Mt Pelerin Shares", + "symbol": "MPS", + "decimals": 0, + "logoURI": "https://assets.coingecko.com/coins/images/11471/thumb/MPS.png?1590319120" + }, + { + "chainId": 1, + "address": "0xe2e109f1b4eaa8915655fe8fdefc112a34acc5f0", + "name": "Dust", + "symbol": "DUST", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19086/thumb/WdTDLpcA_400x400.png?1634420382" + }, + { + "chainId": 1, + "address": "0xe2d310cb8992b3fa1051ba4710f41c43eb5bba5d", + "name": "Crypto Wrestling Inu", + "symbol": "CWI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25350/thumb/logo.png?1651304842" + }, + { + "chainId": 1, + "address": "0xb487d0328b109e302b9d817b6f46cbd738ea08c2", + "name": "TattooMoney", + "symbol": "TAT2", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24772/thumb/logo_200x200.png?1649835408" + }, + { + "chainId": 1, + "address": "0x5cb888182fbffdb62c08fb4b5a343914f00fdfee", + "name": "Moneybrain BiPS", + "symbol": "BIPS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15556/thumb/bips_logo_200x200_Trans.png?1621204965" + }, + { + "chainId": 1, + "address": "0x8606a8f28e1e2fd50b9074d65c01548b1f040b32", + "name": "Cryptrust", + "symbol": "CTRT", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/6110/thumb/cryptrust.png?1547042119" + }, + { + "chainId": 1, + "address": "0xd2e5decc08a80be6538f89f9ab8ff296e2f724df", + "name": "STIMA", + "symbol": "STIMA", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/26101/thumb/STIMA_200x200.png?1655867272" + }, + { + "chainId": 1, + "address": "0x4ad7a056191f4c9519facd6d75fa94ca26003ace", + "name": "GoldPesa Option", + "symbol": "GPO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23813/thumb/15462.png?1645513212" + }, + { + "chainId": 1, + "address": "0x5a98fcbea516cf06857215779fd812ca3bef1b32", + "name": "Lido DAO", + "symbol": "LDO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13573/thumb/Lido_DAO.png?1609873644" + }, + { + "chainId": 1, + "address": "0xbf6ff49ffd3d104302ef0ab0f10f5a84324c091c", + "name": "Nftfy", + "symbol": "NFTFY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15292/thumb/nfty.PNG?1620365235" + }, + { + "chainId": 1, + "address": "0x177ba0cac51bfc7ea24bad39d81dcefd59d74faa", + "name": "KittenFinance", + "symbol": "KIF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12340/thumb/SnQPkABT_400x400.png?1599173267" + }, + { + "chainId": 1, + "address": "0x27778e14ce36d3b85e1effeb43816a17bbb7088a", + "name": "Lyfe Gold", + "symbol": "LGOLD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14938/thumb/LGOLD-Logo-200.png?1619082558" + }, + { + "chainId": 1, + "address": "0x697ef32b4a3f5a4c39de1cb7563f24ca7bfc5947", + "name": "Insula", + "symbol": "ISLA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10884/thumb/isla.PNG?1585522028" + }, + { + "chainId": 1, + "address": "0xf41e5fbc2f6aac200dd8619e121ce1f05d150077", + "name": "CRYCASH", + "symbol": "CRC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1945/thumb/crycash.png?1547790664" + }, + { + "chainId": 1, + "address": "0x6a8fee0e33cb65a7e8d21badca62e87639ef74b3", + "name": "PDX Coin", + "symbol": "PDX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25095/thumb/vBi23nWw_400x400.jpg?1650271510" + }, + { + "chainId": 1, + "address": "0xf51ccb15d3f2d304ae6c409303e8b3a3e397a80b", + "name": "Open Proprietary Protocol", + "symbol": "OPP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27417/thumb/1_YTzF4KXNbEMRykWKGgKpwg.jpeg?1663858531" + }, + { + "chainId": 1, + "address": "0x645c52cf6c5c58aa4064494f5b5ffe9c7ec0d7d4", + "name": "Huckleberry Inu", + "symbol": "HKBY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28495/thumb/IMG_20221214_073842_547_%283%29_%281%29.png?1671108300" + }, + { + "chainId": 1, + "address": "0x456ae45c0ce901e2e7c99c0718031cec0a7a59ff", + "name": "Vision Network", + "symbol": "VSN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9029/thumb/photo_2020-08-14_20-34-55.jpg?1606133699" + }, + { + "chainId": 1, + "address": "0x284b59cf2539544559c6efa11e2795e06d535345", + "name": "DAOvc", + "symbol": "DAOVC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18259/thumb/daovc.PNG?1631156207" + }, + { + "chainId": 1, + "address": "0x6f2a550259532f7429530dcb93d86269629e3f2a", + "name": "Cloud Protocol", + "symbol": "CPRO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21594/thumb/o8UiNqFg_400x400.jpg?1639546169" + }, + { + "chainId": 1, + "address": "0xaa3573cc3761133375b0c504146b93f6827f945a", + "name": "All Time High", + "symbol": "ATH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28304/thumb/ath200.png?1669276766" + }, + { + "chainId": 1, + "address": "0x3ecab35b64345bfc472477a653e4a3abe70532d9", + "name": "EnterButton", + "symbol": "ENTC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19677/thumb/ENTC_symbol.png?1635740712" + }, + { + "chainId": 1, + "address": "0xbb6cd639724417a20a7db0f45c1fb2fe532f490a", + "name": "Hidigital btc", + "symbol": "HDBTC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27024/thumb/20220824_132403.png?1661485211" + }, + { + "chainId": 1, + "address": "0x8b6cda5cc518c904e8844f445e1a7c7d2db0ff16", + "name": "SF Capital", + "symbol": "SFCP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6239/thumb/36952079_1621155091328297_7456989147790573568_n.jpg?1547042274" + }, + { + "chainId": 1, + "address": "0xc4a86561cb0b7ea1214904f26e6d50fd357c7986", + "name": "Charg Coin", + "symbol": "CHG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2159/thumb/charg-coin.png?1547036459" + }, + { + "chainId": 1, + "address": "0x7025bab2ec90410de37f488d1298204cd4d6b29d", + "name": "Xriba", + "symbol": "XRA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5639/thumb/xriba.png?1548761095" + }, + { + "chainId": 1, + "address": "0x6d52dfefb16bb9cdc78bfca09061e44574886626", + "name": "CPUcoin", + "symbol": "CPU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9544/thumb/uaz.ms.png?1624024119" + }, + { + "chainId": 1, + "address": "0x2920f7d6134f4669343e70122ca9b8f19ef8fa5d", + "name": "MonoX", + "symbol": "MONO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20901/thumb/e51c6UaU_400x400.png?1637879085" + }, + { + "chainId": 1, + "address": "0x42a0d24cb5c423eaaf926ce3984aaff0c4ff6fe2", + "name": "Imperial Obelisk OLD ", + "symbol": "IMP", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/19083/thumb/imp_logo.png?1634377746" + }, + { + "chainId": 1, + "address": "0xb622400807765e73107b7196f444866d7edf6f62", + "name": "Heros", + "symbol": "HEROS", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/20381/thumb/200x200.png?1658719987" + }, + { + "chainId": 1, + "address": "0x3fb8d8a28aff053ccf446bc075eecb7a0ef65d0c", + "name": "StarPlay", + "symbol": "STPC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9705/thumb/8fp5wsxp_400x400.png?1570920359" + }, + { + "chainId": 1, + "address": "0x805856f176625843d14097017618e224f4607d2d", + "name": "battle esports coin", + "symbol": "BES", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22866/thumb/9R4ImfBo_400x400.jpg?1642755223" + }, + { + "chainId": 1, + "address": "0x6e0dade58d2d89ebbe7afc384e3e4f15b70b14d8", + "name": "QuiverX", + "symbol": "QRX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12916/thumb/qrx_logo.png?1603550478" + }, + { + "chainId": 1, + "address": "0x2965395f71b7d97ede251e9b63e44dfa9647cc0a", + "name": "Shinshu Inu", + "symbol": "SHINSHU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28093/thumb/shinshu200.png?1667536301" + }, + { + "chainId": 1, + "address": "0x8c15ef5b4b21951d50e53e4fbda8298ffad25057", + "name": "Function X", + "symbol": "FX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8186/thumb/47271330_590071468072434_707260356350705664_n.jpg?1556096683" + }, + { + "chainId": 1, + "address": "0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e", + "name": "yearn finance", + "symbol": "YFI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11849/thumb/yfi-192x192.png?1598325330" + }, + { + "chainId": 1, + "address": "0xba93ef534094f8b7001ece2691168140965341ab", + "name": "Beauty Bakery Linked Operation Transact", + "symbol": "LOTT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27688/thumb/LOTT.jpg?1665217304" + }, + { + "chainId": 1, + "address": "0x68b1cadb8d5ab0c97fe9d9fbe0eb60acb329fe3f", + "name": "Unicly Mystic Axies Collection", + "symbol": "UAXIE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14921/thumb/uaxie-mystic.png?1619055573" + }, + { + "chainId": 1, + "address": "0x46d886887b6908183032c75dee1b731b26d653c6", + "name": "GreenCoin AI", + "symbol": "GRC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18376/thumb/Untitled-design-2-removebg-preview.png?1631692214" + }, + { + "chainId": 1, + "address": "0xd9b312d77bc7bed9b9cecb56636300bed4fe5ce9", + "name": "Gains", + "symbol": "GAINS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14681/thumb/GAINS_Token_200x200.png?1617796172" + }, + { + "chainId": 1, + "address": "0xfe459828c90c0ba4bc8b42f5c5d44f316700b430", + "name": "BBS Network", + "symbol": "BBS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23715/thumb/Ni13Pg1K_400x400.jpg?1645110585" + }, + { + "chainId": 1, + "address": "0x3b604747ad1720c01ded0455728b62c0d2f100f0", + "name": "WAGMI Game", + "symbol": "WAGMIGAMES", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25906/thumb/Eohd79rn_400x400.jpg?1654582966" + }, + { + "chainId": 1, + "address": "0xa891cf72aeda692570928efe1a832342e9783cdc", + "name": "Interfinex Bills", + "symbol": "IFEX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13346/thumb/U6uYZry.png?1607662020" + }, + { + "chainId": 1, + "address": "0xc4e8a9d47000ab8e59c7031e311762c68215e467", + "name": "STARX", + "symbol": "STARX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8417/thumb/starworks.PNG?1640681958" + }, + { + "chainId": 1, + "address": "0xaa2d8c9a8bd0f7945143bfd509be3ff23dd78918", + "name": "Artizen", + "symbol": "ATNT", + "decimals": 3, + "logoURI": "https://assets.coingecko.com/coins/images/27263/thumb/ATNT-symbol_200.png?1663059371" + }, + { + "chainId": 1, + "address": "0x8ce9137d39326ad0cd6491fb5cc0cba0e089b6a9", + "name": "SXP", + "symbol": "SXP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9368/thumb/swipe.png?1566792311" + }, + { + "chainId": 1, + "address": "0x59321ace77c8087ff8cb9f94c8384807e4fd8a3c", + "name": "Xeniumx", + "symbol": "XEMX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11094/thumb/AmoNWiZ_vx17KF3g6q5RQRaAYrXBXXWjRH5sU2m-1JYt3rJ4c88yo-KS9qKh43lfN2QkuS6AVuYAxcpQQSHQMjqwh-6HsdCyF-yi0xH9Dio5E6UdvNlh0fAMe-RSzp6x2UN6RhAorfUp_wMDDDnHSANWR9iOmVKtemiBLwpUyF-NbY3xdhW5hHAfbARvdnGODq14ujlFu0MJuLi.jpg?1588212665" + }, + { + "chainId": 1, + "address": "0xf3ae5d769e153ef72b4e3591ac004e89f48107a1", + "name": "Deeper Network", + "symbol": "DPR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14748/thumb/deeper.png?1618094356" + }, + { + "chainId": 1, + "address": "0x30c2a84aed6db30e31cf4d7059b1836c12c68068", + "name": "Unicly Aavegotchi Astronauts Collection", + "symbol": "UGOTCHI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14901/thumb/uGOTCHI.jpg?1618936478" + }, + { + "chainId": 1, + "address": "0xe4dae00bc1c46ea2f44ae71b1beb8b171c15d812", + "name": "PREMA", + "symbol": "PRMX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27600/thumb/prmx.png?1664715769" + }, + { + "chainId": 1, + "address": "0xa1a88cea335edaf30ce90f103f1434a773ea46bd", + "name": "Deku Inu", + "symbol": "DEKU", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/18434/thumb/logo_382.png?1631944724" + }, + { + "chainId": 1, + "address": "0x33840024177a7daca3468912363bed8b425015c5", + "name": "Ebox", + "symbol": "EBOX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14528/thumb/ebox.png?1639203519" + }, + { + "chainId": 1, + "address": "0x6fc5af63990aa9e5c5543f5cd8ed148bfa6d9d19", + "name": "Saint Inu", + "symbol": "SAINT", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/19724/thumb/saint_inu.png?1648269236" + }, + { + "chainId": 1, + "address": "0xeabb8996ea1662cad2f7fb715127852cd3262ae9", + "name": "Connect Financial", + "symbol": "CNFI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13592/thumb/cf-logo-iconic-black.png?1644479524" + }, + { + "chainId": 1, + "address": "0x87931e7ad81914e7898d07c68f145fc0a553d8fb", + "name": "WIZARD Vault NFTX ", + "symbol": "WIZARD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17068/thumb/Wizards.png?1626151233" + }, + { + "chainId": 1, + "address": "0x33d203fa03bb30b133de0fe2d6533c268ba286b6", + "name": "MandoX", + "symbol": "MANDOX", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/24968/thumb/NmqN8g7.png?1649917431" + }, + { + "chainId": 1, + "address": "0x9416ba76e88d873050a06e5956a3ebf10386b863", + "name": "Virtue", + "symbol": "VIRTUE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25834/thumb/discord.png?1654067486" + }, + { + "chainId": 1, + "address": "0xc58f53a8adff2fb4eb16ed56635772075e2ee123", + "name": "Aave AMM UniWBTCWETH", + "symbol": "AAMMUNIWBTCWETH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17231/thumb/aAmmUniWBTCWETH.png?1626921113" + }, + { + "chainId": 1, + "address": "0x9b62ec1453cea5dde760aaf662048ca6eeb66e7f", + "name": "Consensus Cell Network", + "symbol": "ECELL", + "decimals": 2, + "logoURI": "https://assets.coingecko.com/coins/images/12624/thumb/ecell_logo_128.png?1643188699" + }, + { + "chainId": 1, + "address": "0x5f944b0c4315cb7c3a846b025ab4045da44abf6c", + "name": "Pancake Games", + "symbol": "GCAKE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20217/thumb/6oc-L2UC_400x400.png?1636671365" + }, + { + "chainId": 1, + "address": "0x3d9233f15bb93c78a4f07b5c5f7a018630217cb3", + "name": "Unicly Genesis Collection", + "symbol": "UUNICLY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14903/thumb/Unicly_%28unicly%29.jpg?1618937278" + }, + { + "chainId": 1, + "address": "0xe0c8b298db4cffe05d1bea0bb1ba414522b33c1b", + "name": "Nuco Cloud", + "symbol": "NCDT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8932/thumb/nucloud_logo.png?1650524741" + }, + { + "chainId": 1, + "address": "0x746dda2ea243400d5a63e0700f190ab79f06489e", + "name": "BOSAGORA", + "symbol": "BOA", + "decimals": 7, + "logoURI": "https://assets.coingecko.com/coins/images/9202/thumb/boaLogo.png?1565231346" + }, + { + "chainId": 1, + "address": "0x73374ea518de7addd4c2b624c0e8b113955ee041", + "name": "Juggernaut", + "symbol": "JGN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12761/thumb/juggernaut_logo.png?1602428976" + }, + { + "chainId": 1, + "address": "0x72108a8cc3254813c6be2f1b77be53e185abfdd9", + "name": "Era Swap", + "symbol": "ES", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6031/thumb/era_swap.PNG?1570920926" + }, + { + "chainId": 1, + "address": "0x6be61833fc4381990e82d7d4a9f4c9b3f67ea941", + "name": "Hotbit", + "symbol": "HTB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5990/thumb/hotbit-token.png?1547041932" + }, + { + "chainId": 1, + "address": "0x13c99770694f07279607a6274f28a28c33086424", + "name": "Material", + "symbol": "MTRL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22069/thumb/square-200x200.png?1640749501" + }, + { + "chainId": 1, + "address": "0xe61f6e39711cec14f8d6c637c2f4568baa9ff7ee", + "name": "Hey", + "symbol": "HEY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28092/thumb/HEY-logo-2-1024x1024.png?1667534940" + }, + { + "chainId": 1, + "address": "0xdffc63f92c939deb112d88735ade3b4d21b6d491", + "name": "Devour Token", + "symbol": "RESTAURANTS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22817/thumb/Devour-200x200-2.png?1645602391" + }, + { + "chainId": 1, + "address": "0x467719ad09025fcc6cf6f8311755809d45a5e5f3", + "name": "Axelar", + "symbol": "AXL", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/27277/thumb/V-65_xQ1_400x400.jpeg?1663121730" + }, + { + "chainId": 1, + "address": "0xa150db9b1fa65b44799d4dd949d922c0a33ee606", + "name": "Digital Reserve Currency", + "symbol": "DRC", + "decimals": 0, + "logoURI": "https://assets.coingecko.com/coins/images/12802/thumb/DRC_Logo.jpg?1654229818" + }, + { + "chainId": 1, + "address": "0xcb94be6f13a1182e4a4b6140cb7bf2025d28e41b", + "name": "WeTrust", + "symbol": "TRST", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/645/thumb/wetrust.png?1547034370" + }, + { + "chainId": 1, + "address": "0x03042482d64577a7bdb282260e2ea4c8a89c064b", + "name": "Centaur", + "symbol": "CNTR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12743/thumb/logo_%2898%29.png?1602630445" + }, + { + "chainId": 1, + "address": "0xd3c89cac4a4283edba6927e2910fd1ebc14fe006", + "name": "Moona ", + "symbol": "MOOI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14125/thumb/mooi.png?1617866132" + }, + { + "chainId": 1, + "address": "0xc6db556fd9ec09bab6dfea320e52d8476f61d424", + "name": "Cool Monke Banana", + "symbol": "CMB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23385/thumb/cmb-200x200.png?1643965383" + }, + { + "chainId": 1, + "address": "0x139cec55d1ec47493dfa25ca77c9208aba4d3c68", + "name": "Parasset", + "symbol": "ASET", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19395/thumb/token_200.png?1635151501" + }, + { + "chainId": 1, + "address": "0x7102dc82ef61bfb0410b1b1bf8ea74575bf0a105", + "name": "X7102", + "symbol": "X7102", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28420/thumb/X7102_LOGO_black_back_200_x_200_px.png?1670460752" + }, + { + "chainId": 1, + "address": "0x7237c0b30b1355f1b76355582f182f6f04b08740", + "name": "MetaGaming Guild", + "symbol": "MGG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23287/thumb/mgg.png?1643543010" + }, + { + "chainId": 1, + "address": "0xa9f9acb92e4e2f16410511d56839a5bd1d630a60", + "name": "BLOCK E", + "symbol": "BLOCK-E", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/26905/thumb/photo_2022-09-07_10.17.08.jpeg?1664065816" + }, + { + "chainId": 1, + "address": "0x7e00b63483c92975a3be0a71432277935326a618", + "name": "DroneFly", + "symbol": "KDC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17243/thumb/dronefly_symbol_200x200.png?1626936898" + }, + { + "chainId": 1, + "address": "0xf5f06ffa53ad7f5914f493f16e57b56c8dd2ea80", + "name": "Jelly", + "symbol": "JELLY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25386/thumb/200x200Jtokenlogo.png?1651641389" + }, + { + "chainId": 1, + "address": "0x97aa8e14db0bc073cc7e2d42ac715427717d6042", + "name": "SPUNK Vault NFTX ", + "symbol": "SPUNK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17063/thumb/Spunks_%281%29.png?1626150896" + }, + { + "chainId": 1, + "address": "0xaaaebe6fe48e54f431b0c390cfaf0b017d09d42d", + "name": "Celsius Network", + "symbol": "CEL", + "decimals": 4, + "logoURI": "https://assets.coingecko.com/coins/images/3263/thumb/CEL_logo.png?1609598753" + }, + { + "chainId": 1, + "address": "0x7a73839bd0e5cded853cb01aa9773f8989381065", + "name": "UpBots", + "symbol": "UBXN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12476/thumb/UBXT.png?1600132967" + }, + { + "chainId": 1, + "address": "0xd780ae2bf04cd96e577d3d014762f831d97129d0", + "name": "Envion", + "symbol": "EVN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1547/thumb/envion.jpg?1547035704" + }, + { + "chainId": 1, + "address": "0xb399511642fe1666c6a07f83483e6e4feaed9a00", + "name": "Standard Euro", + "symbol": "SEURO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28201/thumb/sEuroLogo.png?1670480816" + }, + { + "chainId": 1, + "address": "0xe59d2ff6995a926a574390824a657eed36801e55", + "name": "Aave AMM UniAAVEWETH", + "symbol": "AAMMUNIAAVEWETH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17232/thumb/aAmmUniAAVEWETH.png?1626921301" + }, + { + "chainId": 1, + "address": "0x17ce5a8187c817d659b21083455455a092a173bb", + "name": "World Bet Inu", + "symbol": "WBI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28279/thumb/WBIlogo.png?1669107582" + }, + { + "chainId": 1, + "address": "0x2a69655c22eda32ff48d315bb26ed45f150700b4", + "name": "StakerDAO Wrapped Tezos", + "symbol": "WXTZ", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/14763/thumb/wXTZ-token-FullColor.png?1618281765" + }, + { + "chainId": 1, + "address": "0x3c4b6e6e1ea3d4863700d7f76b36b7f3d3f13e3d", + "name": "Voyager VGX", + "symbol": "VGX", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/794/thumb/Voyager-vgx.png?1575693595" + }, + { + "chainId": 1, + "address": "0x4fadc7a98f2dc96510e42dd1a74141eeae0c1543", + "name": "Wrapped AR", + "symbol": "WAR", + "decimals": 12, + "logoURI": "https://assets.coingecko.com/coins/images/17093/thumb/war.PNG?1626224053" + }, + { + "chainId": 1, + "address": "0xb1f871ae9462f1b2c6826e88a7827e76f86751d4", + "name": "GNY", + "symbol": "GNY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5300/thumb/icon_gny.jpg?1601926183" + }, + { + "chainId": 1, + "address": "0xb29663aa4e2e81e425294193616c1b102b70a158", + "name": "Ludena Protocol", + "symbol": "LDN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13372/thumb/LudenaProtocol_symbol_200x200.png?1607999831" + }, + { + "chainId": 1, + "address": "0x0239d3a3485ec54511bee9d77d92695e443bf060", + "name": "Bill", + "symbol": "BILL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18480/thumb/photo_2021-08-16_23-27-37.jpg?1632151517" + }, + { + "chainId": 1, + "address": "0x504cde95dbc5d90d09b802f43b371971adbecf79", + "name": "Centralex", + "symbol": "CENX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16025/thumb/Centralex_Logo.png?1622618498" + }, + { + "chainId": 1, + "address": "0x220b71671b649c03714da9c621285943f3cbcdc6", + "name": "TosDis", + "symbol": "DIS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13745/thumb/Tosdis-black.png?1611379744" + }, + { + "chainId": 1, + "address": "0x3c2a309d9005433c1bc2c92ef1be06489e5bf258", + "name": "Wrapped Paycoin", + "symbol": "WPCI", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/24390/thumb/new_logo_square_%281%29.png?1648792416" + }, + { + "chainId": 1, + "address": "0xfa93660c3f6a848556bb8e265f994160a1f2b289", + "name": "Community Business Token", + "symbol": "CBT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14701/thumb/CBT-Token-Small.png?1617838284" + }, + { + "chainId": 1, + "address": "0xea47b64e1bfccb773a0420247c0aa0a3c1d2e5c5", + "name": "BAYC Vault NFTX ", + "symbol": "BAYC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17035/thumb/BAYC.png?1626142944" + }, + { + "chainId": 1, + "address": "0x9d0b65a76274645b29e4cc41b8f23081fa09f4a3", + "name": "iMe Lab", + "symbol": "LIME", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16243/thumb/lim_200.2.png?1623376205" + }, + { + "chainId": 1, + "address": "0x5003b168b457b663c3c18ffcf5b6a24bee8f59c7", + "name": "Musk", + "symbol": "MUSK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6614/thumb/1aCM-fLB_400x400.jpg?1547042815" + }, + { + "chainId": 1, + "address": "0xec79e0efa4ae3d8b3c9fbcee21683c7f2e507b66", + "name": "Dengba Planet", + "symbol": "DBT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9042/thumb/FVNxxLbx_400x400.jpg?1563833177" + }, + { + "chainId": 1, + "address": "0x26fb86579e371c7aedc461b2ddef0a8628c93d3b", + "name": "BORA", + "symbol": "BORA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7646/thumb/mqFw8hxm_400x400.jpeg?1656657343" + }, + { + "chainId": 1, + "address": "0xa8b0f154a688c22142e361707df64277e0a0be66", + "name": "Rake Finance", + "symbol": "RAK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13078/thumb/rake-logo-200x200.png?1604931839" + }, + { + "chainId": 1, + "address": "0x661ab0ed68000491d98c796146bcf28c20d7c559", + "name": "Shadows", + "symbol": "DOWS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14160/thumb/C3E49eZx_400x400.jpg?1614689301" + }, + { + "chainId": 1, + "address": "0x97fb6fc2ad532033af97043b563131c5204f8a35", + "name": "Plus Coin", + "symbol": "NPLC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4686/thumb/plus-coin-logo.png?1547039959" + }, + { + "chainId": 1, + "address": "0x63b4f3e3fa4e438698ce330e365e831f7ccd1ef4", + "name": "CyberFi", + "symbol": "CFI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13112/thumb/cyberfi_logo.jpeg?1605283367" + }, + { + "chainId": 1, + "address": "0x7866e48c74cbfb8183cd1a929cd9b95a7a5cb4f4", + "name": "DexKit", + "symbol": "KIT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13187/thumb/7739.png?1643187354" + }, + { + "chainId": 1, + "address": "0x1934e252f840aa98dfce2b6205b3e45c41aef830", + "name": "Cabin", + "symbol": "CABIN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23874/thumb/z8CMVDb8_400x400.jpg?1645600167" + }, + { + "chainId": 1, + "address": "0xac0968a3e2020ac8ca83e60ccf69081ebc6d3bc3", + "name": "Cindrum", + "symbol": "CIND", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20449/thumb/1_sbv9l6ArIn7oYIhi0oQWoQ.png?1637043983" + }, + { + "chainId": 1, + "address": "0xe304283c3e60cefaf7ea514007cf4e8fdc3d869d", + "name": "Gecoin", + "symbol": "GEC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25646/thumb/62162f0d583e5a047dc02e7e_gecoin_200x200.png?1653019356" + }, + { + "chainId": 1, + "address": "0x2bdc0d42996017fce214b21607a515da41a9e0c5", + "name": "SkinCoin", + "symbol": "SKIN", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/830/thumb/skincoin.png?1547034622" + }, + { + "chainId": 1, + "address": "0x090185f2135308bad17527004364ebcc2d37e5f6", + "name": "Spell", + "symbol": "SPELL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15861/thumb/abracadabra-3.png?1622544862" + }, + { + "chainId": 1, + "address": "0xa456b515303b2ce344e9d2601f91270f8c2fea5e", + "name": "Cornichon", + "symbol": "CORN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13235/thumb/cornichon.png?1606629943" + }, + { + "chainId": 1, + "address": "0x874cb28a655e0ef827d810e211ae4b9cbcbaf614", + "name": "Gain DAO", + "symbol": "GAIN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26570/thumb/GAIN_listing_200.png?1658816125" + }, + { + "chainId": 1, + "address": "0xf6c2a37acc8ba45874808837486110dc0afc63c8", + "name": "MetaX", + "symbol": "X1", + "decimals": 2, + "logoURI": "https://assets.coingecko.com/coins/images/27411/thumb/pNi9ej83_400x400.png?1663853065" + }, + { + "chainId": 1, + "address": "0x350d3f0f41b5b21f0e252fe2645ae9d55562150a", + "name": "BananaClubToken", + "symbol": "BCT", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/26634/thumb/IMG_20220729_203534_044.jpg?1659327556" + }, + { + "chainId": 1, + "address": "0x0f00f1696218eaefa2d2330df3d6d1f94813b38f", + "name": "SEDO POW", + "symbol": "SEDO", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/6866/thumb/sedocoin-logo.jpg?1547043199" + }, + { + "chainId": 1, + "address": "0xf9d4daae1300cff251979722c4a3c45857973079", + "name": "bitcastle", + "symbol": "CASTLE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26551/thumb/blue_logo03.png?1658753049" + }, + { + "chainId": 1, + "address": "0xe89c20096b636ffec9fd26d1a623f42a33ead309", + "name": "Oogear", + "symbol": "OG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23970/thumb/og.png?1645869076" + }, + { + "chainId": 1, + "address": "0x36f3fd68e7325a35eb768f1aedaae9ea0689d723", + "name": "Empty Set Dollar", + "symbol": "ESD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12440/thumb/esd_logo_circle.png?1603676421" + }, + { + "chainId": 1, + "address": "0xbc194e6f748a222754c3e8b9946922c09e7d4e91", + "name": "Lever Network", + "symbol": "LEV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15323/thumb/lever.PNG?1620513101" + }, + { + "chainId": 1, + "address": "0xdf0041891bda1f911c4243f328f7cf61b37f965b", + "name": "BOOSTO", + "symbol": "BST", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3448/thumb/Untitled2222.png?1547038159" + }, + { + "chainId": 1, + "address": "0xff2b3353c3015e9f1fbf95b9bda23f58aa7ce007", + "name": "BitScreener", + "symbol": "BITX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4241/thumb/bitx.png?1547039570" + }, + { + "chainId": 1, + "address": "0xe910c2a090516fb7a7be07f96a464785f2d5dc18", + "name": "CheckMate Token", + "symbol": "CMT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28382/thumb/cmt.png?1669974415" + }, + { + "chainId": 1, + "address": "0xdd0020b1d5ba47a54e2eb16800d73beb6546f91a", + "name": "Moola", + "symbol": "AXPR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2682/thumb/6QRknY7.png?1657767443" + }, + { + "chainId": 1, + "address": "0x98ddc72bd02d448f68c4226f26122c66c5bd711e", + "name": "Non Fungible TOKE", + "symbol": "TOKE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17969/thumb/toke.PNG?1629947405" + }, + { + "chainId": 1, + "address": "0x940bdcb99a0ee5fb008a606778ae87ed9789f257", + "name": "JFIN Coin", + "symbol": "JFIN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13370/thumb/JFin-Coin-Logo.png?1607984823" + }, + { + "chainId": 1, + "address": "0x95392f142af1c12f6e39897ff9b09c599666b50c", + "name": "Impostors Blood", + "symbol": "BLOOD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25527/thumb/RV4nKK2RDO47XzfSLgGs_llgXivhdfpI3tso0.png?1652240523" + }, + { + "chainId": 1, + "address": "0x848592388097d2a3ca9e285f445e5b92b6af52ad", + "name": "Dwagon", + "symbol": "BABYTSUKA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27480/thumb/photo_2022-09-25_21-37-24.jpg?1664242733" + }, + { + "chainId": 1, + "address": "0x0a50c93c762fdd6e56d86215c24aaad43ab629aa", + "name": "LGO", + "symbol": "LGO", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/2353/thumb/2_JNnfVRPMBuA1hwnRubH72A.png?1595311622" + }, + { + "chainId": 1, + "address": "0x4fe83213d56308330ec302a8bd641f1d0113a4cc", + "name": "NuCypher", + "symbol": "NU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3318/thumb/photo1198982838879365035.jpg?1547037916" + }, + { + "chainId": 1, + "address": "0x8c6bf16c273636523c29db7db04396143770f6a0", + "name": "Moon Rabbit", + "symbol": "AAA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17310/thumb/logo_moon_no_inscriptions-01.png?1627275874" + }, + { + "chainId": 1, + "address": "0x196c81385bc536467433014042788eb707703934", + "name": "CryptoTask", + "symbol": "CTASK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13965/thumb/cryptotask_logo.png?1613372242" + }, + { + "chainId": 1, + "address": "0x2f9f363685ffecc8d7bed0486d8c2b21232bdc5a", + "name": "Adventure Inu", + "symbol": "ADINU", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/20036/thumb/Adventure200x200.png?1636424176" + }, + { + "chainId": 1, + "address": "0x5228a22e72ccc52d415ecfd199f99d0665e7733b", + "name": "pTokens BTC OLD ", + "symbol": "PBTC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10805/thumb/J51iIea.png?1583891599" + }, + { + "chainId": 1, + "address": "0x8a732bc91c33c167f868e0af7e6f31e0776d0f71", + "name": "Litecoin LTK", + "symbol": "LTK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7573/thumb/LTK.jpg?1550626784" + }, + { + "chainId": 1, + "address": "0x0e58ed58e150dba5fd8e5d4a49f54c7e1e880124", + "name": "Relite Finance", + "symbol": "RELI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14906/thumb/xPZRuspj_400x400.jpg?1618983798" + }, + { + "chainId": 1, + "address": "0x3d79abb948bc76794ff4a0bcd60170a741f26360", + "name": "Tails", + "symbol": "TAILS", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/19065/thumb/Tails_LOGO.png?1634266919" + }, + { + "chainId": 1, + "address": "0xb90cb79b72eb10c39cbdf86e50b1c89f6a235f2e", + "name": "Auditchain", + "symbol": "AUDT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6398/thumb/auditchain.png?1547042519" + }, + { + "chainId": 1, + "address": "0x94d8db14831c2c08943798542c450df2844913e5", + "name": "Zuplo", + "symbol": "ZLP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13066/thumb/logo2x56_Mesa_de_trabajo_1.png?1604886987" + }, + { + "chainId": 1, + "address": "0xcb5f72d37685c3d5ad0bb5f982443bc8fcdf570e", + "name": "Rootkit", + "symbol": "ROOT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13151/thumb/rootkit_logo.png?1605712875" + }, + { + "chainId": 1, + "address": "0x0ae8b74cd2d566853715800c9927f879d6b76a37", + "name": "Momento", + "symbol": "MOMENTO", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/18532/thumb/momento.png?1632295065" + }, + { + "chainId": 1, + "address": "0xbc7942054f77b82e8a71ace170e4b00ebae67eb6", + "name": "Serenity Financial", + "symbol": "SRNT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7334/thumb/serenity.jpg?1547043996" + }, + { + "chainId": 1, + "address": "0xd16fd95d949f996e3808eeea0e3881c59e76ef1e", + "name": "Para", + "symbol": "PARA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24652/thumb/para.jpg?1662464045" + }, + { + "chainId": 1, + "address": "0xa31f7a32db329f270a0e6b59558823e64d8ef0a6", + "name": "Q8E20 Token", + "symbol": "Q8E20", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/10427/thumb/F366Xq9.png?1579215048" + }, + { + "chainId": 1, + "address": "0x8e0fe2947752be0d5acf73aae77362daf79cb379", + "name": "NFTrade", + "symbol": "NFTD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18578/thumb/nftrade.png?1632486088" + }, + { + "chainId": 1, + "address": "0x2c644c3bbea053ed95a6bc04a94c9ce928ff9881", + "name": "Lance Coin", + "symbol": "LCE", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/14707/thumb/logo200x200_%282%29.png?1617873370" + }, + { + "chainId": 1, + "address": "0x033e223870f766644f7f7a4b7dc2e91573707d06", + "name": "Zin", + "symbol": "ZIN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13250/thumb/coingecko_logo.png?1606716375" + }, + { + "chainId": 1, + "address": "0xb19dd661f076998e3b0456935092a233e12c2280", + "name": "Continuum World", + "symbol": "UM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18798/thumb/Moneda.png?1633474110" + }, + { + "chainId": 1, + "address": "0x80c8c3dcfb854f9542567c8dac3f44d709ebc1de", + "name": "Spaceswap MILK2", + "symbol": "MILK2", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12771/thumb/milk.png?1633423719" + }, + { + "chainId": 1, + "address": "0xd61143652af94f570c7d9429356662dd859ca6ec", + "name": "Fintropy", + "symbol": "FINT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21222/thumb/quExJXdW_400x400.png?1638740691" + }, + { + "chainId": 1, + "address": "0xb0c7a3ba49c7a6eaba6cd4a96c55a1391070ac9a", + "name": "Magic", + "symbol": "MAGIC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18623/thumb/magic.png?1656052146" + }, + { + "chainId": 1, + "address": "0xe74be071f3b62f6a4ac23ca68e5e2a39797a3c30", + "name": "Recharge", + "symbol": "RCG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18120/thumb/thecharge.PNG?1630559768" + }, + { + "chainId": 1, + "address": "0x3703f712945f8111fe2c5f9ae155a52560e2065c", + "name": "Bamboonium", + "symbol": "BAMB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25193/thumb/bamb_logo.png?1650608279" + }, + { + "chainId": 1, + "address": "0x23b608675a2b2fb1890d3abbd85c5775c51691d5", + "name": "Unisocks", + "symbol": "SOCKS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10717/thumb/qFrcoiM.png?1582525244" + }, + { + "chainId": 1, + "address": "0x968cbe62c830a0ccf4381614662398505657a2a9", + "name": "Thrupenny", + "symbol": "TPY", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/26799/thumb/rsz_1mpmojfho_400x400.png?1660189540" + }, + { + "chainId": 1, + "address": "0x47481c1b44f2a1c0135c45aa402ce4f4dde4d30e", + "name": "Meetple", + "symbol": "MPT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14323/thumb/Tqlsvhn1_400x400.png?1615427198" + }, + { + "chainId": 1, + "address": "0x3fd8f39a962efda04956981c31ab89fab5fb8bc8", + "name": "Rotharium", + "symbol": "RTH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2030/thumb/L7kpRMda_400x400.jpg?1547036314" + }, + { + "chainId": 1, + "address": "0x8689d850cdf3b74a1f6a5eb60302c785b71c2fc7", + "name": "Crypto Phoenix", + "symbol": "CPHX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17942/thumb/xEO0oeVz_400x400.jpg?1629881740" + }, + { + "chainId": 1, + "address": "0x0f7f961648ae6db43c75663ac7e5414eb79b5704", + "name": "Blockzero Labs", + "symbol": "XIO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10029/thumb/blockzero.jpg?1611110205" + }, + { + "chainId": 1, + "address": "0x89dcff5fd892f2bfc8b75dba12804b651f769579", + "name": "Staker DAO", + "symbol": "STKR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14535/thumb/stakerdao_logo.png?1616812877" + }, + { + "chainId": 1, + "address": "0x56de8bc61346321d4f2211e3ac3c0a7f00db9b76", + "name": "RENA Finance", + "symbol": "RENA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15667/thumb/photo_2021-05-21_17-31-35.png?1621825861" + }, + { + "chainId": 1, + "address": "0xa7de087329bfcda5639247f96140f9dabe3deed1", + "name": "Statera", + "symbol": "STA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11472/thumb/Statera.png?1590415353" + }, + { + "chainId": 1, + "address": "0x232fb065d9d24c34708eedbf03724f2e95abe768", + "name": "Sheesha Finance ERC20 ", + "symbol": "SHEESHA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23053/thumb/MLBmh4z0.png?1643113057" + }, + { + "chainId": 1, + "address": "0x7458fd786b2fe8cd801c0381f88b61c5071a006f", + "name": "LOA Protocol", + "symbol": "LOA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11164/thumb/1a67ac81c1803ee172b7ce8805b5da3d-full.jpg?1589411408" + }, + { + "chainId": 1, + "address": "0x47dac6bd80f024575a6d367af5ba8e89202a09fc", + "name": "OXO Farm", + "symbol": "OXO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15107/thumb/OXO200.png?1619734005" + }, + { + "chainId": 1, + "address": "0x56015bbe3c01fe05bc30a8a9a9fd9a88917e7db3", + "name": "Mooncat CAT", + "symbol": "CAT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12177/thumb/happy2-2.jpg?1619593488" + }, + { + "chainId": 1, + "address": "0xa9e201a4e269d6cd5e9f0fcbcb78520cf815878b", + "name": "Aave AMM UniRENWETH", + "symbol": "AAMMUNIRENWETH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17223/thumb/aAmmUniRENWETH.png?1626880629" + }, + { + "chainId": 1, + "address": "0x60a16b9efd33bb45c18833aed45ca66045b3b714", + "name": "i9X Coin", + "symbol": "I9X", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/14124/thumb/unnamed_%282%29.jpg?1614565794" + }, + { + "chainId": 1, + "address": "0x72377f31e30a405282b522d588aebbea202b4f23", + "name": "Varen", + "symbol": "VRN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17633/thumb/vrn.png?1636075314" + }, + { + "chainId": 1, + "address": "0x4a8f44be523580a11cdb20e2c7c470adf44ec9bb", + "name": "Bit Miner Chain", + "symbol": "BTMC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6177/thumb/9ecCxf_s_400x400.jpg?1547042203" + }, + { + "chainId": 1, + "address": "0x1735db6ab5baa19ea55d0adceed7bcdc008b3136", + "name": "UREEQA", + "symbol": "URQA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14605/thumb/R_O2enOX_400x400.png?1617243310" + }, + { + "chainId": 1, + "address": "0x79256db1bdb6259315a1a3d7dd237f69cadfd8fc", + "name": "Typhoon Cash", + "symbol": "PHOON", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13730/thumb/photo_2021-01-21_19-05-27.jpg?1611227665" + }, + { + "chainId": 1, + "address": "0x0913ddae242839f8995c0375493f9a1a3bddc977", + "name": "Marshall Inu", + "symbol": "MRI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23784/thumb/mri.png?1647693409" + }, + { + "chainId": 1, + "address": "0x48bef6bd05bd23b5e6800cf0406e524b517af250", + "name": "Chubbies", + "symbol": "CHUBBIES20", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17857/thumb/unnamed_%281%29.gif?1629681572" + }, + { + "chainId": 1, + "address": "0xa0ed3c520dc0632657ad2eaaf19e26c4fd431a84", + "name": "Hippo Wallet", + "symbol": "HPO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28089/thumb/b77170dd-1dd1-4581-91b2-e352794fa045.jpg?1667446200" + }, + { + "chainId": 1, + "address": "0xef5b32486ed432b804a51d129f4d2fbdf18057ec", + "name": "Pirate Inu", + "symbol": "PINU", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/19959/thumb/pinu.png?1636341206" + }, + { + "chainId": 1, + "address": "0x667088b212ce3d06a1b553a7221e1fd19000d9af", + "name": "Wings", + "symbol": "WINGS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/648/thumb/wings.png?1548760631" + }, + { + "chainId": 1, + "address": "0xd9d01d4cb824219a8f482a0fad479cb971fd0628", + "name": "EnterCoin", + "symbol": "ENTRC", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/8163/thumb/entrc-logo200.png?1555901482" + }, + { + "chainId": 1, + "address": "0x947aeb02304391f8fbe5b25d7d98d649b57b1788", + "name": "Mandala Exchange", + "symbol": "MDX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13736/thumb/png-cmc.png?1611288725" + }, + { + "chainId": 1, + "address": "0x202f1877e1db1120ca3e9a98c5d505e7f035c249", + "name": "ZUZ Protocol", + "symbol": "ZUZ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14444/thumb/ZUZ_Icon2-100.png?1616115188" + }, + { + "chainId": 1, + "address": "0x072987d5b36ad8d45552aed98879a7101ccdd749", + "name": "BunnyVerse", + "symbol": "BNV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21846/thumb/Screenshot-2021-12-21-at-11-11-46.png?1640130263" + }, + { + "chainId": 1, + "address": "0x67776f14e5e9e7845e33fb0c2a3c709d259d01eb", + "name": "Era", + "symbol": "ERA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27718/thumb/ERA_logo.jpg?1665459246" + }, + { + "chainId": 1, + "address": "0xdec41db0c33f3f6f3cb615449c311ba22d418a8d", + "name": "Lobis", + "symbol": "LOBI", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/20813/thumb/0tOZIQ0B_400x400.jpg?1637718276" + }, + { + "chainId": 1, + "address": "0x193408ca0576b73156ed42a2ea7d6fd3f6507162", + "name": "Infinity Esaham", + "symbol": "INFS", + "decimals": 1, + "logoURI": "https://assets.coingecko.com/coins/images/10716/thumb/WBUD9cx.png?1582524776" + }, + { + "chainId": 1, + "address": "0x2e1e15c44ffe4df6a0cb7371cd00d5028e571d14", + "name": "Mettalex", + "symbol": "MTLX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12730/thumb/nrEqFTEW_400x400.jpg?1602063980" + }, + { + "chainId": 1, + "address": "0xb67beb26ebeb0dceec354ae0942256d03c01771b", + "name": "DeStorage", + "symbol": "DS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15984/thumb/DS_LOG_Transparent_200x200.png?1622535280" + }, + { + "chainId": 1, + "address": "0xb668473944d2e25b6af6d46917eb0233dbac53ae", + "name": "Neton", + "symbol": "NTO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25418/thumb/lqT0CJNj_400x400.jpg?1651735850" + }, + { + "chainId": 1, + "address": "0x4d0f56d728c5232ab07faa0bdcba23670a35451f", + "name": "Aggregated Finance", + "symbol": "AGFI", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/26332/thumb/79LDzdib_400x400_%281%29.jpg?1657269938" + }, + { + "chainId": 1, + "address": "0xeec2be5c91ae7f8a338e1e5f3b5de49d07afdc81", + "name": "Dopex", + "symbol": "DPX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16652/thumb/DPX_%281%29.png?1624598630" + }, + { + "chainId": 1, + "address": "0x2559813bbb508c4c79e9ccce4703bcb1f149edd7", + "name": "Hourglass", + "symbol": "WAIT", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/27516/thumb/Hourglass-Logo.png?1664353478" + }, + { + "chainId": 1, + "address": "0x55a290f08bb4cae8dcf1ea5635a3fcfd4da60456", + "name": "BITTO", + "symbol": "BITTO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2814/thumb/BITTO.jpg?1547036986" + }, + { + "chainId": 1, + "address": "0x5978708d6cce1cc9640eed47422d64c91bbd5171", + "name": "LOLTOKEN", + "symbol": "LOL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8551/thumb/logo100.png?1596534732" + }, + { + "chainId": 1, + "address": "0x17525e4f4af59fbc29551bc4ece6ab60ed49ce31", + "name": "PieDAO Yearn Ecosystem Pie", + "symbol": "YPIE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13572/thumb/YPIE.png?1610437730" + }, + { + "chainId": 1, + "address": "0xac3211a5025414af2866ff09c23fc18bc97e79b1", + "name": "Dovu", + "symbol": "DOV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1072/thumb/Dovu_Earth_72x72_leaf_blue.png?1615259361" + }, + { + "chainId": 1, + "address": "0xbcd8756ea481608ea3dd5a555493305cf0a79640", + "name": "Paparazzi", + "symbol": "PAZZI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11558/thumb/jMJC4g9m_400x400.jpg?1591079702" + }, + { + "chainId": 1, + "address": "0x0ea20e7ffb006d4cfe84df2f72d8c7bd89247db0", + "name": "Aave AMM UniCRVWETH", + "symbol": "AAMMUNICRVWETH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17220/thumb/aAmmUniCRVWETH.png?1626879022" + }, + { + "chainId": 1, + "address": "0xf1b8762a7fa8c244e36f7234edf40cfae24394e3", + "name": "GoldFarm", + "symbol": "GOLD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16108/thumb/rVUV_photo_2021-06-03_13-37-31.png?1623020895" + }, + { + "chainId": 1, + "address": "0x605d26fbd5be761089281d5cec2ce86eea667109", + "name": "Digital Standard Unit", + "symbol": "DSU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17482/thumb/photo_2021-08-03_09-24-16.png?1627953917" + }, + { + "chainId": 1, + "address": "0x3f7aff0ef20aa2e646290dfa4e67611b2220c597", + "name": "Volt Inu OLD ", + "symbol": "VOLT", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/21832/thumb/nl250.png?1643191234" + }, + { + "chainId": 1, + "address": "0x73a9fb46e228628f8f9bb9004eca4f4f529d3998", + "name": "Wrapped LEO", + "symbol": "WLEO", + "decimals": 3, + "logoURI": "https://assets.coingecko.com/coins/images/12626/thumb/4XfO3w3.png?1601286769" + }, + { + "chainId": 1, + "address": "0x4aa41bc1649c9c3177ed16caaa11482295fc7441", + "name": "Xfit", + "symbol": "XFIT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14904/thumb/xfit_logo.png?1618967174" + }, + { + "chainId": 1, + "address": "0xd98f75b1a3261dab9eed4956c93f33749027a964", + "name": "Share", + "symbol": "SHR", + "decimals": 2, + "logoURI": "https://assets.coingecko.com/coins/images/3609/thumb/74586729_2443914875881351_2785018663453851648_n.png?1574898410" + }, + { + "chainId": 1, + "address": "0xc67b12049c2d0cf6e476bc64c7f82fc6c63cffc5", + "name": "Globe Derivative Exchange", + "symbol": "GDT", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/15335/thumb/gdt.PNG?1620597146" + }, + { + "chainId": 1, + "address": "0x370adc71f67f581158dc56f539df5f399128ddf9", + "name": "Aave AMM UniMKRWETH", + "symbol": "AAMMUNIMKRWETH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17222/thumb/aAmmUniMKRWETH.png?1626880292" + }, + { + "chainId": 1, + "address": "0x01c0987e88f778df6640787226bc96354e1a9766", + "name": "UltrAlpha", + "symbol": "UAT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9300/thumb/UltrAlpha.png?1565882277" + }, + { + "chainId": 1, + "address": "0xc7ff1e126cc81e816915ff48c940ed9d4e6d05d6", + "name": "IjasCoin", + "symbol": "IJC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14099/thumb/Ijascode-Flat-Logo-2-24-2021.png?1614304358" + }, + { + "chainId": 1, + "address": "0x5644bb2b594fcf6f74384d2ad26c68f02a47981c", + "name": "SuperMegaHyperDoge", + "symbol": "SMHDOGE", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/21217/thumb/alUgvzB7_400x400.jpg?1638670544" + }, + { + "chainId": 1, + "address": "0xcc6f15be8573cb8243c42d300565566d328213dd", + "name": "OWN Token", + "symbol": "OWN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10950/thumb/cropped-WhatsApp-Image-2020-04-04-at-9.04.01-PM.jpeg?1586305520" + }, + { + "chainId": 1, + "address": "0x369b77bbeeee50e6ea206dcf41ee670c47360055", + "name": "Kiki", + "symbol": "KIKI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22289/thumb/A8oLUJW8_400x400.jpg?1641367572" + }, + { + "chainId": 1, + "address": "0x408e41876cccdc0f92210600ef50372656052a38", + "name": "REN", + "symbol": "REN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3139/thumb/REN.png?1589985807" + }, + { + "chainId": 1, + "address": "0xd15ecdcf5ea68e3995b2d0527a0ae0a3258302f8", + "name": "Machi X", + "symbol": "MCX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11329/thumb/MachiX.png?1589926940" + }, + { + "chainId": 1, + "address": "0x8af078d5a3e4a18ff62e3aeed4b1c448ab90b304", + "name": "TouchCon", + "symbol": "TOC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8003/thumb/touchcon.png?1629088447" + }, + { + "chainId": 1, + "address": "0x21f15966e07a10554c364b988e91dab01d32794a", + "name": "SmartMesh", + "symbol": "SMT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1346/thumb/smartmesh.png?1548609531" + }, + { + "chainId": 1, + "address": "0xc4cb5793bd58bad06bf51fb37717b86b02cbe8a4", + "name": "PROXI DeFi", + "symbol": "CREDIT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12212/thumb/_credit.png?1598235420" + }, + { + "chainId": 1, + "address": "0x1287c0509df9a475ef178471ab2132b9dfd312b3", + "name": "LADZ", + "symbol": "LADZ", + "decimals": 4, + "logoURI": "https://assets.coingecko.com/coins/images/13315/thumb/ladz_logo.jpg?1607408640" + }, + { + "chainId": 1, + "address": "0x6d2c508fc4a588a41713ff59212f85489291d244", + "name": "Bloomzed Loyalty Club Ticket", + "symbol": "BLCT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10810/thumb/esRodCO5_400x400.jpg?1583906706" + }, + { + "chainId": 1, + "address": "0x4d8046b2f7986feb5a4b0781ebf5fa2d7a808617", + "name": "DogeZilla Token", + "symbol": "DOGEZ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20511/thumb/dogezilla.png?1637807027" + }, + { + "chainId": 1, + "address": "0x7e9c15c43f0d6c4a12e6bdff7c7d55d0f80e3e23", + "name": "Astra DAO", + "symbol": "ASTRA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27255/thumb/astra200x200px_blue_%282%29.png?1663035884" + }, + { + "chainId": 1, + "address": "0x3209d14ff61766359e64aceff91877cec2ad968e", + "name": "CouponBay", + "symbol": "CUP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24696/thumb/logo_200.png?1648625906" + }, + { + "chainId": 1, + "address": "0x0316eb71485b0ab14103307bf65a021042c6d380", + "name": "Huobi BTC", + "symbol": "HBTC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12407/thumb/Unknown-5.png?1599624896" + }, + { + "chainId": 1, + "address": "0xeb58343b36c7528f23caae63a150240241310049", + "name": "Nimbus", + "symbol": "NBU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14517/thumb/EQMLlI52Dhm7DPe4QPt81MiqPTUa0X7YOZV9G1ki_OpZe6rtVUtmIn5XbQHeMHyuTkX4Y1qU-K8lAn4juL3KnVQLR7WeeJ_r6jI5nrjGgvt4DgMSAnuTrT15AREqbB0wUkosE8NVhjKpPUvvaALnpO0BtFUt4Bo9tsOTsfQDAEFrpH0uhVkEqJG_u09ehkX88hkYKJcm5RkvIgq.jpg?1616654587" + }, + { + "chainId": 1, + "address": "0x2c0da41c89adb5a1d4430e5761b9b400911426b0", + "name": "DAMA", + "symbol": "DAMA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23636/thumb/img-token-dama.png?1644907682" + }, + { + "chainId": 1, + "address": "0x0168703872fa06741ecaa9dff7803168e83f7ae0", + "name": "Mirocana", + "symbol": "MIRO", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/1651/thumb/mirocana.jpg?1547035896" + }, + { + "chainId": 1, + "address": "0x2786f9c443f323f590de1881d7215db305ab846e", + "name": "Nukplan", + "symbol": "NKPL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28182/thumb/logo_200x200.png?1668255855" + }, + { + "chainId": 1, + "address": "0x7b39917f9562c8bc83c7a6c2950ff571375d505d", + "name": "LeagueDAO Governance", + "symbol": "LEAG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19130/thumb/leag_token_icon.png?1634523084" + }, + { + "chainId": 1, + "address": "0x2c5bcad9ade17428874855913def0a02d8be2324", + "name": "pSTAKE Staked ETH", + "symbol": "STKETH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25798/thumb/Ethereum.png?1653921854" + }, + { + "chainId": 1, + "address": "0xa92c49c403386111c1629aee00936eed2a9e74a6", + "name": "Kollector", + "symbol": "KLTR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19926/thumb/kbase_logo.jpg?1636302934" + }, + { + "chainId": 1, + "address": "0x4db2c02831c9ac305ff9311eb661f80f1df61e07", + "name": "oneICHI", + "symbol": "ONEICHI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25908/thumb/74116843.png?1654585863" + }, + { + "chainId": 1, + "address": "0xe9f1d62c671efe99896492766c0b416bd3fb9e52", + "name": "XOYCoin", + "symbol": "XOY", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/26641/thumb/xoycoin_logo.png?1659347530" + }, + { + "chainId": 1, + "address": "0x8af22fbdefe01b4dc7960ec04ec73e8502f4a6b0", + "name": "Biokkoin", + "symbol": "BKKG", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/13125/thumb/7F-imH-r_400x400.png?1605496322" + }, + { + "chainId": 1, + "address": "0x8e870d67f660d95d5be530380d0ec0bd388289e1", + "name": "Pax Dollar", + "symbol": "USDP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6013/thumb/Pax_Dollar.png?1629877204" + }, + { + "chainId": 1, + "address": "0xcae636167db2369bd746f2bcba79a6e8b0d4e000", + "name": "Education Assessment Cult", + "symbol": "EAC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25466/thumb/eac.png?1651915165" + }, + { + "chainId": 1, + "address": "0x77132bb08b02a7a87732ec289efab45edf49884f", + "name": "Relic", + "symbol": "RELIC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26424/thumb/EQiM831z_400x400.png?1657930563" + }, + { + "chainId": 1, + "address": "0xe64b47931f28f89cc7a0c6965ecf89eadb4975f5", + "name": "Ludos Protocol", + "symbol": "LUD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5118/thumb/Ludos_Protocol.jpg?1557216263" + }, + { + "chainId": 1, + "address": "0x9ac5c63ddcb93612e316ab31dfc8192bc8961988", + "name": "Adora", + "symbol": "ARA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17713/thumb/Adora-200px-200px_rostsy.png?1629083234" + }, + { + "chainId": 1, + "address": "0x47140a767a861f7a1f3b0dd22a2f463421c28814", + "name": "All me", + "symbol": "ME", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5497/thumb/all.me-logo.jpg?1547041239" + }, + { + "chainId": 1, + "address": "0x1673a63aa0047294d75954226f3f2f98de77b16f", + "name": "GENES Chain", + "symbol": "GENES", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8857/thumb/logo256_%281%29.png?1562205433" + }, + { + "chainId": 1, + "address": "0x3e9e371f8d2e9fca315fb0a747533ced8a3fcbcb", + "name": "BIXCPRO", + "symbol": "BIXCPRO", + "decimals": 4, + "logoURI": "https://assets.coingecko.com/coins/images/7893/thumb/download.jpg?1551429825" + }, + { + "chainId": 1, + "address": "0x1da4858ad385cc377165a298cc2ce3fce0c5fd31", + "name": "CloutContracts", + "symbol": "CCS", + "decimals": 0, + "logoURI": "https://assets.coingecko.com/coins/images/19072/thumb/200.png?1634829111" + }, + { + "chainId": 1, + "address": "0xf725f73caee250ae384ec38bb2c77c38ef2cccea", + "name": "Ape In Records", + "symbol": "AIR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24194/thumb/gCZZdeR.jpeg?1646830675" + }, + { + "chainId": 1, + "address": "0x9d1089802ee608ba84c5c98211afe5f37f96b36c", + "name": "Fluid USDC", + "symbol": "FUSDC", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/28471/thumb/fUSDC-200x200.png?1671002126" + }, + { + "chainId": 1, + "address": "0x5cb3ce6d081fb00d5f6677d196f2d70010ea3f4a", + "name": "Busy", + "symbol": "BUSY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14966/thumb/busy.PNG?1619165503" + }, + { + "chainId": 1, + "address": "0x7a8ca2f815a260660158a38c34ca321a3605ecfe", + "name": "BIZZCOIN", + "symbol": "BIZZ", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/10979/thumb/bizzcoin.PNG?1586766076" + }, + { + "chainId": 1, + "address": "0xe1005bfbbc9a17d5d844c7a4371cbf6b2b387380", + "name": "GRN Grid", + "symbol": "G", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/26126/thumb/MQrn5TGl_400x400.jpg?1655954068" + }, + { + "chainId": 1, + "address": "0x8578530205cecbe5db83f7f29ecfeec860c297c2", + "name": "smARTOFGIVING", + "symbol": "AOG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6050/thumb/logo_%286%29.png?1547042007" + }, + { + "chainId": 1, + "address": "0x9e46a38f5daabe8683e10793b06749eef7d733d1", + "name": "PolySwarm", + "symbol": "NCT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2843/thumb/ImcYCVfX_400x400.jpg?1628519767" + }, + { + "chainId": 1, + "address": "0x2509ee05b8df07ec75046e24bbf1cfcdb8b2a183", + "name": "Amaten", + "symbol": "AMA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11010/thumb/0_%283%29.png?1587104344" + }, + { + "chainId": 1, + "address": "0x2f4eb100552ef93840d5adc30560e5513dfffacb", + "name": "Balancer Boosted Aave USDT", + "symbol": "BB-A-USDT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25826/thumb/0x2bbf681cc4eb09218bee85ea2a5d3d13fa40fc0c.png?1654063979" + }, + { + "chainId": 1, + "address": "0x5d43b66da68706d39f6c97f7f1415615672b446b", + "name": "ROGin AI", + "symbol": "ROG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25922/thumb/20490.png?1654672163" + }, + { + "chainId": 1, + "address": "0x60ef10edff6d600cd91caeca04caed2a2e605fe5", + "name": "Mochi Inu", + "symbol": "MOCHI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20164/thumb/4DileY_b_400x400.jpg?1636598711" + }, + { + "chainId": 1, + "address": "0xa64dfe8d86963151e6496bee513e366f6e42ed79", + "name": "Goku", + "symbol": "GOKU", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/17947/thumb/goku.png?1642919069" + }, + { + "chainId": 1, + "address": "0xaa843f65872a25d6e9552ea0b360fb1d5e333124", + "name": "Eco Value Coin", + "symbol": "EVC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7868/thumb/temp_1524073947125.-325764774.png?1561602099" + }, + { + "chainId": 1, + "address": "0x4c25bdf026ea05f32713f00f73ca55857fbf6342", + "name": "Font", + "symbol": "FONT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14085/thumb/font.png?1614183855" + }, + { + "chainId": 1, + "address": "0x4b34c0cbeef271f895d339c5f76322d71a60782b", + "name": "Yearn Finance Management", + "symbol": "YEFIM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12836/thumb/jOVGT0Y.png?1602886889" + }, + { + "chainId": 1, + "address": "0x16484d73ac08d2355f466d448d2b79d2039f6ebb", + "name": "FortKnoxster", + "symbol": "FKX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5050/thumb/fkx.png?1644048298" + }, + { + "chainId": 1, + "address": "0x0f17bc9a994b87b5225cfb6a2cd4d667adb4f20b", + "name": "Jarvis Synthetic Euro", + "symbol": "JEUR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15725/thumb/jEUR.png?1634046044" + }, + { + "chainId": 1, + "address": "0x491604c0fdf08347dd1fa4ee062a822a5dd06b5d", + "name": "Cartesi", + "symbol": "CTSI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11038/thumb/cartesi.png?1592288021" + }, + { + "chainId": 1, + "address": "0x6fe56c0bcdd471359019fcbc48863d6c3e9d4f41", + "name": "Props", + "symbol": "PROPS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6735/thumb/photo-2017-10-10-03-32-02.png?1595168186" + }, + { + "chainId": 1, + "address": "0x8290333cef9e6d528dd5618fb97a76f268f3edd4", + "name": "Ankr", + "symbol": "ANKR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4324/thumb/U85xTl2.png?1608111978" + }, + { + "chainId": 1, + "address": "0x3a4cab3dcfab144fe7eb2b5a3e288cc03dc07659", + "name": "OnGo", + "symbol": "FTG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20154/thumb/IMG-20220728-WA0004.jpg?1669792759" + }, + { + "chainId": 1, + "address": "0xaedf386b755465871ff874e3e37af5976e247064", + "name": "Fasttoken", + "symbol": "FTN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28478/thumb/lightenicon_200x200.png?1671006114" + }, + { + "chainId": 1, + "address": "0xdf5e0e81dff6faf3a7e52ba697820c5e32d806a8", + "name": "LP yCurve", + "symbol": "YCURVE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11858/thumb/yCrv.png?1595203628" + }, + { + "chainId": 1, + "address": "0x8752bf7ad53d25a4165b9370f2becc22dd8ae838", + "name": "BlockNoteX", + "symbol": "BNOX", + "decimals": 2, + "logoURI": "https://assets.coingecko.com/coins/images/11066/thumb/bnox-color-h256.png?1587777583" + }, + { + "chainId": 1, + "address": "0x3ea50b7ef6a7eaf7e966e2cb72b519c16557497c", + "name": "Rocket Bunny", + "symbol": "BUNNY", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/14350/thumb/n8TgW06A_400x400.jpg?1615514406" + }, + { + "chainId": 1, + "address": "0x36919a60a2b67b6d2329863093d180d23d5a0308", + "name": "Kusunoki Samurai", + "symbol": "KUSUNOKI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24688/thumb/68747470733a2f2f7777772e6b7573756e6f6b6973616d757261692e636f6d2f696d616765732f6b7573756e6f6b692d30312e706e67.png?1648604014" + }, + { + "chainId": 1, + "address": "0xe5bf6790d138b154f1df3db8d245be46a5d05ee4", + "name": "Lyfe Land", + "symbol": "LLAND", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14940/thumb/LLAND-Logo-200.png?1619083033" + }, + { + "chainId": 1, + "address": "0x77607588222e01bf892a29abab45796a2047fc7b", + "name": "Unagii ETH", + "symbol": "UETH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14624/thumb/uETH.png?1617294107" + }, + { + "chainId": 1, + "address": "0xa829f97373069ee5d23175e4105df8fd49238be7", + "name": "Opennity", + "symbol": "OPNN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9358/thumb/53672059_554715805021197_5765693264996859904_n.jpg?1566526789" + }, + { + "chainId": 1, + "address": "0xe9d0331ad47148925c5009d33a428ee301c9d534", + "name": "HRDGCOIN", + "symbol": "HRDG", + "decimals": 12, + "logoURI": "https://assets.coingecko.com/coins/images/22769/thumb/hrdg_logo_200X200.png?1642576030" + }, + { + "chainId": 1, + "address": "0xe0b9a2c3e9f40cf74b2c7f591b2b0cca055c3112", + "name": "Genesis Shards", + "symbol": "GS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14784/thumb/gs.png?1618408218" + }, + { + "chainId": 1, + "address": "0x241ba672574a78a3a604cdd0a94429a73a84a324", + "name": "4New", + "symbol": "KWATT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4975/thumb/4new.png?1547040398" + }, + { + "chainId": 1, + "address": "0x627e2ee3dbda546e168eaaff25a2c5212e4a95a0", + "name": "Inverse Bitcoin Volatility", + "symbol": "IBVOL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11057/thumb/download_%2810%29.png?1587642128" + }, + { + "chainId": 1, + "address": "0xde4ce5447ce0c67920a1371605a39187cb6847c8", + "name": "Deesse", + "symbol": "LOVE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22524/thumb/GaqpKHEP_400x400.jpg?1641975550" + }, + { + "chainId": 1, + "address": "0x1d37986f252d0e349522ea6c3b98cb935495e63e", + "name": "ChartEx", + "symbol": "CHART", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12523/thumb/chartex.png?1600499406" + }, + { + "chainId": 1, + "address": "0xb9e7f8568e08d5659f5d29c4997173d84cdf2607", + "name": "Swarm City", + "symbol": "SWT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/621/thumb/swarm-city.png?1548611426" + }, + { + "chainId": 1, + "address": "0xd2d6158683aee4cc838067727209a0aaf4359de3", + "name": "Bounty0x", + "symbol": "BNTY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1444/thumb/bounty0x.png?1547562674" + }, + { + "chainId": 1, + "address": "0x47c1178f49140ecdbfbdf0ae2935cdb640d579f9", + "name": "Phantasma Energy", + "symbol": "KCAL", + "decimals": 10, + "logoURI": "https://assets.coingecko.com/coins/images/25447/thumb/Screenshot_from_2022-05-06_09-46-03.png?1651801573" + }, + { + "chainId": 1, + "address": "0x6f0f28ceee6ae686ee0f939375674c01b156365a", + "name": "Elena Protocol", + "symbol": "ELENA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15078/thumb/elena.png?1619648619" + }, + { + "chainId": 1, + "address": "0x48a58fdf91ab56b5700d853733b860b4cde08b26", + "name": "MetaMerce Token", + "symbol": "MMTKN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27467/thumb/MMTKNLogo.png?1664178229" + }, + { + "chainId": 1, + "address": "0x2336c10a1d3100343fa9911a2c57b77c333599a3", + "name": "tMATIC", + "symbol": "TMATIC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26971/thumb/tenderMATIC.png?1661152567" + }, + { + "chainId": 1, + "address": "0x37c997b35c619c21323f3518b9357914e8b99525", + "name": "Unipilot", + "symbol": "PILOT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17235/thumb/QmSjCnb74Q88o9gcTMMYNggj6BDkFEPukAZ5nWrhPaRxoW.png?1626923517" + }, + { + "chainId": 1, + "address": "0x604026696fdb3c6720ae3049c46d59ac604dea0a", + "name": "eXciting Japan Coin", + "symbol": "XJP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11963/thumb/XJP_LOGO.png?1596453963" + }, + { + "chainId": 1, + "address": "0x0f51bb10119727a7e5ea3538074fb341f56b09ad", + "name": "DAO Maker", + "symbol": "DAO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13915/thumb/4.png?1612838831" + }, + { + "chainId": 1, + "address": "0x00000000000045166c45af0fc6e4cf31d9e14b9a", + "name": "TopBidder", + "symbol": "BID", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14820/thumb/topbidder_logo_square_256.png?1618556813" + }, + { + "chainId": 1, + "address": "0xa8b12cc90abf65191532a12bb5394a714a46d358", + "name": "pBTC35A", + "symbol": "PBTC35A", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13653/thumb/pBTC35A.png?1610574940" + }, + { + "chainId": 1, + "address": "0xd90e69f67203ebe02c917b5128629e77b4cd92dc", + "name": "One Cash", + "symbol": "ONC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13529/thumb/onc_logo.png?1609406029" + }, + { + "chainId": 1, + "address": "0xf98ab0874b13a7fdc39d7295dedd49850a5d426b", + "name": "KIRA", + "symbol": "KIRA", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/28196/thumb/KIRA_CMC.png?1668334302" + }, + { + "chainId": 1, + "address": "0x104f3152d8ebfc3f679392977356962ff36566ac", + "name": "ChainPort", + "symbol": "PORTX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24490/thumb/VE-tUL-q_400x400.png?1647855096" + }, + { + "chainId": 1, + "address": "0x8a34d707189fbfa46930abfde3d22abdc48ab73d", + "name": "Unkai", + "symbol": "UNKAI", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/27458/thumb/2022-09-24_005337-removebg-preview_%281%29.png?1664107395" + }, + { + "chainId": 1, + "address": "0x0ec78ed49c2d27b315d462d43b5bab94d2c79bf8", + "name": "Zero Tech", + "symbol": "ZERO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21530/thumb/UlyJW87D_400x400.jpg?1639384115" + }, + { + "chainId": 1, + "address": "0xf0dc76c22139ab22618ddfb498be1283254612b1", + "name": "Wrapped Star", + "symbol": "WSTR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23972/thumb/wstr.png?1645870711" + }, + { + "chainId": 1, + "address": "0x2e6a8306286600e564c16aa0b7a93fced09d586a", + "name": "Protectors of the Realm", + "symbol": "WER1", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/27805/thumb/WeR1logo200x200.png?1667293518" + }, + { + "chainId": 1, + "address": "0x4df812f6064def1e5e029f1ca858777cc98d2d81", + "name": "Xaurum", + "symbol": "XAUR", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/461/thumb/xaurum.png?1548761197" + }, + { + "chainId": 1, + "address": "0x865ec58b06bf6305b886793aa20a2da31d034e68", + "name": "Mossland", + "symbol": "MOC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2374/thumb/moc.png?1547036557" + }, + { + "chainId": 1, + "address": "0x2e2364966267b5d7d2ce6cd9a9b5bd19d9c7c6a9", + "name": "Voice", + "symbol": "VOICE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12926/thumb/OjCQtdL.png?1614780024" + }, + { + "chainId": 1, + "address": "0xd8446236fa95b9b5f9fd0f8e7df1a944823c683d", + "name": "NEEO", + "symbol": "NEEO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26060/thumb/ZbD8a9pz_400x400.jpg?1655455842" + }, + { + "chainId": 1, + "address": "0x9b00e6e8d787b13756eb919786c9745054db64f9", + "name": "Sienna ERC 20 ", + "symbol": "WSIENNA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15420/thumb/sienna.jpeg?1620782072" + }, + { + "chainId": 1, + "address": "0xf7b098298f7c69fc14610bf71d5e02c60792894c", + "name": "Guppy", + "symbol": "GUP", + "decimals": 3, + "logoURI": "https://assets.coingecko.com/coins/images/683/thumb/matchpool.png?1547034437" + }, + { + "chainId": 1, + "address": "0x012e0e6342308b247f36ee500ecb14dc77a7a8c1", + "name": "Sukhavati Network", + "symbol": "SKT", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/17674/thumb/logo2.png?1628830203" + }, + { + "chainId": 1, + "address": "0x9250e33f8ae7b9fe02fb9af97a0c55b42a5ad9d8", + "name": "Cino Games", + "symbol": "CINO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24157/thumb/cino.png?1646575256" + }, + { + "chainId": 1, + "address": "0x594207c791afd06a8d087d84d99d1da53ccbd45f", + "name": "Buzzshow", + "symbol": "GLDY", + "decimals": 3, + "logoURI": "https://assets.coingecko.com/coins/images/2585/thumb/lLY2uKBE_400x400.jpg?1583447824" + }, + { + "chainId": 1, + "address": "0x426567f78e74577f8a6233b635970eb729631e05", + "name": "Staker", + "symbol": "STR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5122/thumb/staker-logo.png?1547040513" + }, + { + "chainId": 1, + "address": "0x7105e64bf67eca3ae9b123f0e5ca2b83b2ef2da0", + "name": "X7DAO", + "symbol": "X7DAO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27709/thumb/X7DAO.png?1665314516" + }, + { + "chainId": 1, + "address": "0x69948cc03f478b95283f7dbf1ce764d0fc7ec54c", + "name": "Aave REN v1", + "symbol": "AREN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12483/thumb/aREN.png?1600188492" + }, + { + "chainId": 1, + "address": "0xc32cc5b70bee4bd54aa62b9aefb91346d18821c4", + "name": "Iteration Syndicate", + "symbol": "ITS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13297/thumb/1_LOssD4ENHv72I5e9PAsndA_%281%29.png?1607223580" + }, + { + "chainId": 1, + "address": "0x79650799e7899a802cb96c0bc33a6a8d4ce4936c", + "name": "AICHAIN", + "symbol": "AIT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2525/thumb/aichain.png?1547036638" + }, + { + "chainId": 1, + "address": "0x39cacb4dcd57c0eb0c1446d9c16a26ed43718b44", + "name": "Boruto Inu", + "symbol": "BORUTO", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/17926/thumb/Doge-Boruto-200x200.png?1629808980" + }, + { + "chainId": 1, + "address": "0x3affcca64c2a6f4e3b6bd9c64cd2c969efd1ecbe", + "name": "DSLA Protocol", + "symbol": "DSLA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6694/thumb/dsla_logo-squared_200x200.png?1569571063" + }, + { + "chainId": 1, + "address": "0x5e031a5bc1c6b6e86a49e0b0f2e757800f1d0fff", + "name": "DaFIN", + "symbol": "DAF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17378/thumb/dafin.PNG?1627454158" + }, + { + "chainId": 1, + "address": "0x967da4048cd07ab37855c090aaf366e4ce1b9f48", + "name": "Ocean Protocol", + "symbol": "OCEAN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3687/thumb/ocean-protocol-logo.jpg?1547038686" + }, + { + "chainId": 1, + "address": "0xcc0014ccb39f6e86b1be0f17859a783b6722722f", + "name": "Showcase", + "symbol": "SHO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15084/thumb/icon_%284%29.png?1619662298" + }, + { + "chainId": 1, + "address": "0x429876c4a6f89fb470e92456b8313879df98b63c", + "name": "Cryption Network", + "symbol": "CNT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16171/thumb/Cryption_Logo_Gradient_White_Text.png?1623191284" + }, + { + "chainId": 1, + "address": "0x0e5f00da8aaef196a719d045db89b5da8f371b32", + "name": "Connectome", + "symbol": "CNTM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8528/thumb/200_200_CNTM-LOGO-07.png?1600751947" + }, + { + "chainId": 1, + "address": "0x3b7f247f21bf3a07088c2d3423f64233d4b069f7", + "name": "Dynamite", + "symbol": "DYNMT", + "decimals": 2, + "logoURI": "https://assets.coingecko.com/coins/images/8951/thumb/dynamite_logo.jpg?1598851224" + }, + { + "chainId": 1, + "address": "0xb4b9dc1c77bdbb135ea907fd5a08094d98883a35", + "name": "Sweatcoin Sweat Economy", + "symbol": "SWEAT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25057/thumb/fhD9Xs16_400x400.jpg?1649947000" + }, + { + "chainId": 1, + "address": "0xb4bebd34f6daafd808f73de0d10235a92fbb6c3d", + "name": "Yearn Ecosystem Index", + "symbol": "YETI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13332/thumb/yeti.png?1607563342" + }, + { + "chainId": 1, + "address": "0x1e1eed62f8d82ecfd8230b8d283d5b5c1ba81b55", + "name": "Gamma", + "symbol": "GAMMA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18642/thumb/6CVBUY5.png?1632753323" + }, + { + "chainId": 1, + "address": "0x1a57367c6194199e5d9aea1ce027431682dfb411", + "name": "MatrixETF", + "symbol": "MDF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18538/thumb/MDF.png?1632304949" + }, + { + "chainId": 1, + "address": "0x05bbe7240de66f6480c9aeda77c1376b13393f83", + "name": "Xeno", + "symbol": "XNO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13830/thumb/XNO_logo_200x200.png?1612168285" + }, + { + "chainId": 1, + "address": "0x2c33b28527a63cdf13c0b24ce4cf5bf9c9fb3bc6", + "name": "Schrodinger", + "symbol": "KITTYDINGER", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/19649/thumb/kitty_dinger.png?1636332557" + }, + { + "chainId": 1, + "address": "0x3a810ff7211b40c4fa76205a14efe161615d0385", + "name": "AI Network", + "symbol": "AIN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13211/thumb/AI_Network_Logo_200x200.png?1606205615" + }, + { + "chainId": 1, + "address": "0xd85ad783cc94bd04196a13dc042a3054a9b52210", + "name": "TribeOne", + "symbol": "HAKA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16575/thumb/USqW1QX.png?1625577555" + }, + { + "chainId": 1, + "address": "0x7f0c8b125040f707441cad9e5ed8a8408673b455", + "name": "CSP DAO Network", + "symbol": "NEBO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13436/thumb/csp_dao.png?1608535699" + }, + { + "chainId": 1, + "address": "0x946551dd05c5abd7cc808927480225ce36d8c475", + "name": "One", + "symbol": "ONE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4960/thumb/Screenshot_39.png?1561103318" + }, + { + "chainId": 1, + "address": "0x76960dccd5a1fe799f7c29be9f19ceb4627aeb2f", + "name": "Red", + "symbol": "RED", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4523/thumb/red.png?1548607994" + }, + { + "chainId": 1, + "address": "0xa98ed1fd277ead2c00d143cbe1465f59e65a0066", + "name": "Thx ", + "symbol": "THX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9134/thumb/dtUHCa05GdIeMwiuO1Vdhpxe8f3xbPP_lIwFrnw2ic800CB3fhlk2eOp8hAGg-EUwrCTHwcQQqv3N3ikf5qWOKmbJePX5iK333iXdIlVF4UyAHb7ZsCi8nYBqBCJ7KZ6BwYcdlbguRPth6YSDWL5EBDIJQGmmkWEb-qTX7rnYEqS-9crxEkQJujPBnCVUV1qz87RgHV9KOvWL5HW6twlwJ.jpg?1564611313" + }, + { + "chainId": 1, + "address": "0x1e4746dc744503b53b4a082cb3607b169a289090", + "name": "IPOR", + "symbol": "IPOR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28373/thumb/IPOR-token-200x200.png?1670480793" + }, + { + "chainId": 1, + "address": "0xdb69c3f8977f78952303987e87153c1988cf65a9", + "name": "PugLife", + "symbol": "PUGL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16105/thumb/puglife.png?1625756103" + }, + { + "chainId": 1, + "address": "0xb41380174d0b06181513a5677b60200b93b5efb4", + "name": "Chainsquare", + "symbol": "CHS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14858/thumb/chainsquare.png?1618804636" + }, + { + "chainId": 1, + "address": "0x4a8f5f96d5436e43112c2fbc6a9f70da9e4e16d4", + "name": "Internxt", + "symbol": "INXT", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/986/thumb/inxt.png?1639651885" + }, + { + "chainId": 1, + "address": "0x4cd0c43b0d53bc318cc5342b77eb6f124e47f526", + "name": "FreeRossDAO", + "symbol": "FREE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21648/thumb/free.jpg?1639639586" + }, + { + "chainId": 1, + "address": "0x43ab765ee05075d78ad8aa79dcb1978ca3079258", + "name": "POW", + "symbol": "POW", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22333/thumb/16963.png?1641515902" + }, + { + "chainId": 1, + "address": "0x9f549ebfd4974cd4ed4a1550d40394b44a7382aa", + "name": "LinkCoin", + "symbol": "LKN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6098/thumb/vWhhedXQ.png?1547042094" + }, + { + "chainId": 1, + "address": "0x86b4dbe5d203e634a12364c0e428fa242a3fba98", + "name": "poundtoken", + "symbol": "GBPT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26591/thumb/gbpt.jpeg?1658958061" + }, + { + "chainId": 1, + "address": "0xc45dbdf28844fdb1482c502897d433ac08d6ccd0", + "name": "BitNautic", + "symbol": "BTNT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2875/thumb/Logobit.jpg?1547037044" + }, + { + "chainId": 1, + "address": "0xf04a8ac553fcedb5ba99a64799155826c136b0be", + "name": "Flixxo", + "symbol": "FLIXX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1261/thumb/flixxo.png?1547483809" + }, + { + "chainId": 1, + "address": "0xbe1dbe6741fb988fb571ab1e28cffb36e3c62629", + "name": "Massive Protocol", + "symbol": "MAV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25134/thumb/logo.png?1650431353" + }, + { + "chainId": 1, + "address": "0xa499648fd0e80fd911972bbeb069e4c20e68bf22", + "name": "Jenny DAO V1", + "symbol": "UJENNY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15453/thumb/ujenny.png?1620870247" + }, + { + "chainId": 1, + "address": "0x348b7f3106b5da47405332534d06069ff9ce4d1b", + "name": "Elongate Deluxe", + "symbol": "ELONGD", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/15487/thumb/tT2g66pd.jpg?1623764695" + }, + { + "chainId": 1, + "address": "0x744dc59f30ac1992b28564287970441441def136", + "name": "The Real Tsygan", + "symbol": "TSYGAN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26812/thumb/qscBke9-_400x400.jpg?1660273459" + }, + { + "chainId": 1, + "address": "0x925f2c11b99c1a4c46606898ee91ed3d450cfeda", + "name": "Chow Chow Finance", + "symbol": "CHOW", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/14275/thumb/chow-logo.png?1620787242" + }, + { + "chainId": 1, + "address": "0xeda8b016efa8b1161208cf041cd86972eee0f31e", + "name": "IHT Real Estate Protocol", + "symbol": "IHT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3158/thumb/iht-real-estate-protocol.png?1547744404" + }, + { + "chainId": 1, + "address": "0xe6f1966d04cfcb9cd1b1dc4e8256d8b501b11cba", + "name": "SafeEarth", + "symbol": "SAFEEARTH", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/15449/thumb/SafeEarthLogo2000.png?1620833647" + }, + { + "chainId": 1, + "address": "0x410e7696df8be2a123df2cf88808c6ddab2ae2bf", + "name": "Gr33n", + "symbol": "BUILD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26932/thumb/Screen-Shot-2022-08-18-at-12-15-03-PM_%281%29.png?1660887525" + }, + { + "chainId": 1, + "address": "0x5eb87caa0105a63aa87a36c7bd2573bd13e84fae", + "name": "Blockchain Quotations Index", + "symbol": "BQT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5814/thumb/blockchain-quotations-index-token.png?1547351058" + }, + { + "chainId": 1, + "address": "0xb8fa12f8409da31a4fc43d15c4c78c33d8213b9b", + "name": "CaliCoin", + "symbol": "CALI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14998/thumb/cropped-Logo-transparent-background-1.png?1619392357" + }, + { + "chainId": 1, + "address": "0x8c4e7f814d40f8929f9112c5d09016f923d34472", + "name": "XCELTOKEN PLUS", + "symbol": "XLAB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8508/thumb/CXQJPNyO_400x400.jpg?1559030200" + }, + { + "chainId": 1, + "address": "0xc2544a32872a91f4a553b404c6950e89de901fdb", + "name": "Frax Price Index Share", + "symbol": "FPIS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24944/thumb/fpis.png?1649485832" + }, + { + "chainId": 1, + "address": "0xf14922001a2fb8541a433905437ae954419c2439", + "name": "Direct Insurance", + "symbol": "DIT", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/4220/thumb/Direct_Insurance_Token.jpg?1547039537" + }, + { + "chainId": 1, + "address": "0xac00797df10e825589d8b53e715393be4e617459", + "name": "Bubble Network", + "symbol": "BBL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13443/thumb/bubble_network_logo.png?1608612666" + }, + { + "chainId": 1, + "address": "0x118b552725e1892137740cb4d29390d952709639", + "name": "Nyx", + "symbol": "NYXT", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/22174/thumb/NYX-logo-medium-size.png?1641174126" + }, + { + "chainId": 1, + "address": "0x1af2eaeaf2b1d9dda800861268e6bbb3995a6c3b", + "name": "1eco", + "symbol": "1ECO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22118/thumb/mgrOT_dx_400x400.png?1640847402" + }, + { + "chainId": 1, + "address": "0x1a23a6bfbadb59fa563008c0fb7cf96dfcf34ea1", + "name": "CoFiX", + "symbol": "COFI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12781/thumb/dnPnSkfa_400x400.png?1602885321" + }, + { + "chainId": 1, + "address": "0xd2adc1c84443ad06f0017adca346bd9b6fc52cab", + "name": "dFund", + "symbol": "DFND", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15286/thumb/1zbdX36.png?1620355973" + }, + { + "chainId": 1, + "address": "0x883a158c9b28f8d626acfcfbe1028f49e70c9d75", + "name": "CNG Casino", + "symbol": "CNG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11573/thumb/cng_casino.png?1591230675" + }, + { + "chainId": 1, + "address": "0x23581767a106ae21c074b2276d25e5c3e136a68b", + "name": "Moonbirds NFT Index by MEXC", + "symbol": "NMOON", + "decimals": 0, + "logoURI": "https://assets.coingecko.com/coins/images/25209/thumb/8nZJL9eQ_400x400_%281%29.jpg?1650788143" + }, + { + "chainId": 1, + "address": "0x260d5f9688353af138d35ece6f0cd9c80ef982dd", + "name": "Shinuri", + "symbol": "SHINURI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26640/thumb/CG.png?1659347370" + }, + { + "chainId": 1, + "address": "0xc4199fb6ffdb30a829614beca030f9042f1c3992", + "name": "snglsDAO Governance", + "symbol": "SGT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11823/thumb/SGT-icon.png?1594681863" + }, + { + "chainId": 1, + "address": "0x2dd1b9410c73e16b60240e529e38e30425f00d4e", + "name": "Kay Pacha", + "symbol": "PACHA", + "decimals": 10, + "logoURI": "https://assets.coingecko.com/coins/images/27194/thumb/0_Lzf-8HxwOnPjYWi-.jpeg?1662539360" + }, + { + "chainId": 1, + "address": "0x34f0915a5f15a66eba86f6a58be1a471fb7836a7", + "name": "PulseDogecoin", + "symbol": "PLSD", + "decimals": 12, + "logoURI": "https://assets.coingecko.com/coins/images/25327/thumb/token-icon-200x200.png?1651234941" + }, + { + "chainId": 1, + "address": "0xd337382da15d12bb6e56498e91df64f86c8f1ea8", + "name": "Aelysir", + "symbol": "AEL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12955/thumb/ael_logo.png?1603794538" + }, + { + "chainId": 1, + "address": "0xdc98c5543f3004debfaad8966ec403093d0aa4a8", + "name": "Etherrock 72", + "symbol": "PEBBLE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17963/thumb/Screen-Shot-2021-08-25-at-8-42-22-PM.png?1629943788" + }, + { + "chainId": 1, + "address": "0x5c761c1a21637362374204000e383204d347064c", + "name": "Sewer Rat Social Club CHIZ Token", + "symbol": "CHIZ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19147/thumb/ZXb2HoUG_400x400.jpg?1634534839" + }, + { + "chainId": 1, + "address": "0x40897c872214303b6f479a37e549ee1516b264a2", + "name": "FLETA", + "symbol": "FLETA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7865/thumb/Fleta_new_logo_%282%29.png?1623520180" + }, + { + "chainId": 1, + "address": "0xedd8da5c20eb014e550008df3304213dde5e29f0", + "name": "Mars Network", + "symbol": "MARS", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/12828/thumb/Mars-logo-2.jpg?1602832489" + }, + { + "chainId": 1, + "address": "0x5dc74029509752f4ed9a609c2bb52216275e4c1d", + "name": "Game City", + "symbol": "GMCI", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/7121/thumb/gamecity.jpg?1612234592" + }, + { + "chainId": 1, + "address": "0x72955ecff76e48f2c8abcce11d54e5734d6f3657", + "name": "TrustVerse", + "symbol": "TRV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8793/thumb/trv_256px.png?1623928469" + }, + { + "chainId": 1, + "address": "0x8d2bffcbb19ff14a698c424fbcdcfd17aab9b905", + "name": "Unicly CryptoPunks Collection", + "symbol": "UPUNK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14905/thumb/cryptopunk7804.png?1618978888" + }, + { + "chainId": 1, + "address": "0x3b9e094d56103611f0acefdab43182347ba60df4", + "name": "PANTHEON X", + "symbol": "XPN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8297/thumb/Hr9wHItp_400x400.jpg?1557307478" + }, + { + "chainId": 1, + "address": "0x0954906da0bf32d5479e25f46056d22f08464cab", + "name": "Index Cooperative", + "symbol": "INDEX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12729/thumb/index.png?1634894321" + }, + { + "chainId": 1, + "address": "0x19e2a43fbbc643c3b2d9667d858d49cad17bc2b5", + "name": "BNS", + "symbol": "BNS", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/25150/thumb/bitbns_logo.png?1650450366" + }, + { + "chainId": 1, + "address": "0xfe4beb9217cddf2422d4bd65449b76d807b30fe1", + "name": "White Ethereum", + "symbol": "WHITE", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/26667/thumb/IMG_2923.PNG?1659500526" + }, + { + "chainId": 1, + "address": "0xc77d7e0dd7b2a01b990e866feb21d031f1418c2e", + "name": "Littlesesame", + "symbol": "LSC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8893/thumb/5yIumMGs_400x400.png?1562579316" + }, + { + "chainId": 1, + "address": "0xb16d3ed603d62b125c6bd45519eda40829549489", + "name": "Insureum", + "symbol": "ISR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4888/thumb/insureum.png?1547974141" + }, + { + "chainId": 1, + "address": "0x35b08722aa26be119c1608029ccbc976ac5c1082", + "name": "Eminer", + "symbol": "EM", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/9155/thumb/KDbQPKIu_400x400.png?1564735775" + }, + { + "chainId": 1, + "address": "0xa1a36d3537bbe375cc9694795f663ddc8d516db9", + "name": "Polinate", + "symbol": "POLI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18096/thumb/Polinate_Games___Guilds_Elements-05.png?1648806645" + }, + { + "chainId": 1, + "address": "0xbf9e72eeb5adb8b558334c8672950b7a379d4266", + "name": "CubToken", + "symbol": "CUBT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26197/thumb/photo-2022-04-20-13-35-28.jpg?1656471496" + }, + { + "chainId": 1, + "address": "0x9b8e9d523d1d6bc8eb209301c82c7d64d10b219e", + "name": "The Plant Dao", + "symbol": "SPROUT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22455/thumb/56z0x6j.png?1641867803" + }, + { + "chainId": 1, + "address": "0xd80776bbf68cde466900a7214c772a7d179c420f", + "name": "Etherean Socks", + "symbol": "ETH2SOCKS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17714/thumb/Q4NQZWp.png?1629083998" + }, + { + "chainId": 1, + "address": "0x797de1dc0b9faf5e25c1f7efe8df9599138fa09d", + "name": "Genesis Pool", + "symbol": "GPOOL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18122/thumb/GP_BRAND_GREEN_Main_Icon_.png?1630562175" + }, + { + "chainId": 1, + "address": "0xc691bc298a304d591ad9b352c7a8d216de9f2ced", + "name": "Polaris Share", + "symbol": "POLA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13817/thumb/tHQrxdYQ_400x400.png?1612051098" + }, + { + "chainId": 1, + "address": "0x9303eabc860a743aabcc3a1629014cabcc3f8d36", + "name": "Aave AMM UniDAIWETH", + "symbol": "AAMMUNIDAIWETH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17230/thumb/aAmmUniDAIWETH.png?1626920804" + }, + { + "chainId": 1, + "address": "0xe3a64a3c4216b83255b53ec7ea078b13f21a7dad", + "name": "DeFi Gold", + "symbol": "DFGL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12883/thumb/defi_gold.jpg?1603281766" + }, + { + "chainId": 1, + "address": "0xf85feea2fdd81d51177f6b8f35f0e6734ce45f5f", + "name": "CyberMiles", + "symbol": "CMT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1300/thumb/cybermiles.png?1547035327" + }, + { + "chainId": 1, + "address": "0x3cf19ba410fa07e20854e8520227f756c8afd655", + "name": "ShibaTsuka", + "symbol": "STSUKA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27495/thumb/tsuka200.png?1664269591" + }, + { + "chainId": 1, + "address": "0x42b4df7e402a71eae743c6c5410ce3bbb63aef22", + "name": "HDPUNK Vault NFTX ", + "symbol": "HDPUNK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17069/thumb/HDPunks.png?1626151243" + }, + { + "chainId": 1, + "address": "0x89509aa1d14a8e1e5364ec4c3b041213bcdbe08d", + "name": "ZURRENCY", + "symbol": "ZURR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22240/thumb/logo.png?1641274307" + }, + { + "chainId": 1, + "address": "0x49b4f92431c5b8cf260f983c4d3ed28e1fd0b991", + "name": "JoJos Adventure", + "symbol": "JOJO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27369/thumb/jojo.png?1663722472" + }, + { + "chainId": 1, + "address": "0xfb444c1f2b718ddfc385cb8fd9f2d1d776b24668", + "name": "Elamachain", + "symbol": "ELAMA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5650/thumb/Elamachain.png?1584505477" + }, + { + "chainId": 1, + "address": "0x0bf0d26a527384bcc4072a6e2bca3fc79e49fa2d", + "name": "Mytrade", + "symbol": "MYT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24134/thumb/transparent_logo.png?1646543530" + }, + { + "chainId": 1, + "address": "0x9f91d9f9070b0478abb5a9918c79b5dd533f672c", + "name": "Centurion Inu", + "symbol": "CENT", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/18493/thumb/cent.png?1632207211" + }, + { + "chainId": 1, + "address": "0xcafe27178308351a12fffffdeb161d9d730da082", + "name": "HotDollars", + "symbol": "HDS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8505/thumb/pvGh4E0b_400x400.jpg?1559026304" + }, + { + "chainId": 1, + "address": "0x3402e15b3ea0f1aec2679c4be4c6d051cef93953", + "name": "QAO", + "symbol": "127760", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17159/thumb/qao.PNG?1626672944" + }, + { + "chainId": 1, + "address": "0x67c597624b17b16fb77959217360b7cd18284253", + "name": "Benchmark Protocol", + "symbol": "MARK", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/13212/thumb/benchmark_protocol.jpg?1606267583" + }, + { + "chainId": 1, + "address": "0x1426cc6d52d1b14e2b3b1cb04d57ea42b39c4c7c", + "name": "Jomon Shiba", + "symbol": "JSHIBA", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/15395/thumb/Jomon.png?1622960557" + }, + { + "chainId": 1, + "address": "0x30c084890fc07d78f3499ffc818b3225bc8812ea", + "name": "PUNKS Comic", + "symbol": "PUNKS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22337/thumb/PunksIcon_Small.png?1641520641" + }, + { + "chainId": 1, + "address": "0x8315472bae77f9a2b856a67eb0796480aafcd51c", + "name": "MMAON", + "symbol": "MMAON", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14645/thumb/MMAON.png?1618295603" + }, + { + "chainId": 1, + "address": "0xc0f1728d9513efc316d0e93a0758c992f88b0809", + "name": "SWTCoin", + "symbol": "SWAT", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/5985/thumb/swtcoin.jpg?1547041927" + }, + { + "chainId": 1, + "address": "0x30dcba0405004cf124045793e1933c798af9e66a", + "name": "Yieldification", + "symbol": "YDF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26699/thumb/logo.png?1659609811" + }, + { + "chainId": 1, + "address": "0xd32641191578ea9b208125ddd4ec5e7b84fcab4c", + "name": "MDsquare", + "symbol": "TMED", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8558/thumb/bAdnHTWUIl4rFB4EfbH2L50BW7xi2T9ubci7v6xfYDipXkrG8Wb4LS8g6eAiMsSKqLJfV-FjH5TrYALqACw4MM2A9NfK_L6Ujnddhw1uEgL0hmVQnY96xZeL0C4kkFRJalreK9wUBzjZ4pRhZLdQf9h1drSTF7NE9moAdQ7KtuOvJqommn_q-TjQpF8GUB7J2Ejs7zIvhXXsUHGI1.jpg?1559198882" + }, + { + "chainId": 1, + "address": "0x329cf160f30d21006bcd24b67eade561e54cde4c", + "name": "CareCoin", + "symbol": "CARE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28378/thumb/46FD299C-3DA4-43E6-A6A2-27F492FC7E4D.jpeg?1669971342" + }, + { + "chainId": 1, + "address": "0x9c32185b81766a051e08de671207b34466dd1021", + "name": "BTC Proxy", + "symbol": "BTCPX", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/22630/thumb/MB1aYO7T_400x400.jpg?1642342656" + }, + { + "chainId": 1, + "address": "0x4463e6a3ded0dbe3f6e15bc8420dfc55e5fea830", + "name": "TXA", + "symbol": "TXA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17746/thumb/jwjcN5Kx_400x400.jpg?1646381259" + }, + { + "chainId": 1, + "address": "0xb683d83a532e2cb7dfa5275eed3698436371cc9f", + "name": "BTU Protocol", + "symbol": "BTU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3697/thumb/btuprotocol.jpeg?1549597021" + }, + { + "chainId": 1, + "address": "0xd7f5cabdf696d7d1bf384d7688926a4bdb092c67", + "name": "DRC Mobility", + "symbol": "DRC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13457/thumb/drc_symbol.png?1608759323" + }, + { + "chainId": 1, + "address": "0x38b7bf4eecf3eb530b1529c9401fc37d2a71a912", + "name": "ClayStack Staked MATIC", + "symbol": "CSMATIC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28352/thumb/csMatic.png?1669771887" + }, + { + "chainId": 1, + "address": "0x19de6b897ed14a376dda0fe53a5420d2ac828a28", + "name": "Bitget Token", + "symbol": "BGB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11610/thumb/photo_2022-01-24_14-08-03.jpg?1643019457" + }, + { + "chainId": 1, + "address": "0x6aeb95f06cda84ca345c2de0f3b7f96923a44f4c", + "name": "Rentberry", + "symbol": "BERRY", + "decimals": 14, + "logoURI": "https://assets.coingecko.com/coins/images/1787/thumb/rentberry.png?1548608046" + }, + { + "chainId": 1, + "address": "0xd1b624f07a4d9b3e3746e33cb58f42df079b5444", + "name": "NKCL Classic", + "symbol": "NKCLC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17893/thumb/w02Nksm-.png?1629718144" + }, + { + "chainId": 1, + "address": "0xd8e3fb3b08eba982f2754988d70d57edc0055ae6", + "name": "Zoracles", + "symbol": "ZORA", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/13255/thumb/zora.png?1606747018" + }, + { + "chainId": 1, + "address": "0xd47bdf574b4f76210ed503e0efe81b58aa061f3d", + "name": "TRVL", + "symbol": "TRVL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20911/thumb/trvl.jpeg?1649390006" + }, + { + "chainId": 1, + "address": "0x887168120cb89fb06f3e74dc4af20d67df0977f6", + "name": "Sekuritance", + "symbol": "SKRT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15495/thumb/skrt.png?1621053881" + }, + { + "chainId": 1, + "address": "0xda23d301761e4e2bf474951f978f6dfb6f3c9f14", + "name": "Tsuki Inu", + "symbol": "TKINU", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/15681/thumb/tkinu.png?1621508357" + }, + { + "chainId": 1, + "address": "0x8a40c222996f9f3431f63bf80244c36822060f12", + "name": "FINXFLO", + "symbol": "FXF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13916/thumb/raVh1Iw.png?1618978607" + }, + { + "chainId": 1, + "address": "0xb04dfdb8271ed2d5e13858562c44a77d3ceb9e57", + "name": "BuildUp", + "symbol": "BUP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13206/thumb/BUP_-_LOGO.png?1606199462" + }, + { + "chainId": 1, + "address": "0xc36b4311b21fc0c2ead46f1ea6ce97c9c4d98d3d", + "name": "Creaticles", + "symbol": "CRE8", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21115/thumb/logo-v3-small.png?1638339957" + }, + { + "chainId": 1, + "address": "0x82698aecc9e28e9bb27608bd52cf57f704bd1b83", + "name": "Balancer Boosted Aave USDC", + "symbol": "BB-A-USDC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25780/thumb/bb-a-usdc.png?1653735108" + }, + { + "chainId": 1, + "address": "0xeff3f1b9400d6d0f1e8805bdde592f61535f5ecd", + "name": "Squawk OLD ", + "symbol": "SQUAWK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25087/thumb/soo.png?1650534077" + }, + { + "chainId": 1, + "address": "0xc5fb36dd2fb59d3b98deff88425a3f425ee469ed", + "name": "Dejitaru Tsuka", + "symbol": "TSUKA", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/26405/thumb/Tsuka_200x200.png?1657923568" + }, + { + "chainId": 1, + "address": "0x25b6325f5bb1c1e03cfbc3e53f470e1f1ca022e3", + "name": "Link Machine Learning", + "symbol": "LML", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7238/thumb/LML.png?1626237501" + }, + { + "chainId": 1, + "address": "0xd5147bc8e386d91cc5dbe72099dac6c9b99276f5", + "name": "renFIL", + "symbol": "RENFIL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13375/thumb/Filecoin.jpg?1628072923" + }, + { + "chainId": 1, + "address": "0xbb97e381f1d1e94ffa2a5844f6875e6146981009", + "name": "WiBX", + "symbol": "WBX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11009/thumb/wibx_new_logo.png?1632122685" + }, + { + "chainId": 1, + "address": "0x26487ec318b0138dcf6cd1f43ee68927756dbc1d", + "name": "Futura", + "symbol": "FUTURA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26802/thumb/62f22c02295fa13e56e5e7c9_futura-logo.png?1660205551" + }, + { + "chainId": 1, + "address": "0x32e6c34cd57087abbd59b5a4aecc4cb495924356", + "name": "BitBase Token", + "symbol": "BTBS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17414/thumb/btbs.PNG?1627596633" + }, + { + "chainId": 1, + "address": "0x5d2c6545d16e3f927a25b4567e39e2cf5076bef4", + "name": "Kappa", + "symbol": "KAPPA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18643/thumb/Wp3ALed.png?1632753579" + }, + { + "chainId": 1, + "address": "0xa130e3a33a4d84b04c3918c4e5762223ae252f80", + "name": "Swash", + "symbol": "SWASH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18774/thumb/swash.png?1634089759" + }, + { + "chainId": 1, + "address": "0x9ed8e7c9604790f7ec589f99b94361d8aab64e5e", + "name": "Unistake", + "symbol": "UNISTAKE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12813/thumb/unistake.png?1612346684" + }, + { + "chainId": 1, + "address": "0x8167d3b1024cb51a2dd1b4d889ddf7023420796a", + "name": "Noku", + "symbol": "NOKU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1577/thumb/Noku_Logo_round_coingeko.png?1643171688" + }, + { + "chainId": 1, + "address": "0x86d1d12523b65203851c571fcc029bf90903fb6d", + "name": "Bintex Futures", + "symbol": "BNTX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12117/thumb/Bintexfutures_Icon_Logo.png?1597272672" + }, + { + "chainId": 1, + "address": "0x3656bd0f3f07623bb7f429b390d208f894e44ece", + "name": "INFLIV", + "symbol": "IFV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5279/thumb/INFLIV_LOGO_PNG.png?1550657927" + }, + { + "chainId": 1, + "address": "0x7d8daff6d70cead12c6f077048552cf89130a2b1", + "name": "ARCS", + "symbol": "ARX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10068/thumb/arcs.png?1575426741" + }, + { + "chainId": 1, + "address": "0x9dfad1b7102d46b1b197b90095b5c4e9f5845bba", + "name": "Botto", + "symbol": "BOTTO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18892/thumb/bottos_logo.jpg?1633791571" + }, + { + "chainId": 1, + "address": "0xa5ef74068d04ba0809b7379dd76af5ce34ab7c57", + "name": "LunaChow", + "symbol": "LUCHOW", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18805/thumb/J-MwYfhD_400x400.jpg?1633475157" + }, + { + "chainId": 1, + "address": "0xaf5f584d79701d5bdc9ca045e66ae130b67a68ad", + "name": "CryBet", + "symbol": "CBT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10973/thumb/d4zbv0h.jpg?1586743861" + }, + { + "chainId": 1, + "address": "0x94e9eb8b5ab9fd6b9ea3169d55ffade62a01702e", + "name": "BreederDAO", + "symbol": "BREED", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25203/thumb/BreederDAO-Breed_Token-FINAL.png?1650638916" + }, + { + "chainId": 1, + "address": "0x8fb6c8a44a4e23fd1f5a936818b39083b4cdc865", + "name": "BitOnyx", + "symbol": "BTNYX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13684/thumb/token-logo-200px.png?1610860892" + }, + { + "chainId": 1, + "address": "0xa3ad8c7ab6b731045b5b16e3fdf77975c71abe79", + "name": "Dinerobet", + "symbol": "DINERO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28248/thumb/CABA1DE1-2CB1-46D3-97BC-20305EA67FBB.png?1668656923" + }, + { + "chainId": 1, + "address": "0x794baab6b878467f93ef17e2f2851ce04e3e34c8", + "name": "YIN Finance", + "symbol": "YIN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18272/thumb/e37387ae6ee756fd.jpg?1631176921" + }, + { + "chainId": 1, + "address": "0xc05a4ed46ef5b0678d56fff5a877b4b6b32077bb", + "name": "Qfora", + "symbol": "QUROZ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25827/thumb/20386.png?1654064350" + }, + { + "chainId": 1, + "address": "0xe50365f5d679cb98a1dd62d6f6e58e59321bcddf", + "name": "LA", + "symbol": "LA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1051/thumb/LA_token.png?1605772040" + }, + { + "chainId": 1, + "address": "0x68909e586eeac8f47315e84b4c9788dd54ef65bb", + "name": "EvenCoin", + "symbol": "EVN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4634/thumb/evencoin.png?1548125647" + }, + { + "chainId": 1, + "address": "0xa4cb3ef5f41a4d89d6fced22ea8a1c57957629aa", + "name": "Meta Ruffy", + "symbol": "MR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27831/thumb/1tRmvYZ8_400x400.jpeg?1665993865" + }, + { + "chainId": 1, + "address": "0xe7ae6d0c56cacaf007b7e4d312f9af686a9e9a04", + "name": "Vabble", + "symbol": "VAB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17508/thumb/vabble_tplogo_200_x_200.png?1628508875" + }, + { + "chainId": 1, + "address": "0xb840d10d840ef47c233fec1fd040f5b145a6dfa5", + "name": "STREETH", + "symbol": "STREETH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24954/thumb/streeth.png?1649507723" + }, + { + "chainId": 1, + "address": "0x2167fb82309cf76513e83b25123f8b0559d6b48f", + "name": "CoinLion", + "symbol": "LION", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1917/thumb/Coinlion_Brandmark_Color.png?1620706193" + }, + { + "chainId": 1, + "address": "0xf5238462e7235c7b62811567e63dd17d12c2eaa0", + "name": "CACHE Gold", + "symbol": "CGT", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/11601/thumb/cache-gold-icon-200x200.png?1591755874" + }, + { + "chainId": 1, + "address": "0xff743a38efcf6f46fc0768b46a5bdc264f7e92b3", + "name": "AMDG", + "symbol": "AMDG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24545/thumb/amdg-logo.png?1648127822" + }, + { + "chainId": 1, + "address": "0x50ec35d1e18d439f02fa895746fc3e1bef311780", + "name": "Epanus", + "symbol": "EPS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12295/thumb/SBqy8NapjZHtkIb4gkQrAXfxFI-j5G4mvfTxCVb2b1HuNGVv0m_6JTq4Ika8BOSHgbWBm0zKSH1dSohftNOaMI00Nb9hW_q5wnMoMi78BIbqTmf810zAHJPpXlFuMhZJ1Q1pUIjyKhb476mFwn5fys_EIF_26GhEE_n9TgAuyMI71hnYDCguzD-ZA7SsMoq.jpg?1598924999" + }, + { + "chainId": 1, + "address": "0xa9639160481b625ba43677be753e0a70bf58c647", + "name": "RBXSamurai", + "symbol": "RBXS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22342/thumb/rbxs.jpg?1641536586" + }, + { + "chainId": 1, + "address": "0xf5bb30ebc95dca53e3320eb05d3d1bcab806b9bf", + "name": "Rizespor Token", + "symbol": "RIZE", + "decimals": 2, + "logoURI": "https://assets.coingecko.com/coins/images/24027/thumb/mqQwSHB__400x400.jpg?1646113446" + }, + { + "chainId": 1, + "address": "0x7d14b842630cbc2530cb288109e5719e0c4d67d7", + "name": "Innovation Blockchain Payment", + "symbol": "IBP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12903/thumb/ibp.?1603347704" + }, + { + "chainId": 1, + "address": "0xbd668ec47e10d3bf23b1d68139e545162a0dfcfa", + "name": "GranX Chain", + "symbol": "GRANX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18658/thumb/granx-002.png?1632812430" + }, + { + "chainId": 1, + "address": "0x24ec2ca132abf8f6f8a6e24a1b97943e31f256a7", + "name": "dotmoovs", + "symbol": "MOOV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15817/thumb/dotmoovs-symbol-gradient.png?1635332626" + }, + { + "chainId": 1, + "address": "0xb5c578947de0fd71303f71f2c3d41767438bd0de", + "name": "DeHorizon", + "symbol": "DEVT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21373/thumb/A3RjDqet_400x400.jpg?1639031847" + }, + { + "chainId": 1, + "address": "0xfc1e690f61efd961294b3e1ce3313fbd8aa4f85d", + "name": "Aave DAI v1", + "symbol": "ADAI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10843/thumb/aDAI.png?1584698791" + }, + { + "chainId": 1, + "address": "0xfbeea1c75e4c4465cb2fccc9c6d6afe984558e20", + "name": "DuckDaoDime", + "symbol": "DDIM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12146/thumb/token_DDIM-01.png?1606982032" + }, + { + "chainId": 1, + "address": "0x95efd1fe6099f65a7ed524def487483221094947", + "name": "CryptoBonusMiles", + "symbol": "CBM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9302/thumb/CryptoBonusMiles.png?1565865043" + }, + { + "chainId": 1, + "address": "0x25b539b1c179fbe2af92abdfdc7e152cbc97addc", + "name": "Incooom Genesis", + "symbol": "COOOM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18988/thumb/cooom.png?1634112193" + }, + { + "chainId": 1, + "address": "0xfeb2d480019bc605a2ce20903a90db3f554f1e1c", + "name": "Izanagi", + "symbol": "NAGI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24129/thumb/photo_2022-03-04_23-02-56.jpg?1646481376" + }, + { + "chainId": 1, + "address": "0x686f2404e77ab0d9070a46cdfb0b7fecdd2318b0", + "name": "LORDS", + "symbol": "LORDS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22171/thumb/Frame_1.png?1642334107" + }, + { + "chainId": 1, + "address": "0xf56408077487cb879c992909c5b5c66d68c02eb4", + "name": "Riot Racers", + "symbol": "RIOT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19238/thumb/jyxvIbmJ_400x400.png?1634774849" + }, + { + "chainId": 1, + "address": "0x48c1b2f3efa85fbafb2ab951bf4ba860a08cdbb7", + "name": "ShowHand", + "symbol": "HAND", + "decimals": 0, + "logoURI": "https://assets.coingecko.com/coins/images/5554/thumb/showhand.png?1548609179" + }, + { + "chainId": 1, + "address": "0xa3ec7df93090f4de46faea09f73cc40ebe7dd714", + "name": "Monkey King", + "symbol": "WUKONG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27238/thumb/wukong.png?1662877212" + }, + { + "chainId": 1, + "address": "0xe88f8313e61a97cec1871ee37fbbe2a8bf3ed1e4", + "name": "Sora Validator", + "symbol": "VAL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13299/thumb/val-gold-256.png?1607242927" + }, + { + "chainId": 1, + "address": "0x1f3ce12f7d9c589bf825cec15642bc37eae9e89e", + "name": "Atauro", + "symbol": "ATR", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/22021/thumb/output-onlinepngtools.png?1640607268" + }, + { + "chainId": 1, + "address": "0x64609a845ad463d07ee51e91a88d1461c3dc3165", + "name": "Ridge", + "symbol": "RIDGE", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/20487/thumb/logo_200x200_%289%29.png?1637119058" + }, + { + "chainId": 1, + "address": "0xf1e345ea7c33fd6c05f5512a780eb5839ee31674", + "name": "Telefy", + "symbol": "TELE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26485/thumb/WhatsApp_Image_2022-07-20_at_2.51.42_AM.jpeg?1658281111" + }, + { + "chainId": 1, + "address": "0x3adfc4999f77d04c8341bac5f3a76f58dff5b37a", + "name": "Privatix", + "symbol": "PRIX", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/1183/thumb/dZZrRl8.png?1547035211" + }, + { + "chainId": 1, + "address": "0xaf91e8afbe87642dc628786188a54b78580a4d76", + "name": "Fund Of Yours", + "symbol": "FOY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16648/thumb/foy200.png?1624591862" + }, + { + "chainId": 1, + "address": "0x0c90c57aaf95a3a87eadda6ec3974c99d786511f", + "name": "HanChain", + "symbol": "HAN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27374/thumb/logo_200.png?1663732819" + }, + { + "chainId": 1, + "address": "0xe0e05c43c097b0982db6c9d626c4eb9e95c3b9ce", + "name": "Unslashed Finance", + "symbol": "USF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14177/thumb/Unslashed.jpeg?1614793365" + }, + { + "chainId": 1, + "address": "0x0222be1f1b8413b2d7d76ebfc9e0285c1300692f", + "name": "Glox Finance", + "symbol": "GLOX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13312/thumb/glox_finance.png?1607395418" + }, + { + "chainId": 1, + "address": "0x10c71515602429c19d53011ea7040b87a4894838", + "name": "Diamond Platform", + "symbol": "DPT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8309/thumb/RSCL14XL_400x400.jpg?1557400596" + }, + { + "chainId": 1, + "address": "0x8fc9b6354e839ab1c8b31f4afa53607092b8c2e5", + "name": "ECOSC", + "symbol": "ECU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10989/thumb/ecosc-logo.png?1586914826" + }, + { + "chainId": 1, + "address": "0x5833dbb0749887174b254ba4a5df747ff523a905", + "name": "XRun", + "symbol": "XRUN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25272/thumb/19787.png?1651118626" + }, + { + "chainId": 1, + "address": "0x29c56e7cb9c840d2b2371b17e28bab44ad3c3ead", + "name": "EsportsPro", + "symbol": "ESPRO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14187/thumb/logo.jpg?1614830245" + }, + { + "chainId": 1, + "address": "0x7169ba45cf03e0377b464462aacbccdf1f721125", + "name": "1peco", + "symbol": "1PECO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22312/thumb/1PECO_200x200.png?1641467088" + }, + { + "chainId": 1, + "address": "0x75739d5944534115d7c54ee8c73f186d793bae02", + "name": "Collective", + "symbol": "CO2", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14542/thumb/the_collective_logo.png?1616912000" + }, + { + "chainId": 1, + "address": "0xb8db81b84d30e2387de0ff330420a4aaa6688134", + "name": "Aave AMM UniLINKWETH", + "symbol": "AAMMUNILINKWETH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17221/thumb/aAmmUniLINKWETH.png?1626879669" + }, + { + "chainId": 1, + "address": "0xde075d9adbd0240b4462f124af926452ad0bac91", + "name": "Bubblefong", + "symbol": "BBF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24634/thumb/BBF-Token-200x200.png?1648460352" + }, + { + "chainId": 1, + "address": "0x0b569fa433faa7f01f3ea880193de38044b41de0", + "name": "GenCoin Capital", + "symbol": "GENCAP", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/22282/thumb/200x200_logo.png?1641364979" + }, + { + "chainId": 1, + "address": "0x436f0f3a982074c4a05084485d421466a994fe53", + "name": "Rate3", + "symbol": "RTE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3342/thumb/rate3-logo.png?1547037953" + }, + { + "chainId": 1, + "address": "0x8f081eb884fd47b79536d28e2dd9d4886773f783", + "name": "bePAY Finance", + "symbol": "BECOIN", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/21275/thumb/logo-becoin.png?1638861929" + }, + { + "chainId": 1, + "address": "0xcacc19c5ca77e06d6578decac80408cc036e0499", + "name": "Monfter", + "symbol": "MON", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2546/thumb/monft.PNG?1641281398" + }, + { + "chainId": 1, + "address": "0x13572851103bed49ff743af4c4bb5ace88b22e2f", + "name": "Recharge Finance", + "symbol": "R3FI", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/14036/thumb/IMG_20210518_073652_114.png?1623833528" + }, + { + "chainId": 1, + "address": "0x37e808f084101f75783612407e7c3f5f92d8ee3f", + "name": "Xiotri RI", + "symbol": "RI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12536/thumb/Ri_logo_512x512.png?1601775196" + }, + { + "chainId": 1, + "address": "0xa13c75387c6677362f540f432bd8928c014e4892", + "name": "Sky Bandit Coin", + "symbol": "SBC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27868/thumb/SBC.png?1666154249" + }, + { + "chainId": 1, + "address": "0x97a9bac06f90940bce9caec2b880ff17707519e4", + "name": "Minato", + "symbol": "MNTO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24622/thumb/MNTO_200x200.png?1648448664" + }, + { + "chainId": 1, + "address": "0x226f7b842e0f0120b7e194d05432b3fd14773a9d", + "name": "UNION Protocol Governance", + "symbol": "UNN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13408/thumb/unn_finance.png?1608262290" + }, + { + "chainId": 1, + "address": "0x2edf094db69d6dcd487f1b3db9febe2eec0dd4c5", + "name": "ZeroSwap", + "symbol": "ZEE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12861/thumb/logo.?1666110579" + }, + { + "chainId": 1, + "address": "0xbdbf245c690d54b67c6e610a28486a2c6de08be6", + "name": "Sunder Goverance", + "symbol": "SUNDER", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16287/thumb/logo.d2250592.png?1623657219" + }, + { + "chainId": 1, + "address": "0xf0d243ee0d7517b1fcf2445ab624ded2dbe3ba54", + "name": "Engine Token", + "symbol": "ENGN", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/20492/thumb/200x200_%2842%29.png?1637129962" + }, + { + "chainId": 1, + "address": "0x68d57c9a1c35f63e2c83ee8e49a64e9d70528d25", + "name": "Sirin Labs", + "symbol": "SRN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1872/thumb/sirin-labs-token.png?1548609584" + }, + { + "chainId": 1, + "address": "0xd35ce4fd815522ff52243eb587020d557617f4db", + "name": "DFE Finance", + "symbol": "DFE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13682/thumb/200x200DFE.png?1610835715" + }, + { + "chainId": 1, + "address": "0x9e10f61749c4952c320412a6b26901605ff6da1d", + "name": "Theos", + "symbol": "THEOS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18150/thumb/theos_logo.png?1630714224" + }, + { + "chainId": 1, + "address": "0x4fd5b9b5dcc9a5d5931d007ba4ae573e760d9b64", + "name": "MO", + "symbol": "MO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12961/thumb/Group-9.png?1649143210" + }, + { + "chainId": 1, + "address": "0xa9b1eb5908cfc3cdf91f9b8b3a74108598009096", + "name": "Bounce", + "symbol": "AUCTION", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13860/thumb/1_KtgpRIJzuwfHe0Rl0avP_g.jpeg?1612412025" + }, + { + "chainId": 1, + "address": "0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2", + "name": "Maker", + "symbol": "MKR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1364/thumb/Mark_Maker.png?1585191826" + }, + { + "chainId": 1, + "address": "0x976bf616f61685e0e7e36419aee3f7cde24b0dc9", + "name": "Fable Of The Shiba", + "symbol": "SYRANT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28372/thumb/syrant200.jpg?1669954925" + }, + { + "chainId": 1, + "address": "0xf3b3cad094b89392fce5fafd40bc03b80f2bc624", + "name": "Patron", + "symbol": "PAT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3169/thumb/patron.png?1548330790" + }, + { + "chainId": 1, + "address": "0xa2085073878152ac3090ea13d1e41bd69e60dc99", + "name": "Escoin", + "symbol": "ELG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13566/thumb/escoin-200.png?1609833886" + }, + { + "chainId": 1, + "address": "0xe831f96a7a1dce1aa2eb760b1e296c6a74caa9d5", + "name": "Nexum", + "symbol": "NEXM", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/23472/thumb/200_-_200_coinmarketcap.png?1644218225" + }, + { + "chainId": 1, + "address": "0xa51fc71422a30fa7ffa605b360c3b283501b5bf6", + "name": "AurusDeFi", + "symbol": "AWX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12684/thumb/2021-12-06-Aurus-tokens-for-coingecko-AWX-flat-color-v1-r1-AS.png?1640223413" + }, + { + "chainId": 1, + "address": "0x407a3e019c655b779ccd098ff50377e4c5f1c334", + "name": "OtherDAO", + "symbol": "OTHR", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/25882/thumb/othr.png?1654334543" + }, + { + "chainId": 1, + "address": "0x696acc2de564b48682d71d0847b3632f87c9a402", + "name": "AurusGOLD", + "symbol": "AWG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11594/thumb/2021-12-06-Aurus-tokens-for-coingecko-AWG-flat-color-v1-r1-AS.png?1640223324" + }, + { + "chainId": 1, + "address": "0xe1a178b681bd05964d3e3ed33ae731577d9d96dd", + "name": "BOX Token", + "symbol": "BOX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6511/thumb/box-token.png?1547563043" + }, + { + "chainId": 1, + "address": "0x6aac8cb9861e42bf8259f5abdc6ae3ae89909e11", + "name": "Bitcoin Red", + "symbol": "BTCRED", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/1054/thumb/bitcoin-red.png?1547034993" + }, + { + "chainId": 1, + "address": "0xae37d54ae477268b9997d4161b96b8200755935c", + "name": "Balancer Boosted Aave DAI", + "symbol": "BB-A-DAI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25883/thumb/bb-a-dai.png?1654347111" + }, + { + "chainId": 1, + "address": "0x0a0e3bfd5a8ce610e735d4469bc1b3b130402267", + "name": "Entropyfi", + "symbol": "ERP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19633/thumb/erp.PNG?1635715161" + }, + { + "chainId": 1, + "address": "0x4af5ff1a60a6ef6c7c8f9c4e304cd9051fca3ec0", + "name": "Rigel Protocol", + "symbol": "RGP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15837/thumb/A_qRYvB2_400x400.png?1622080940" + }, + { + "chainId": 1, + "address": "0x90b831fa3bebf58e9744a14d638e25b4ee06f9bc", + "name": "Mimo Governance", + "symbol": "MIMO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16449/thumb/mimodefi.PNG?1624240539" + }, + { + "chainId": 1, + "address": "0x5e74c9036fb86bd7ecdcb084a0673efc32ea31cb", + "name": "sETH", + "symbol": "SETH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8843/thumb/sETH.png?1616150207" + }, + { + "chainId": 1, + "address": "0x4b48068864f77261838c7849a12853fb94c77a91", + "name": "Lith Token", + "symbol": "LITX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26327/thumb/200x200px_LOGO.jpeg?1657768654" + }, + { + "chainId": 1, + "address": "0x913c9509b94d32ee38b0d98431c1ff109d24ff16", + "name": "AIPRO", + "symbol": "AIPRO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28217/thumb/AIPro_logo_png.png?1668429140" + }, + { + "chainId": 1, + "address": "0x299698b4b44bd6d023981a7317798dee12860834", + "name": "New Frontier Presents", + "symbol": "NFP", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/24989/thumb/NFPLogoCoin.png?1649917308" + }, + { + "chainId": 1, + "address": "0x69af81e73a73b40adf4f3d4223cd9b1ece623074", + "name": "Mask Network", + "symbol": "MASK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14051/thumb/Mask_Network.jpg?1614050316" + }, + { + "chainId": 1, + "address": "0xdfbc9050f5b01df53512dcc39b4f2b2bbacd517a", + "name": "Jobchain", + "symbol": "JOB", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/9352/thumb/Logo_%283%29.png?1566510871" + }, + { + "chainId": 1, + "address": "0xb70835d7822ebb9426b56543e391846c107bd32c", + "name": "Game", + "symbol": "GTC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2046/thumb/game.png?1547742459" + }, + { + "chainId": 1, + "address": "0x5b11aacb6bddb9ffab908fdce739bf4aed554327", + "name": "TrueDeck", + "symbol": "TDP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6567/thumb/truedeck.png?1548759129" + }, + { + "chainId": 1, + "address": "0x62406995cafd18f57e7375e8e0060725acebce58", + "name": "Firulais Wallet", + "symbol": "FIWT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20716/thumb/FIWT-Logo.png?1637584712" + }, + { + "chainId": 1, + "address": "0x4cf488387f035ff08c371515562cba712f9015d4", + "name": "WePower", + "symbol": "WPR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1951/thumb/wpr.png?1547036237" + }, + { + "chainId": 1, + "address": "0x96610186f3ab8d73ebee1cf950c750f3b1fb79c2", + "name": "Enjinstarter", + "symbol": "EJS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18732/thumb/l-R1nYA0_400x400.jpg?1633297242" + }, + { + "chainId": 1, + "address": "0x948c70dc6169bfb10028fdbe96cbc72e9562b2ac", + "name": "PolkaFantasy", + "symbol": "XP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18299/thumb/XP_Token_Icon.png?1631498467" + }, + { + "chainId": 1, + "address": "0x8640353cdc9778deab0df45d12fb3013deac079c", + "name": "DEVITA", + "symbol": "LIFE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22268/thumb/divita.PNG?1641339910" + }, + { + "chainId": 1, + "address": "0x0af55d5ff28a3269d69b98680fd034f115dd53ac", + "name": "BankSocial", + "symbol": "BSL", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/15738/thumb/banksocial_small.png?1621685752" + }, + { + "chainId": 1, + "address": "0x11a605d7e12b64d713e93c487277d819a1d14b99", + "name": "Safe Shield", + "symbol": "SFSHLD", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/17673/thumb/Safe-Shield-SFSHLD-200x200-logo.png?1628830115" + }, + { + "chainId": 1, + "address": "0x83cee9e086a77e492ee0bb93c2b0437ad6fdeccc", + "name": "Goldmint", + "symbol": "MNTP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1944/thumb/goldmint.png?1547743002" + }, + { + "chainId": 1, + "address": "0x1a4743cf1af4c289351390a2b3fe7c13d2f7c235", + "name": "Castweet", + "symbol": "CTT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9602/thumb/200x200color.png?1569479415" + }, + { + "chainId": 1, + "address": "0x973e52691176d36453868d9d86572788d27041a9", + "name": "DxChain", + "symbol": "DX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4700/thumb/VdZwy0Pv_400x400.png?1603089728" + }, + { + "chainId": 1, + "address": "0x3f4cd830543db25254ec0f05eac058d4d6e86166", + "name": "Jindoge", + "symbol": "JINDOGE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15417/thumb/JINDOGE.png?1620774122" + }, + { + "chainId": 1, + "address": "0x5c1d9aa868a30795f92fae903edc9eff269044bf", + "name": "Changer", + "symbol": "CNG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21786/thumb/cng.png?1640327628" + }, + { + "chainId": 1, + "address": "0x19ebaa7f212b09de2aee2a32d40338553c70e2e3", + "name": "ARTM", + "symbol": "ARTM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21577/thumb/artm_token_logo.png?1639530067" + }, + { + "chainId": 1, + "address": "0xebd9d99a3982d547c5bb4db7e3b1f9f14b67eb83", + "name": "Everest", + "symbol": "ID", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5209/thumb/Everest.jpg?1628042930" + }, + { + "chainId": 1, + "address": "0xb89903dde3899f0280b99913168ee833a7896b93", + "name": "AurusSILVER", + "symbol": "AWS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14965/thumb/2021-12-06-Aurus-tokens-for-coingecko-AWS-flat-color-v1-r1-AS.png?1640223368" + }, + { + "chainId": 1, + "address": "0xf83bf320a4a3f4bf365c3114b6f19fc3f6b1228c", + "name": "FXT", + "symbol": "FXT", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/14131/thumb/7rgEwxRT_400x400.jpg?1614588199" + }, + { + "chainId": 1, + "address": "0x0198f46f520f33cd4329bd4be380a25a90536cd5", + "name": "PlayChip", + "symbol": "PLA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4567/thumb/pla.png?1547039851" + }, + { + "chainId": 1, + "address": "0x13a0599c493cc502ed8c4dd26f22f5cedc248fc4", + "name": "Export Motors Platform", + "symbol": "EMP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24422/thumb/emp_logo_200.png?1647654574" + }, + { + "chainId": 1, + "address": "0x761d38e5ddf6ccf6cf7c55759d5210750b5d60f3", + "name": "Dogelon Mars", + "symbol": "ELON", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14962/thumb/6GxcPRo3_400x400.jpg?1619157413" + }, + { + "chainId": 1, + "address": "0xe9e73e1ae76d17a16cc53e3e87a9a7da78834d37", + "name": "Camp", + "symbol": "CAMP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13338/thumb/CampGlobal_256256.png?1607576849" + }, + { + "chainId": 1, + "address": "0x9fb9ec13a18eff7072ee8ca7ee7a2b295649e00d", + "name": "JAM Token", + "symbol": "JAM", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/26787/thumb/296706797_1760425707628456_5310396823145359110_n.jpg?1660102688" + }, + { + "chainId": 1, + "address": "0x2f7b618993cc3848d6c7ed9cdd5e835e4fe22b98", + "name": "Nami Corporation", + "symbol": "NAMI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13729/thumb/nami_logo_256.png?1611224464" + }, + { + "chainId": 1, + "address": "0x33bfd20660eeaf952e8d5bc3236e1918701f17d0", + "name": "RCCC", + "symbol": "RCCC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6627/thumb/rccc_token.png?1547042828" + }, + { + "chainId": 1, + "address": "0xaf691508ba57d416f895e32a1616da1024e882d2", + "name": "Pinknode", + "symbol": "PNODE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15469/thumb/icon-Logo-pink.png?1644476523" + }, + { + "chainId": 1, + "address": "0x456d8f0d25a4e787ee60c401f8b963a465148f70", + "name": "Cavapoo", + "symbol": "CAVA", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/16047/thumb/VimPINu.png?1622689097" + }, + { + "chainId": 1, + "address": "0x536a7bcdccfaff3a9a2aa765369631db2f247b09", + "name": "HydroLink", + "symbol": "HLNK", + "decimals": 10, + "logoURI": "https://assets.coingecko.com/coins/images/19664/thumb/200x-logo.png?1635736696" + }, + { + "chainId": 1, + "address": "0x5b0751713b2527d7f002c0c4e2a37e1219610a6b", + "name": "Ethorse", + "symbol": "HORSE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2531/thumb/ethorse.png?1548125546" + }, + { + "chainId": 1, + "address": "0x159751323a9e0415dd3d6d42a1212fe9f4a0848c", + "name": "Insured Finance", + "symbol": "INFI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13727/thumb/logo_%287%29.png?1611210296" + }, + { + "chainId": 1, + "address": "0xb8647e90c0645152fccf4d9abb6b59eb4aa99052", + "name": "KeyFi", + "symbol": "KEYFI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15098/thumb/keyfi_logo.jpg?1619690054" + }, + { + "chainId": 1, + "address": "0x31fdd1c6607f47c14a2821f599211c67ac20fa96", + "name": "Burency", + "symbol": "BUY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12216/thumb/Ddphl9BD.png?1598238121" + }, + { + "chainId": 1, + "address": "0x40284109c3309a7c3439111bfd93bf5e0fbb706c", + "name": "MOTIV Protocol", + "symbol": "MOV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11869/thumb/jvftnBL-_400x400.jpg?1595498693" + }, + { + "chainId": 1, + "address": "0xc8cac7672f4669685817cf332a33eb249f085475", + "name": "LivenPay", + "symbol": "LVN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9554/thumb/8PgKjhJn_400x400.jpg?1568837435" + }, + { + "chainId": 1, + "address": "0x5394794be8b6ed5572fcd6b27103f46b5f390e8f", + "name": "Aave AMM UniYFIWETH", + "symbol": "AAMMUNIYFIWETH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17258/thumb/aAmmUniYFIWETH.png?1626958146" + }, + { + "chainId": 1, + "address": "0x28c5805b64d163588a909012a628b5a03c1041f9", + "name": "Chopper Inu", + "symbol": "CHOPPER", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/18644/thumb/Chopper-Inu-Logo.png?1632753815" + }, + { + "chainId": 1, + "address": "0x5af6ad286c8ed6633284f2f135c4716057d52669", + "name": "ImpactX", + "symbol": "IMPACTX", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/20433/thumb/gen-impact-logo-2-276x300.png?1637035516" + }, + { + "chainId": 1, + "address": "0x9ba60ba98413a60db4c651d4afe5c937bbd8044b", + "name": "Yearn Lazy Ape", + "symbol": "YLA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14447/thumb/yla.png?1616128042" + }, + { + "chainId": 1, + "address": "0xed40834a13129509a89be39a9be9c0e96a0ddd71", + "name": "Warp Finance", + "symbol": "WARP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13910/thumb/601ed0ac35c687c6e07d17c2_warp_token.png?1612834360" + }, + { + "chainId": 1, + "address": "0x106d3c66d22d2dd0446df23d7f5960752994d600", + "name": "LabraCoin", + "symbol": "LABRA", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/15024/thumb/Labra_Coin.jpg?1622613634" + }, + { + "chainId": 1, + "address": "0x4dd672e77c795844fe3a464ef8ef0faae617c8fb", + "name": "CONUN", + "symbol": "CON", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7480/thumb/conun.png?1547716938" + }, + { + "chainId": 1, + "address": "0x453660ec2b63f0453d42f72c808350c1e2c70153", + "name": "IdenDEFI", + "symbol": "ID", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27851/thumb/2022-10-16_17-47-37.png?1666094387" + }, + { + "chainId": 1, + "address": "0x11a0762da58a487c075249b9b9edf9f7eb1bc9f5", + "name": "OriginDAO", + "symbol": "OG", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/27699/thumb/Origin.jpeg?1665303707" + }, + { + "chainId": 1, + "address": "0xc57d533c50bc22247d49a368880fb49a1caa39f7", + "name": "PowerTrade Fuel", + "symbol": "PTF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12590/thumb/powertrade_logo.jpg?1600944549" + }, + { + "chainId": 1, + "address": "0x37d299ef5548bf19503cb72c085799e331f9097d", + "name": "VeganNation GreenCoin", + "symbol": "GRNC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21581/thumb/logo-green_%281%29.png?1639532854" + }, + { + "chainId": 1, + "address": "0xbdec45952b5e234eddc2981b43eed360826d5087", + "name": "Mogu", + "symbol": "MOGX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9687/thumb/UZpzCJc1_400x400.jpg?1570828056" + }, + { + "chainId": 1, + "address": "0xe53ec727dbdeb9e2d5456c3be40cff031ab40a55", + "name": "SuperVerse", + "symbol": "SUPER", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14040/thumb/SuperVerse_Logo_200x200.png?1669963064" + }, + { + "chainId": 1, + "address": "0xbe30f684d62c9f7883a75a29c162c332c0d98f23", + "name": "Global Human Trust", + "symbol": "GHT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12040/thumb/WechatIMG6648.png?1596700737" + }, + { + "chainId": 1, + "address": "0xa8580f3363684d76055bdc6660caefe8709744e1", + "name": "Folder Protocol", + "symbol": "FOL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13755/thumb/folderlabs_logo.png?1611560881" + }, + { + "chainId": 1, + "address": "0x61fd1c62551850d0c04c76fce614cbced0094498", + "name": "IDK", + "symbol": "IDK", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/9301/thumb/idk-logo.png?1565861759" + }, + { + "chainId": 1, + "address": "0x1a4b46696b2bb4794eb3d4c26f1c55f9170fa4c5", + "name": "BitDAO", + "symbol": "BIT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17627/thumb/rI_YptK8.png?1653983088" + }, + { + "chainId": 1, + "address": "0xa1116930326d21fb917d5a27f1e9943a9595fb47", + "name": "Staked Aave Balancer Pool Token", + "symbol": "STKABPT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16789/thumb/StkABPT_2x.png?1625046066" + }, + { + "chainId": 1, + "address": "0x383b0b2ce2e1757b5e1d087d8f36013ea595541a", + "name": "Heal The World", + "symbol": "HEAL", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/24123/thumb/GJe1qAQS_400x400.jpg?1646461929" + }, + { + "chainId": 1, + "address": "0xaa0c5b3567fd1bac8a2a11eb16c3f81a49eea90f", + "name": "MetamonkeyAi", + "symbol": "MMAI", + "decimals": 7, + "logoURI": "https://assets.coingecko.com/coins/images/27208/thumb/metamonkey.jpeg?1662608488" + }, + { + "chainId": 1, + "address": "0xc5e86e01f8b63178ee2039bfe51a4f73dd10d402", + "name": "ShowTime Potocol", + "symbol": "STP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27509/thumb/D92uffI__400x400.jpeg?1664335190" + }, + { + "chainId": 1, + "address": "0x4104b135dbc9609fc1a9490e61369036497660c8", + "name": "APWine", + "symbol": "APW", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15597/thumb/ApWine.png?1621340387" + }, + { + "chainId": 1, + "address": "0x05d3606d5c81eb9b7b18530995ec9b29da05faba", + "name": "TomoChain ERC 20", + "symbol": "TOMOE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12646/thumb/tomoe_logo.png?1601377449" + }, + { + "chainId": 1, + "address": "0x26cb3641aaa43911f1d4cb2ce544eb652aac7c47", + "name": "Crystal CYL", + "symbol": "CYL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6419/thumb/crystal-token.png?1547042585" + }, + { + "chainId": 1, + "address": "0x66e7ce35578a37209d01f99f3d2ff271f981f581", + "name": "PactSwap", + "symbol": "PACT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15265/thumb/pact.PNG?1620281262" + }, + { + "chainId": 1, + "address": "0x22222c03318440305ac3e8a7820563d6a9fd777f", + "name": "Clover", + "symbol": "CLV", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/12888/thumb/clover_logo.png?1603274615" + }, + { + "chainId": 1, + "address": "0xa1b0edf4460cc4d8bfaa18ed871bff15e5b57eb4", + "name": "Aave AMM UniBATWETH", + "symbol": "AAMMUNIBATWETH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17217/thumb/aAmmUniBATWETH.png?1626878218" + }, + { + "chainId": 1, + "address": "0xbf0741e995f469d39e4f96c0780f9a8e43f4b978", + "name": "i Money Crypto", + "symbol": "IMC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20178/thumb/imc_Logo.png?1636604215" + }, + { + "chainId": 1, + "address": "0x553539d40ae81fd0d9c4b991b0b77be6f6bc030e", + "name": "Smolting Inu", + "symbol": "SMOL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25420/thumb/awL5SVbh_400x400.jpg?1651736210" + }, + { + "chainId": 1, + "address": "0xf90c7f66eac7e2130bf677d69a250b2136cf6697", + "name": "HAKI Token", + "symbol": "HAKI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7945/thumb/haki.png?1667030461" + }, + { + "chainId": 1, + "address": "0xc8ba3cf103e5a1658209c366153197ac7fa9c9b1", + "name": "Difo Network", + "symbol": "DFN", + "decimals": 0, + "logoURI": "https://assets.coingecko.com/coins/images/14504/thumb/difo.png?1616566305" + }, + { + "chainId": 1, + "address": "0x0b4680e848f842b86e4df38d9fa0d9f9419f37ec", + "name": "Beshare", + "symbol": "BST", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16870/thumb/BST_symbol_transparent_background_200.png?1625476744" + }, + { + "chainId": 1, + "address": "0x614fd8f06ce4d93aa2361b342c86554eb5cb39f1", + "name": "Tianya", + "symbol": "TYT", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/7568/thumb/images_%283%29.png?1548411643" + }, + { + "chainId": 1, + "address": "0x53884b61963351c283118a8e1fc05ba464a11959", + "name": "Monnos", + "symbol": "MNS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11640/thumb/logo_%2880%29.png?1592274153" + }, + { + "chainId": 1, + "address": "0xb2e20502c7593674509b8384ed9240a03869faf3", + "name": "Shiba Ramen", + "symbol": "SHIBARAMEN", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/16134/thumb/60bbdb756d4e3aea1bfa5478_image0_copy.jpeg?1623055808" + }, + { + "chainId": 1, + "address": "0xadc234a4e90e2045f353f5d4fcde66144d23b458", + "name": "Fluid USDT", + "symbol": "FUSDT", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/28472/thumb/fUSDT-200x200.png?1671002181" + }, + { + "chainId": 1, + "address": "0x26ff6d16549a00ba8b36ce3159b5277e6e798d18", + "name": "Chihua", + "symbol": "CHIHUA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15655/thumb/chihua_token_icon_200x200.png?1622129847" + }, + { + "chainId": 1, + "address": "0x2653891204f463fb2a2f4f412564b19e955166ae", + "name": "Gold Fever Native Gold", + "symbol": "NGL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20633/thumb/2ypNydrG_400x400.jpg?1637338673" + }, + { + "chainId": 1, + "address": "0x25c7b64a93eb1261e130ec21a3e9918caa38b611", + "name": "Wrapped Virgin Gen 0 CryptoKittties", + "symbol": "WVG0", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12875/thumb/wvg0.png?1603211534" + }, + { + "chainId": 1, + "address": "0x51a673e060e1ea091b23b53d192058ffe0f2d6b6", + "name": "ZudgeZury", + "symbol": "ZZC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27336/thumb/ZZcoin200x200.jpg?1663483736" + }, + { + "chainId": 1, + "address": "0xa4c612296aa97057c160b95255f902f9dde6704c", + "name": "MemeCard", + "symbol": "MMC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28096/thumb/IMG_20221102_023910_703.png?1667537410" + }, + { + "chainId": 1, + "address": "0xb4d930279552397bba2ee473229f89ec245bc365", + "name": "MahaDAO", + "symbol": "MAHA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13404/thumb/MAHA_Token.png?1625651604" + }, + { + "chainId": 1, + "address": "0x9625ce7753ace1fa1865a47aae2c5c2ce4418569", + "name": "Kapital DAO", + "symbol": "KAP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27682/thumb/KAP-200px.png?1665214016" + }, + { + "chainId": 1, + "address": "0x4824a7b64e3966b0133f4f4ffb1b9d6beb75fff7", + "name": "TokenClub", + "symbol": "TCT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2455/thumb/tokenclub.png?1558012103" + }, + { + "chainId": 1, + "address": "0xb8919522331c59f5c16bdfaa6a121a6e03a91f62", + "name": "Bacon Protocol Home", + "symbol": "HOME", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/26185/thumb/homecoin_200.png?1656384254" + }, + { + "chainId": 1, + "address": "0x0fcbc31c503b4a9ed90e87f8ff46c318a4a14260", + "name": "Quantfury", + "symbol": "QTF", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/14033/thumb/FtSOX9Vy_400x400.jpg?1613946524" + }, + { + "chainId": 1, + "address": "0xcaa9ed6d7502595b555113d4517668ae24038c8a", + "name": "Marvin Inu", + "symbol": "MARVIN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22039/thumb/lVshyCp.png?1640669485" + }, + { + "chainId": 1, + "address": "0x66a0f676479cee1d7373f3dc2e2952778bff5bd6", + "name": "Wise", + "symbol": "WISE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13552/thumb/WISE-logo-1600x1280.png?1609727947" + }, + { + "chainId": 1, + "address": "0xbb0e17ef65f82ab018d8edd776e8dd940327b28b", + "name": "Axie Infinity", + "symbol": "AXS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13029/thumb/axie_infinity_logo.png?1604471082" + }, + { + "chainId": 1, + "address": "0x287609a15a683640a5bbc4d93d4d5f4ed6bad3a0", + "name": "PICK", + "symbol": "PICK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12243/thumb/nZlFKAmk_400x400.jpg?1598444299" + }, + { + "chainId": 1, + "address": "0xc96df921009b790dffca412375251ed1a2b75c60", + "name": "Ormeus Coin", + "symbol": "ORME", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/964/thumb/ORMEUS_logo.png?1606557243" + }, + { + "chainId": 1, + "address": "0x9077f9e1efe0ea72867ac89046b2a6264cbcaef5", + "name": "WhaleStreet hrimp", + "symbol": "HRIMP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17646/thumb/logo_-_2021-08-12T134059.988.png?1628746866" + }, + { + "chainId": 1, + "address": "0x59d1e836f7b7210a978b25a855085cc46fd090b5", + "name": "AssangeDAO", + "symbol": "JUSTICE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23555/thumb/JUSTICE_token_logo.png?1644532689" + }, + { + "chainId": 1, + "address": "0x51fa2efd62ee56a493f24ae963eace7d0051929e", + "name": "Poseidon OCEAN", + "symbol": "PSDNOCEAN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27859/thumb/psdnOCEAN.png?1666097011" + }, + { + "chainId": 1, + "address": "0xcb86c6a22cb56b6cf40cafedb06ba0df188a416e", + "name": "inSure DeFi", + "symbol": "SURE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10354/thumb/logo-grey-circle.png?1614910406" + }, + { + "chainId": 1, + "address": "0x5b7533812759b45c2b44c19e320ba2cd2681b542", + "name": "SingularityNET", + "symbol": "AGIX", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/2138/thumb/singularitynet.png?1548609559" + }, + { + "chainId": 1, + "address": "0x5ca135cb8527d76e932f34b5145575f9d8cbe08e", + "name": "Frax Price Index", + "symbol": "FPI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24945/thumb/fpi.png?1649485834" + }, + { + "chainId": 1, + "address": "0xfa3118b34522580c35ae27f6cf52da1dbb756288", + "name": "Linkeye", + "symbol": "LET", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/1814/thumb/linkeye.png?1547975964" + }, + { + "chainId": 1, + "address": "0x9f195617fa8fbad9540c5d113a99a0a0172aaedc", + "name": "Niobium Coin", + "symbol": "NBC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4095/thumb/logo-niobium.png?1547039273" + }, + { + "chainId": 1, + "address": "0x1fdab294eda5112b7d066ed8f2e4e562d5bcc664", + "name": "SPICE", + "symbol": "SPICE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13398/thumb/VUenmQt_%281%29.png?1624954218" + }, + { + "chainId": 1, + "address": "0x40d2025ed2e89632d3a41d8541df9ed2ac0e2b1c", + "name": "Connectico", + "symbol": "CON", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22853/thumb/9005.png?1642750464" + }, + { + "chainId": 1, + "address": "0x4f5f2eea4ed3485e5e23a39704d5fd9d0a423886", + "name": "Torchain", + "symbol": "TOR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8636/thumb/Z01mRB2BHvjsIsR95aZ4l8UTF87S5JVTgTvvdC5PVpEPaFXOoXuYwdKvEDiK3o5s-tx-o-S5KW1y2zgwn-9ftk6QUfNQsc_gnzrbvfbIgbm-_FYNoTG50PHc59XU32p6vihaXFYUnHZ9cMCHzGvq9fSqKRul9AEiUe0M9SkS65UNuL--P1ulJtc7r-rQTZpPZ3TS0VhXSGPsdwMglbhIHQDs_.jpg?1566612218" + }, + { + "chainId": 1, + "address": "0x8790f2fc7ca2e7db841307fb3f4e72a03baf7b47", + "name": "Spillways", + "symbol": "SPILLWAYS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28358/thumb/1669791775144_%281%29.png?1669794825" + }, + { + "chainId": 1, + "address": "0xacf8d5e515ed005655dfefa09c22673a37a7cdee", + "name": "FunFi", + "symbol": "FNF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25872/thumb/FNF-200x200.png?1654241524" + }, + { + "chainId": 1, + "address": "0xf344490abd414dafa97f34c8ca501b0aa5bf8873", + "name": "Webcoin", + "symbol": "WEB", + "decimals": 1, + "logoURI": "https://assets.coingecko.com/coins/images/3779/thumb/webcoin-logo.png?1547038866" + }, + { + "chainId": 1, + "address": "0x06f3cdabae564b0546529b4dd8fef1bcd4235753", + "name": "TilWiki", + "symbol": "TLW", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/12915/thumb/89706561_1111490899211097_8975783115158978560_n.jpg?1603441976" + }, + { + "chainId": 1, + "address": "0xca5e32d44f1744001b5600dc2f5f5e0bbb6e9d3e", + "name": "Richverse", + "symbol": "RIV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26892/thumb/WechatIMG2340.jpeg?1660708132" + }, + { + "chainId": 1, + "address": "0xbd1e7f594600dcaf7f483af55deacec0159a064e", + "name": "Qobit", + "symbol": "QOB", + "decimals": 8 + }, + { + "chainId": 1, + "address": "0x0e7f79e89ba8c4a13431129fb2db0d4f444b5b9a", + "name": "Xank", + "symbol": "XANK", + "decimals": 16, + "logoURI": "https://assets.coingecko.com/coins/images/11599/thumb/9zAYweVj_400x400.png?1591671435" + }, + { + "chainId": 1, + "address": "0x3da932456d082cba208feb0b096d49b202bf89c8", + "name": "Dego Finance", + "symbol": "DEGO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12503/thumb/c185FKx.png?1600298167" + }, + { + "chainId": 1, + "address": "0x13739cf9c9bc2fc1e06e74413c9c192757a65587", + "name": "Flash Inu", + "symbol": "FLASH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24037/thumb/logo.png?1646118116" + }, + { + "chainId": 1, + "address": "0x4a5dec561de897c04062137e687db6093c3278b8", + "name": "GasBlock", + "symbol": "GSBL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28191/thumb/gasblock_logo_200xW.png?1668327478" + }, + { + "chainId": 1, + "address": "0x1b40183efb4dd766f11bda7a7c3ad8982e998421", + "name": "Vesper Finance", + "symbol": "VSP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13527/thumb/vesper_logo.jpg?1609399927" + }, + { + "chainId": 1, + "address": "0xa3bed4e1c75d00fa6f4e5e6922db7261b5e9acd2", + "name": "mStable Governance Meta", + "symbol": "MTA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11846/thumb/mStable.png?1594950533" + }, + { + "chainId": 1, + "address": "0xd283ec9db7b3094ed5a2c87eb48d54f5fa96e96d", + "name": "FMONEY FINANCE", + "symbol": "FMON", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/27808/thumb/logo_%281%29.png?1665906035" + }, + { + "chainId": 1, + "address": "0x71921c08586295b0b68e44a78a2dca1e3f259721", + "name": "PonyDAO", + "symbol": "PNYD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26843/thumb/ponydao.png?1660389977" + }, + { + "chainId": 1, + "address": "0x65f9a292f1aeed5d755aa2fd2fb17ab2e9431447", + "name": "SoMee Social", + "symbol": "SOMEE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16406/thumb/SoMeeBallLogo200x200.png?1623920285" + }, + { + "chainId": 1, + "address": "0x3af5ba94c29a8407785f5f6d90ef5d69a8eb2436", + "name": "Unagii Wrapped Bitcoin", + "symbol": "UWBTC", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/14625/thumb/uBTC.png?1617294190" + }, + { + "chainId": 1, + "address": "0x2fc246aa66f0da5bb1368f688548ecbbe9bdee5d", + "name": "TEMCO", + "symbol": "TEMCO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6210/thumb/bSZ7HUuS_400x400.jpg?1549002381" + }, + { + "chainId": 1, + "address": "0x14c926f2290044b647e1bf2072e67b495eff1905", + "name": "Bethereum", + "symbol": "BETHER", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2738/thumb/bethereum.png?1547036939" + }, + { + "chainId": 1, + "address": "0x39207d2e2feef178fbda8083914554c59d9f8c00", + "name": "MultiPlanetary Inus", + "symbol": "INUS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22648/thumb/logo.png?1644479310" + }, + { + "chainId": 1, + "address": "0xbce7bd79558dda90b261506768f265c5543a9f90", + "name": "TKN", + "symbol": "TKNT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12808/thumb/1_jLY3Tj0kuBTjZGHFCqkTGA.png?1602713481" + }, + { + "chainId": 1, + "address": "0xc888a0ab4831a29e6ca432babf52e353d23db3c2", + "name": "FastSwap", + "symbol": "FAST", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13567/thumb/fastswap.jpeg?1622794717" + }, + { + "chainId": 1, + "address": "0x0aee8703d34dd9ae107386d3eff22ae75dd616d1", + "name": "Tranche Finance", + "symbol": "SLICE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14119/thumb/slice.png?1635826973" + }, + { + "chainId": 1, + "address": "0x3593d125a4f7849a1b059e64f4517a86dd60c95d", + "name": "MANTRA", + "symbol": "OM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12151/thumb/OM_Token.png?1666056782" + }, + { + "chainId": 1, + "address": "0xe13ef257cf4d5df928ca11d230427c037666d466", + "name": "WITChain", + "symbol": "WIT", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/6420/thumb/wit-logo.png?1547042587" + }, + { + "chainId": 1, + "address": "0xf411903cbc70a74d22900a5de66a2dda66507255", + "name": "Verasity", + "symbol": "VRA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14025/thumb/VRA.jpg?1613797653" + }, + { + "chainId": 1, + "address": "0x0b4bdc478791897274652dc15ef5c135cae61e60", + "name": "DAEX", + "symbol": "DAX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4063/thumb/daex.png?1547791412" + }, + { + "chainId": 1, + "address": "0x45e007750cc74b1d2b4dd7072230278d9602c499", + "name": "pSTAKE Staked XPRT", + "symbol": "STKXPRT", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/19219/thumb/stkXPRT_-_128px.png?1634977999" + }, + { + "chainId": 1, + "address": "0xa7a5c1058194af8f00c187adb7fcc0c95f1c6c2d", + "name": "SPACE iZ", + "symbol": "SPIZ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12213/thumb/aEXTI0vf_400x400.jpg?1598236662" + }, + { + "chainId": 1, + "address": "0x7b69d465c0f9fb22affae56aa86149973e9b0966", + "name": "Protocol Finance", + "symbol": "PFI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13810/thumb/17RgoN2.png?1612047312" + }, + { + "chainId": 1, + "address": "0xc40f23a3e9613e012944f7957edce97899fa920d", + "name": "dHealth", + "symbol": "DHP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20167/thumb/dHealth_Network_Icon_200w.png?1636601369" + }, + { + "chainId": 1, + "address": "0x7c32db0645a259fae61353c1f891151a2e7f8c1e", + "name": "Potentiam", + "symbol": "PTM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2349/thumb/ptm.png?1547036546" + }, + { + "chainId": 1, + "address": "0x77dce26c03a9b833fc2d7c31c22da4f42e9d9582", + "name": "DAOventures", + "symbol": "DVD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13971/thumb/DAOventures.co_final_icon_200x200.png?1613388224" + }, + { + "chainId": 1, + "address": "0x6c2adc2073994fb2ccc5032cc2906fa221e9b391", + "name": "Delphy", + "symbol": "DPY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1133/thumb/delphy.png?1547035133" + }, + { + "chainId": 1, + "address": "0xe7d324b2677440608fb871981b220eca062c3fbf", + "name": "Bullswap Protocol", + "symbol": "BVL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13195/thumb/4HPwA1D2_400x400.png?1606115706" + }, + { + "chainId": 1, + "address": "0x758b4684be769e92eefea93f60dda0181ea303ec", + "name": "Phonon DAO", + "symbol": "PHONON", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22308/thumb/ezgif-2-e7fb84364d.png?1641449852" + }, + { + "chainId": 1, + "address": "0x64c1c9a38038ae73c3699b8dc347fefda2221e93", + "name": "Swiss NFT Fund", + "symbol": "SWISSNFTFUND", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/28221/thumb/LogoSNF200x200.jpg?1669261184" + }, + { + "chainId": 1, + "address": "0x74edaf28fc4b9e6a1618d613839daaf6a9d075db", + "name": "G O A T", + "symbol": "GOAT", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/21537/thumb/IMG_1871.JPG?1639401972" + }, + { + "chainId": 1, + "address": "0x6c929cde908481f3d1d775008791f42b1b89dbb0", + "name": "Boolean", + "symbol": "BOOL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9888/thumb/booleanSiteLogo.png?1572943862" + }, + { + "chainId": 1, + "address": "0x3137619705b5fc22a3048989f983905e456b59ab", + "name": "Everus", + "symbol": "EVR", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/1027/thumb/everus.png?1547395108" + }, + { + "chainId": 1, + "address": "0xc014186cf1ba36032aaec7f96088f09eb3934347", + "name": "WeCoOwn", + "symbol": "WCX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14497/thumb/WCX-Token-Logo.png?1616555141" + }, + { + "chainId": 1, + "address": "0x8dae6cb04688c62d939ed9b68d32bc62e49970b1", + "name": "Aave CRV", + "symbol": "ACRV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17250/thumb/aCRV_2x.png?1626941642" + }, + { + "chainId": 1, + "address": "0x2c36204a0712a2a50e54a62f7c4f01867e78cb53", + "name": "Taklimakan Network", + "symbol": "TAN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1963/thumb/takli.png?1566738740" + }, + { + "chainId": 1, + "address": "0xdfdd3459d4f87234751696840092ee20c970fb07", + "name": "My bu", + "symbol": "MYOBU", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/16122/thumb/myobu.png?1623037167" + }, + { + "chainId": 1, + "address": "0xee059f0ca1507e4e20c689b20cff71b5e924f7bd", + "name": "Litecoin SV", + "symbol": "LSV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11100/thumb/1GyOsGG.png?1588749283" + }, + { + "chainId": 1, + "address": "0x03042ae6fcfd53e3a0baa1fab5ce70e0cb74e6fb", + "name": "Ten Best Coins", + "symbol": "TBC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27312/thumb/tbc.png?1663312003" + }, + { + "chainId": 1, + "address": "0x7533d63a2558965472398ef473908e1320520ae2", + "name": "INTEXCOIN", + "symbol": "INTX", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/11854/thumb/INTX.png?1595167044" + }, + { + "chainId": 1, + "address": "0x1321f1f1aa541a56c31682c57b80ecfccd9bb288", + "name": "ARC Governance", + "symbol": "ARCX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15652/thumb/coingecko-arcx-400x400.png?1634285525" + }, + { + "chainId": 1, + "address": "0x40395044ac3c0c57051906da938b54bd6557f212", + "name": "MobileGo", + "symbol": "MGO", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/768/thumb/mobilego.png?1548085237" + }, + { + "chainId": 1, + "address": "0xff69e48af1174da7f15d0c771861c33d3f19ed8a", + "name": "Tesla Inu", + "symbol": "TESINU", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/17468/thumb/400_filter_nobg_60c70a3c5aae1.jpg?1628214173" + }, + { + "chainId": 1, + "address": "0x3383c5a8969dc413bfddc9656eb80a1408e4ba20", + "name": "Wrapped ANATHA", + "symbol": "WANATHA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12690/thumb/CrZ8h9FV_400x400.png?1601678935" + }, + { + "chainId": 1, + "address": "0x6251e725cd45fb1af99354035a414a2c0890b929", + "name": "MixTrust", + "symbol": "MXT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12148/thumb/MXT_LOGO_200_200.png?1597578983" + }, + { + "chainId": 1, + "address": "0xf8b358b3397a8ea5464f8cc753645d42e14b79ea", + "name": "Airbloc", + "symbol": "ABL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4393/thumb/airbloc-protocol-logo.png?1547039734" + }, + { + "chainId": 1, + "address": "0xaf4dce16da2877f8c9e00544c93b62ac40631f16", + "name": "Monetha", + "symbol": "MTH", + "decimals": 5, + "logoURI": "https://assets.coingecko.com/coins/images/902/thumb/LOGO-MTH-200-200.png?1656643069" + }, + { + "chainId": 1, + "address": "0x5a75a093747b72a0e14056352751edf03518031d", + "name": "EmiSwap", + "symbol": "ESW", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17526/thumb/Emiswap_Logo_light_colour_horizontal.png?1628114900" + }, + { + "chainId": 1, + "address": "0xea1ea0972fa092dd463f2968f9bb51cc4c981d71", + "name": "Modefi", + "symbol": "MOD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13980/thumb/modefi_logo.png?1613453111" + }, + { + "chainId": 1, + "address": "0x3ecb96039340630c8b82e5a7732bc88b2aeade82", + "name": "bRing Finance", + "symbol": "BRNG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17836/thumb/bring_finance.PNG?1629417184" + }, + { + "chainId": 1, + "address": "0xbd04ccc050058a6a422851fa6c0f92bb65eb06ca", + "name": "Pre Retogeum", + "symbol": "PRTG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27397/thumb/IMG_20220921_123729_913.jpg?1663827688" + }, + { + "chainId": 1, + "address": "0x602f65bb8b8098ad804e99db6760fd36208cd967", + "name": "Mops", + "symbol": "MOPS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26900/thumb/mops.png?1660724129" + }, + { + "chainId": 1, + "address": "0xf54b304e2e4b28c7e46619d1a340f9b2b72383d7", + "name": "Kranz", + "symbol": "KRZ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17688/thumb/KRZ-Extra-Small-Logo-200x200-1.png?1654230602" + }, + { + "chainId": 1, + "address": "0x8c6fa66c21ae3fc435790e451946a9ea82e6e523", + "name": "MetaFabric", + "symbol": "FABRIC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21233/thumb/LISTING-icon.png?1638758217" + }, + { + "chainId": 1, + "address": "0x40370aed88933021e20cf7c4d67e00417cda2202", + "name": "Xave", + "symbol": "XAV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28299/thumb/Xave_Logomark_%28Color%29_%281%29.png?1669265691" + }, + { + "chainId": 1, + "address": "0x16594930d16f3970e1a4317c6016555cb2e7b7fc", + "name": "TokenBot", + "symbol": "TKB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27106/thumb/tokenbot-logo-icon.png?1662007634" + }, + { + "chainId": 1, + "address": "0xd7d8f3b8bc8bc48d3acc37879eaba7b85889fa52", + "name": "ClearDAO", + "symbol": "CLH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22389/thumb/clh_small_logo_png.png?1643194446" + }, + { + "chainId": 1, + "address": "0x624d520bab2e4ad83935fa503fb130614374e850", + "name": "Smartshare", + "symbol": "SSP", + "decimals": 4, + "logoURI": "https://assets.coingecko.com/coins/images/4642/thumb/smartshare.png?1548609894" + }, + { + "chainId": 1, + "address": "0xe8d17542dfe79ff4fbd4b850f2d39dc69c4489a2", + "name": "KiloAmple", + "symbol": "KMPL", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/13449/thumb/kappa_logo.png?1608681544" + }, + { + "chainId": 1, + "address": "0x00ff902d4b2bfdbd0db38887412447c30b565aa0", + "name": "Tcoin fun", + "symbol": "TCO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13811/thumb/logo200_%289%29.png?1612047833" + }, + { + "chainId": 1, + "address": "0x5ce188b44266c7b4bbc67afa3d16b2eb24ed1065", + "name": "UWU Vault NFTX ", + "symbol": "UWU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18355/thumb/uwu.png?1631604745" + }, + { + "chainId": 1, + "address": "0x1f573d6fb3f13d689ff844b4ce37794d79a7ff1c", + "name": "Bancor Network", + "symbol": "BNT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/736/thumb/bancor-bnt.png?1628822309" + }, + { + "chainId": 1, + "address": "0xe0955f26515d22e347b17669993fcefcc73c3a0a", + "name": "Stacker Ventures", + "symbol": "STACK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14218/thumb/stack.jpg?1615000614" + }, + { + "chainId": 1, + "address": "0xcaeaf8381d4b20b43afa42061d6f80319a8881f6", + "name": "R34P", + "symbol": "R34P", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/13393/thumb/r34p_logo.png?1608100330" + }, + { + "chainId": 1, + "address": "0x4be40bc9681d0a7c24a99b4c92f85b9053fc2a45", + "name": "Dify Finance", + "symbol": "YFIII", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12628/thumb/zNTAjrF.png?1601294851" + }, + { + "chainId": 1, + "address": "0xd2f29748f8698606dca9f48b8967241b595ab9e5", + "name": "Icarus Network", + "symbol": "ICA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16325/thumb/Icarusnetwork_200-200.png?1623742696" + }, + { + "chainId": 1, + "address": "0xce391315b414d4c7555956120461d21808a69f3a", + "name": "Bao Finance V2", + "symbol": "BAO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28287/thumb/BAOv2_128px.png?1669344588" + }, + { + "chainId": 1, + "address": "0x28dee01d53fed0edf5f6e310bf8ef9311513ae40", + "name": "BlitzPick", + "symbol": "XBP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2458/thumb/BlitzPredict.jpg?1547701183" + }, + { + "chainId": 1, + "address": "0xf61bf4d1a948487d61b8fa63808aac06bda55f98", + "name": "Tr3zor", + "symbol": "TR3", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21980/thumb/9T9OoYXE_400x400.jpg?1640573690" + }, + { + "chainId": 1, + "address": "0x9ae380f0272e2162340a5bb646c354271c0f5cfc", + "name": "Conic", + "symbol": "CNC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24747/thumb/MJEDO-OY_400x400.png?1648785199" + }, + { + "chainId": 1, + "address": "0x254417f7b56328a48f554b173dca7bdda7a2a0d2", + "name": "Simba", + "symbol": "SIMBA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16060/thumb/200x200_%2819%29.png?1622710548" + }, + { + "chainId": 1, + "address": "0x36905fc93280f52362a1cbab151f25dc46742fb5", + "name": "Bottos", + "symbol": "BTO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2048/thumb/bottos.png?1517478551" + }, + { + "chainId": 1, + "address": "0x584b44853680ee34a0f337b712a8f66d816df151", + "name": "AI Doctor", + "symbol": "AIDOC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2449/thumb/aidoc.png?1547036587" + }, + { + "chainId": 1, + "address": "0xdf7ff54aacacbff42dfe29dd6144a69b629f8c9e", + "name": "Aave ZRX", + "symbol": "AZRX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14264/thumb/aZRX.9be555a9.png?1615528286" + }, + { + "chainId": 1, + "address": "0x5e6b6d9abad9093fdc861ea1600eba1b355cd940", + "name": "IoT Chain", + "symbol": "ITC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1304/thumb/iot-chain-logo.png?1547035331" + }, + { + "chainId": 1, + "address": "0xbf494f02ee3fde1f20bee6242bce2d1ed0c15e47", + "name": "World", + "symbol": "WORLD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13801/thumb/WORLD.png?1612843088" + }, + { + "chainId": 1, + "address": "0x3175df0976dfa876431c2e9ee6bc45b65d3473cc", + "name": "Curve fi FRAX USDC", + "symbol": "CRVFRAX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26829/thumb/W1sQNVWo_400x400.jpeg?1660294792" + }, + { + "chainId": 1, + "address": "0x11613b1f840bb5a40f8866d857e24da126b79d73", + "name": "Cappasity", + "symbol": "CAPP", + "decimals": 2, + "logoURI": "https://assets.coingecko.com/coins/images/1302/thumb/cappasity.png?1547564648" + }, + { + "chainId": 1, + "address": "0xa4e27ea37d18bb0f483779f9e75a6024efa5e73e", + "name": "Monastery Finance", + "symbol": "MONK", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/24563/thumb/s0vLTcH.png?1648189796" + }, + { + "chainId": 1, + "address": "0xc08515d77c8e20d5957df9ad492e426020be64fe", + "name": "Non Fungible Media Token", + "symbol": "NFMT", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/26880/thumb/6mZw77As_400x400.jpeg?1660636409" + }, + { + "chainId": 1, + "address": "0x0e8d6b471e332f140e7d9dbb99e5e3822f728da6", + "name": "Abyss", + "symbol": "ABYSS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2105/thumb/NrFmpxs.png?1600318377" + }, + { + "chainId": 1, + "address": "0x0352557b007a4aae1511c114409b932f06f9e2f4", + "name": "sRUNE", + "symbol": "SRUNE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14953/thumb/sRUNE.png?1619129376" + }, + { + "chainId": 1, + "address": "0x6ab4a7d75b0a42b6bc83e852dab9e121f9c610aa", + "name": "Elitium", + "symbol": "EUM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7874/thumb/elitium-coin.png?1551864695" + }, + { + "chainId": 1, + "address": "0x721a1b990699ee9d90b6327faad0a3e840ae8335", + "name": "Lootex", + "symbol": "LOOT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22895/thumb/loot.png?1642850037" + }, + { + "chainId": 1, + "address": "0xfb782396c9b20e564a64896181c7ac8d8979d5f4", + "name": "Divergence Protocol", + "symbol": "DIVER", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18666/thumb/DIVER.jpg?1632837940" + }, + { + "chainId": 1, + "address": "0x903bef1736cddf2a537176cf3c64579c3867a881", + "name": "Legacy ICHI", + "symbol": "ICHI", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/26004/thumb/legacy.png?1655278844" + }, + { + "chainId": 1, + "address": "0x612e1726435fe38dd49a0b35b4065b56f49c8f11", + "name": "CryptoCart V2", + "symbol": "CCV2", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15210/thumb/DP7-T6rox-400x400_%281%29.png?1638928576" + }, + { + "chainId": 1, + "address": "0xe95990825aab1a7f0af4cc648f76a3bcc99f25b2", + "name": "Zenswap Network ZNT", + "symbol": "ZNT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6452/thumb/3CGDn4e.png?1547042648" + }, + { + "chainId": 1, + "address": "0x4b0f027d0b694aae2761ed2d426295d4f949f5d0", + "name": "Pollchain", + "symbol": "POLL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19034/thumb/pollchain.PNG?1634197337" + }, + { + "chainId": 1, + "address": "0x9af839687f6c94542ac5ece2e317daae355493a1", + "name": "Hydro Protocol", + "symbol": "HOT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2570/thumb/Hydro-Protocol.png?1558069424" + }, + { + "chainId": 1, + "address": "0x22b6c31c2beb8f2d0d5373146eed41ab9ede3caf", + "name": "cocktailbar finance", + "symbol": "COC", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/13121/thumb/coc.png?1647079316" + }, + { + "chainId": 1, + "address": "0x21413c119b0c11c5d96ae1bd328917bc5c8ed67e", + "name": "GenomesDAO", + "symbol": "GENE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20807/thumb/1637683704200x200.png?1637708934" + }, + { + "chainId": 1, + "address": "0x0db8d8b76bc361bacbb72e2c491e06085a97ab31", + "name": "IQeon", + "symbol": "IQN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1736/thumb/IQN_logo_64x64.png?1547036010" + }, + { + "chainId": 1, + "address": "0xb620be8a1949aa9532e6a3510132864ef9bc3f82", + "name": "Lend Flare Dao", + "symbol": "LFT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24846/thumb/e5x55-kU_400x400.jpg?1649116244" + }, + { + "chainId": 1, + "address": "0x107c4504cd79c5d2696ea0030a8dd4e92601b82e", + "name": "Bloom", + "symbol": "BLT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2662/thumb/bloom.png?1547036854" + }, + { + "chainId": 1, + "address": "0xc81946c6e0e15163b14abd4b5008f3d900b2a736", + "name": "Sakaryaspor", + "symbol": "SKRY", + "decimals": 2, + "logoURI": "https://assets.coingecko.com/coins/images/22042/thumb/16529.png?1640674353" + }, + { + "chainId": 1, + "address": "0xa00055e6ee4d1f4169096ecb682f70caa8c29987", + "name": "WIVA", + "symbol": "WIVA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18142/thumb/n8Vu43vs.png?1630656531" + }, + { + "chainId": 1, + "address": "0x7e291890b01e5181f7ecc98d79ffbe12ad23df9e", + "name": "Unifty", + "symbol": "NIF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13726/thumb/logo_transparent.png?1628254980" + }, + { + "chainId": 1, + "address": "0x591127253e40d4f63bf29ccf3d81fd062a149c8c", + "name": "TTX Metaverse", + "symbol": "XMETA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23332/thumb/xmeta.png?1644907223" + }, + { + "chainId": 1, + "address": "0x9e6c59321ceb205d5d3bc6c539c017af6159b16c", + "name": "MindCell", + "symbol": "MDC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17894/thumb/oemzNgO.png?1629720177" + }, + { + "chainId": 1, + "address": "0x4ee4f96838454e67fce92b2c53b0f1a97d047179", + "name": "MeebitsDAO Pool", + "symbol": "MBBT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20986/thumb/ZgVuisG__400x400.jpg?1638168731" + }, + { + "chainId": 1, + "address": "0xeeee2a622330e6d2036691e983dee87330588603", + "name": "Asko", + "symbol": "ASKO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11773/thumb/ASKO.png?1662435680" + }, + { + "chainId": 1, + "address": "0xdd039990bd551ce7437d3bf54d155220b7988b71", + "name": "Degens", + "symbol": "DEGENS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14526/thumb/degens_logo.png?1616740013" + }, + { + "chainId": 1, + "address": "0xf79f9020560963422ecc9c0c04d3a21190bbf045", + "name": "Baby Saitama", + "symbol": "BABYSAITAMA", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/17584/thumb/babysaitama.png?1635907049" + }, + { + "chainId": 1, + "address": "0xedd7c94fd7b4971b916d15067bc454b9e1bad980", + "name": "Zippie", + "symbol": "ZIPT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4302/thumb/zippie.jpg?1547039665" + }, + { + "chainId": 1, + "address": "0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0", + "name": "Polygon", + "symbol": "MATIC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4713/thumb/matic-token-icon.png?1624446912" + }, + { + "chainId": 1, + "address": "0xd31695a1d35e489252ce57b129fd4b1b05e6acac", + "name": "TOKPIE", + "symbol": "TKP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3731/thumb/tokpie-200x200.png?1562207865" + }, + { + "chainId": 1, + "address": "0xc73c167e7a4ba109e4052f70d5466d0c312a344d", + "name": "Sanshu Inu", + "symbol": "SANSHU", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/15370/thumb/m9DgRlXY.jpg?1623177779" + }, + { + "chainId": 1, + "address": "0x0f2d719407fdbeff09d87557abb7232601fd9f29", + "name": "Synapse", + "symbol": "SYN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18024/thumb/synapse_social_icon.png?1663921797" + }, + { + "chainId": 1, + "address": "0x10086399dd8c1e3de736724af52587a2044c9fa2", + "name": "The Midas Touch Gold", + "symbol": "TMTG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6255/thumb/the_midas_touch_gold.png?1547042292" + }, + { + "chainId": 1, + "address": "0x5bc25f649fc4e26069ddf4cf4010f9f706c23831", + "name": "DefiDollar", + "symbol": "DUSD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12333/thumb/defidollar_logo.png?1599116360" + }, + { + "chainId": 1, + "address": "0x97e6e31afb2d93d437301e006d9da714616766a5", + "name": "Midas", + "symbol": "MIDAS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6453/thumb/OMrkHMb.png?1547042650" + }, + { + "chainId": 1, + "address": "0x89fb927240750c1b15d4743cd58440fc5f14a11c", + "name": "Attila", + "symbol": "ATT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11337/thumb/LOGO_%2874%29.png?1589942265" + }, + { + "chainId": 1, + "address": "0xdd2e93924bdd4e20c3cf4a8736e5955224fa450e", + "name": "Foho Coin", + "symbol": "FOHO", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/17933/thumb/FOHO.Coin_colour-02-1.png?1629859400" + }, + { + "chainId": 1, + "address": "0xb3999f658c0391d94a37f7ff328f3fec942bcadc", + "name": "Hashflow", + "symbol": "HFT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26136/thumb/hashflow-icon-cmc.png?1668345672" + }, + { + "chainId": 1, + "address": "0x2c537e5624e4af88a7ae4060c022609376c8d0eb", + "name": "BiLira", + "symbol": "TRYB", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/10119/thumb/JBs9jiXO_400x400.jpg?1642668342" + }, + { + "chainId": 1, + "address": "0x8baef8c9568c21b1a2b2fd048f8b4da835691fd0", + "name": "USD ZEE", + "symbol": "USDZ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24876/thumb/003.png?1649217016" + }, + { + "chainId": 1, + "address": "0xbbe761ea1447a20b75aa485b7bcad4837415d7d7", + "name": "Global Crypto Alliance", + "symbol": "CALL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10276/thumb/gca-favicon.png?1576969530" + }, + { + "chainId": 1, + "address": "0xe18024f4838962d61eb591982390dffc762f2cd7", + "name": "JoJo Inu", + "symbol": "JOJO", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/19149/thumb/jojo_logo_200.png?1634535364" + }, + { + "chainId": 1, + "address": "0x3fa400483487a489ec9b1db29c4129063eec4654", + "name": "Cryptokek", + "symbol": "KEK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13513/thumb/Cryptokek-Logo-256px.png?1609292074" + }, + { + "chainId": 1, + "address": "0xb1191f691a355b43542bea9b8847bc73e7abb137", + "name": "KIRO", + "symbol": "KIRO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12688/thumb/logo_kirobo-04.png?1668683315" + }, + { + "chainId": 1, + "address": "0xe531642e9bb5d027e9c20e03284287b97919a9a5", + "name": "FaithCoin", + "symbol": "FAITH", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/3648/thumb/Y4u0Cl8.png?1547038612" + }, + { + "chainId": 1, + "address": "0x57c411e9a358e2d2d0a6b058cedb709175e8fd16", + "name": "Kodachi Token", + "symbol": "KODACHI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26927/thumb/logo200_%282%29.png?1660874765" + }, + { + "chainId": 1, + "address": "0xa113b79c09f0794568b8864a24197e0b817041ea", + "name": "PINK PANTHER", + "symbol": "PINK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18822/thumb/logopp.png?1633520496" + }, + { + "chainId": 1, + "address": "0x7671904eed7f10808b664fc30bb8693fd7237abf", + "name": "Bitberry", + "symbol": "BBR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13673/thumb/1_AdMyBccrRv0e6rhW7UKJSw.png?1610681228" + }, + { + "chainId": 1, + "address": "0x3516415161c478df10adbb8bb884cc83fbd5f11a", + "name": "AlphaDex", + "symbol": "DEX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12949/thumb/AlphaDex.png?1603779030" + }, + { + "chainId": 1, + "address": "0x8a854288a5976036a725879164ca3e91d30c6a1b", + "name": "GET Protocol", + "symbol": "GET", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1927/thumb/GET_Protocol.png?1552893230" + }, + { + "chainId": 1, + "address": "0xdf7a6a1214b3cbd3f9812434437f61a0d4cbbe1f", + "name": "ALFweb3Project", + "symbol": "ALFW3", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26643/thumb/ALFw3_200.png?1659351452" + }, + { + "chainId": 1, + "address": "0x9f9913853f749b3fe6d6d4e16a1cc3c1656b6d51", + "name": "BITT", + "symbol": "BITT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13783/thumb/BITT_Logo_256pixels.png?1611733961" + }, + { + "chainId": 1, + "address": "0x836a808d4828586a69364065a1e064609f5078c7", + "name": "pETH", + "symbol": "PETH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28376/thumb/peth.png?1669968949" + }, + { + "chainId": 1, + "address": "0x740623d2c797b7d8d1ecb98e9b4afcf99ec31e14", + "name": "DoYourTip", + "symbol": "DYT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8936/thumb/image1.png?1578033515" + }, + { + "chainId": 1, + "address": "0x345dadb10a200f10814ad8523fca0f2d958c3370", + "name": "Kori Inu", + "symbol": "KORI", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/21555/thumb/kori.png?1639465507" + }, + { + "chainId": 1, + "address": "0xf45091f25d374bbe956c0bb64bb85e02d07aa741", + "name": "MNMCoin", + "symbol": "MNMC", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/11163/thumb/MNMC.png?1589280919" + }, + { + "chainId": 1, + "address": "0x6cfb6df56bbdb00226aeffcdb2cd1fe8da1abda7", + "name": "Komet", + "symbol": "KOMET", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13196/thumb/komet_finance_logo.png?1606120745" + }, + { + "chainId": 1, + "address": "0xdaf88906ac1de12ba2b1d2f7bfc94e9638ac40c4", + "name": "EpiK Protocol", + "symbol": "EPK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15188/thumb/epk.PNG?1620078400" + }, + { + "chainId": 1, + "address": "0x6595b8fd9c920c81500dca94e53cdc712513fb1f", + "name": "Olyverse", + "symbol": "OLY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13983/thumb/oly-logo.png?1613461530" + }, + { + "chainId": 1, + "address": "0xbcdfe338d55c061c084d81fd793ded00a27f226d", + "name": "Decentralized Machine Learning Protocol", + "symbol": "DML", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3297/thumb/decentralized-machine-learning.png?1547037880" + }, + { + "chainId": 1, + "address": "0x6ee0f7bb50a54ab5253da0667b0dc2ee526c30a8", + "name": "Aave BUSD v1", + "symbol": "ABUSD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11736/thumb/aBUSD.png?1593085489" + }, + { + "chainId": 1, + "address": "0xd04785c4d8195e4a54d9dec3a9043872875ae9e2", + "name": "Rotten", + "symbol": "ROT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12560/thumb/rot_logo.png?1600762626" + }, + { + "chainId": 1, + "address": "0x7fc3ec3574d408f3b59cd88709bacb42575ebf2b", + "name": "POP", + "symbol": "POP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14598/thumb/pop.png?1617195542" + }, + { + "chainId": 1, + "address": "0x24a6a37576377f63f194caa5f518a60f45b42921", + "name": "Float Protocol", + "symbol": "BANK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14116/thumb/FLOAT-Bank_LOGO-reduced_01.png?1616573606" + }, + { + "chainId": 1, + "address": "0xb78b3320493a4efaa1028130c5ba26f0b6085ef8", + "name": "Dracula", + "symbol": "DRC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12758/thumb/DRC-LOGO.png?1648050189" + }, + { + "chainId": 1, + "address": "0x7e9d8f07a64e363e97a648904a89fb4cd5fb94cd", + "name": "Forefront", + "symbol": "FF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14659/thumb/N2kir6jx_400x400.jpg?1617608020" + }, + { + "chainId": 1, + "address": "0xfcf8eda095e37a41e002e266daad7efc1579bc0a", + "name": "FLEX Coin", + "symbol": "FLEX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9108/thumb/coinflex_logo.png?1628750583" + }, + { + "chainId": 1, + "address": "0x049399a6b048d52971f7d122ae21a1532722285f", + "name": "Fire Lotto", + "symbol": "FLOT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2201/thumb/fire-lotto.png?1548126078" + }, + { + "chainId": 1, + "address": "0x0d97fee619d955509e54b046c9992b6e9f5b0630", + "name": "PONY Index", + "symbol": "PONY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26131/thumb/pfemoji.png?1655964722" + }, + { + "chainId": 1, + "address": "0x7409856cae628f5d578b285b45669b36e7005283", + "name": "Jarvis Synthetic British Pound", + "symbol": "JGBP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15726/thumb/jGBP.png?1634046064" + }, + { + "chainId": 1, + "address": "0xa6586e19ef681b1ac0ed3d46413d199a555dbb95", + "name": "Lets Go Brandon", + "symbol": "LETSGO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24034/thumb/3zKU0T83_400x400.jpeg?1646117523" + }, + { + "chainId": 1, + "address": "0xb6f43025b29196af2dddd69b0a58afba079cd600", + "name": "Intelligent Investment Chain", + "symbol": "IIC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4307/thumb/intelligent-investment-chain.png?1547974303" + }, + { + "chainId": 1, + "address": "0x6839ac5ea8082688b706c773d5d2afd7d503fdd4", + "name": "Next Level", + "symbol": "NXL", + "decimals": 0, + "logoURI": "https://assets.coingecko.com/coins/images/15178/thumb/NXL-token-logo-200.png?1620026497" + }, + { + "chainId": 1, + "address": "0x64a77277e37d44957fe5815d6ff442ab8b16cc29", + "name": "SpaceDawgs", + "symbol": "DAWGS", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/17076/thumb/twitter-facebook-Instagram-pfp.png?1646792743" + }, + { + "chainId": 1, + "address": "0x1d96fd43ee07aa79f8fd003cbdf404fb5ce41ad2", + "name": "Qawalla", + "symbol": "QWLA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15242/thumb/qwla.png?1648268288" + }, + { + "chainId": 1, + "address": "0xb3cc3d7e656893f22d2372b0ae57106f6b155cbe", + "name": "Dogger", + "symbol": "DOGGER", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25460/thumb/GC94Zwub_400x400.jpg?1651822625" + }, + { + "chainId": 1, + "address": "0x076641af1b8f06b7f8c92587156143c109002cbe", + "name": "SoPay", + "symbol": "SOP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6736/thumb/sopay.png?1548609877" + }, + { + "chainId": 1, + "address": "0xd01ef7c0a5d8c432fc2d1a85c66cf2327362e5c6", + "name": "Ankr Reward Earning Staked ETH", + "symbol": "AETHB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18777/thumb/aETHb.png?1633402302" + }, + { + "chainId": 1, + "address": "0x60f63b76e2fc1649e57a3489162732a90acf59fe", + "name": "Flurry Finance", + "symbol": "FLURRY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16235/thumb/flurry_logo_only_200x200.png?1623365114" + }, + { + "chainId": 1, + "address": "0xfc2c4d8f95002c14ed0a7aa65102cac9e5953b5e", + "name": "Rublix", + "symbol": "RBLX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3253/thumb/rblx.png?1547037780" + }, + { + "chainId": 1, + "address": "0x014550a34149231b8432b8dd210fadd81b1d2668", + "name": "SHEESHETH", + "symbol": "SHEESH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26678/thumb/LOGO.png?1659522896" + }, + { + "chainId": 1, + "address": "0x29127fe04ffa4c32acac0ffe17280abd74eac313", + "name": "SIFU", + "symbol": "SIFU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24692/thumb/token_%283%29.png?1648620836" + }, + { + "chainId": 1, + "address": "0x1460a58096d80a50a2f1f956dda497611fa4f165", + "name": "WeOwn", + "symbol": "CHX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1943/thumb/ZlGXwUDv_400x400.jpg?1571388675" + }, + { + "chainId": 1, + "address": "0x5fc251c13c4ef172d87a32ab082897132b49435c", + "name": "Kayserispor", + "symbol": "KYSR", + "decimals": 2, + "logoURI": "https://assets.coingecko.com/coins/images/21930/thumb/YQKw1S0__400x400.jpg?1640299486" + }, + { + "chainId": 1, + "address": "0x04b5e13000c6e9a3255dc057091f3e3eeee7b0f0", + "name": "Unifund", + "symbol": "IFUND", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12833/thumb/unifund_logo.png?1602859047" + }, + { + "chainId": 1, + "address": "0xd559f20296ff4895da39b5bd9add54b442596a61", + "name": "FintruX", + "symbol": "FTX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1928/thumb/token-500x500.png?1547036223" + }, + { + "chainId": 1, + "address": "0x0a255f700b16c0acf5673565c757b94fb38b27f2", + "name": "NeoWorld Cash", + "symbol": "NASH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6737/thumb/D7F231BA7E294954A0C2C4EBA6BCEFEB.png?1547042977" + }, + { + "chainId": 1, + "address": "0x189fc141854bfc6146777406d53fbc89f4e70407", + "name": "Ceji", + "symbol": "CEJI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26458/thumb/CEJI.png?1658129614" + }, + { + "chainId": 1, + "address": "0x42bedd647e387dabec65a7dc3a3babcc68bb664d", + "name": "BlockMason Link", + "symbol": "BLINK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8525/thumb/link-by-blockmason.jpg?1559103173" + }, + { + "chainId": 1, + "address": "0x8f3470a7388c05ee4e7af3d01d8c722b0ff52374", + "name": "Veritaseum", + "symbol": "VERI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/695/thumb/veritaseum.png?1547034460" + }, + { + "chainId": 1, + "address": "0x33d0568941c0c64ff7e0fb4fba0b11bd37deed9f", + "name": "RAMP OLD ", + "symbol": "RAMP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12837/thumb/RAMP-Logo-v2-1000pxsq.png?1617952606" + }, + { + "chainId": 1, + "address": "0xe276056f924e15beac26f7b10b6d2805f9c64bb5", + "name": "Firulais", + "symbol": "FIRU", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/17564/thumb/firulais.jpg?1628321879" + }, + { + "chainId": 1, + "address": "0x9b75848172677042269c63365b57b0a51c21d031", + "name": "Options Market", + "symbol": "OSM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14562/thumb/OSM_Logo.png?1642667815" + }, + { + "chainId": 1, + "address": "0x14b40ad2eba6c1b31db2ba817b07578afb414415", + "name": "colR Coin", + "symbol": "COLR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26701/thumb/colverse.jpeg?1659662193" + }, + { + "chainId": 1, + "address": "0x0fe156436f203b114c6c562cb1a2a81aa2801090", + "name": "SKINCHAIN", + "symbol": "SKC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10878/thumb/8ZtRME2h_400x400.jpg?1585472542" + }, + { + "chainId": 1, + "address": "0xd1766a85b0d6f81185782dc07f15326d63c3cbaa", + "name": "TokenTuber", + "symbol": "TUBER", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9617/thumb/Wlk5tQQe_400x400.png?1569853753" + }, + { + "chainId": 1, + "address": "0xdc524e3c6910257744c1f93cf15e9f472b5bd236", + "name": "Witch Token", + "symbol": "WITCH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17205/thumb/download_%2829%29.png?1626848072" + }, + { + "chainId": 1, + "address": "0x79be75ffc64dd58e66787e4eae470c8a1fd08ba4", + "name": "Aave AMM DAI", + "symbol": "AAMMDAI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17197/thumb/aAMMDAI_2x.png?1626940032" + }, + { + "chainId": 1, + "address": "0x12b6893ce26ea6341919fe289212ef77e51688c8", + "name": "Tamadoge", + "symbol": "TAMA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27501/thumb/CaltNDWu_400x400.jpeg?1664329157" + }, + { + "chainId": 1, + "address": "0x011864d37035439e078d64630777ec518138af05", + "name": "Zerogoki", + "symbol": "REI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17015/thumb/iconZerogoki.png?1626618921" + }, + { + "chainId": 1, + "address": "0x896e145568624a498c5a909187363ae947631503", + "name": "WasabiX", + "symbol": "WASABI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14522/thumb/WASABI.299ec8f7.png?1616721315" + }, + { + "chainId": 1, + "address": "0xcccbf11ac3030ee8cd7a04cfe15a3718df6dd030", + "name": "Gan Punks", + "symbol": "GPUNKS20", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17859/thumb/unnamed_%282%29.gif?1629683073" + }, + { + "chainId": 1, + "address": "0x0a41e6d4d4897e8cec819ce7d10b2d7cda61dc94", + "name": "YCLUB", + "symbol": "SYC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28267/thumb/9DC88DDF-CAB3-410A-87BA-6AB98DCD1B86.jpeg?1668771177" + }, + { + "chainId": 1, + "address": "0x6c5ba91642f10282b576d91922ae6448c9d52f4e", + "name": "Phala Network", + "symbol": "PHA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12451/thumb/phala.png?1600061318" + }, + { + "chainId": 1, + "address": "0xcf8829ae9384540c886a151fac3a865794cb9a01", + "name": "SyncDAO Governance", + "symbol": "SDG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21085/thumb/SyncDAO-s-icon_1_200x200.png?1638312055" + }, + { + "chainId": 1, + "address": "0x90e2fa98dfc518317600dd3dc571de8d071a7238", + "name": "Token of Fire", + "symbol": "RHLLOR", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/28100/thumb/logo_200x.png?1667539104" + }, + { + "chainId": 1, + "address": "0xc2a81eb482cb4677136d8812cc6db6e0cb580883", + "name": "TFS", + "symbol": "TFS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21963/thumb/dOF2IBa.png?1640524604" + }, + { + "chainId": 1, + "address": "0xdf3f28189516647f8cd2414b6add5ac948f3fc41", + "name": "XAEA Xii", + "symbol": "XAEA-XII", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/23325/thumb/xNXRIgWn_400x400.jpg?1643839082" + }, + { + "chainId": 1, + "address": "0x87b008e57f640d94ee44fd893f0323af933f9195", + "name": "Coin Artist", + "symbol": "COIN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12375/thumb/coin_artist_logo.png?1599403918" + }, + { + "chainId": 1, + "address": "0x9c659cb48c4406cd2857aeceff1609b2db280d0e", + "name": "Alita Network", + "symbol": "ALITA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17329/thumb/2LbKO1Yk_400x400.jpg?1627340043" + }, + { + "chainId": 1, + "address": "0x31024a4c3e9aeeb256b825790f5cb7ac645e7cd5", + "name": "Xiotri", + "symbol": "XIOT", + "decimals": 3, + "logoURI": "https://assets.coingecko.com/coins/images/12182/thumb/xiot_logo_512x512.png?1601775223" + }, + { + "chainId": 1, + "address": "0x8642a849d0dcb7a15a974794668adcfbe4794b56", + "name": "Prosper", + "symbol": "PROS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13668/thumb/heD6cg22l3sF5VgPh4G1xC6lnKEWXJif-jbaqUpv8CDP6jbWaqn9UjBdkXWNrw1CewaQOxb8zXRdNeNJWWiUDjfsEl_d7E3bPLg4cFoilQF5TGKHfWyJlnpm3UYc9ytvRvOjxOevMuiu8-lusnNoOcwgsJpMkYWHqe322GAxLt0_30kFMVAcjEDUrOlkK6hUYi0m9P433mvNlOm.jpg?1610671732" + }, + { + "chainId": 1, + "address": "0x5dbe296f97b23c4a6aa6183d73e574d02ba5c719", + "name": "Level Up Coin", + "symbol": "LUC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1772/thumb/luc.png?1547036065" + }, + { + "chainId": 1, + "address": "0x9501bfc48897dceeadf73113ef635d2ff7ee4b97", + "name": "easyMine", + "symbol": "EMT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1749/thumb/emt.png?1547036034" + }, + { + "chainId": 1, + "address": "0x009668a9691e456972c8ec4cc84e99486308b84d", + "name": "Terareum", + "symbol": "TERA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23880/thumb/Tera-200x200-1.png?1645600935" + }, + { + "chainId": 1, + "address": "0xf6832ea221ebfdc2363729721a146e6745354b14", + "name": "FRMx", + "symbol": "FRMX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13082/thumb/frmx.png?1660311822" + }, + { + "chainId": 1, + "address": "0xf028adee51533b1b47beaa890feb54a457f51e89", + "name": "BMCHAIN", + "symbol": "BMT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7419/thumb/bchain_logo.jpg?1547199925" + }, + { + "chainId": 1, + "address": "0xb0e99627bc29adef1178f16117bf495351e81997", + "name": "Dex Trade Coin", + "symbol": "DXC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15025/thumb/R1A63oDx_400x400.jpg?1619489389" + }, + { + "chainId": 1, + "address": "0x5fbc3cb8b428cc00a04808870295d39962cc7fee", + "name": "Bitazza", + "symbol": "BTZ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24597/thumb/BTZ_Logo_%28200x200%29.png?1649777047" + }, + { + "chainId": 1, + "address": "0xbc276f51184ec085cd1437601ecb4bbc3d981896", + "name": "Shibtama", + "symbol": "SHIBTAMA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23362/thumb/shibtama.png?1643946565" + }, + { + "chainId": 1, + "address": "0x40d1f63b5d2048e67e9bedb1b4c2f1a9fb4b6817", + "name": "Golden Goose", + "symbol": "GOLD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7892/thumb/tsRcntSR_400x400.png?1611024068" + }, + { + "chainId": 1, + "address": "0xc86d054809623432210c107af2e3f619dcfbf652", + "name": "Sentinel Protocol", + "symbol": "UPP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3369/thumb/Sentinel_Protocol.jpg?1547700074" + }, + { + "chainId": 1, + "address": "0x00f29171d7bcdc464a0758cf3217fe83173772b9", + "name": "INU", + "symbol": "INU", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/16898/thumb/logo.png?1632227807" + }, + { + "chainId": 1, + "address": "0x5fa54fddf1870c344dbfabb37dfab8700ec0def1", + "name": "FrogeX", + "symbol": "FROGEX", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/14775/thumb/-p8cz7Bk_400x400.png?1618371907" + }, + { + "chainId": 1, + "address": "0xb8baa0e4287890a5f79863ab62b7f175cecbd433", + "name": "Swerve", + "symbol": "SWRV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12361/thumb/swerve.png?1599278316" + }, + { + "chainId": 1, + "address": "0x9992ec3cf6a55b00978cddf2b27bc6882d88d1ec", + "name": "Polymath", + "symbol": "POLY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2784/thumb/inKkF01.png?1605007034" + }, + { + "chainId": 1, + "address": "0x2a039b1d9bbdccbb91be28691b730ca893e5e743", + "name": "Rentible", + "symbol": "RNB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15176/thumb/Rentible-Token-Logo.png?1620025850" + }, + { + "chainId": 1, + "address": "0x0371a82e4a9d0a4312f3ee2ac9c6958512891372", + "name": "bitJob", + "symbol": "STU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1172/thumb/bitjob.jpg?1547035202" + }, + { + "chainId": 1, + "address": "0x32fb2a84af5515f77515806ea5addb54c923237d", + "name": "SOLO Vault NFTX ", + "symbol": "SOLO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18349/thumb/solo.png?1631603899" + }, + { + "chainId": 1, + "address": "0xde522a2778e4554707e6a8df36a4871ce9967bb5", + "name": "FormulA", + "symbol": "FML", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6878/thumb/formula_token.png?1547043223" + }, + { + "chainId": 1, + "address": "0x81b1bfd6cb9ad42db395c2a27f73d4dcf5777e2d", + "name": "Rare", + "symbol": "RARE", + "decimals": 4, + "logoURI": "https://assets.coingecko.com/coins/images/12868/thumb/rare_logo.png?1603170092" + }, + { + "chainId": 1, + "address": "0xcfcecfe2bd2fed07a9145222e8a7ad9cf1ccd22a", + "name": "Adshares", + "symbol": "ADS", + "decimals": 11, + "logoURI": "https://assets.coingecko.com/coins/images/868/thumb/rnO9DyJ.png?1663921311" + }, + { + "chainId": 1, + "address": "0x46d473a0b3eeec9f55fade641bc576d5bc0b2246", + "name": "SurfExUtilityToken", + "symbol": "SURF", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/10783/thumb/200x200-logo-blu-grey-bkg-4-e1583512409629.png?1583539501" + }, + { + "chainId": 1, + "address": "0xd2057d71fe3f5b0dc1e3e7722940e1908fc72078", + "name": "King Swap", + "symbol": "KING", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13622/thumb/rsz_king_token_new.png?1610437757" + }, + { + "chainId": 1, + "address": "0xaa99199d1e9644b588796f3215089878440d58e0", + "name": "Alphr", + "symbol": "ALPHR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15029/thumb/alphr.jpg?1619495712" + }, + { + "chainId": 1, + "address": "0x000000000000d0151e748d25b766e77efe2a6c83", + "name": "XDEFI Governance", + "symbol": "XDEX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14485/thumb/logo.png?1616472896" + }, + { + "chainId": 1, + "address": "0x996dc5dfc819408dd98cd92c9a76f64b0738dc3d", + "name": "Skillchain", + "symbol": "SKI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3780/thumb/SKI.png?1589121168" + }, + { + "chainId": 1, + "address": "0x92ec47df1aa167806dfa4916d9cfb99da6953b8f", + "name": "Idavoll DAO", + "symbol": "IDV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14229/thumb/71922199.png?1615169236" + }, + { + "chainId": 1, + "address": "0x297e4e5e59ad72b1b0a2fd446929e76117be0e0a", + "name": "Smart Valor", + "symbol": "VALOR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7231/thumb/smart_valor.png?1555925772" + }, + { + "chainId": 1, + "address": "0xa4e8c3ec456107ea67d3075bf9e3df3a75823db0", + "name": "Loom Network OLD ", + "symbol": "LOOMOLD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3387/thumb/1_K76UVoLq-FOL7l-_Fag-Qw_2x.png?1547038040" + }, + { + "chainId": 1, + "address": "0xe63684bcf2987892cefb4caa79bd21b34e98a291", + "name": "Chicken", + "symbol": "KFC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12569/thumb/download.png?1600840301" + }, + { + "chainId": 1, + "address": "0x368bf9f1a1ca767935e39f20439d9041707e2634", + "name": "Chainflix", + "symbol": "CFXT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17671/thumb/Logo_200_%282%29.png?1628822696" + }, + { + "chainId": 1, + "address": "0x65a8fba02f641a13bb7b01d5e1129b0521004f52", + "name": "Amasa", + "symbol": "AMAS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18799/thumb/agmqWjv8_400x400.png?1633473272" + }, + { + "chainId": 1, + "address": "0x2f29ce2a733983978c01ae3e3c7f224ed0ef7e72", + "name": "Music Infinity", + "symbol": "MIT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26290/thumb/20882.png?1657158988" + }, + { + "chainId": 1, + "address": "0x5d48f293baed247a2d0189058ba37aa238bd4725", + "name": "NeuroChain", + "symbol": "NCC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3367/thumb/neurochain.png?1548085917" + }, + { + "chainId": 1, + "address": "0xb0280743b44bf7db4b6be482b2ba7b75e5da096c", + "name": "Transcodium", + "symbol": "TNS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2071/thumb/transcodium.png?1548759093" + }, + { + "chainId": 1, + "address": "0xb9d99c33ea2d86ec5ec6b8a4dd816ebba64404af", + "name": "K21", + "symbol": "K21", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14466/thumb/k21-token.png?1616775801" + }, + { + "chainId": 1, + "address": "0x65ef703f5594d2573eb71aaf55bc0cb548492df4", + "name": "Multichain", + "symbol": "MULTI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22087/thumb/1_Wyot-SDGZuxbjdkaOeT2-A.png?1640764238" + }, + { + "chainId": 1, + "address": "0x0f5d2fb29fb7d3cfee444a200298f468908cc942", + "name": "Decentraland", + "symbol": "MANA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/878/thumb/decentraland-mana.png?1550108745" + }, + { + "chainId": 1, + "address": "0x6393e822874728f8afa7e1c9944e417d37ca5878", + "name": "Cryptoindex com 100", + "symbol": "CIX100", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6106/thumb/cix.png?1563780642" + }, + { + "chainId": 1, + "address": "0xae36155a55f04a696b8362777620027882b31db5", + "name": "Kishimoto", + "symbol": "KISHIMOTO", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/28011/thumb/kishimoto.png?1666944015" + }, + { + "chainId": 1, + "address": "0xf278c1ca969095ffddded020290cf8b5c424ace2", + "name": "Ruff", + "symbol": "RUFF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2726/thumb/ruff.png?1548608556" + }, + { + "chainId": 1, + "address": "0xc74cb1bbc2a1bc6e0c9e35ee176f832ad7cdb3ab", + "name": "Anons Network", + "symbol": "ANONS", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/22095/thumb/ANONS.png?1640795860" + }, + { + "chainId": 1, + "address": "0xe1aee98495365fc179699c1bb3e761fa716bee62", + "name": "Bezant", + "symbol": "BZNT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3825/thumb/bezant.png?1546240528" + }, + { + "chainId": 1, + "address": "0x6295ab2be04a617747481b292c390bfca592cf28", + "name": "TokenDesk", + "symbol": "TDS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1821/thumb/tokendesk.png?1548758709" + }, + { + "chainId": 1, + "address": "0x4d953cf077c0c95ba090226e59a18fcf97db44ec", + "name": "Mini", + "symbol": "MINI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12298/thumb/IrTAVc_GqZ7iQucAa3fNYlh_Cqt3tY9wM_pmzOl5SifscRMpuzrp_dizMzGTiMr_NxDJPCKigBgz8THrzvO_DqT3JLzqZIYeytDBRw3qKI73dljS0BnFaaI2aLadpdCZah4RkhydddLIDDbQlGit77farlQRaq7qEgxdjVe0aqEeh4phE-DWAKi_KS_Yz-fFdDfjWgifVCKkZRBeNSWWQEplxxl.jpg?1598961320" + }, + { + "chainId": 1, + "address": "0xdfddf7a69716124bc346ba556d4b9f9e74c4a8bc", + "name": "Succession", + "symbol": "SCCN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25377/thumb/sccn.png?1651410204" + }, + { + "chainId": 1, + "address": "0xaa19961b6b858d9f18a115f25aa1d98abc1fdba8", + "name": "LocalCoinSwap", + "symbol": "LCS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3998/thumb/LocalCoinSwap.png?1547039086" + }, + { + "chainId": 1, + "address": "0x8a8116a794744977941c7d3743517410969aacbb", + "name": "Shiba Punkz", + "symbol": "SPUNK", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/27163/thumb/shibapunkzlogo.JPG?1662283310" + }, + { + "chainId": 1, + "address": "0xad22f63404f7305e4713ccbd4f296f34770513f4", + "name": "Atomic Wallet Coin", + "symbol": "AWC", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/7430/thumb/Atomic_Wallet_Aeron_%281%29.png?1547274057" + }, + { + "chainId": 1, + "address": "0xfb83869f7ee52aebaddea254f647953afb1f99f8", + "name": "Lean Management", + "symbol": "LEAN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19602/thumb/tIajRRh.png?1635491525" + }, + { + "chainId": 1, + "address": "0xcb56b52316041a62b6b5d0583dce4a8ae7a3c629", + "name": "Cigarette", + "symbol": "CIG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22145/thumb/cig.png?1640929916" + }, + { + "chainId": 1, + "address": "0x0ace32f6e87ac1457a5385f8eb0208f37263b415", + "name": "Habitat", + "symbol": "HBT", + "decimals": 10, + "logoURI": "https://assets.coingecko.com/coins/images/14456/thumb/habitat-logo.png?1625495825" + }, + { + "chainId": 1, + "address": "0x97a3bd8a445cc187c6a751f392e15c3b2134d695", + "name": "Blockster", + "symbol": "BXR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19857/thumb/bxr-left2.png?1636064209" + }, + { + "chainId": 1, + "address": "0x256f2d67e52fe834726d2ddcd8413654f5eb8b53", + "name": "Solv Protocol", + "symbol": "SOLV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27987/thumb/Solv-Logo5.png?1666863912" + }, + { + "chainId": 1, + "address": "0x380291a9a8593b39f123cf39cc1cc47463330b1f", + "name": "Elite Swap", + "symbol": "ELT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13715/thumb/logo_-_2021-01-20T105016.992.png?1611111027" + }, + { + "chainId": 1, + "address": "0xe8272210954ea85de6d2ae739806ab593b5d9c51", + "name": "Alpha5", + "symbol": "A5T", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13848/thumb/a5t.jpg?1614652988" + }, + { + "chainId": 1, + "address": "0x9506d37f70eb4c3d79c398d326c871abbf10521d", + "name": "Media Licensing Token", + "symbol": "MLT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15659/thumb/milc_200x200.png?1621511031" + }, + { + "chainId": 1, + "address": "0x672ef7e4fe230b5ca1466c5fdd40588d30fdf90a", + "name": "Wolves of Wall Street", + "symbol": "WOWS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14365/thumb/wows_logo.png?1615704838" + }, + { + "chainId": 1, + "address": "0x010d14d36c3ea6570d240ae3ac9d660398f7c48e", + "name": "XCF Token", + "symbol": "XCF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10987/thumb/xcf-icon-01-1-flat.png?1622195426" + }, + { + "chainId": 1, + "address": "0x64b986211c0cc675143f895c437b79c3cadf364a", + "name": "Grapefruit Coin", + "symbol": "GRPFT", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/17002/thumb/logo-square-1.png?1626061191" + }, + { + "chainId": 1, + "address": "0xf3c6327b4c58e38a7986edb4a8f236031708f280", + "name": "Hatayspor Token", + "symbol": "HATAY", + "decimals": 2, + "logoURI": "https://assets.coingecko.com/coins/images/24813/thumb/5pj7q96D_400x400.png?1649027829" + }, + { + "chainId": 1, + "address": "0xee9e5eff401ee921b138490d00ca8d1f13f67a72", + "name": "Asian Fintech", + "symbol": "AFIN", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/7519/thumb/Afinlogo-200x200.png?1630048356" + }, + { + "chainId": 1, + "address": "0x72953a5c32413614d24c29c84a66ae4b59581bbf", + "name": "CLever", + "symbol": "CLEV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27727/thumb/%E6%88%AA%E5%B1%8F2022-10-12_%E4%B8%8A%E5%8D%8810.40.19.png?1665550689" + }, + { + "chainId": 1, + "address": "0x436da116249044e8b4464f0cf21dd93311d88190", + "name": "Colizeum", + "symbol": "ZEUM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24448/thumb/AB0cGpnx_400x400.jpg?1647681843" + }, + { + "chainId": 1, + "address": "0xc2bde1a2fa26890c8e6acb10c91cc6d9c11f4a73", + "name": "Hashmasks", + "symbol": "MASK20", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17856/thumb/unnamed_%284%29.jpg?1629681381" + }, + { + "chainId": 1, + "address": "0x943ed852dadb5c3938ecdc6883718df8142de4c8", + "name": "FansTime", + "symbol": "FTI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4952/thumb/fanstime.png?1547395397" + }, + { + "chainId": 1, + "address": "0x491e136ff7ff03e6ab097e54734697bb5802fc1c", + "name": "Kattana", + "symbol": "KTN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14739/thumb/256-256-1.png?1638363577" + }, + { + "chainId": 1, + "address": "0x4ec1b60b96193a64acae44778e51f7bff2007831", + "name": "Edge", + "symbol": "EDGE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1848/thumb/EDGE.png?1632300420" + }, + { + "chainId": 1, + "address": "0x83f873388cd14b83a9f47fabde3c9850b5c74548", + "name": "Zero Utility", + "symbol": "ZUT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12706/thumb/logo.png?1605007113" + }, + { + "chainId": 1, + "address": "0x15eabb7500e44b7fdb6e4051ca8deca430cf9fb8", + "name": "Dexfin", + "symbol": "DXF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13660/thumb/dxf-symbol.png?1610599440" + }, + { + "chainId": 1, + "address": "0xef2e239b21a81719abaabc6239e2e90859b44d9b", + "name": "Talent TTX", + "symbol": "TTX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12770/thumb/ttx.png?1640758151" + }, + { + "chainId": 1, + "address": "0xda0c94c73d127ee191955fb46bacd7ff999b2bcd", + "name": "Stakeborg DAO", + "symbol": "STANDARD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20119/thumb/stquY-WB_400x400.jpg?1636522705" + }, + { + "chainId": 1, + "address": "0xf0c5831ec3da15f3696b4dad8b21c7ce2f007f28", + "name": "AXIS", + "symbol": "AXIS", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/16972/thumb/lUeFYUeu_400x400.png?1625815058" + }, + { + "chainId": 1, + "address": "0x18aa7c90d3ae4c5bb219d0a2813f441704084625", + "name": "Decentralize Currency", + "symbol": "DCA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7673/thumb/DCA.png?1573037394" + }, + { + "chainId": 1, + "address": "0x9d3ee6b64e69ebe12a4bf0b01d031cb80f556ee4", + "name": "Amun Polygon Ecosystem Index", + "symbol": "PECO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19270/thumb/amun-peco.png?1634868167" + }, + { + "chainId": 1, + "address": "0xf8e06e4e4a80287fdca5b02dccecaa9d0954840f", + "name": "Truegame", + "symbol": "TGAME", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2974/thumb/tgame.png?1518620605" + }, + { + "chainId": 1, + "address": "0xe6d2c3cb986db66818c14c7032db05d1d2a6ee74", + "name": "Finexbox", + "symbol": "FNB", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/8419/thumb/p1WP-viw_400x400.jpg?1558395663" + }, + { + "chainId": 1, + "address": "0xacd8f2523a4613eee78904354187c81bb05ae2b8", + "name": "Stand Cash", + "symbol": "SAC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13542/thumb/sac.jpg?1609648101" + }, + { + "chainId": 1, + "address": "0x196f4727526ea7fb1e17b2071b3d8eaa38486988", + "name": "Reserve", + "symbol": "RSV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10952/thumb/rsv.png?1637983297" + }, + { + "chainId": 1, + "address": "0x29ceddcf0da3c1d8068a7dfbd0fb06c2e438ff70", + "name": "Freela", + "symbol": "FREL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15856/thumb/freela.PNG?1622164474" + }, + { + "chainId": 1, + "address": "0x465e07d6028830124be2e4aa551fbe12805db0f5", + "name": "Wrapped XMR by BTSE", + "symbol": "WXMR", + "decimals": 18 + }, + { + "chainId": 1, + "address": "0x39fbbabf11738317a448031930706cd3e612e1b9", + "name": "Wrapped XRP", + "symbol": "WXRP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19952/thumb/WXRP_revision-256px.png?1648530664" + }, + { + "chainId": 1, + "address": "0xff5c69e8edc6446a1898698adcf9b1149d5e0306", + "name": "Kishiburno", + "symbol": "KISHIBURNO", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/26751/thumb/coing_gecko.jpg?1660020251" + }, + { + "chainId": 1, + "address": "0xd23ac27148af6a2f339bd82d0e3cff380b5093de", + "name": "Siren", + "symbol": "SI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13955/thumb/Siren_Logo_circle_256px.png?1645684572" + }, + { + "chainId": 1, + "address": "0x0809bd190c94f4408e691c410e67bff0df5d225d", + "name": "Cryptonia Poker", + "symbol": "CNP", + "decimals": 2, + "logoURI": "https://assets.coingecko.com/coins/images/3615/thumb/cpc.png?1547038522" + }, + { + "chainId": 1, + "address": "0xa4bdb11dc0a2bec88d24a3aa1e6bb17201112ebe", + "name": "Stably USDS", + "symbol": "USDS", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/7596/thumb/Stably_USDS_-_Icon_%28Standard%29.png?1663824111" + }, + { + "chainId": 1, + "address": "0xada86b1b313d1d5267e3fc0bb303f0a2b66d0ea7", + "name": "Covesting", + "symbol": "COV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1950/thumb/covesting.png?1547036237" + }, + { + "chainId": 1, + "address": "0xe632ea2ef2cfd8fc4a2731c76f99078aef6a4b31", + "name": "THX Network", + "symbol": "THX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21323/thumb/logo-thx-resized-200-200.png?1638945575" + }, + { + "chainId": 1, + "address": "0x796e47b85a0d759f300f1de96a3583004235d4d8", + "name": "Electrum Dark", + "symbol": "ELD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6469/thumb/logo_%2817%29.png?1547042683" + }, + { + "chainId": 1, + "address": "0x9b20dabcec77f6289113e61893f7beefaeb1990a", + "name": "FairGame", + "symbol": "FAIR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2456/thumb/fairgame.png?1547036592" + }, + { + "chainId": 1, + "address": "0x1c84656cb4c286daa16f27d8b305f1053b5a8771", + "name": "Bro", + "symbol": "BRO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24119/thumb/bro-256.png?1646384412" + }, + { + "chainId": 1, + "address": "0x8326bf664704966c984a3a46fa37d7a80a52dcf4", + "name": "Dogu Inu", + "symbol": "DOGU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28492/thumb/Coingecko_Dogu_Inu_logo.jpg?1671093591" + }, + { + "chainId": 1, + "address": "0x27201232579491ce9b116ac6f37d354cc723a2f3", + "name": "Mesefa", + "symbol": "SEFA", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/10977/thumb/Sefa_Pool_Logo_Bleu.png?1636769260" + }, + { + "chainId": 1, + "address": "0x9f4909cc95fb870bf48c128c1fdbb5f482797632", + "name": "Guzzler", + "symbol": "GZLR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20970/thumb/Screenshot-2021-11-27-at-22-57-22.png?1638153729" + }, + { + "chainId": 1, + "address": "0xd1e06952708771f71e6dd18f06ee418f6e8fc564", + "name": "GazeTV", + "symbol": "GAZE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14717/thumb/Gaze_Icon_Positive.png?1617937326" + }, + { + "chainId": 1, + "address": "0xac0c8da4a4748d8d821a0973d00b157aa78c473d", + "name": "YFIONE", + "symbol": "YFO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13670/thumb/256.png?1610676054" + }, + { + "chainId": 1, + "address": "0xe23311294467654e0cab14cd32a169a41be5ca8e", + "name": "Chronoly", + "symbol": "CRNO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27752/thumb/Chronoly.jpeg?1665651796" + }, + { + "chainId": 1, + "address": "0xf77f4810e7521298a6e2a04f82a6c3492706d74f", + "name": "CoinMeet", + "symbol": "MEET", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2688/thumb/coinmeet.png?1547036895" + }, + { + "chainId": 1, + "address": "0xcfef8857e9c80e3440a823971420f7fa5f62f020", + "name": "Confetti", + "symbol": "CFTI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24524/thumb/confetti_28.png?1648021097" + }, + { + "chainId": 1, + "address": "0x40821cd074dfecb1524286923bc69315075b5c89", + "name": "Quai Dao", + "symbol": "QUAI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13815/thumb/QUIA_32x32.png?1656133041" + }, + { + "chainId": 1, + "address": "0xed0e2041bfb5a426e5ed426a73765624e08bbb75", + "name": "FANZY", + "symbol": "FX1", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11117/thumb/FX.png?1604900016" + }, + { + "chainId": 1, + "address": "0x58002a6b6e659a16de9f02f529b10536e307b0d9", + "name": "Crypto Holding Frank", + "symbol": "CHFT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11184/thumb/chft.png?1589523711" + }, + { + "chainId": 1, + "address": "0x30bcd71b8d21fe830e493b30e90befba29de9114", + "name": "Penguin Party Fish", + "symbol": "FISH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14359/thumb/Screen-Shot-2021-03-10-at-1-05-40-AM.png?1615629402" + }, + { + "chainId": 1, + "address": "0xf2f9a7e93f845b3ce154efbeb64fb9346fcce509", + "name": "UniPower", + "symbol": "POWER", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11618/thumb/unipower.png?1591943398" + }, + { + "chainId": 1, + "address": "0x537edd52ebcb9f48ff2f8a28c51fcdb9d6a6e0d4", + "name": "Small Doge", + "symbol": "SDOG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15377/thumb/small_dog.PNG?1620693455" + }, + { + "chainId": 1, + "address": "0x9b9fb226e98c4e90db2830c9aefa9cfcbe3b000a", + "name": "KITTY Vault NFTX ", + "symbol": "KITTY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17037/thumb/KITTY.png?1626145386" + }, + { + "chainId": 1, + "address": "0xdfdb7f72c1f195c5951a234e8db9806eb0635346", + "name": "Feisty Doge NFT", + "symbol": "NFD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17834/thumb/doge-fractionalized.png?1629390495" + }, + { + "chainId": 1, + "address": "0x26ddf6cabadcbf4f013841bd8d914830beb0d984", + "name": "Kuai", + "symbol": "KT", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/5314/thumb/kuai-token.png?1547040868" + }, + { + "chainId": 1, + "address": "0xc48b4814faed1ccc885dd6fde62a6474aecbb19a", + "name": "CoinMerge ERC20 ", + "symbol": "CMERGE", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/17146/thumb/cmerge.png?1642926825" + }, + { + "chainId": 1, + "address": "0x581911b360b6eb3a14ef295a83a91dc2bce2d6f7", + "name": "MileVerse", + "symbol": "MVC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13146/thumb/kXSdwuxD_400x400.jpg?1605668418" + }, + { + "chainId": 1, + "address": "0x78f225869c08d478c34e5f645d07a87d3fe8eb78", + "name": "PieDAO DEFI Large Cap", + "symbol": "DEFI+L", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12731/thumb/DeFi_L.png?1602070128" + }, + { + "chainId": 1, + "address": "0x72e9d9038ce484ee986fea183f8d8df93f9ada13", + "name": "SmartCredit", + "symbol": "SMARTCREDIT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13036/thumb/smartcredit_logo_02_white_a-1.png?1604545479" + }, + { + "chainId": 1, + "address": "0x595832f8fc6bf59c85c527fec3740a1b7a361269", + "name": "Power Ledger", + "symbol": "POWR", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/1104/thumb/power-ledger.png?1547035082" + }, + { + "chainId": 1, + "address": "0xd5a98e77d1feb091344096301ea336a5c07a6a41", + "name": "Alpha Capital", + "symbol": "ACAP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24044/thumb/gfSKeO3.png?1646289796" + }, + { + "chainId": 1, + "address": "0xf32aa187d5bc16a2c02a6afb7df1459d0d107574", + "name": "HachikoInu", + "symbol": "INU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16392/thumb/hachikoinu-200px.png?1626355242" + }, + { + "chainId": 1, + "address": "0xd69f306549e9d96f183b1aeca30b8f4353c2ecc3", + "name": "MCH Coin", + "symbol": "MCHC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15399/thumb/MCHC.jpg?1620721307" + }, + { + "chainId": 1, + "address": "0xc8d07671afba9492da95819de4ad10859e00ab7f", + "name": "CryptoCoinPay", + "symbol": "CCP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7127/thumb/T9ywgTGYuoYBFagC3PzdSVNKHxZSPB6Kmz.png?1647433798" + }, + { + "chainId": 1, + "address": "0xef6344de1fcfc5f48c30234c16c1389e8cdc572c", + "name": "EncrypGen", + "symbol": "DNA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1215/thumb/encrypgen.png?1547393601" + }, + { + "chainId": 1, + "address": "0x1ad82fac4dfe68e68f22df9cb892b018e4541dba", + "name": "MarblePrix", + "symbol": "MARBLEX7", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28322/thumb/Mp_logo_2.png?1669379614" + }, + { + "chainId": 1, + "address": "0x4ce4c025692b3142dbde1cd432ef55b9a8d18701", + "name": "Decanect", + "symbol": "DCNT", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/27309/thumb/200-x-200-jpeg.jpg?1663239875" + }, + { + "chainId": 1, + "address": "0x56322c14cb5f53531c231b8f9ab178bf5d893a5e", + "name": "AzaCoin", + "symbol": "AZA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28443/thumb/Azarus_Logo_Mark-XXL.png?1670664404" + }, + { + "chainId": 1, + "address": "0x97b65710d03e12775189f0d113202cc1443b0aa2", + "name": "AstroElon", + "symbol": "ELONONE", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/16082/thumb/AstroElon.png?1622791921" + }, + { + "chainId": 1, + "address": "0x1337def18c680af1f9f45cbcab6309562975b1dd", + "name": "Armor NXM", + "symbol": "ARNXM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13753/thumb/1_otmQ1sN0MgsT4idRsPsu3w.png?1611556043" + }, + { + "chainId": 1, + "address": "0x1111158f88410da5f92c7e34c01e7b8649bc0155", + "name": "Intercoin", + "symbol": "ITR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20180/thumb/VU72TTZ3zN3w.png?1636604639" + }, + { + "chainId": 1, + "address": "0xdc0804ed9aba9202e2b976c031d3144bb63a7990", + "name": "Kishutama", + "symbol": "KISHUTAMA", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/23483/thumb/Screenshot-2022-02-05-at-09-20-53.png?1644219727" + }, + { + "chainId": 1, + "address": "0x1fee5588cb1de19c70b6ad5399152d8c643fae7b", + "name": "Phun Token", + "symbol": "PHTK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24773/thumb/2q6YoWkb_400x400.jpg?1648822416" + }, + { + "chainId": 1, + "address": "0x869dbe51dc214fcb663604b0f7b548592f8c71f5", + "name": "Okidoki Social", + "symbol": "DOKI", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/27018/thumb/Okidoki_Logo.png?1661480220" + }, + { + "chainId": 1, + "address": "0x926be13b4d93f29ea254e4e518f33099e45d7f06", + "name": "POC Chain", + "symbol": "POCC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7718/thumb/logo_%281%29.png?1549956313" + }, + { + "chainId": 1, + "address": "0x84da8e731172827fcb233b911678e2a82e27baf2", + "name": "ANKR Reward Earning KSM", + "symbol": "AKSMB", + "decimals": 12, + "logoURI": "https://assets.coingecko.com/coins/images/26028/thumb/a-ksm-b-99bb6bfd6eddad0ce2a44dac4667ec34.png?1655349825" + }, + { + "chainId": 1, + "address": "0x4a6ab9792e9f046c3ab22d8602450de5186be9a7", + "name": "Polka Ventures", + "symbol": "POLVEN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14613/thumb/polven.png?1617253185" + }, + { + "chainId": 1, + "address": "0x6d614686550b9e1c1df4b2cd8f91c9d4df66c810", + "name": "Skeb", + "symbol": "SKEB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27155/thumb/skebcoin-cmc.png?1662206072" + }, + { + "chainId": 1, + "address": "0x06e0feb0d74106c7ada8497754074d222ec6bcdf", + "name": "Bitball", + "symbol": "BTB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7039/thumb/btb.png?1637556233" + }, + { + "chainId": 1, + "address": "0x83984d6142934bb535793a82adb0a46ef0f66b6d", + "name": "Remme", + "symbol": "REM", + "decimals": 4, + "logoURI": "https://assets.coingecko.com/coins/images/2152/thumb/semme.png?1561622861" + }, + { + "chainId": 1, + "address": "0xa984a92731c088f1ea4d53b71a2565a399f7d8d5", + "name": "International CryptoX", + "symbol": "INCX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4244/thumb/download_%2833%29.jpg?1547039576" + }, + { + "chainId": 1, + "address": "0x6c6ee5e31d828de241282b9606c8e98ea48526e2", + "name": "Holo", + "symbol": "HOT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3348/thumb/Holologo_Profile.png?1547037966" + }, + { + "chainId": 1, + "address": "0x75231f58b43240c9718dd58b4967c5114342a86c", + "name": "OKB", + "symbol": "OKB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4463/thumb/WeChat_Image_20220118095654.png?1642471050" + }, + { + "chainId": 1, + "address": "0x4af698b479d0098229dc715655c667ceb6cd8433", + "name": "MaidCoin", + "symbol": "MAID", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17571/thumb/610e48937e73535a83f92ae7_icon200.png?1628517343" + }, + { + "chainId": 1, + "address": "0x4b13a8a95da56773312ca0d4e0670530aa700fcf", + "name": "ZeroHybrid Network", + "symbol": "ZHT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18692/thumb/LOGO1_%287%29.png?1635230502" + }, + { + "chainId": 1, + "address": "0xa89ac6e529acf391cfbbd377f3ac9d93eae9664e", + "name": "Keep4r", + "symbol": "KP4R", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13006/thumb/kp4r.png?1604368813" + }, + { + "chainId": 1, + "address": "0xa953736904e23fafb42e353d4122420899999999", + "name": "Forbitspace", + "symbol": "FBS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25541/thumb/FBS-forbitspace-logo.png?1652265910" + }, + { + "chainId": 1, + "address": "0x5d929aa919e489505ccaad8a199619c6dca0c2de", + "name": "BaaSid", + "symbol": "BAAS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5463/thumb/baasid.png?1547041199" + }, + { + "chainId": 1, + "address": "0x799ebfabe77a6e34311eeee9825190b9ece32824", + "name": "Braintrust", + "symbol": "BTRST", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18100/thumb/braintrust.PNG?1630475394" + }, + { + "chainId": 1, + "address": "0x7051faed0775f664a0286af4f75ef5ed74e02754", + "name": "ChangeX", + "symbol": "CHANGE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26487/thumb/Changex-mark-200x200.png?1665655365" + }, + { + "chainId": 1, + "address": "0xc91a71a1ffa3d8b22ba615ba1b9c01b2bbbf55ad", + "name": "ZigZag", + "symbol": "ZZ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26141/thumb/zig_zag.?1656248564" + }, + { + "chainId": 1, + "address": "0x3541a5c1b04adaba0b83f161747815cd7b1516bc", + "name": "CitaDAO", + "symbol": "KNIGHT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22848/thumb/KNIGHT_TOKEN_LOGO.png?1643190758" + }, + { + "chainId": 1, + "address": "0xdad26bce7dcf59cd03a2455558e4dd73e1c07b66", + "name": "Trade win", + "symbol": "TWI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13060/thumb/Logo.png?1604821765" + }, + { + "chainId": 1, + "address": "0x006bea43baa3f7a6f765f14f10a1a1b08334ef45", + "name": "Stox", + "symbol": "STX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1230/thumb/stox-token.png?1547035256" + }, + { + "chainId": 1, + "address": "0x7dbbcae15d4db168e01673400d7844870cc1e36f", + "name": "WOLFY", + "symbol": "WOLFY", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/15742/thumb/Wofly.png?1621761884" + }, + { + "chainId": 1, + "address": "0x4efe8665e564bf454ccf5c90ee16817f7485d5cf", + "name": "BlackDragon", + "symbol": "BDT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13426/thumb/Black-Dragon-Black.png?1608515220" + }, + { + "chainId": 1, + "address": "0xe581f272706581f9dcc362df3c7934e99192c492", + "name": "PURR Vault NFTX ", + "symbol": "PURR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18329/thumb/purr.png?1631557276" + }, + { + "chainId": 1, + "address": "0xf8c595d070d104377f58715ce2e6c93e49a87f3c", + "name": "DACC", + "symbol": "DACC", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/4781/thumb/dacc-token.png?1547040122" + }, + { + "chainId": 1, + "address": "0xa29a8e360c0cba25a3719763fde43a1ee570271d", + "name": "OILage", + "symbol": "OIL", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/11232/thumb/download_%2812%29.png?1589767119" + }, + { + "chainId": 1, + "address": "0x6641b8df62e4b0e00d3b61f8eca63b2052404fd9", + "name": "Sanliurfaspor Token", + "symbol": "URFA", + "decimals": 2, + "logoURI": "https://assets.coingecko.com/coins/images/24816/thumb/urfa.png?1649029396" + }, + { + "chainId": 1, + "address": "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", + "name": "Wrapped stETH", + "symbol": "WSTETH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18834/thumb/wstETH.png?1633565443" + }, + { + "chainId": 1, + "address": "0xaba8cac6866b83ae4eec97dd07ed254282f6ad8a", + "name": "YAM v2", + "symbol": "YAMV2", + "decimals": 24, + "logoURI": "https://assets.coingecko.com/coins/images/12179/thumb/YAM-v2.png?1597892396" + }, + { + "chainId": 1, + "address": "0x0642026e7f0b6ccac5925b4e7fa61384250e1701", + "name": "H2O", + "symbol": "H2O", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25315/thumb/h2o_32.png?1651215712" + }, + { + "chainId": 1, + "address": "0xd56dac73a4d6766464b38ec6d91eb45ce7457c44", + "name": "Panvala Pan", + "symbol": "PAN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9543/thumb/pan-logo.png?1568674599" + }, + { + "chainId": 1, + "address": "0x06450dee7fd2fb8e39061434babcfc05599a6fb8", + "name": "XEN Crypto", + "symbol": "XEN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27713/thumb/Xen.jpeg?1665453190" + }, + { + "chainId": 1, + "address": "0x4bcea5e4d0f6ed53cf45e7a28febb2d3621d7438", + "name": "Modex", + "symbol": "MODEX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2851/thumb/LhWIeAg.png?1602566568" + }, + { + "chainId": 1, + "address": "0x382a1667c9062f0621362f49076ef6e4fe4c9ec7", + "name": "RushCoin", + "symbol": "RUSH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25053/thumb/Kax1yBSz_400x400.png?1649979044" + }, + { + "chainId": 1, + "address": "0x8a2279d4a90b6fe1c4b30fa660cc9f926797baa2", + "name": "Chromia", + "symbol": "CHR", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/5000/thumb/Chromia.png?1559038018" + }, + { + "chainId": 1, + "address": "0x8f0921f30555624143d427b340b1156914882c10", + "name": "FlypMe", + "symbol": "FYP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1098/thumb/flypme.png?1548126453" + }, + { + "chainId": 1, + "address": "0xd7d05bda4bf5876ba1254b3eaaf8b47d2f5676eb", + "name": "STABLE ASSET", + "symbol": "STA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12313/thumb/stable_200x200.png?1599083938" + }, + { + "chainId": 1, + "address": "0x8716fc5da009d3a208f0178b637a50f4ef42400f", + "name": "Ultrain", + "symbol": "UGAS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4684/thumb/ultrain.png?1547039956" + }, + { + "chainId": 1, + "address": "0x49642110b712c1fd7261bc074105e9e44676c68f", + "name": "DinoLFG", + "symbol": "DINO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28239/thumb/photo_2022-11-16_04-57-23.jpg?1668581540" + }, + { + "chainId": 1, + "address": "0xe4d75e9b493458d032a5c3cc1ee9b0712c1ece06", + "name": "Bitcci Cash", + "symbol": "BITCCA", + "decimals": 2, + "logoURI": "https://assets.coingecko.com/coins/images/25998/thumb/20574.png?1655276250" + }, + { + "chainId": 1, + "address": "0xe2db94e8d4e4144c336e45668a792d17d48a482c", + "name": "Nuvo Cash", + "symbol": "NUVO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11422/thumb/nuvo.png?1590109082" + }, + { + "chainId": 1, + "address": "0x2590f1fd14ef8bb0a46c7a889c4cbc146510f9c3", + "name": "Inverse Bitcoin Volatility Index Token", + "symbol": "IBTCV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16718/thumb/logo_-_2021-06-28T093119.133.png?1624843921" + }, + { + "chainId": 1, + "address": "0xa9aad2dc3a8315caeee5f458b1d8edc31d8467bd", + "name": "BTCMoon", + "symbol": "BTCM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1081/thumb/btcmoon.png?1547035045" + }, + { + "chainId": 1, + "address": "0x15492208ef531ee413bd24f609846489a082f74c", + "name": "PlayTreks", + "symbol": "TREKS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21378/thumb/trekscoin-200x200-tr.png?1639033673" + }, + { + "chainId": 1, + "address": "0x67954768e721fad0f0f21e33e874497c73ed6a82", + "name": "KeKChain", + "symbol": "KEK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27061/thumb/20220816_155427.png?1661668348" + }, + { + "chainId": 1, + "address": "0x44564d0bd94343f72e3c8a0d22308b7fa71db0bb", + "name": "BasketDAO", + "symbol": "BASK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14636/thumb/BASK_200_CIRCLE.png?1617494952" + }, + { + "chainId": 1, + "address": "0xaec2e87e0a235266d9c5adc9deb4b2e29b54d009", + "name": "SingularDTV", + "symbol": "SNGLS", + "decimals": 0, + "logoURI": "https://assets.coingecko.com/coins/images/521/thumb/singulardtv.png?1547034199" + }, + { + "chainId": 1, + "address": "0x4ad0b81f92b16624bbcf46fc0030cfbbf8d02376", + "name": "Unagii Dai", + "symbol": "UDAI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13782/thumb/uDAI.png?1611730113" + }, + { + "chainId": 1, + "address": "0x9d86b1b2554ec410eccffbf111a6994910111340", + "name": "Open Platform", + "symbol": "OPEN", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/2953/thumb/open-platform.png?1548330231" + }, + { + "chainId": 1, + "address": "0x6b74dd5d01f8320081247f5cf1f7a48324700db6", + "name": "UBU", + "symbol": "UBU", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/10686/thumb/NFGYEIaA_400x400_%281%29.png?1586763969" + }, + { + "chainId": 1, + "address": "0xa02120696c7b8fe16c09c749e4598819b2b0e915", + "name": "WXT Token", + "symbol": "WXT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8835/thumb/Wirex.jpg?1561970529" + }, + { + "chainId": 1, + "address": "0xbc5991ccd8caceba01edc44c2bb9832712c29cab", + "name": "Unagii USD Coin", + "symbol": "UUSDC", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/13781/thumb/uUSDC.png?1611729843" + }, + { + "chainId": 1, + "address": "0xde72a052cbb212eff11a4a33d61df9c5a2de8dd1", + "name": "Shuna Inuverse", + "symbol": "SHUNAV2", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/21526/thumb/Untitled-design-15.png?1639382131" + }, + { + "chainId": 1, + "address": "0x3a1bda28adb5b0a812a7cf10a1950c920f79bcd3", + "name": "Gameflip", + "symbol": "FLP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2173/thumb/flp.png?1547036470" + }, + { + "chainId": 1, + "address": "0x5bb29c33c4a3c29f56f8aca40b4db91d8a5fe2c5", + "name": "One Share", + "symbol": "ONS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13531/thumb/bss.a1671c75.png?1609452258" + }, + { + "chainId": 1, + "address": "0x981dc247745800bd2ca28a4bf147f0385eaa0bc0", + "name": "NutsDAO", + "symbol": "NUTS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28165/thumb/NSD.png?1668171752" + }, + { + "chainId": 1, + "address": "0x4612021c75809160be60db21fbc9d6add0b32def", + "name": "Block Commerce Protocol", + "symbol": "BCP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17562/thumb/BCP_200x200.png?1628234484" + }, + { + "chainId": 1, + "address": "0xe803178b48a0e560c2b19f3b3d4e504f79d229ce", + "name": "Bobcoin", + "symbol": "BOBC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24264/thumb/bobc.png?1647171532" + }, + { + "chainId": 1, + "address": "0x46d0dac0926fa16707042cadc23f1eb4141fe86b", + "name": "SONM", + "symbol": "SNM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/861/thumb/sonm.png?1548609871" + }, + { + "chainId": 1, + "address": "0x43044f861ec040db59a7e324c40507addb673142", + "name": "Cap", + "symbol": "CAP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11775/thumb/CAP.png?1594083244" + }, + { + "chainId": 1, + "address": "0xf3924df14812b3d3db29124aa9da4353ed5e04a3", + "name": "Easticoin", + "symbol": "ESTI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12988/thumb/EST2.png?1604093746" + }, + { + "chainId": 1, + "address": "0x7fe8dac51394157811c71bbf74c133a224a9ff44", + "name": "LiquidSwap", + "symbol": "LQD", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/23323/thumb/Cq7F8wZr_400x400.jpg?1643836712" + }, + { + "chainId": 1, + "address": "0xd8c4ef2d99c9f962180008418a5665fcc4b99ecd", + "name": "Redux Protocol", + "symbol": "RDX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26737/thumb/-L4oVsFB_400x400.png?1659935437" + }, + { + "chainId": 1, + "address": "0x22b48e1f20043d1db5f2a11cbf1d520a4f20b198", + "name": "Okuru", + "symbol": "XOT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25473/thumb/xot.png?1652005616" + }, + { + "chainId": 1, + "address": "0x6e1a58e7e9e801f32bb82462636a8a2e7b65e036", + "name": "LCG", + "symbol": "LCG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12851/thumb/LCG_token.jpg?1603083545" + }, + { + "chainId": 1, + "address": "0x66f73d0fd4161cfad4302dc145ff994375c13475", + "name": "DexGame", + "symbol": "DXGM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21084/thumb/dxgm-token.png?1638310949" + }, + { + "chainId": 1, + "address": "0x87a92428bbc876d463c21c8e51b903f127d9a9f4", + "name": "Advanced United Continent", + "symbol": "AUC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24369/thumb/200x200.png?1647441606" + }, + { + "chainId": 1, + "address": "0xca5d29b3e74d59ebcdf09111495d86f319886a40", + "name": "WHEY", + "symbol": "WHEY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14883/thumb/WHEY_logo_black_0421_v1.png?1618893173" + }, + { + "chainId": 1, + "address": "0xcdf7028ceab81fa0c6971208e83fa7872994bee5", + "name": "Threshold Network", + "symbol": "T", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22228/thumb/nFPNiSbL_400x400.jpg?1641220340" + }, + { + "chainId": 1, + "address": "0xc434b27736a6882d33094d34792999702860a13c", + "name": "Savix", + "symbol": "SVX", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/14591/thumb/savix_200px.png?1617160141" + }, + { + "chainId": 1, + "address": "0x3d9ac8e7a9c9be11dfac1677dda901e28d44527f", + "name": "Palace", + "symbol": "PAA", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/11141/thumb/da443cb2601f5fbdab9a2e176d62d6ce.png?1588911369" + }, + { + "chainId": 1, + "address": "0xa0b93b9e90ab887e53f9fb8728c009746e989b53", + "name": "The Standard Token", + "symbol": "TST", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20598/thumb/TheStandard-logo_variation-01.png?1668676004" + }, + { + "chainId": 1, + "address": "0x0c572544a4ee47904d54aaa6a970af96b6f00e1b", + "name": "Wasder", + "symbol": "WAS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15374/thumb/wasderBoxedLogoWhite-200x200.png?1659095342" + }, + { + "chainId": 1, + "address": "0x8ba6dcc667d3ff64c1a2123ce72ff5f0199e5315", + "name": "Alex", + "symbol": "ALEX", + "decimals": 4, + "logoURI": "https://assets.coingecko.com/coins/images/10972/thumb/ALEX.png?1586742545" + }, + { + "chainId": 1, + "address": "0x7c2e5b7ec572199d3841f6a38f7d4868bd0798f1", + "name": "Havy", + "symbol": "HAVY", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/6043/thumb/havy.png?1547041989" + }, + { + "chainId": 1, + "address": "0xcff20ce22e71ecf2ea89c86ecbd4a3cf513768c7", + "name": "Makes", + "symbol": "MKS", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/13318/thumb/MKS200.png?1607412065" + }, + { + "chainId": 1, + "address": "0xbc17729fdf562723f0267f79ff25ade441056d87", + "name": "Karus Starter", + "symbol": "KST", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18862/thumb/logo-only.png?1645962885" + }, + { + "chainId": 1, + "address": "0x7f0693074f8064cfbcf9fa6e5a3fa0e4f58ccccf", + "name": "we love gm", + "symbol": "GM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20284/thumb/froLiJ3p_400x400.jpg?1636808699" + }, + { + "chainId": 1, + "address": "0xcdc412f306e0c51e3249b88c65423cd16b322673", + "name": "Blockchain io", + "symbol": "BCIO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4168/thumb/BCIO_logo_square_256px.png?1547039429" + }, + { + "chainId": 1, + "address": "0x0b8057c3cc676c329c25c1d0cd27776efa73762d", + "name": "Megaweapon", + "symbol": "WEAPON", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/20833/thumb/weapon.png?1659792713" + }, + { + "chainId": 1, + "address": "0x9b9647431632af44be02ddd22477ed94d14aacaa", + "name": "KOK", + "symbol": "KOK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10502/thumb/logo_navy.png?1580250344" + }, + { + "chainId": 1, + "address": "0x178bf8fd04b47d2de3ef3f6b3d112106375ad584", + "name": "Unagii Tether USD", + "symbol": "UUSDT", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/13778/thumb/uUSDT.png?1611729448" + }, + { + "chainId": 1, + "address": "0x9d71ce49ab8a0e6d2a1e7bfb89374c9392fd6804", + "name": "NvirWorld", + "symbol": "NVIR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21359/thumb/Nvir_symbol.png?1639013234" + }, + { + "chainId": 1, + "address": "0x2a3bff78b79a009976eea096a51a948a3dc00e34", + "name": "Wilder World", + "symbol": "WILD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15407/thumb/WWLogo_Gradient_Cirlce.png?1620743969" + }, + { + "chainId": 1, + "address": "0x60acd58d00b2bcc9a8924fdaa54a2f7c0793b3b2", + "name": "MEME LTD", + "symbol": "MEME20", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17858/thumb/unnamed_%285%29.jpg?1629682905" + }, + { + "chainId": 1, + "address": "0xbec5938fd565cbec72107ee39cde1bc78049537d", + "name": "Swing DAO", + "symbol": "SWING", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27779/thumb/aUQKFUM.png?1665731942" + }, + { + "chainId": 1, + "address": "0x6a68de599e8e0b1856e322ce5bd11c5c3c79712b", + "name": "iBetYou", + "symbol": "IBY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16423/thumb/qvrS5aNM_400x400.jpg?1623988397" + }, + { + "chainId": 1, + "address": "0xcdb9d30a3ba48cdfcb0ecbe19317e6cf783672f1", + "name": "Mondo Community Coin", + "symbol": "MNDCC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18680/thumb/mndcc_bildmarke_256px.png?1632965673" + }, + { + "chainId": 1, + "address": "0x09617f6fd6cf8a71278ec86e23bbab29c04353a7", + "name": "Shardus", + "symbol": "ULT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8383/thumb/final_logo_photoshop.png?1557890272" + }, + { + "chainId": 1, + "address": "0xd031edafac6a6ae5425e77f936022e506444c242", + "name": "HERUKA TSANGNYON", + "symbol": "TSANGNYON", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27611/thumb/81b3e527-f8a9-47f7-8d4d-10f754f501c2.png?1664853112" + }, + { + "chainId": 1, + "address": "0x77700005bea4de0a78b956517f099260c2ca9a26", + "name": "Root", + "symbol": "ROOT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28366/thumb/root-200x200.png?1669907946" + }, + { + "chainId": 1, + "address": "0x4ece5c5cfb9b960a49aae739e15cdb6cfdcc5782", + "name": "Doont Buy", + "symbol": "DBUY", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/17895/thumb/VaxEiZ3.png?1629727429" + }, + { + "chainId": 1, + "address": "0x8eedefe828a0f16c8fc80e46a87bc0f1de2d960c", + "name": "DigiMetaverse", + "symbol": "DGMV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23701/thumb/DigiCorpLabs_token.png?1645081296" + }, + { + "chainId": 1, + "address": "0x6f620ec89b8479e97a6985792d0c64f237566746", + "name": "WePiggy Coin", + "symbol": "WPC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21914/thumb/WPC200.png?1640262945" + }, + { + "chainId": 1, + "address": "0x664c6e221c77313307467b121528ad563107bd01", + "name": "Tax Haven Inu", + "symbol": "TAXHAVENINU", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/27362/thumb/tax_haven_inu.png?1663665897" + }, + { + "chainId": 1, + "address": "0xc502002aeb1b9309fccb016adf50507987fc6c2b", + "name": "GNFT", + "symbol": "GNFT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23532/thumb/gnft_200x200.png?1644386728" + }, + { + "chainId": 1, + "address": "0x7ae1d57b58fa6411f32948314badd83583ee0e8c", + "name": "Dope Wars Paper", + "symbol": "PAPER", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18166/thumb/EQHGcBO__400x400.jpeg?1663726283" + }, + { + "chainId": 1, + "address": "0x679badc551626e01b23ceecefbc9b877ea18fc46", + "name": "Ccore", + "symbol": "CCO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1287/thumb/LOGO_CCO.png?1547035312" + }, + { + "chainId": 1, + "address": "0xfa14fa6958401314851a17d6c5360ca29f74b57b", + "name": "Saito", + "symbol": "SAITO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14750/thumb/SAITO.png?1626857406" + }, + { + "chainId": 1, + "address": "0xe884cc2795b9c45beeac0607da9539fd571ccf85", + "name": "Ultiledger", + "symbol": "ULT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6747/thumb/Ultiledger.jpeg?1547042996" + }, + { + "chainId": 1, + "address": "0xbcca60bb61934080951369a648fb03df4f96263c", + "name": "Aave USDC", + "symbol": "AUSDC", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/14318/thumb/aUSDC.e260d492.png?1615527797" + }, + { + "chainId": 1, + "address": "0x2ccbff3a042c68716ed2a2cb0c544a9f1d1935e1", + "name": "DMarket", + "symbol": "DMT", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/1602/thumb/dmarket.png?1547223830" + }, + { + "chainId": 1, + "address": "0x712db54daa836b53ef1ecbb9c6ba3b9efb073f40", + "name": "Aave ENJ v1", + "symbol": "AENJ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12484/thumb/aENJ.png?1600189443" + }, + { + "chainId": 1, + "address": "0x6361f338ab8def2af3f2a1be7bd8a7db3156f7e7", + "name": "Probably Nothing", + "symbol": "PRBLY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20193/thumb/pn.png?1645338665" + }, + { + "chainId": 1, + "address": "0x3d382228c54736d831fac2748f4734d9177c7332", + "name": "Aniverse", + "symbol": "ANV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16348/thumb/anv.PNG?1623794994" + }, + { + "chainId": 1, + "address": "0xfe76be9cec465ed3219a9972c21655d57d21aec6", + "name": "PalletOne", + "symbol": "PTN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6669/thumb/palletone.png?1548330460" + }, + { + "chainId": 1, + "address": "0x61107a409fffe1965126aa456af679719695c69c", + "name": "Umi Digital", + "symbol": "UMI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17874/thumb/Umi-200-x-200.png?1629700077" + }, + { + "chainId": 1, + "address": "0x17a79792fe6fe5c95dfe95fe3fcee3caf4fe4cb7", + "name": "Aave AMM USDT", + "symbol": "AAMMUSDT", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/17200/thumb/aAMMUSDT_2x.png?1626873261" + }, + { + "chainId": 1, + "address": "0x2df488b8a4270bac5c2ce5ff467a0c5fd2aa49d6", + "name": "Sharity", + "symbol": "SHARI", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/21796/thumb/HHGyEDIv_400x400.jpg?1640060553" + }, + { + "chainId": 1, + "address": "0x74b1af114274335598da72f5c6ed7b954a016eed", + "name": "HitBTC", + "symbol": "HIT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16395/thumb/JgMkz95.png?1623909204" + }, + { + "chainId": 1, + "address": "0xe1ba0fb44ccb0d11b80f92f4f8ed94ca3ff51d00", + "name": "Aave BAT v1", + "symbol": "ABAT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11726/thumb/aBAT.png?1593086569" + }, + { + "chainId": 1, + "address": "0xe340b25fe32b1011616bb8ec495a4d503e322177", + "name": "Aave AMM UniDAIUSDC", + "symbol": "AAMMUNIDAIUSDC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17218/thumb/aAmmUniDAIUSDC.png?1626878648" + }, + { + "chainId": 1, + "address": "0x7a939bb714fd2a48ebeb1e495aa9aaa74ba9fa68", + "name": "Electric Vehicle Zone", + "symbol": "EVZ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9456/thumb/kLohzILUIln6mHFYOlecpWjINVIH-BVghP2vRTeuD0XteaQa7Lpn4sLcuPN4gHw8MU2pKWZCJRNwBmyyl1CYxplCLDcgSVihMC7vvfmkepY-_O_ImWBA27s4pKNlhcBnBYrc8y5WH0ZB2CjmqPh-32nPslrv329tqFWr2DAR8dl4R5LZGgeZ1ubCdtMoUua6gEL3umYShHBxrYLto.jpg?1567563510" + }, + { + "chainId": 1, + "address": "0x6226caa1857afbc6dfb6ca66071eb241228031a1", + "name": "LinkArt", + "symbol": "LAR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8892/thumb/pB4iXZbU_400x400.jpg?1562579001" + }, + { + "chainId": 1, + "address": "0x2c9023bbc572ff8dc1228c7858a280046ea8c9e5", + "name": "Vivid Labs", + "symbol": "VID", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3376/thumb/1638280236344.jpg?1645083911" + }, + { + "chainId": 1, + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "name": "WETH", + "symbol": "WETH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2518/thumb/weth.png?1628852295" + }, + { + "chainId": 1, + "address": "0x7797c85b46f548eacc07c229f6cd207d6370442f", + "name": "Dog Tag", + "symbol": "TAG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26418/thumb/TAG_PNG.png?1657926565" + }, + { + "chainId": 1, + "address": "0x9a54a39a8d78cd6031636628a11c890124b1b5cf", + "name": "NFracTion", + "symbol": "NFTA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18693/thumb/nfta.png?1632984393" + }, + { + "chainId": 1, + "address": "0x476c5e26a75bd202a9683ffd34359c0cc15be0ff", + "name": "Serum", + "symbol": "SRM", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/11970/thumb/serum-logo.png?1597121577" + }, + { + "chainId": 1, + "address": "0x556148562d5ddeb72545d7ec4b3ec8edc8f55ba7", + "name": "Predix Network", + "symbol": "PRDX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12388/thumb/main-logo.png?1599531749" + }, + { + "chainId": 1, + "address": "0x8fa025e8342ead1037d2954b95333ff2bf57162b", + "name": "ShibaMax", + "symbol": "SMAX", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/16218/thumb/ShibaMax.png?1623652199" + }, + { + "chainId": 1, + "address": "0xf1d1a5306daae314af6c5d027a492b313e07e1a0", + "name": "Envoy", + "symbol": "ENV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19631/thumb/env.png?1638148461" + }, + { + "chainId": 1, + "address": "0x7cf74238d48ce383db00a1efff8da99303552cb0", + "name": "i9 Coin", + "symbol": "I9C", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/12399/thumb/Vvm9V6YM_400x400.png?1599556271" + }, + { + "chainId": 1, + "address": "0xb131f337c45d386ceec234e194b2663d5c3d9dcf", + "name": "iCommunity", + "symbol": "ICOM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23667/thumb/logo-icommunity.png?1644993652" + }, + { + "chainId": 1, + "address": "0xd7394087e1dbbe477fe4f1cf373b9ac9459565ff", + "name": "RealTract", + "symbol": "RET", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/5955/thumb/200-01.png?1547041895" + }, + { + "chainId": 1, + "address": "0xf12ec0d3dab64ddefbdc96474bde25af3fe1b327", + "name": "Stacy", + "symbol": "STACY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12986/thumb/Stacy.png?1604384468" + }, + { + "chainId": 1, + "address": "0xa0008f510fe9ee696e7e320c9e5cbf61e27791ee", + "name": "GAMB", + "symbol": "GMB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4497/thumb/gmb.png?1547039806" + }, + { + "chainId": 1, + "address": "0x920b73e4a8d27b9291efc762e88b3b676fcddaec", + "name": "Raise Finance", + "symbol": "RAISE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26393/thumb/RFI_Token_Logo.png?1657753383" + }, + { + "chainId": 1, + "address": "0x62dc4817588d53a056cbbd18231d91ffccd34b2a", + "name": "DeHive", + "symbol": "DHV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14926/thumb/logo_200x200.png?1626181831" + }, + { + "chainId": 1, + "address": "0x42476f744292107e34519f9c357927074ea3f75d", + "name": "Loom Network NEW ", + "symbol": "LOOM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14735/thumb/LOOM.png?1617967111" + }, + { + "chainId": 1, + "address": "0x8e0e57dcb1ce8d9091df38ec1bfc3b224529754a", + "name": "Moon Tropica", + "symbol": "CAH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28470/thumb/MTLOGO.png?1671001371" + }, + { + "chainId": 1, + "address": "0xade00c28244d5ce17d72e40330b1c318cd12b7c3", + "name": "Ambire AdEx", + "symbol": "ADX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/847/thumb/Ambire_AdEx_Symbol_color.png?1655432540" + }, + { + "chainId": 1, + "address": "0x69b148395ce0015c13e36bffbad63f49ef874e03", + "name": "DATA", + "symbol": "DTA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2604/thumb/data.png?1547036749" + }, + { + "chainId": 1, + "address": "0x817bbdbc3e8a1204f3691d14bb44992841e3db35", + "name": "Cudos", + "symbol": "CUDOS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13651/thumb/CudosIconTransparent.png?1610631426" + }, + { + "chainId": 1, + "address": "0x372c95ce229a7af37d141f627d09f6df1dbaa741", + "name": "ShibRobi", + "symbol": "SHIBORG", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/23505/thumb/_-5o_lop_400x400.jpg?1644297264" + }, + { + "chainId": 1, + "address": "0x048aa6e69d5117bd665af4128383a6982b8367b3", + "name": "VoxNET", + "symbol": "VXON", + "decimals": 4, + "logoURI": "https://assets.coingecko.com/coins/images/28369/thumb/VoxNETlogo.png?1669947735" + }, + { + "chainId": 1, + "address": "0xdb2f2bcce3efa95eda95a233af45f3e0d4f00e2a", + "name": "Aegis", + "symbol": "AGS", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/12391/thumb/logo-3.png?1599540071" + }, + { + "chainId": 1, + "address": "0x666d875c600aa06ac1cf15641361dec3b00432ef", + "name": "BTSE Token", + "symbol": "BTSE", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/10807/thumb/BTSE_logo_Square.jpeg?1583965964" + }, + { + "chainId": 1, + "address": "0x95172ccbe8344fecd73d0a30f54123652981bd6f", + "name": "Meridian Network", + "symbol": "LOCK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11687/thumb/LOCK_cropped.png?1599614902" + }, + { + "chainId": 1, + "address": "0xd6a55c63865affd67e2fb9f284f87b7a9e5ff3bd", + "name": "Switch", + "symbol": "ESH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8608/thumb/Cco9sLN.png?1603676332" + }, + { + "chainId": 1, + "address": "0x1aabf9b575e4329b8c8f272428ad5e43ab4aefc8", + "name": "Bugg Inu", + "symbol": "BUGG", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/16413/thumb/bugg.PNG?1623971743" + }, + { + "chainId": 1, + "address": "0x525794473f7ab5715c81d06d10f52d11cc052804", + "name": "12Ships", + "symbol": "TSHP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9351/thumb/12ships.png?1566485390" + }, + { + "chainId": 1, + "address": "0xda446fad08277b4d2591536f204e018f32b6831c", + "name": "NZD Stablecoin", + "symbol": "NZDS", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/20394/thumb/nzds.png?1636964381" + }, + { + "chainId": 1, + "address": "0xcb17cd357c7acd594717d899ecb9df540f633f27", + "name": "CoinDeal Token", + "symbol": "CDL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9960/thumb/2ZP5JaIL_400x400.jpg?1574233581" + }, + { + "chainId": 1, + "address": "0xf56842af3b56fd72d17cb103f92d027bba912e89", + "name": "BambooDeFi", + "symbol": "BAMBOO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13856/thumb/Bamboo-token-logo-200.png?1612404311" + }, + { + "chainId": 1, + "address": "0xd23367155b55d67492dfdc0fc7f8bb1df7114fd9", + "name": "AmpliFi", + "symbol": "AMPLIFI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26869/thumb/amplifi.jpg?1662611752" + }, + { + "chainId": 1, + "address": "0x804e26c4eff0bb196b805bdfb5b29ab828cf0b1f", + "name": "Whale Coin", + "symbol": "WHALE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10743/thumb/whalecoin200.png?1582835568" + }, + { + "chainId": 1, + "address": "0x626082f2c5ed30e228f9349a68ceb155c1c26e2d", + "name": "Lucky Shinu", + "symbol": "LUSHI", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/23645/thumb/output-onlinepngtools.png?1644910575" + }, + { + "chainId": 1, + "address": "0xa7f976c360ebbed4465c2855684d1aae5271efa9", + "name": "TrueFlip", + "symbol": "TFL", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/940/thumb/tfl.png?1634521414" + }, + { + "chainId": 1, + "address": "0xd9a947789974bad9be77e45c2b327174a9c59d71", + "name": "Ystar", + "symbol": "YSR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11575/thumb/256_256.png?1600495476" + }, + { + "chainId": 1, + "address": "0x0edf9bc41bbc1354c70e2107f80c42cae7fbbca8", + "name": "Instrumental Finance", + "symbol": "STRM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21407/thumb/HRZ0RUOh_400x400.jpg?1639088027" + }, + { + "chainId": 1, + "address": "0x72e203a17add19a3099137c9d7015fd3e2b7dba9", + "name": "BlockchainPoland", + "symbol": "BCP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8143/thumb/43Stz1Tw.png?1555551797" + }, + { + "chainId": 1, + "address": "0xc5019e129b75d380d3d837b8e609dec6c8f5d044", + "name": "GN", + "symbol": "GN", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/20207/thumb/gn_logo.png?1636911970" + }, + { + "chainId": 1, + "address": "0x4e432a62733a7ee38ad2e16b3cc0731457ea5b55", + "name": "QChain QDT", + "symbol": "QDT", + "decimals": 4, + "logoURI": "https://assets.coingecko.com/coins/images/26502/thumb/qdt_logo.png?1658366015" + }, + { + "chainId": 1, + "address": "0xb9eefc4b0d472a44be93970254df4f4016569d27", + "name": "DigitalBits", + "symbol": "XDB", + "decimals": 7, + "logoURI": "https://assets.coingecko.com/coins/images/8089/thumb/digitalbits-logo.jpg?1554454902" + }, + { + "chainId": 1, + "address": "0xa00425d3e2d3e9ff74f3e112b4d3a7978d7d88c2", + "name": "GoPower", + "symbol": "GPT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2991/thumb/82EMDIqURn_Y_O021ulWgQ.png?1547037256" + }, + { + "chainId": 1, + "address": "0xbfc5c333b096c6a171baa43bb2dfb321e05967da", + "name": "mini Mongoose", + "symbol": "MINIMONGOOSE", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/21443/thumb/6fpRJII.jpeg?1639144809" + }, + { + "chainId": 1, + "address": "0xc626e0619ac79afea9281c8eb9b1a9f9d3fab532", + "name": "Freedom Reserve", + "symbol": "FR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13342/thumb/J6uNL2FS_400x400.jpg?1607589046" + }, + { + "chainId": 1, + "address": "0x592481a5f6b4f078cc303c2cde4337dfa2d76fa0", + "name": "Sting", + "symbol": "STN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13760/thumb/sting.png?1611612491" + }, + { + "chainId": 1, + "address": "0x9559aaa82d9649c7a7b220e7c461d2e74c9a3593", + "name": "rETH", + "symbol": "RETH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14452/thumb/rETH.png?1616660903" + }, + { + "chainId": 1, + "address": "0x06f3c323f0238c72bf35011071f2b5b7f43a054c", + "name": "MASQ", + "symbol": "MASQ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13699/thumb/masq.png?1648364813" + }, + { + "chainId": 1, + "address": "0x35b55c25731e9b05b1d8480ba39463d52c9d0211", + "name": "Stonk Swap", + "symbol": "STONK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11690/thumb/PNG_logo_200px.png?1622340402" + }, + { + "chainId": 1, + "address": "0xe8663a64a96169ff4d95b4299e7ae9a76b905b31", + "name": "DPRating", + "symbol": "RATING", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/5383/thumb/dprating.png?1547224023" + }, + { + "chainId": 1, + "address": "0xb32ac3c79a94ac1eb258f3c830bbdbc676483c93", + "name": "OpenSwap", + "symbol": "OSWAP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15785/thumb/openswap.PNG?1621847093" + }, + { + "chainId": 1, + "address": "0xea7cc765ebc94c4805e3bff28d7e4ae48d06468a", + "name": "NearPad", + "symbol": "PAD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18117/thumb/coin-on-white.png?1630553114" + }, + { + "chainId": 1, + "address": "0xf16cd087e1c2c747b2bdf6f9a5498aa400d99c24", + "name": "iBG Finance ETH ", + "symbol": "IBG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18756/thumb/ibg.png?1633337424" + }, + { + "chainId": 1, + "address": "0x8d75959f1e61ec2571aa72798237101f084de63a", + "name": "Substratum", + "symbol": "SUB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/950/thumb/substratum.png?1548611133" + }, + { + "chainId": 1, + "address": "0x205ed31c867bf715e4182137af95afe9177cd8e7", + "name": "DEFY", + "symbol": "DEFY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26877/thumb/8ybr83fb0ca45cm1yvrcaclwbvcp.jpeg?1660622066" + }, + { + "chainId": 1, + "address": "0xbcc66ed2ab491e9ae7bf8386541fb17421fa9d35", + "name": "Skull", + "symbol": "SKULL", + "decimals": 4, + "logoURI": "https://assets.coingecko.com/coins/images/10641/thumb/skull.png?1581339740" + }, + { + "chainId": 1, + "address": "0x24ccedebf841544c9e6a62af4e8c2fa6e5a46fde", + "name": "BlueSparrow", + "symbol": "BLUESPARROW", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/26085/thumb/bluesparrow.?1655766000" + }, + { + "chainId": 1, + "address": "0xfc44ec51c80e35a87bc2140299b1636ec83dfb04", + "name": "Volt", + "symbol": "ACDC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5321/thumb/vivo.png?1548760105" + }, + { + "chainId": 1, + "address": "0x66a64a8a9cdc54ef97e45a051ba1c8f3d4b41a1d", + "name": "Baby Shiba Coin", + "symbol": "BABYSHIBA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22707/thumb/9CmjzSIW_400x400.jpg?1642457763" + }, + { + "chainId": 1, + "address": "0xe0a16435df493bd17a58cb2ee58675f5ea069517", + "name": "Greeneum Network", + "symbol": "GREEN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3069/thumb/Logo_web.png?1629084636" + }, + { + "chainId": 1, + "address": "0x7cc62d8e80be9bea3947f3443ad136f50f75b505", + "name": "Knekted", + "symbol": "KNT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6488/thumb/42318068_480165755801061_8741315709394485248_n.jpg?1565651343" + }, + { + "chainId": 1, + "address": "0x4838903d6319e483ab82ae3f09a1ec36489a4193", + "name": "Famous Coin", + "symbol": "FAMOUS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14416/thumb/famouscoin.jpg?1615951801" + }, + { + "chainId": 1, + "address": "0x351caa9045d65107b9d311d922d15887cfd634e4", + "name": "Arowana", + "symbol": "ARW", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17114/thumb/ARW_logo_final.jpg?1626616242" + }, + { + "chainId": 1, + "address": "0xce593a29905951e8fc579bc092eca72577da575c", + "name": "GROM", + "symbol": "GR", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/13216/thumb/gr.png?1606278269" + }, + { + "chainId": 1, + "address": "0xeadc218ac4cb7895a5a56e6484646b48f841c45a", + "name": "MetaFinance", + "symbol": "MFI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17365/thumb/meta.PNG?1627435447" + }, + { + "chainId": 1, + "address": "0x38d1b0d157529bd5d936719a8a5f8379afb24faa", + "name": "DataKYC", + "symbol": "DKYC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7123/thumb/1btu7Lp__400x400.jpg?1547043621" + }, + { + "chainId": 1, + "address": "0x8db90e3e7d04c875a51997092f9178fcac9defdb", + "name": "Portal", + "symbol": "PORTAL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6626/thumb/Nljbrphf_400x400.jpg?1547042827" + }, + { + "chainId": 1, + "address": "0x949bed886c739f1a3273629b3320db0c5024c719", + "name": "AMIS", + "symbol": "AMIS", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/8445/thumb/amis-newlogo.png?1559633345" + }, + { + "chainId": 1, + "address": "0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f", + "name": "Synthetix Network", + "symbol": "SNX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3406/thumb/SNX.png?1598631139" + }, + { + "chainId": 1, + "address": "0xc1a85faa09c7f7247899f155439c5488b43e8429", + "name": "Metagochi", + "symbol": "MGCHI", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/21403/thumb/Lw9uYzse_400x400.jpg?1639086534" + }, + { + "chainId": 1, + "address": "0x5e9997684d061269564f94e5d11ba6ce6fa9528c", + "name": "Vendit", + "symbol": "VNDT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18101/thumb/vndt.PNG?1630475586" + }, + { + "chainId": 1, + "address": "0x79c5a1ae586322a07bfb60be36e1b31ce8c84a1e", + "name": "Freight Trust Network", + "symbol": "EDI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11074/thumb/e6YLf6kD_400x400.jpg?1587970897" + }, + { + "chainId": 1, + "address": "0xbeef3bb9da340ebdf0f5bae2e85368140d7d85d0", + "name": "BuyMORE", + "symbol": "MORE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26769/thumb/0BD4687E-6C18-43D2-87C7-C5BC144B49D0_200x200.jpeg?1660040979" + }, + { + "chainId": 1, + "address": "0x2d39ec4da54329d28d230b4973f5aa27886c3aee", + "name": "NFX Coin", + "symbol": "NFXC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10694/thumb/nfx.png?1604656044" + }, + { + "chainId": 1, + "address": "0x3d658390460295fb963f54dc0899cfb1c30776df", + "name": "Circuits of Value", + "symbol": "COVAL", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/588/thumb/coval-logo.png?1599493950" + }, + { + "chainId": 1, + "address": "0x59e7b5db9be0bdd26fa048d39e01fee456ab674e", + "name": "Yearn Finance Bit2", + "symbol": "YFB2", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13064/thumb/yfb2_logo.png?1604884273" + }, + { + "chainId": 1, + "address": "0x6b175474e89094c44da98b954eedeac495271d0f", + "name": "Dai", + "symbol": "DAI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9956/thumb/4943.png?1636636734" + }, + { + "chainId": 1, + "address": "0x6f3009663470475f0749a6b76195375f95495fcb", + "name": "Hatch DAO", + "symbol": "HATCH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12526/thumb/hatch-dao.jpg?1600480488" + }, + { + "chainId": 1, + "address": "0x9043d4d51c9d2e31e3f169de4551e416970c27ef", + "name": "Prime DAI", + "symbol": "PDAI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12338/thumb/pdai-200px.png?1599136775" + }, + { + "chainId": 1, + "address": "0xf911a7ec46a2c6fa49193212fe4a2a9b95851c27", + "name": "Antiample", + "symbol": "XAMP", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/11925/thumb/antiample.png?1596168983" + }, + { + "chainId": 1, + "address": "0x0c9b3ab1bd0cf0745625381f5c3aa1cd9bbc7abb", + "name": "Exeno Coin", + "symbol": "EXN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25845/thumb/20323.png?1654145185" + }, + { + "chainId": 1, + "address": "0xea01906843ea8d910658a2c485ffce7c104ab2b6", + "name": "Qtoken", + "symbol": "QTO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26024/thumb/8QyOrTCm_400x400.jpg?1655332588" + }, + { + "chainId": 1, + "address": "0xc01a327e30b0fbf32861333f238b5c36a60abc09", + "name": "Again Project", + "symbol": "AGAIN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21384/thumb/-Jjz5ZxF_400x400.jpg?1639034594" + }, + { + "chainId": 1, + "address": "0xa9536b9c75a9e0fae3b56a96ac8edf76abc91978", + "name": "Amun DeFi Index", + "symbol": "DFI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16817/thumb/dfi.png?1644656347" + }, + { + "chainId": 1, + "address": "0x412d397ddca07d753e3e0c61e367fb1b474b3e7d", + "name": "8X8 Protocol", + "symbol": "EXE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9466/thumb/8x8_symbol_512x.png?1574320199" + }, + { + "chainId": 1, + "address": "0x27ad8e47c48063b209fa5ca14c8c46ece49b82d2", + "name": "Active World Rewards", + "symbol": "AWRT", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/24800/thumb/awrt.png?1648982991" + }, + { + "chainId": 1, + "address": "0x853bb55c1f469902f088a629db8c8803a9be3857", + "name": "Stable 1inch", + "symbol": "ONE1INCH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17934/thumb/one1INCH.png?1629859813" + }, + { + "chainId": 1, + "address": "0xc133529e57681b2999708f9458be5634e293995e", + "name": "Ethernaal", + "symbol": "NAAL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19909/thumb/miso-ethernaal-logo-256.png?1636104593" + }, + { + "chainId": 1, + "address": "0xe6710e0cda178f3d921f456902707b0d4c4a332b", + "name": "JULIEN", + "symbol": "JULIEN", + "decimals": 4, + "logoURI": "https://assets.coingecko.com/coins/images/12954/thumb/julien_logo.jpg?1603792446" + }, + { + "chainId": 1, + "address": "0xf56b164efd3cfc02ba739b719b6526a6fa1ca32a", + "name": "Curio Governance", + "symbol": "CGT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13607/thumb/QLwpua7.png?1610273891" + }, + { + "chainId": 1, + "address": "0x852e5427c86a3b46dd25e5fe027bb15f53c4bcb8", + "name": "NiiFi", + "symbol": "NIIFI", + "decimals": 15, + "logoURI": "https://assets.coingecko.com/coins/images/16033/thumb/niifi.PNG?1622674467" + }, + { + "chainId": 1, + "address": "0x5c147e74d63b1d31aa3fd78eb229b65161983b2b", + "name": "Wrapped Flow", + "symbol": "WFLOW", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24045/thumb/wrapped-flow.png?1646187143" + }, + { + "chainId": 1, + "address": "0x3475fc1d0d2e03761c19d5c7601fe476f0e02f80", + "name": "Beep", + "symbol": "BOTZ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27583/thumb/photo_2022-10-06_01-05-39.png?1665139287" + }, + { + "chainId": 1, + "address": "0x272f97b7a56a387ae942350bbc7df5700f8a4576", + "name": "Aave BAL", + "symbol": "ABAL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17242/thumb/aBAL_2x.png?1626940749" + }, + { + "chainId": 1, + "address": "0x72adadb447784dd7ab1f472467750fc485e4cb2d", + "name": "Worldcore", + "symbol": "WRC", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/1358/thumb/worldcore.png?1548761189" + }, + { + "chainId": 1, + "address": "0x24dcc881e7dd730546834452f21872d5cb4b5293", + "name": "Data Transaction XD", + "symbol": "XD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3460/thumb/xd_01.png?1560142295" + }, + { + "chainId": 1, + "address": "0x3758e00b100876c854636ef8db61988931bb8025", + "name": "Uniqly", + "symbol": "UNIQ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14808/thumb/Hnet-com-image.png?1618538742" + }, + { + "chainId": 1, + "address": "0x74beef5283f7605be17bd0bb3b118ad6ae9200e5", + "name": "Spooky Uni", + "symbol": "SPKU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27702/thumb/Spooky-Uni200x200.png?1665307264" + }, + { + "chainId": 1, + "address": "0xe29c5b523590165795bbd7d52369c2895b18841f", + "name": "Esports com", + "symbol": "ERT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1684/thumb/esports.jpg?1547035941" + }, + { + "chainId": 1, + "address": "0x6b5dde2c94ecc10c93e8a44288befad2a89bd657", + "name": "BARFIGHT", + "symbol": "BFIGHT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27491/thumb/Safeimagekit-resized-imgpng_%2819%29.png?1664256020" + }, + { + "chainId": 1, + "address": "0xf938424f7210f31df2aee3011291b658f872e91e", + "name": "Visor", + "symbol": "VISR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14381/thumb/visor_logo.png?1615782828" + }, + { + "chainId": 1, + "address": "0x11ebe21e9d7bf541a18e1e3ac94939018ce88f0b", + "name": "Pitch FXS", + "symbol": "PITCHFXS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28414/thumb/pitch.png?1670399849" + }, + { + "chainId": 1, + "address": "0x35101c731b1548b5e48bb23f99edbc2f5c341935", + "name": "BlackHoleSwap Compound DAI USDC", + "symbol": "BHSC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12347/thumb/blackhole.PNG?1599201917" + }, + { + "chainId": 1, + "address": "0xea319e87cf06203dae107dd8e5672175e3ee976c", + "name": "Surf Finance", + "symbol": "SURF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12982/thumb/surf_200x200.png?1604050261" + }, + { + "chainId": 1, + "address": "0xece8531550fc599ccb2c7734494fbc358d0a9483", + "name": "Phoenix Protocol", + "symbol": "PP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26883/thumb/newgoldPPlogotransparent.PNG?1670213168" + }, + { + "chainId": 1, + "address": "0xcaaa93712bdac37f736c323c93d4d5fdefcc31cc", + "name": "CRD Network", + "symbol": "CRD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2859/thumb/CRD.png?1623397651" + }, + { + "chainId": 1, + "address": "0x1a2277c83930b7a64c3e3d5544eaa8c4f946b1b7", + "name": "e Chat", + "symbol": "ECHT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1535/thumb/e-chat.png?1547035686" + }, + { + "chainId": 1, + "address": "0xd6c67b93a7b248df608a653d82a100556144c5da", + "name": "ExNetwork", + "symbol": "EXNT", + "decimals": 16, + "logoURI": "https://assets.coingecko.com/coins/images/12328/thumb/exnt_logo.png?1599102916" + }, + { + "chainId": 1, + "address": "0x74232704659ef37c08995e386a2e26cc27a8d7b1", + "name": "Strike", + "symbol": "STRK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14607/thumb/Jw-36llq_400x400.jpg?1617243607" + }, + { + "chainId": 1, + "address": "0x73c9275c3a2dd84b5741fd59aebf102c91eb033f", + "name": "Bitball Treasure", + "symbol": "BTRS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7273/thumb/btrs.png?1637556868" + }, + { + "chainId": 1, + "address": "0x182f4c4c97cd1c24e1df8fc4c053e5c47bf53bef", + "name": "keyTango", + "symbol": "TANGO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14349/thumb/2Fv6IUqc_400x400.jpg?1615513660" + }, + { + "chainId": 1, + "address": "0x793786e2dd4cc492ed366a94b88a3ff9ba5e7546", + "name": "Axia", + "symbol": "AXIAV3", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12906/thumb/axia_200x200.png?1613988058" + }, + { + "chainId": 1, + "address": "0xc1ad0aa69454603a5dee55cf9bd9341e01328544", + "name": "hiGAZERS", + "symbol": "HIGAZERS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28316/thumb/higazers.png?1669358592" + }, + { + "chainId": 1, + "address": "0x12300ed54f65648524c1bfaf86712927da6cc6fc", + "name": "MOVE Network", + "symbol": "MOVD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19236/thumb/MOVD_logo.png?1634772468" + }, + { + "chainId": 1, + "address": "0x16587cf43f044aba0165ffa00acf412631194e4b", + "name": "Simracer Coin", + "symbol": "SRC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13027/thumb/SimRacer-500px.png?1604456794" + }, + { + "chainId": 1, + "address": "0x805ea9c07b49dd23ce11ec66dc6d8a2957385035", + "name": "Transient", + "symbol": "TSCT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19061/thumb/200x200_%2833%29.png?1634266319" + }, + { + "chainId": 1, + "address": "0xa31b1767e09f842ecfd4bc471fe44f830e3891aa", + "name": "Roobee", + "symbol": "ROOBEE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8791/thumb/Group_11.png?1580344629" + }, + { + "chainId": 1, + "address": "0xb453f1f2ee776daf2586501361c457db70e1ca0f", + "name": "AGA Rewards", + "symbol": "AGAR", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/14207/thumb/AR256.png?1614931200" + }, + { + "chainId": 1, + "address": "0x47d49d010c03b40f88f422502d694ff49fe6c9c8", + "name": "Giresunspor Token", + "symbol": "GRS", + "decimals": 2, + "logoURI": "https://assets.coingecko.com/coins/images/24810/thumb/18444.png?1649024268" + }, + { + "chainId": 1, + "address": "0xbede1f59fa4412556fef69f1b9969f2003e3f8c1", + "name": "Meta MVRS", + "symbol": "MVRS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22140/thumb/mvrs-200x200.png?1640926136" + }, + { + "chainId": 1, + "address": "0x88d50b466be55222019d71f9e8fae17f5f45fca1", + "name": "Cryptaur", + "symbol": "CPT", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/2481/thumb/n3w6Z9xW_400x400.jpg?1548224365" + }, + { + "chainId": 1, + "address": "0xff603f43946a3a28df5e6a73172555d8c8b02386", + "name": "OneRoot Network", + "symbol": "RNT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2520/thumb/OneRootNetwork.PNG?1558014608" + }, + { + "chainId": 1, + "address": "0xe41d2489571d322189246dafa5ebde1f4699f498", + "name": "0x", + "symbol": "ZRX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/863/thumb/0x.png?1547034672" + }, + { + "chainId": 1, + "address": "0x1c7bbadc81e18f7177a95eb1593e5f5f35861b10", + "name": "Auric Network", + "symbol": "AUSCM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13015/thumb/auric-1-high-res_icon_300_PNG.png?1604384136" + }, + { + "chainId": 1, + "address": "0x752efadc0a7e05ad1bcccda22c141d01a75ef1e4", + "name": "CompliFi", + "symbol": "COMFI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15006/thumb/complifi.PNG?1619413977" + }, + { + "chainId": 1, + "address": "0xa3665c69213bb9affcf92ab90100fbe273e3ab74", + "name": "D RUNT", + "symbol": "DRNT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28245/thumb/d-run_ticker_200x200.png?1668590995" + }, + { + "chainId": 1, + "address": "0x1c7ede23b1361acc098a1e357c9085d131b34a01", + "name": "ShineDAO", + "symbol": "SHN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20555/thumb/SHN-Logo.png?1653470622" + }, + { + "chainId": 1, + "address": "0x2904b9b16652d7d0408eccfa23a19d4a3358230f", + "name": "Puriever", + "symbol": "PURE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12600/thumb/200x200_pure_logo.png?1600999358" + }, + { + "chainId": 1, + "address": "0x9f978aa425148cdd9223eb175446a877b86727ff", + "name": "PayYoda", + "symbol": "YOT", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/13632/thumb/w_72D81R_400x400.png?1610492214" + }, + { + "chainId": 1, + "address": "0x7d4b8cce0591c9044a22ee543533b72e976e36c3", + "name": "Change", + "symbol": "CAG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1021/thumb/200x200.png?1610766224" + }, + { + "chainId": 1, + "address": "0xe63d6b308bce0f6193aec6b7e6eba005f41e36ab", + "name": "Stone", + "symbol": "STN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14593/thumb/stone-logo.png?1617164796" + }, + { + "chainId": 1, + "address": "0x3983c6da8235f59e16a034ee773e60a69e8f14b2", + "name": "Fairmint", + "symbol": "FAIR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27109/thumb/fairmint.png?1662881621" + }, + { + "chainId": 1, + "address": "0xf88b137cfa667065955abd17525e89edcf4d6426", + "name": "iTrust Governance", + "symbol": "ITG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16713/thumb/anchor.png?1624840761" + }, + { + "chainId": 1, + "address": "0x321c2fe4446c7c963dc41dd58879af648838f98d", + "name": "Cryptex Finance", + "symbol": "CTX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14932/thumb/glossy_icon_-_C200px.png?1619073171" + }, + { + "chainId": 1, + "address": "0x2fd61567c29e7adb4ca17e60e1f4a3fcfe68acb8", + "name": "SymVerse", + "symbol": "SYM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9449/thumb/Picture1.png?1567551375" + }, + { + "chainId": 1, + "address": "0xa0f0546eb5e3ee7e8cfc5da12e5949f3ae622675", + "name": "Tokoin", + "symbol": "TOKO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8807/thumb/TOKOIN_LOGO_%28no_text%29.png?1646664093" + }, + { + "chainId": 1, + "address": "0xf8ed6c51762208ff26f8f3e4efd4e06af2da649c", + "name": "Alldex Alliance", + "symbol": "AXA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9438/thumb/alldex.png?1569122383" + }, + { + "chainId": 1, + "address": "0x0a6e18fb2842855c3af925310b0f50a4bfa17909", + "name": "CoinPoker", + "symbol": "CHP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1808/thumb/coinpoker.jpg?1547036113" + }, + { + "chainId": 1, + "address": "0x42726d074bba68ccc15200442b72afa2d495a783", + "name": "Isiklar Coin", + "symbol": "ISIKC", + "decimals": 4, + "logoURI": "https://assets.coingecko.com/coins/images/10992/thumb/logo_%2866%29.png?1586940186" + }, + { + "chainId": 1, + "address": "0x24692791bc444c5cd0b81e3cbcaba4b04acd1f3b", + "name": "Unikoin Gold", + "symbol": "UKG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1120/thumb/unikoin-gold.png?1548759441" + }, + { + "chainId": 1, + "address": "0x8207c1ffc5b6804f6024322ccf34f29c3541ae26", + "name": "Origin Protocol", + "symbol": "OGN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3296/thumb/op.jpg?1547037878" + }, + { + "chainId": 1, + "address": "0xba485b556399123261a5f9c95d413b4f93107407", + "name": "Gravitationally Bound AURA", + "symbol": "GRAVIAURA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26368/thumb/graviaura.png?1657606852" + }, + { + "chainId": 1, + "address": "0xcf9c692f7e62af3c571d4173fd4abf9a3e5330d0", + "name": "Onigiri", + "symbol": "ONIGIRI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12699/thumb/onigiri-coingecko.png?1601857724" + }, + { + "chainId": 1, + "address": "0x68a3637ba6e75c0f66b61a42639c4e9fcd3d4824", + "name": "MoonSwap", + "symbol": "MOON", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12441/thumb/moon.jpg?1599880968" + }, + { + "chainId": 1, + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "name": "Tether", + "symbol": "USDT", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/325/thumb/Tether.png?1668148663" + }, + { + "chainId": 1, + "address": "0x9f7fc686cfd64aa5ae15b351d03071e91533094b", + "name": "Trace Network Labs", + "symbol": "TRACE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23266/thumb/Token_Icon_02.png?1655797843" + }, + { + "chainId": 1, + "address": "0x9b2b931d6ab97b6a887b2c5d8529537e6fe73ebe", + "name": "All In", + "symbol": "ALLIN", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/28411/thumb/IMG_20221206_124556_908.png?1670387132" + }, + { + "chainId": 1, + "address": "0x4fbb0b4cd8f960ac3428194f1c94c805d5b35836", + "name": "BigBang Game", + "symbol": "BBGC", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/7719/thumb/rxpRt7tH_400x400.jpg?1549957251" + }, + { + "chainId": 1, + "address": "0x3be7bf1a5f23bd8336787d0289b70602f1940875", + "name": "VIDT DAO", + "symbol": "VIDT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27552/thumb/VIDTDAO_logo.png?1670333277" + }, + { + "chainId": 1, + "address": "0xd533a949740bb3306d119cc777fa900ba034cd52", + "name": "Curve DAO", + "symbol": "CRV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12124/thumb/Curve.png?1597369484" + }, + { + "chainId": 1, + "address": "0x4e3fbd56cd56c3e72c1403e103b45db9da5b9d2b", + "name": "Convex Finance", + "symbol": "CVX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15585/thumb/convex.png?1621256328" + }, + { + "chainId": 1, + "address": "0x8ae340d333ffb274969f505a6520b91024bc856c", + "name": "The Dragon Gate", + "symbol": "KOI", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/26730/thumb/koi.png?1659882726" + }, + { + "chainId": 1, + "address": "0x0d02755a5700414b26ff040e1de35d337df56218", + "name": "BendDAO", + "symbol": "BEND", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22829/thumb/benddao.PNG?1642664553" + }, + { + "chainId": 1, + "address": "0x24efe6b87bf1bfe9ea2ccb5a9d0a959c7172b364", + "name": "Global AEX", + "symbol": "GAT", + "decimals": 0, + "logoURI": "https://assets.coingecko.com/coins/images/7008/thumb/a3b65903bffb6e47b225bdd70c635701.png?1601426171" + }, + { + "chainId": 1, + "address": "0xf6c0aa7ebfe9992200c67e5388e4f42da49e1783", + "name": "Psyche", + "symbol": "USD1", + "decimals": 2, + "logoURI": "https://assets.coingecko.com/coins/images/13661/thumb/Psyche-logo-256.png?1610600682" + }, + { + "chainId": 1, + "address": "0xbea0000029ad1c77d3d5d23ba2d8893db9d1efab", + "name": "Bean", + "symbol": "BEAN", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/18447/thumb/bean-logo-coingecko.png?1632090495" + }, + { + "chainId": 1, + "address": "0x1da87b114f35e1dc91f72bf57fc07a768ad40bb0", + "name": "Equalizer", + "symbol": "EQZ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14741/thumb/X2p5mb2f_400x400.png?1618005664" + }, + { + "chainId": 1, + "address": "0x9c7376b5060c47e555f5f53005aa3d5a7c66f2fb", + "name": "Swapify", + "symbol": "SWIFY", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/28402/thumb/photo_2022-12-04_03-17-07.jpg?1670300125" + }, + { + "chainId": 1, + "address": "0x547b2f82cecfab9c2b1d36fdda96ef9f58c63b8c", + "name": "Taxa Network", + "symbol": "TXT", + "decimals": 18 + }, + { + "chainId": 1, + "address": "0x8ef47555856f6ce2e0cd7c36aef4fab317d2e2e2", + "name": "PayAccept", + "symbol": "PAYT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12513/thumb/logo.png?1603801944" + }, + { + "chainId": 1, + "address": "0xefc996ce8341cd36c55412b51df5bbca429a7617", + "name": "Metaverse Index Token", + "symbol": "METAI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22233/thumb/16782.png?1641247980" + }, + { + "chainId": 1, + "address": "0x0af44e2784637218dd1d32a322d44e603a8f0c6a", + "name": "MATRYX", + "symbol": "MTX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1495/thumb/matryx.png?1547978542" + }, + { + "chainId": 1, + "address": "0x4c11249814f11b9346808179cf06e71ac328c1b5", + "name": "Oraichain", + "symbol": "ORAI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12931/thumb/orai.png?1647077378" + }, + { + "chainId": 1, + "address": "0x41b3f18c6384dc9a39c33afeca60d9b8e61eaa9f", + "name": "Noah Decentralized State Coin", + "symbol": "NOAHP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3442/thumb/FvG3XweD.png?1610437675" + }, + { + "chainId": 1, + "address": "0x1378ec93ab2b07ba5a0eaef19cf354a33f64b9fd", + "name": "Yearn Finance Diamond", + "symbol": "YFDT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12824/thumb/yfdt_logo.png?1602814305" + }, + { + "chainId": 1, + "address": "0x667102bd3413bfeaa3dffb48fa8288819e480a88", + "name": "Tokenize Xchange", + "symbol": "TKX", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/4984/thumb/Tokenize.png?1561602968" + }, + { + "chainId": 1, + "address": "0xc18c07a18198a6340cf4d94855fe5eb6dd33b46e", + "name": "QLINDO", + "symbol": "QLINDO", + "decimals": 0, + "logoURI": "https://assets.coingecko.com/coins/images/26851/thumb/21315.png?1660467490" + }, + { + "chainId": 1, + "address": "0x7707aada3ce7722ac63b91727daf1999849f6835", + "name": "Bankera", + "symbol": "BNK", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/1949/thumb/bankera.png?1650883375" + }, + { + "chainId": 1, + "address": "0x945facb997494cc2570096c74b5f66a3507330a1", + "name": "mStable BTC", + "symbol": "MBTC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13973/thumb/mbtc.png?1613485921" + }, + { + "chainId": 1, + "address": "0xd44bb6663936cab1310584a277f7daa6943d4904", + "name": "Winco", + "symbol": "WCO", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/3628/thumb/Webp.net-resizeimage_%281%29.png?1547038550" + }, + { + "chainId": 1, + "address": "0xf8eb56c7e4e3c885c905a19583bf41644d35aa0a", + "name": "PIXLS Vault NFTX ", + "symbol": "PIXLS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18351/thumb/pixls.png?1631604206" + }, + { + "chainId": 1, + "address": "0x0770e5018b71f5fbda00f42dd13507e03d101a90", + "name": "Niros", + "symbol": "NIROS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22409/thumb/oJEphc3R_400x400.jpg?1641797798" + }, + { + "chainId": 1, + "address": "0xc0a4df35568f116c370e6a6a6022ceb908eeddac", + "name": "Umee", + "symbol": "UMEE", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/20635/thumb/1Ab_Umee_Brand_Icon_Full_Color.png?1645018295" + }, + { + "chainId": 1, + "address": "0x68a9d92fe19399feebed6a9a0980a7ea7638074c", + "name": "Iqoniq", + "symbol": "IQQ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14672/thumb/IQONIQ-Cointransparant.png?1617678461" + }, + { + "chainId": 1, + "address": "0x69fa8e7f6bf1ca1fb0de61e1366f7412b827cc51", + "name": "EnreachDAO", + "symbol": "NRCH", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/14694/thumb/enreachdao.jpg?1617813758" + }, + { + "chainId": 1, + "address": "0x607c794cda77efb21f8848b7910ecf27451ae842", + "name": "DeFiPie", + "symbol": "PIE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11956/thumb/98j5E_EG_400x400.png?1596644614" + }, + { + "chainId": 1, + "address": "0xfd4168e642ebd04c3684a6cdb3a5e86de85d3908", + "name": "The APIS", + "symbol": "API", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14055/thumb/Screenshot_2022-03-10_at_11.09.50_AM.png?1646882043" + }, + { + "chainId": 1, + "address": "0x986ee2b944c42d017f52af21c4c69b84dbea35d8", + "name": "BitMart", + "symbol": "BMX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5236/thumb/bitmart-token.png?1548835017" + }, + { + "chainId": 1, + "address": "0xb13d747d783bf1a9f1d65df74c080c890045f17e", + "name": "Foundation", + "symbol": "FND", + "decimals": 7, + "logoURI": "https://assets.coingecko.com/coins/images/28099/thumb/ddsaaa.png?1667538993" + }, + { + "chainId": 1, + "address": "0x65def5029a0e7591e46b38742bfedd1fb7b24436", + "name": "Kanpeki", + "symbol": "KAE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18833/thumb/kanpeki-logo-square_2.png?1633628384" + }, + { + "chainId": 1, + "address": "0xc150bac3cd3678acb2c093e433bed40a6ef08542", + "name": "Shiny", + "symbol": "SHINY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20832/thumb/shiny-token-200px.png?1637734428" + }, + { + "chainId": 1, + "address": "0x7de91b204c1c737bcee6f000aaa6569cf7061cb7", + "name": "Robonomics Network", + "symbol": "XRT", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/7024/thumb/Robonomics-Network-logo.png?1547043451" + }, + { + "chainId": 1, + "address": "0x5f20f15d40f24dae50a72be3b5edddddfb5a5bd0", + "name": "Bobamask", + "symbol": "BOBA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24072/thumb/200_x_200_logo.png?1651220892" + }, + { + "chainId": 1, + "address": "0x5caf454ba92e6f2c929df14667ee360ed9fd5b26", + "name": "Dev Protocol", + "symbol": "DEV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11560/thumb/Dev_Protocol__CoinGecko_Logo___Jan.18.2021_.png?1611021474" + }, + { + "chainId": 1, + "address": "0xca3ea3061d638e02113aa960340c98343b5acd62", + "name": "Bittwatt", + "symbol": "BWT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4777/thumb/bittwatt.png?1547274101" + }, + { + "chainId": 1, + "address": "0x89bd2e7e388fab44ae88bef4e1ad12b4f1e0911c", + "name": "Peanut", + "symbol": "NUX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13958/thumb/2sAMZXpO_400x400.jpg?1613353972" + }, + { + "chainId": 1, + "address": "0xa5e412ba6fca1e07b15defcaa4236ff7b5a7f086", + "name": "Crypto Bank", + "symbol": "CBANK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13473/thumb/HHeUVDBF5clKgE4vW_dyCtcTZqWDRw_vDe1MA3lIJWI4wEZW2BwF5dHFbm_ZpJNTWf85sZxCBVl2R7u29kGg37bE8XkGh3CneW6SkVwbnQEe0r2WR6yy6THxMvzIMiicWza82-NyjMitEo84_2E_C5LCiBcdTPFrjNQiMs1DTSJuaRTNB81KRsdcXNW0p2j7PH8O7Xk3QrWVjPe.jpg?1608853514" + }, + { + "chainId": 1, + "address": "0x308564dc5217c39386f5eae96545159e1d396661", + "name": "HLP", + "symbol": "HLP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12668/thumb/simbolo-hlp-token.png?1601467816" + }, + { + "chainId": 1, + "address": "0xcc1c0fbaecf0fe1c4703d77ec284cdf8a06253c5", + "name": "Catcher DAO", + "symbol": "CDAO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26747/thumb/logo200.png?1660014948" + }, + { + "chainId": 1, + "address": "0x3c6da7763caa0e4b684bbc733f04a8ec08af3762", + "name": "MODEL X coin", + "symbol": "MODX", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/6603/thumb/LOGO-MODX.png?1547042808" + }, + { + "chainId": 1, + "address": "0x603778e5e07e180e300bd10df7fa626313a206b2", + "name": "WIZ Protocol", + "symbol": "WIZ", + "decimals": 4, + "logoURI": "https://assets.coingecko.com/coins/images/28069/thumb/logo_WIZ.png?1670297648" + }, + { + "chainId": 1, + "address": "0xe22020f47b7378dfedcedd2c81d4137c22fe1152", + "name": "My Liquidity Partner", + "symbol": "MLP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26204/thumb/4xZ5Nb52_400x400.jpg?1656491493" + }, + { + "chainId": 1, + "address": "0xb1e9157c2fdcc5a856c8da8b2d89b6c32b3c1229", + "name": "Zenfuse", + "symbol": "ZEFU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12796/thumb/zenfuse.jpg?1602640333" + }, + { + "chainId": 1, + "address": "0x1456688345527be1f37e9e627da0837d6f08c925", + "name": "USDP Stablecoin", + "symbol": "USDP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13234/thumb/USDP.png?1606579598" + }, + { + "chainId": 1, + "address": "0xf6af18f94d55b8888b557cb3da0ec623ba245f80", + "name": "SocialBlox", + "symbol": "SBLX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24769/thumb/x86VE7oQ.png?1648817788" + }, + { + "chainId": 1, + "address": "0xeb7355c2f217b3485a591332fe13c8c5a76a581d", + "name": "Jubi Token", + "symbol": "JT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10994/thumb/Af5MFcVY_400x400.jpg?1586998222" + }, + { + "chainId": 1, + "address": "0x1e2d230c7a7f4c679fb1378f1f51dedeae85cd72", + "name": "PYROmatic", + "symbol": "PYRO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26662/thumb/PYRO.png?1669792973" + }, + { + "chainId": 1, + "address": "0x102203517ce35ac5cab9a2cda80df03f26c7419b", + "name": "SUMOTEX", + "symbol": "SMTX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27478/thumb/Sumotex_telegram_image_PNG.jpg?1664198249" + }, + { + "chainId": 1, + "address": "0xad6a626ae2b43dcb1b39430ce496d2fa0365ba9c", + "name": "PieDAO DEFI Small Cap", + "symbol": "DEFI+S", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12701/thumb/DefiS.png?1601862595" + }, + { + "chainId": 1, + "address": "0x76306f029f8f99effe509534037ba7030999e3cf", + "name": "Acreage Coin", + "symbol": "ACR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5100/thumb/acreage-coin.jpg?1547040494" + }, + { + "chainId": 1, + "address": "0x15d4c048f83bd7e37d49ea4c83a07267ec4203da", + "name": "GALA", + "symbol": "GALA", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/12493/thumb/GALA-COINGECKO.png?1600233435" + }, + { + "chainId": 1, + "address": "0x2b591e99afe9f32eaa6214f7b7629768c40eeb39", + "name": "HEX", + "symbol": "HEX", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/10103/thumb/HEX-logo.png?1575942673" + }, + { + "chainId": 1, + "address": "0x6e0615a03ed9527a6013fcd5b556e36ef4dab1ff", + "name": "HNB Protocol", + "symbol": "HNB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26182/thumb/HNB_200x200.png?1656383307" + }, + { + "chainId": 1, + "address": "0xca3fe04c7ee111f0bbb02c328c699226acf9fd33", + "name": "SEEN", + "symbol": "SEEN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13052/thumb/seen_logo.png?1604678509" + }, + { + "chainId": 1, + "address": "0xff709449528b6fb6b88f557f7d93dece33bca78d", + "name": "ApeUSD", + "symbol": "APEUSD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25621/thumb/ApeUSD.png?1652857577" + }, + { + "chainId": 1, + "address": "0x15334dcb171e8b65d6650321581dca83be870115", + "name": "Wrapped BIND", + "symbol": "WBIND", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/13055/thumb/o1w2cBW.png?1604720921" + }, + { + "chainId": 1, + "address": "0x7603de2ea4cbceb0250118de03fcb70fe1e8e935", + "name": "AMC Fight Night", + "symbol": "AMC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17290/thumb/amc.PNG?1627252646" + }, + { + "chainId": 1, + "address": "0x77c07555af5ffdc946fb47ce15ea68620e4e7170", + "name": "Breezecoin", + "symbol": "BRZE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6727/thumb/breezecoin.png?1547563369" + }, + { + "chainId": 1, + "address": "0x2ee543b8866f46cc3dc93224c6742a8911a59750", + "name": "MetaVerse Dog", + "symbol": "MVDG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23581/thumb/imgonline-com-ua-Resize-5J7DYgBqxK7I.png?1644646598" + }, + { + "chainId": 1, + "address": "0xb20043f149817bff5322f1b928e89abfc65a9925", + "name": "EXRT Network", + "symbol": "EXRT", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/5954/thumb/exrt.png?1616039881" + }, + { + "chainId": 1, + "address": "0xa49811140e1d6f653dec28037be0924c811c4538", + "name": "PR F Protocol", + "symbol": "PRUF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27482/thumb/prufu-200x200_1.png?1664246561" + }, + { + "chainId": 1, + "address": "0x374fb05c96c36348b92e38fb088b26b8511e3b3d", + "name": "CROWD", + "symbol": "CWD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24125/thumb/cwd.png?1646463219" + }, + { + "chainId": 1, + "address": "0xfc98e825a2264d890f9a1e68ed50e1526abccacd", + "name": "Moss Carbon Credit", + "symbol": "MCO2", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14414/thumb/ENtxnThA_400x400.jpg?1615948522" + }, + { + "chainId": 1, + "address": "0x84bb947fcedba6b9c7dcead42df07e113bb03007", + "name": "Stater", + "symbol": "STR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14476/thumb/str.png?1639046202" + }, + { + "chainId": 1, + "address": "0x7a83ff237e7870d8d6c3485920ebe654d2841315", + "name": "hiOD", + "symbol": "HIOD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28238/thumb/hiod.png?1668579474" + }, + { + "chainId": 1, + "address": "0xb837b6467b4878fb5b3b81664042852593f15126", + "name": "BitValve", + "symbol": "BTV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20681/thumb/bitvalve-icon-200x200.png?1637551577" + }, + { + "chainId": 1, + "address": "0x95e40e065afb3059dcabe4aaf404c1f92756603a", + "name": "King DAG", + "symbol": "KDAG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10809/thumb/3xcLUorv_400x400.jpg?1591000563" + }, + { + "chainId": 1, + "address": "0xa143ac515dca260a46c742c7251ef3b268639593", + "name": "Bulk Network", + "symbol": "BULK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15266/thumb/Bulk_whale_round.png?1620285364" + }, + { + "chainId": 1, + "address": "0x1da01e84f3d4e6716f274c987ae4bee5dc3c8288", + "name": "DeFi Bids", + "symbol": "BID", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12344/thumb/IMG_20200919_115022_477.png?1600739441" + }, + { + "chainId": 1, + "address": "0x420412e765bfa6d85aaac94b4f7b708c89be2e2b", + "name": "Brazilian Digital", + "symbol": "BRZ", + "decimals": 4, + "logoURI": "https://assets.coingecko.com/coins/images/8472/thumb/2_vtiD3xwce9knG2COxtSMaQ.png?1597786961" + }, + { + "chainId": 1, + "address": "0x8c7e3b5e720b7a9bbcf15c38be5b657bb2b71dba", + "name": "GreenTek", + "symbol": "GTE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21770/thumb/small-200x200-logo.png?1639994780" + }, + { + "chainId": 1, + "address": "0xed91879919b71bb6905f23af0a68d231ecf87b14", + "name": "DMM Governance", + "symbol": "DMG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11677/thumb/dmm.png?1592674690" + }, + { + "chainId": 1, + "address": "0x86696431d6aca9bae5ce6536ecf5d437f2e6dba2", + "name": "SoftChain", + "symbol": "SCC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6613/thumb/FgUyfr6K_400x400.jpg?1547042814" + }, + { + "chainId": 1, + "address": "0xb893a8049f250b57efa8c62d51527a22404d7c9a", + "name": "American Shiba", + "symbol": "USHIBA", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/15650/thumb/american_shiba.PNG?1621476610" + }, + { + "chainId": 1, + "address": "0xf5717f5df41ea67ef67dfd3c1d02f9940bcf5d08", + "name": "SeChain", + "symbol": "SNN", + "decimals": 3, + "logoURI": "https://assets.coingecko.com/coins/images/11961/thumb/2AsGMTeI_400x400.jpg?1596453536" + }, + { + "chainId": 1, + "address": "0x24bcec1afda63e622a97f17cff9a61ffcfd9b735", + "name": "Crab Market", + "symbol": "CRAB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28356/thumb/200-icon.png?1669776793" + }, + { + "chainId": 1, + "address": "0x669db4c47f89f21554ebd825a744888725fd9491", + "name": "hiPENGUINS", + "symbol": "HIPENGUINS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28381/thumb/63856bebcd8c700001b23c42_hiPENGUINS-_Logo.png?1669974038" + }, + { + "chainId": 1, + "address": "0x6b3595068778dd592e39a122f4f5a5cf09c90fe2", + "name": "Sushi", + "symbol": "SUSHI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12271/thumb/512x512_Logo_no_chop.png?1606986688" + }, + { + "chainId": 1, + "address": "0xe49214e4c92dc9bcb3b56c1309afe0d626dd730e", + "name": "SynchroCoin", + "symbol": "SYC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1469/thumb/ud643DVg.png?1621828021" + }, + { + "chainId": 1, + "address": "0xa66daa57432024023db65477ba87d4e7f5f95213", + "name": "Huobi Pool", + "symbol": "HPT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6628/thumb/Huobi_pool_token.png?1547042829" + }, + { + "chainId": 1, + "address": "0xacfa209fb73bf3dd5bbfb1101b9bc999c49062a5", + "name": "EvidenZ", + "symbol": "BCDT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2014/thumb/evidenz-512.png?1594871754" + }, + { + "chainId": 1, + "address": "0x320623b8e4ff03373931769a31fc52a4e78b5d70", + "name": "Reserve Rights", + "symbol": "RSR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8365/thumb/rsr.png?1637983320" + }, + { + "chainId": 1, + "address": "0x99d8a9c45b2eca8864373a26d1459e3dff1e17f3", + "name": "Magic Internet Money", + "symbol": "MIM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16786/thumb/mimlogopng.png?1624979612" + }, + { + "chainId": 1, + "address": "0xe1030b48b2033314979143766d7dc1f40ef8ce11", + "name": "The People s Coin", + "symbol": "PEEPS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16777/thumb/CoinGecko_updated_200_by_200.png?1629548157" + }, + { + "chainId": 1, + "address": "0x0a0db74ef8b4480cc29b7d68647727feeb1ea4ec", + "name": "GLEX", + "symbol": "GLEX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11609/thumb/1578901576974.png?1591777246" + }, + { + "chainId": 1, + "address": "0x0fbe9cc858d7ad6e246fe9d01aed22abd2a66f0b", + "name": "Danat Coin", + "symbol": "DNC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13170/thumb/1528717728file.png?1605855085" + }, + { + "chainId": 1, + "address": "0x05fc938cc60fb71381514877d66478bab7e2e1ce", + "name": "SUPERCATS", + "symbol": "S-CATS", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/26675/thumb/Supercats_logo.png?1659517034" + }, + { + "chainId": 1, + "address": "0x7968bc6a03017ea2de509aaa816f163db0f35148", + "name": "Hedget", + "symbol": "HGET", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/12453/thumb/Hedget.png?1599944809" + }, + { + "chainId": 1, + "address": "0xba100000625a3754423978a60c9317c58a424e3d", + "name": "Balancer", + "symbol": "BAL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11683/thumb/Balancer.png?1592792958" + }, + { + "chainId": 1, + "address": "0x328c4c80bc7aca0834db37e6600a6c49e12da4de", + "name": "Aave SNX v1", + "symbol": "ASNX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11733/thumb/aSNX.png?1593085047" + }, + { + "chainId": 1, + "address": "0x7f1f2d3dfa99678675ece1c243d3f7bc3746db5d", + "name": "TapX", + "symbol": "TAP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13942/thumb/tapx.png?1652444051" + }, + { + "chainId": 1, + "address": "0xc7bba5b765581efb2cdd2679db5bea9ee79b201f", + "name": "Gems", + "symbol": "GEM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3945/thumb/Webp.net-resizeimage_%2817%29.jpg?1547038970" + }, + { + "chainId": 1, + "address": "0xf680429328caaacabee69b7a9fdb21a71419c063", + "name": "Butterfly Protocol", + "symbol": "BFLY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13882/thumb/ButterflyProtocolNoText_sm.png?1612492535" + }, + { + "chainId": 1, + "address": "0xc242eb8e4e27eae6a2a728a41201152f19595c83", + "name": "EcoFi", + "symbol": "ECO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14803/thumb/logo_-_2021-04-16T081409.817.png?1618532056" + }, + { + "chainId": 1, + "address": "0xd0c37cda48fe5d6ee7132181a90dc58206db5404", + "name": "INKz", + "symbol": "INKZ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21860/thumb/INKZ_TOKEN.png?1640149351" + }, + { + "chainId": 1, + "address": "0xbf4a9a37ecfc21825011285222c36ab35de51f14", + "name": "Nyan V2", + "symbol": "NYAN-2", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13093/thumb/v2-logo.png?1605067493" + }, + { + "chainId": 1, + "address": "0x952b65d976e8669c4ce92a17cce5b2586912adb5", + "name": "Etrade", + "symbol": "ETT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9111/thumb/NkGLvEO2_400x400.jpg?1564435046" + }, + { + "chainId": 1, + "address": "0xf0fac7104aac544e4a7ce1a55adf2b5a25c65bd1", + "name": "Pamp Network", + "symbol": "PAMP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11546/thumb/pMqJaqDK_400x400.jpg?1595199126" + }, + { + "chainId": 1, + "address": "0x227c7df69d3ed1ae7574a1a7685fded90292eb48", + "name": "Milady Vault NFTX ", + "symbol": "MILADY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26540/thumb/256x256.png?1658730893" + }, + { + "chainId": 1, + "address": "0x5fdfe5ee55ae0fb7e0dba3481ea46f22fc92cbbb", + "name": "McDoge", + "symbol": "MCDOGE", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/23096/thumb/IL1fIBa.png?1643183135" + }, + { + "chainId": 1, + "address": "0xd6caf5bd23cf057f5fccce295dcc50c01c198707", + "name": "Evanesco Network", + "symbol": "EVA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16722/thumb/evan.PNG?1624849154" + }, + { + "chainId": 1, + "address": "0x71e368ed06814bf35d4e663eff946400a5bc8115", + "name": "Degrain", + "symbol": "DGRN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27570/thumb/degrain.jpeg?1664778517" + }, + { + "chainId": 1, + "address": "0x70e8de73ce538da2beed35d14187f6959a8eca96", + "name": "XSGD", + "symbol": "XSGD", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/12832/thumb/StraitsX_Singapore_Dollar_%28XSGD%29_Token_Logo.png?1633936813" + }, + { + "chainId": 1, + "address": "0x34748fedad669c788aabe4fb325a4587941f7b48", + "name": "Tosa Inu", + "symbol": "TOS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27248/thumb/Capture6.JPG?1662891903" + }, + { + "chainId": 1, + "address": "0x1ffe8a8177d3c261600a8bd8080d424d64b7fbc2", + "name": "Metroverse", + "symbol": "MET", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23303/thumb/met.png?1644054503" + }, + { + "chainId": 1, + "address": "0xf3eb8b90c763b8b2b53e7819ac27eca8f94c8ec2", + "name": "EtherSmart", + "symbol": "ETM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18019/thumb/ethersmart.PNG?1630281887" + }, + { + "chainId": 1, + "address": "0x00a7ec2f2b451cb0233e8adbf4c9a951027c2b02", + "name": "hiENS4", + "symbol": "HIENS4", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26921/thumb/62f9ec6fd1c44e000102051d_MicrosoftTeams-image.png?1660817481" + }, + { + "chainId": 1, + "address": "0xa11bd36801d8fa4448f0ac4ea7a62e3634ce8c7c", + "name": "Allbridge", + "symbol": "ABR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18690/thumb/abr.png?1640742053" + }, + { + "chainId": 1, + "address": "0x7b123f53421b1bf8533339bfbdc7c98aa94163db", + "name": "dfohub", + "symbol": "BUIDL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11131/thumb/buidllogo.png?1599577041" + }, + { + "chainId": 1, + "address": "0xf80d589b3dbe130c270a69f1a69d050f268786df", + "name": "Datamine", + "symbol": "DAM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11695/thumb/qxsFH8W.png?1592880463" + }, + { + "chainId": 1, + "address": "0x294559fa758c88d639fd085751e463fee7806eab", + "name": "Metal Blockchain", + "symbol": "METAL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27222/thumb/metal-chain.png?1662685566" + }, + { + "chainId": 1, + "address": "0x71a28feaee902966dc8d355e7b8aa427d421e7e0", + "name": "LunchDAO", + "symbol": "LUNCH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25808/thumb/200x200.png?1653979480" + }, + { + "chainId": 1, + "address": "0x1e4ec900dd162ebaf6cf76cfe8a546f34d7a483d", + "name": "Tuzlaspor Token", + "symbol": "TUZLA", + "decimals": 2, + "logoURI": "https://assets.coingecko.com/coins/images/24812/thumb/Tuzlaspors-Token-Supply-Started-at-Bitexen-980x400.png?1649024989" + }, + { + "chainId": 1, + "address": "0x6347978f54f75d76630b819897f9ce68c83ce2a2", + "name": "Cordium", + "symbol": "CORD", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/28013/thumb/IMG-20221026-WA0025.png?1666947806" + }, + { + "chainId": 1, + "address": "0x7105faa4a26ed1c67b8b2b41bec98f06ee21d105", + "name": "X7105", + "symbol": "X7105", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28423/thumb/X7105_LOGO_black_back_200_x_200_px.png?1670460916" + }, + { + "chainId": 1, + "address": "0x8a845fc339ceb022a695281554890429a34df120", + "name": "MangoChain", + "symbol": "MGP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11140/thumb/JJLGKTqL8jZunfdW5-gyQYxZBeCoHoLzoXfpaEwVYARssAaJoObmOxIRqz0f1oMRIbiMWP0Jfq1aM99-_aEI3fqoMvpUy2sD-d5ZGZAR3gxeY26OQrom9MmaY7GmONjoLebGcdA3r0IVlLxKhtcAO2XJrirbnXO6RxsJbImGPLlkE7c8KxH4Y1zjnAMqHi7xgv7PnV5iwpEiIUa.jpg?1588910984" + }, + { + "chainId": 1, + "address": "0xfae4ee59cdd86e3be9e8b90b53aa866327d7c090", + "name": "CPChain", + "symbol": "CPC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2760/thumb/cpchain.png?1547036953" + }, + { + "chainId": 1, + "address": "0xd49374d1d6d2b2d793035a0116f2b0d19230de26", + "name": "Bishu Finance", + "symbol": "BISHUFI", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/19606/thumb/bishu.jpeg?1635492531" + }, + { + "chainId": 1, + "address": "0x3c72fca8523686fd9e5740b0826fa4bb376e0241", + "name": "300FIT", + "symbol": "FIT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9690/thumb/6mkyI4Ss_400x400.png?1570832640" + }, + { + "chainId": 1, + "address": "0x336f646f87d9f6bc6ed42dd46e8b3fd9dbd15c22", + "name": "Crystal Clear", + "symbol": "CCT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/995/thumb/crystal-clear.png?1547034897" + }, + { + "chainId": 1, + "address": "0xeb986da994e4a118d5956b02d8b7c3c7ce373674", + "name": "Gather", + "symbol": "GTH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12458/thumb/Gather-Logo-Working-File.png?1599981686" + }, + { + "chainId": 1, + "address": "0x3432b6a60d23ca0dfca7761b7ab56459d9c964d0", + "name": "Frax Share", + "symbol": "FXS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13423/thumb/ethCanonicalFXS.png?1669276861" + }, + { + "chainId": 1, + "address": "0x4e08f03079c5cd3083ea331ec61bcc87538b7665", + "name": "DoubleDice", + "symbol": "DODI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21035/thumb/crEjNfhF_400x400.jpg?1638250608" + }, + { + "chainId": 1, + "address": "0x5c59a5b139b0538cb106d775a022cad98dd14b5a", + "name": "XREATORS", + "symbol": "ORT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25678/thumb/XREATORS_ORT_Logo.png?1653548310" + }, + { + "chainId": 1, + "address": "0xa88842ae47dbe87116cf7001dddd1b246fcd8262", + "name": "hiENS3", + "symbol": "HIENS3", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27262/thumb/hiens3.png?1663059024" + }, + { + "chainId": 1, + "address": "0x9ff58f4ffb29fa2266ab25e75e2a8b3503311656", + "name": "Aave WBTC", + "symbol": "AWBTC", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/14244/thumb/aWBTC.41453c2a.png?1615528721" + }, + { + "chainId": 1, + "address": "0xdecade1c6bf2cd9fb89afad73e4a519c867adcf5", + "name": "Experty Wisdom", + "symbol": "WIS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13133/thumb/n0MTVBrm_400x400.jpg?1605543934" + }, + { + "chainId": 1, + "address": "0xddd6a0ecc3c6f6c102e5ea3d8af7b801d1a77ac8", + "name": "UniX", + "symbol": "UNIX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20674/thumb/unix.png?1663499268" + }, + { + "chainId": 1, + "address": "0x25f8087ead173b73d6e8b84329989a8eea16cf73", + "name": "Yield Guild Games", + "symbol": "YGG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17358/thumb/le1nzlO6_400x400.jpg?1632465691" + }, + { + "chainId": 1, + "address": "0xba3e5f8b4200a5eb856ff2c3e001ab29444491aa", + "name": "Minebase", + "symbol": "MBASE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27313/thumb/mbase.png?1663312352" + }, + { + "chainId": 1, + "address": "0x94d863173ee77439e4292284ff13fad54b3ba182", + "name": "Delphi", + "symbol": "ADEL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12300/thumb/adel_on_white_10x.png?1598967061" + }, + { + "chainId": 1, + "address": "0x3b58c52c03ca5eb619eba171091c86c34d603e5f", + "name": "Cyclub", + "symbol": "CYCLUB", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/12524/thumb/mcicoin-logo.png?1600471686" + }, + { + "chainId": 1, + "address": "0xfdc4a3fc36df16a78edcaf1b837d3acaaedb2cb4", + "name": "SCIFI Index", + "symbol": "SCIFI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13868/thumb/yaxtD4c.png?1624955109" + }, + { + "chainId": 1, + "address": "0x1be56412c9606e7285280f76a105eba56996e491", + "name": "Zinja", + "symbol": "Z", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/24513/thumb/DPaP9wkr_400x400.jpg?1647950008" + }, + { + "chainId": 1, + "address": "0x73ee6d7e6b203125add89320e9f343d65ec7c39a", + "name": "Axioms", + "symbol": "AXI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12562/thumb/axioms_logo.png?1600772415" + }, + { + "chainId": 1, + "address": "0xc3eb2622190c57429aac3901808994443b64b466", + "name": "ORO", + "symbol": "ORO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13114/thumb/oro_logo.png?1605338447" + }, + { + "chainId": 1, + "address": "0x1370e3b7aa261dcbe19ee24c456e56ff186aec85", + "name": "Max Bidding", + "symbol": "MAX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26936/thumb/BPIJ7HUN_400x400.jpg?1660901132" + }, + { + "chainId": 1, + "address": "0x04a6b6de116fb8bf57e5ee8b05e0293ea3639fe8", + "name": "Proof Of Memes Ethereum", + "symbol": "ETH20", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27305/thumb/Screenshot_2022-09-22_173342-removebg-preview.png?1664112523" + }, + { + "chainId": 1, + "address": "0xa4cb0dce4849bdcad2d553e9e68644cf40e26cce", + "name": "Baked", + "symbol": "BAKED", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19178/thumb/rebaked-logo-full.png?1634613132" + }, + { + "chainId": 1, + "address": "0x217bed0d3a967d063eb287445a1eccac5c2e09bc", + "name": "PowerFan", + "symbol": "PFAN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25899/thumb/white_logo.png?1654500723" + }, + { + "chainId": 1, + "address": "0x429881672b9ae42b8eba0e26cd9c73711b891ca5", + "name": "Pickle Finance", + "symbol": "PICKLE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12435/thumb/0M4W6Yr6_400x400.jpg?1643006080" + }, + { + "chainId": 1, + "address": "0x9c78ee466d6cb57a4d01fd887d2b5dfb2d46288f", + "name": "Must", + "symbol": "MUST", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13688/thumb/must_logo.png?1610949645" + }, + { + "chainId": 1, + "address": "0xe1bad922f84b198a08292fb600319300ae32471b", + "name": "Firmachain", + "symbol": "FCT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9892/thumb/6mHcLurm_400x400.jpg?1573160342" + }, + { + "chainId": 1, + "address": "0xe66b3aa360bb78468c00bebe163630269db3324f", + "name": "Merchant", + "symbol": "MTO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17157/thumb/mto.PNG?1626672046" + }, + { + "chainId": 1, + "address": "0xcaabcaa4ca42e1d86de1a201c818639def0ba7a7", + "name": "Talken", + "symbol": "TALK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18146/thumb/4NNLx3BF_400x400.jpg?1630675291" + }, + { + "chainId": 1, + "address": "0xdef1da03061ddd2a5ef6c59220c135dec623116d", + "name": "Lepricon", + "symbol": "L3P", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14436/thumb/l3p.png?1636116065" + }, + { + "chainId": 1, + "address": "0x741b0428efdf4372a8df6fb54b018db5e5ab7710", + "name": "ARTX", + "symbol": "ARTX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14652/thumb/logo_black_cmc.png?1617556500" + }, + { + "chainId": 1, + "address": "0xcf0c122c6b73ff809c693db761e7baebe62b6a2e", + "name": "FLOKI", + "symbol": "FLOKI", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/16746/thumb/PNG_image.png?1643184642" + }, + { + "chainId": 1, + "address": "0x4674672bcddda2ea5300f5207e1158185c944bc0", + "name": "Gem Exchange and Trading", + "symbol": "GXT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12226/thumb/a.png?1653378779" + }, + { + "chainId": 1, + "address": "0x87cdc02f0812f08cd50f946793706fad9c265e2d", + "name": "Storage Area Network Anywhere", + "symbol": "SANA", + "decimals": 16, + "logoURI": "https://assets.coingecko.com/coins/images/17666/thumb/20210811154811.png?1628815808" + }, + { + "chainId": 1, + "address": "0x36e43065e977bc72cb86dbd8405fae7057cdc7fd", + "name": "ArchAngel", + "symbol": "ARCHA", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/18814/thumb/ARCHA200x200.png?1633714225" + }, + { + "chainId": 1, + "address": "0x6e10aacb89a28d6fa0fe68790777fec7e7f01890", + "name": "SAV3", + "symbol": "SAV3", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13132/thumb/sav3_logo.png?1605536471" + }, + { + "chainId": 1, + "address": "0x3a8d5bc8a8948b68dfc0ce9c14ac4150e083518c", + "name": "Paralink Network", + "symbol": "PARA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15789/thumb/para.PNG?1621893038" + }, + { + "chainId": 1, + "address": "0x473037de59cf9484632f4a27b509cfe8d4a31404", + "name": "STEPN Green Satoshi Token on ETH", + "symbol": "GST-ETH", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/26528/thumb/gst_eth.png?1658487279" + }, + { + "chainId": 1, + "address": "0xc86817249634ac209bc73fca1712bbd75e37407d", + "name": "1 UP", + "symbol": "1-UP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17376/thumb/1up.png?1636535847" + }, + { + "chainId": 1, + "address": "0x428dc22668e6f3468273634067e5545ed5417a3e", + "name": "MiraQle", + "symbol": "MQL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12278/thumb/2VTVSgXn_400x400.jpg?1598738364" + }, + { + "chainId": 1, + "address": "0x6524b87960c2d573ae514fd4181777e7842435d4", + "name": "Benzene", + "symbol": "BZN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17368/thumb/bzn-logo-200.png?1627437320" + }, + { + "chainId": 1, + "address": "0x2610f0bfc21ef389fe4d03cfb7de9ac1e6c99d6e", + "name": "Skyrim Finance", + "symbol": "SKYRIM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18003/thumb/Xo3oCb53_400x400.png?1630096304" + }, + { + "chainId": 1, + "address": "0xe75097d3ec88701361e670e065b8d5bc4dafbc9d", + "name": "Vanspor Token", + "symbol": "VAN", + "decimals": 2, + "logoURI": "https://assets.coingecko.com/coins/images/24814/thumb/E0t1GdwXMAcMoGD.png?1649028292" + }, + { + "chainId": 1, + "address": "0x75387e1287dd85482ab66102da9f6577e027f609", + "name": "Mindsync", + "symbol": "MAI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7581/thumb/mindsync-logo.jpg?1548636745" + }, + { + "chainId": 1, + "address": "0xc5bbae50781be1669306b9e001eff57a2957b09d", + "name": "Gifto", + "symbol": "GTO", + "decimals": 5, + "logoURI": "https://assets.coingecko.com/coins/images/1359/thumb/gifto.png?1547742697" + }, + { + "chainId": 1, + "address": "0x466912baa9430a4a460b141ee8c580d817441449", + "name": "BLOCKMAX", + "symbol": "OCB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12315/thumb/200x200-01.png?1599086761" + }, + { + "chainId": 1, + "address": "0x8e964e35a76103af4c7d7318e1b1a82c682ae296", + "name": "Fellaz", + "symbol": "FLZ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26169/thumb/NUERy1Wy_400x400.png?1656336115" + }, + { + "chainId": 1, + "address": "0xed279fdd11ca84beef15af5d39bb4d4bee23f0ca", + "name": "LUSD3CRV f", + "symbol": "LUSD3CRV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28321/thumb/curve-dao-token-crv-logo.png?1669372858" + }, + { + "chainId": 1, + "address": "0xf53c24f7729c88c110265929c7124e6259efccab", + "name": "Bobo Cash", + "symbol": "BOBO", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/17620/thumb/bobo_coingecko.png?1628667747" + }, + { + "chainId": 1, + "address": "0xcbccbb06f572df174a7da47684cdc28121fec421", + "name": "The Tale of Osaku", + "symbol": "OSAKU", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/26953/thumb/photo_2022-08-12_05-35-57.jpg?1660988433" + }, + { + "chainId": 1, + "address": "0xef53462838000184f35f7d991452e5f25110b207", + "name": "Knit Finance", + "symbol": "KFT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15632/thumb/knit.jpg?1621396114" + }, + { + "chainId": 1, + "address": "0x469084939d1c20fae3c73704fe963941c51be863", + "name": "Envision", + "symbol": "VIS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23907/thumb/J3JCKVq2.png?1645681725" + }, + { + "chainId": 1, + "address": "0xd0a2e008eb1f160fa6055a28d5224034d8f527f7", + "name": "Marosca Inu", + "symbol": "MAROSCA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27881/thumb/Cr3sFSxf_400x400.jpg?1666233042" + }, + { + "chainId": 1, + "address": "0x52a047ee205701895ee06a375492490ec9c597ce", + "name": "PulseMarkets", + "symbol": "PULSE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19011/thumb/photo_2021-11-11_06-24-09.jpg?1636616734" + }, + { + "chainId": 1, + "address": "0x88800092ff476844f74dc2fc427974bbee2794ae", + "name": "Ambire Wallet", + "symbol": "WALLET", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23154/thumb/wallet.PNG?1643352408" + }, + { + "chainId": 1, + "address": "0xd4342a57ecf2fe7ffa37c33cb8f63b1500e575e6", + "name": "Apron", + "symbol": "APN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14916/thumb/1_GOjoDhGzzpqnMPGpHGeWhg.png?1618998577" + }, + { + "chainId": 1, + "address": "0x805c2077f3ab224d889f9c3992b41b2f4722c787", + "name": "art Q NFT Investment Fund", + "symbol": "ARTEQ", + "decimals": 0, + "logoURI": "https://assets.coingecko.com/coins/images/23407/thumb/arteq.png?1644146442" + }, + { + "chainId": 1, + "address": "0x5273063725a43a323300c502478c22fbb4e92c2d", + "name": "My Identity Coin", + "symbol": "MYID", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15063/thumb/MYID-LOGO.png?1619594142" + }, + { + "chainId": 1, + "address": "0xcda4e840411c00a614ad9205caec807c7458a0e3", + "name": "PureFi", + "symbol": "UFI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17341/thumb/purefi.PNG?1627362147" + }, + { + "chainId": 1, + "address": "0xd049206fb408a611e543791f2d8f102a8bc253dc", + "name": "NFTDAO", + "symbol": "NAO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22576/thumb/NAO.png?1642083280" + }, + { + "chainId": 1, + "address": "0x2b67d1a87a8d8b280a23e97bc55095215ee0ec53", + "name": "Crypto Price Index", + "symbol": "CPI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12178/thumb/Z7x7eUa.png?1597886884" + }, + { + "chainId": 1, + "address": "0x383518188c0c6d7730d91b2c03a03c837814a899", + "name": "Olympus v1", + "symbol": "OHM", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/21496/thumb/OHM.jpg?1639620224" + }, + { + "chainId": 1, + "address": "0x147ab744f058a52e828bee84a9c58660f2ff5ff9", + "name": "n00dle", + "symbol": "N00D", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27850/thumb/%E8%9E%A2%E5%B9%95%E6%88%AA%E5%9C%96_2022-10-17_%E4%B8%8B%E5%8D%888.36.07.png?1666092864" + }, + { + "chainId": 1, + "address": "0xaa2ded323944b25c0b6f1f891bc96f010b65622c", + "name": "Radioreum", + "symbol": "THERADIO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28485/thumb/Safeimagekit-resized-imgpng.png?1671077173" + }, + { + "chainId": 1, + "address": "0xa291b47efe802de81ac425c67d2b8d2925fa31a4", + "name": "MoveRich", + "symbol": "MVRC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28176/thumb/MoveRich_logo%28200x200%29.png?1668247458" + }, + { + "chainId": 1, + "address": "0x9b4e2b4b13d125238aa0480dd42b4f6fc71b37cc", + "name": "MyToken", + "symbol": "MT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4109/thumb/2712.png?1547039296" + }, + { + "chainId": 1, + "address": "0x397deb686c72384fad502a81f4d7fdb89e1f1280", + "name": "XELS", + "symbol": "XELS", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/14729/thumb/Xels_logo_square_%281%29.png?1617957186" + }, + { + "chainId": 1, + "address": "0xabe580e7ee158da464b51ee1a83ac0289622e6be", + "name": "Offshift", + "symbol": "XFT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11977/thumb/CsBrPiA.png?1614570441" + }, + { + "chainId": 1, + "address": "0x6c972b70c533e2e045f333ee28b9ffb8d717be69", + "name": "FoundryDAO Logistics", + "symbol": "FRY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12348/thumb/fry-icon.png?1614064283" + }, + { + "chainId": 1, + "address": "0x4161725d019690a3e0de50f6be67b07a86a9fae1", + "name": "TokenPocket Token", + "symbol": "TPT", + "decimals": 4, + "logoURI": "https://assets.coingecko.com/coins/images/7603/thumb/pocket.jpg?1658907018" + }, + { + "chainId": 1, + "address": "0xeb50455805ebf8396d9177bbc4a371a376d00ecc", + "name": "Bali Social Integrated", + "symbol": "BSI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19589/thumb/bsi.PNG?1635473270" + }, + { + "chainId": 1, + "address": "0xb2279b6769cfba691416f00609b16244c0cf4b20", + "name": "Waifu Genesis Card Collection", + "symbol": "WAIF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12100/thumb/Small-Waifu_token.png?1597120029" + }, + { + "chainId": 1, + "address": "0x866f8a50a64e68ca66e97e032c5da99538b3f942", + "name": "eBlockStock", + "symbol": "EBSO", + "decimals": 4, + "logoURI": "https://assets.coingecko.com/coins/images/18636/thumb/eBSO_logo_szines.png?1632730502" + }, + { + "chainId": 1, + "address": "0x0fe20e0fa9c78278702b05c333cc000034bb69e2", + "name": "ETH Max Yield Index", + "symbol": "ETHMAXY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24047/thumb/ethmaxy.png?1646194193" + }, + { + "chainId": 1, + "address": "0xaf5191b0de278c7286d6c7cc6ab6bb8a73ba2cd6", + "name": "Stargate Finance", + "symbol": "STG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24413/thumb/STG_LOGO.png?1647654518" + }, + { + "chainId": 1, + "address": "0x701c244b988a513c945973defa05de933b23fe1d", + "name": "OAX", + "symbol": "OAX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/853/thumb/OAXlogo.png?1598686792" + }, + { + "chainId": 1, + "address": "0xe25b0bba01dc5630312b6a21927e578061a13f55", + "name": "ShipChain", + "symbol": "SHIP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3997/thumb/shipchain.png?1548609236" + }, + { + "chainId": 1, + "address": "0x89303500a7abfb178b274fd89f2469c264951e1f", + "name": "Ref", + "symbol": "REF", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/2575/thumb/reftoken.png?1548608011" + }, + { + "chainId": 1, + "address": "0xc382e04099a435439725bb40647e2b32dc136806", + "name": "Cogecoin", + "symbol": "COGE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16791/thumb/Dog-Logo_1x.png?1625033809" + }, + { + "chainId": 1, + "address": "0x674c6ad92fd080e4004b2312b45f796a192d27a0", + "name": "Neutrino USD", + "symbol": "USDN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10117/thumb/78GWcZu.png?1600845716" + }, + { + "chainId": 1, + "address": "0x3540abe4f288b280a0740ad5121aec337c404d15", + "name": "TPRO", + "symbol": "TPRO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26694/thumb/tpro-logo-200x200.png?1659607453" + }, + { + "chainId": 1, + "address": "0x1f3f677ecc58f6a1f9e2cf410df4776a8546b5de", + "name": "VNDC", + "symbol": "VNDC", + "decimals": 0, + "logoURI": "https://assets.coingecko.com/coins/images/9670/thumb/vndc-gold-coin.png?1571032826" + }, + { + "chainId": 1, + "address": "0x3d60f2bde6762ce9ce45945d05bc6846d12a140e", + "name": "Honey Badger", + "symbol": "HONEYBADGER", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/21497/thumb/w9AapCgG_400x400.jpg?1639368909" + }, + { + "chainId": 1, + "address": "0x52a8845df664d76c69d2eea607cd793565af42b8", + "name": "ApeX", + "symbol": "APEX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25266/thumb/CxpMECpk_400x400_%281%29.png?1651067984" + }, + { + "chainId": 1, + "address": "0x20c36f062a31865bed8a5b1e512d9a1a20aa333a", + "name": "DefiDollar DAO", + "symbol": "DFD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12959/thumb/DFD.jpg?1604415975" + }, + { + "chainId": 1, + "address": "0x56d811088235f11c8920698a204a5010a788f4b3", + "name": "bZx Protocol", + "symbol": "BZRX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11811/thumb/bzrx.png?1594563172" + }, + { + "chainId": 1, + "address": "0xb6eda82597808c96969c21a88bf6c749b441c44a", + "name": "Smart Medical Coin", + "symbol": "SMC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17327/thumb/smc.png?1627313618" + }, + { + "chainId": 1, + "address": "0x7fbec0bb6a7152e77c30d005b5d49cbc08a602c3", + "name": "disBalancer", + "symbol": "DDOS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14791/thumb/communityIcon_o2yriheuszk61.png?1618463138" + }, + { + "chainId": 1, + "address": "0xc3dca8f61b275d1e88f3ea31b3e311c49f56b24b", + "name": "NPick Block", + "symbol": "NPICK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25151/thumb/Logo200_%281%29.png?1650459923" + }, + { + "chainId": 1, + "address": "0x6944d3e38973c4831da24e954fbd790c7e688bdd", + "name": "IZE", + "symbol": "IZE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11031/thumb/logo.png?1587294254" + }, + { + "chainId": 1, + "address": "0x5891599664ed15c6e88041b4f5bc08594f026f0e", + "name": "JPGoldCoin", + "symbol": "JPGC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27321/thumb/JPGC_LOGO-_Coingecko.png?1663319056" + }, + { + "chainId": 1, + "address": "0x1410434b0346f5be678d0fb554e5c7ab620f8f4a", + "name": "BitKan", + "symbol": "KAN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4651/thumb/kan-token.png?1547039917" + }, + { + "chainId": 1, + "address": "0x7c5a0ce9267ed19b22f8cae653f198e3e8daf098", + "name": "Santiment Network", + "symbol": "SAN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/797/thumb/santiment-network-token.png?1547034571" + }, + { + "chainId": 1, + "address": "0x01ff50f8b7f74e4f00580d9596cd3d0d6d6e326f", + "name": "BnkToTheFuture", + "symbol": "BFT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3468/thumb/bnktothefuture.png?1547351865" + }, + { + "chainId": 1, + "address": "0x83869de76b9ad8125e22b857f519f001588c0f62", + "name": "EXMO Coin", + "symbol": "EXM", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/9154/thumb/200x200.png?1668998803" + }, + { + "chainId": 1, + "address": "0xac0104cca91d167873b8601d2e71eb3d4d8c33e0", + "name": "Seascape Crowns", + "symbol": "CWS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13835/thumb/crowns_logo.png?1612176905" + }, + { + "chainId": 1, + "address": "0x9d9e399e5385e2b9a58d4f775a1e16441b571afb", + "name": "Metano", + "symbol": "METANO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28183/thumb/logo200x.jpeg?1668256131" + }, + { + "chainId": 1, + "address": "0xac3e018457b222d93114458476f3e3416abbe38f", + "name": "Staked Frax Ether", + "symbol": "SFRXETH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28285/thumb/JjqQ9ROz_400x400.jpeg?1669170466" + }, + { + "chainId": 1, + "address": "0xd3e4ba569045546d09cf021ecc5dfe42b1d7f6e4", + "name": "Morpheus Network", + "symbol": "MNW", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2379/thumb/MRPH_CoinGecko.png?1635847791" + }, + { + "chainId": 1, + "address": "0x4a615bb7166210cce20e6642a6f8fb5d4d044496", + "name": "NAOS Finance", + "symbol": "NAOS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15144/thumb/bafybeibkztkshitabrf7yqqkqtbjqestjknpgv7lsjfzdsa3ufspagqs2e.ipfs.infura-ipfs.io.png?1622176770" + }, + { + "chainId": 1, + "address": "0x4f9254c83eb525f9fcf346490bbb3ed28a81c667", + "name": "Celer Network", + "symbol": "CELR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4379/thumb/Celr.png?1554705437" + }, + { + "chainId": 1, + "address": "0xa41f142b6eb2b164f8164cae0716892ce02f311f", + "name": "Avocado DAO", + "symbol": "AVG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21102/thumb/logo192_%281%29.png?1640567889" + }, + { + "chainId": 1, + "address": "0xa6d5c720a9af5a405dfb6b9f44fc44fab5d4a58d", + "name": "Ezystayz", + "symbol": "EZY", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/9062/thumb/5521.png?1603333090" + }, + { + "chainId": 1, + "address": "0x91f529e972d6cf43d36abfa91c1118122ff7f16c", + "name": "Sapchain", + "symbol": "SAP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9109/thumb/sap.PNG?1564433894" + }, + { + "chainId": 1, + "address": "0x544c42fbb96b39b21df61cf322b5edc285ee7429", + "name": "InsurAce", + "symbol": "INSUR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14226/thumb/insur.png?1615124622" + }, + { + "chainId": 1, + "address": "0x5d60d8d7ef6d37e16ebabc324de3be57f135e0bc", + "name": "MyBit", + "symbol": "MYB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1240/thumb/mybit.png?1547035264" + }, + { + "chainId": 1, + "address": "0x329c6e459ffa7475718838145e5e85802db2a303", + "name": "MaidSafeCoin", + "symbol": "EMAID", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/80/thumb/maidsafecoin.png?1547033750" + }, + { + "chainId": 1, + "address": "0x89ab32156e46f46d02ade3fecbe5fc4243b9aaed", + "name": "pNetwork", + "symbol": "PNT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11659/thumb/pNetwork.png?1592411134" + }, + { + "chainId": 1, + "address": "0x3845badade8e6dff049820680d1f14bd3903a5d0", + "name": "The Sandbox", + "symbol": "SAND", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12129/thumb/sandbox_logo.jpg?1597397942" + }, + { + "chainId": 1, + "address": "0x0f3a02baec9607f2b52b3ab629cbcea2047e1124", + "name": "XPOP", + "symbol": "XPOP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26251/thumb/%EC%9E%90%EC%82%B0_1.png?1656936169" + }, + { + "chainId": 1, + "address": "0x670f9d9a26d3d42030794ff035d35a67aa092ead", + "name": "XBullion", + "symbol": "GOLD", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/15658/thumb/WhatsApp_Image_2021-05-17_at_2.24.16_PM.jpeg?1621484245" + }, + { + "chainId": 1, + "address": "0x2863916c6ebdbbf0c6f02f87b7eb478509299868", + "name": "SIMBA Storage", + "symbol": "SST", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11908/thumb/sst.png?1660381253" + }, + { + "chainId": 1, + "address": "0x139d9397274bb9e2c29a9aa8aa0b5874d30d62e3", + "name": "BoutsPro", + "symbol": "BOUTS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4296/thumb/boutspro-ico-logo-300x300.jpg?1527072201" + }, + { + "chainId": 1, + "address": "0x12e951934246186f50146235d541d3bd1d463e4d", + "name": "Crypto International", + "symbol": "CRI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24700/thumb/logo200x200.png?1648641961" + }, + { + "chainId": 1, + "address": "0x6b4689e4514957699edeb2ee91c947f18e439806", + "name": "ZeuxCoin", + "symbol": "ZUC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9034/thumb/HVMZgdBY_400x400.jpg?1563831075" + }, + { + "chainId": 1, + "address": "0x1cbb83ebcd552d5ebf8131ef8c9cd9d9bab342bc", + "name": "Non Fungible Yearn", + "symbol": "NFY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12766/thumb/NFY_logo.png?1602686886" + }, + { + "chainId": 1, + "address": "0xed494c9e2f8e34e53bdd0ea9b4d80305cb15c5c2", + "name": "CryptoWorld VIP", + "symbol": "CWV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6570/thumb/s-ZJaJdw_400x400.jpg?1547042779" + }, + { + "chainId": 1, + "address": "0xaa7a9ca87d3694b5755f213b5d04094b8d0f0a6f", + "name": "OriginTrail", + "symbol": "TRAC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1877/thumb/TRAC.jpg?1635134367" + }, + { + "chainId": 1, + "address": "0xc795fba221f7920f1c6ac0f1598886742d8ea661", + "name": "SaitamaX", + "symbol": "SAITAX", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/19419/thumb/6mrg5N1.png?1635213446" + }, + { + "chainId": 1, + "address": "0x73f2651ea38d48b3b808ffddbd398fd600ab5ba7", + "name": "Dukascoin", + "symbol": "DUK+", + "decimals": 4, + "logoURI": "https://assets.coingecko.com/coins/images/14374/thumb/dukascoin_200x200_silver.png?1615774652" + }, + { + "chainId": 1, + "address": "0xe28b3b32b6c345a34ff64674606124dd5aceca30", + "name": "Injective", + "symbol": "INJ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12882/thumb/Secondary_Symbol.png?1628233237" + }, + { + "chainId": 1, + "address": "0x9daef41e08bc88183572b03796c96a7ace1ec9d4", + "name": "Yofune Nushi", + "symbol": "KOYO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27697/thumb/Capture-removebg-preview_%283%29.png?1665303166" + }, + { + "chainId": 1, + "address": "0x5b71bee9d961b1b848f8485eec8d8787f80217f5", + "name": "Bitforex", + "symbol": "BF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5330/thumb/BitForex-Logo.png?1573808168" + }, + { + "chainId": 1, + "address": "0x84679bc467dc6c2c40ab04538813aff3796351f1", + "name": "Chonk", + "symbol": "CHONK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12899/thumb/a2LHjXZ.jpeg?1603418225" + }, + { + "chainId": 1, + "address": "0xab456bdb0a373bbac6c4a76176e9f159cacd5752", + "name": "Society of Galactic Exploration", + "symbol": "SGE", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/15819/thumb/sge.png?1636253933" + }, + { + "chainId": 1, + "address": "0xe9f84de264e91529af07fa2c746e934397810334", + "name": "SAKE", + "symbol": "SAK3", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15890/thumb/Sak3.jpg?1622219322" + }, + { + "chainId": 1, + "address": "0x84ba4aecfde39d69686a841bab434c32d179a169", + "name": "Method Finance", + "symbol": "MTHD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14619/thumb/mthd.PNG?1617262620" + }, + { + "chainId": 1, + "address": "0x87de305311d5788e8da38d19bb427645b09cb4e5", + "name": "Verox", + "symbol": "VRX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13669/thumb/IMG-20210115-000024.png?1610675319" + }, + { + "chainId": 1, + "address": "0x33cf519030235f75a13f29afcff5d6ff4fd10350", + "name": "PEPE bet", + "symbol": "PEPEBET", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27970/thumb/IMG_20221025_143614_101.jpg?1666771114" + }, + { + "chainId": 1, + "address": "0x65ad6a2288b2dd23e466226397c8f5d1794e58fc", + "name": "GamyFi", + "symbol": "GFX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14559/thumb/circle-cropped_%281%29.png?1617008124" + }, + { + "chainId": 1, + "address": "0xf6ea0e60cee427b90aa36f327ee61d1d4cabc49f", + "name": "UniqueOne Photo", + "symbol": "FOTO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14274/thumb/Symbol_Master-01_200x200_%281%29.png?1626868667" + }, + { + "chainId": 1, + "address": "0x69681f8fde45345c3870bcd5eaf4a05a60e7d227", + "name": "Iron Bank GBP", + "symbol": "IBGBP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18576/thumb/logo-128_%283%29.png?1632470148" + }, + { + "chainId": 1, + "address": "0xf6158bdfe9e013673269b4d1ca468e8efd77ca3f", + "name": "Teleport", + "symbol": "PORT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27342/thumb/logo.png?1663552195" + }, + { + "chainId": 1, + "address": "0x4fabb145d64652a948d72533023f6e7a623c7c53", + "name": "Binance USD", + "symbol": "BUSD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9576/thumb/BUSD.png?1568947766" + }, + { + "chainId": 1, + "address": "0x755be920943ea95e39ee2dc437b268917b580d6e", + "name": "VersoView", + "symbol": "VVT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13380/thumb/HkfxEtWh_400x400.jpg?1608031723" + }, + { + "chainId": 1, + "address": "0x635f15eb7aa2e62d122f6b1f9f519fdccf4abdda", + "name": "hiMAYC", + "symbol": "HIMAYC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27602/thumb/himayc.png?1664716538" + }, + { + "chainId": 1, + "address": "0xd4ca5c2aff1eefb0bea9e9eab16f88db2990c183", + "name": "XRP Classic", + "symbol": "XRPC", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/7259/thumb/xrpc.png?1572011410" + }, + { + "chainId": 1, + "address": "0x33bd66c334274989b673a8e8c8d1a3f1b8de5889", + "name": "hiODBS", + "symbol": "HIODBS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27296/thumb/hiodbs.png?1668579342" + }, + { + "chainId": 1, + "address": "0x63f584fa56e60e4d0fe8802b27c7e6e3b33e007f", + "name": "ContentBox", + "symbol": "BOX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4929/thumb/contentbox.png?1547740046" + }, + { + "chainId": 1, + "address": "0xf66cd2f8755a21d3c8683a10269f795c0532dd58", + "name": "coreDAO", + "symbol": "COREDAO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23745/thumb/coredao.png?1645273627" + }, + { + "chainId": 1, + "address": "0x668f7dfb8c8d716839fa5dbea317d8723ebe6110", + "name": "SMSCodes", + "symbol": "SMSCT", + "decimals": 0, + "logoURI": "https://assets.coingecko.com/coins/images/16014/thumb/logo200_%2813%29.png?1622609030" + }, + { + "chainId": 1, + "address": "0xae86f48c0b00f2a3eaef4ba4c23d17368f0f63f4", + "name": "Amatsu Mikaboshi", + "symbol": "MIKABOSHI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27048/thumb/photo_2022-08-25_23-44-10.jpg?1661504716" + }, + { + "chainId": 1, + "address": "0x72630b1e3b42874bf335020ba0249e3e9e47bafc", + "name": "Paypolitan", + "symbol": "EPAN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13192/thumb/ava3.png?1606102032" + }, + { + "chainId": 1, + "address": "0x7995ab36bb307afa6a683c24a25d90dc1ea83566", + "name": "HitChain", + "symbol": "HIT", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/5555/thumb/hitchain.png?1547041361" + }, + { + "chainId": 1, + "address": "0x2a2550e0a75acec6d811ae3930732f7f3ad67588", + "name": "PathDAO", + "symbol": "PATH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21146/thumb/thumbnail.png?1655283979" + }, + { + "chainId": 1, + "address": "0x93cfe232311f49b53d4285cd54d31261980496ba", + "name": "Diyarbekirspor", + "symbol": "DIYAR", + "decimals": 2, + "logoURI": "https://assets.coingecko.com/coins/images/22466/thumb/NHeXj778_400x400.jpg?1641883928" + }, + { + "chainId": 1, + "address": "0x38ec27c6f05a169e7ed03132bca7d0cfee93c2c5", + "name": "Wizards And Dragons", + "symbol": "GP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21162/thumb/GPGP.jpg?1638427072" + }, + { + "chainId": 1, + "address": "0xf42965f82f9e3171d1205c5e3058caf324a09432", + "name": "Alien Inu", + "symbol": "ALIEN", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/20719/thumb/alien_logo.png?1642675038" + }, + { + "chainId": 1, + "address": "0x35bd01fc9d6d5d81ca9e055db88dc49aa2c699a8", + "name": "Friends With Benefits Pro", + "symbol": "FWB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14391/thumb/xRGEXmQN_400x400.png?1615868085" + }, + { + "chainId": 1, + "address": "0x2d5c73f3597b07f23c2bb3f2422932e67eca4543", + "name": "Imperial Obelisk", + "symbol": "IMP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27625/thumb/dxanVPfL_400x400.jpeg?1664935231" + }, + { + "chainId": 1, + "address": "0xe3fedaecd47aa8eab6b23227b0ee56f092c967a9", + "name": "Primas", + "symbol": "PST", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/917/thumb/primas.png?1548331951" + }, + { + "chainId": 1, + "address": "0xedeec5691f23e4914cf0183a4196bbeb30d027a0", + "name": "Wrapped Statera", + "symbol": "WSTA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13599/thumb/wsta_logo.png?1610011862" + }, + { + "chainId": 1, + "address": "0x116c4b65e14449947bc6fa1bbe844cb16a162d53", + "name": "BMAX", + "symbol": "BMAX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26427/thumb/BMAX_logo.png?1657929623" + }, + { + "chainId": 1, + "address": "0x765f0c16d1ddc279295c1a7c24b0883f62d33f75", + "name": "DaTa eXchange DTX", + "symbol": "DTX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2920/thumb/dtx.png?1578973961" + }, + { + "chainId": 1, + "address": "0x94d916873b22c9c1b53695f1c002f78537b9b3b2", + "name": "AlgoVest", + "symbol": "AVS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13874/thumb/icon-200.png?1626094416" + }, + { + "chainId": 1, + "address": "0x8ab893e33b2cfff425ff9c67b958036c938a2649", + "name": "Lilith Swap", + "symbol": "LLTH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23499/thumb/-c-tn85C_400x400.jpeg?1644293485" + }, + { + "chainId": 1, + "address": "0x37c4822dfcea7211d1d9876dabd48c62d46dbaab", + "name": "MetaBET", + "symbol": "MBET", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22778/thumb/y5TphxL.jpeg?1642577860" + }, + { + "chainId": 1, + "address": "0xaea46a60368a7bd060eec7df8cba43b7ef41ad85", + "name": "Fetch ai", + "symbol": "FET", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5681/thumb/Fetch.jpg?1572098136" + }, + { + "chainId": 1, + "address": "0x6beb418fc6e1958204ac8baddcf109b8e9694966", + "name": "Linker Coin", + "symbol": "LNC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3885/thumb/linker-coin.png?1547975979" + }, + { + "chainId": 1, + "address": "0xadf8b8050639b6236915f7516d69de714672f0bf", + "name": "Scanetchain", + "symbol": "SWC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6876/thumb/scanetchain.jpg?1547043219" + }, + { + "chainId": 1, + "address": "0x48592de8cded16f6bb56c896fe1affc37630889c", + "name": "PolkaParty", + "symbol": "POLP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17867/thumb/polp_logo.jpg?1641355239" + }, + { + "chainId": 1, + "address": "0x5de7cc4bcbca31c473f6d2f27825cfb09cc0bb16", + "name": "XBE", + "symbol": "XBE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14480/thumb/xbe.png?1616462685" + }, + { + "chainId": 1, + "address": "0x0b5ecbb411d8fe829e5eac253ee1f2dc05d8d1ae", + "name": "KunoichiX", + "symbol": "KUNO", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/21847/thumb/94E3B862-B2ED-4D30-A1E4-1AFB560835F5.png?1640131932" + }, + { + "chainId": 1, + "address": "0x82ca5fcd9ef2d6ceeb49a057bb11c3e091560979", + "name": "Kiki Finance", + "symbol": "KIKI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23151/thumb/DLq9z6qp_400x400.jpg?1643351049" + }, + { + "chainId": 1, + "address": "0x601938988f0fdd937373ea185c33751462b1d194", + "name": "Etherpay", + "symbol": "ETHPY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12417/thumb/Captura-de-Tela-2020-09-09-a-s-13-54-20.png?1599692074" + }, + { + "chainId": 1, + "address": "0x5380442d3c4ec4f5777f551f5edd2fa0f691a27c", + "name": "UkraineDAO Flag NFT", + "symbol": "LOVE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24092/thumb/download_%282%29.png?1646344453" + }, + { + "chainId": 1, + "address": "0x33e18a092a93ff21ad04746c7da12e35d34dc7c4", + "name": "Metaverse NFT Index", + "symbol": "PLAY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14590/thumb/PLAY.png?1618308275" + }, + { + "chainId": 1, + "address": "0x4b5f49487ea7b3609b1ad05459be420548789f1f", + "name": "LeverFi", + "symbol": "LEVER", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26205/thumb/WI72SpBl_400x400.jpeg?1656494480" + }, + { + "chainId": 1, + "address": "0xbdab72602e9ad40fc6a6852caf43258113b8f7a5", + "name": "Sovryn", + "symbol": "SOV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16248/thumb/sov.PNG?1623380748" + }, + { + "chainId": 1, + "address": "0xf8e386eda857484f5a12e4b5daa9984e06e73705", + "name": "Indorse", + "symbol": "IND", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/848/thumb/indorse_token.png?1547034644" + }, + { + "chainId": 1, + "address": "0xff7e285b87e7f9247f0953cf8cf5cb24eede4b9c", + "name": " STIMMY", + "symbol": "STIMMY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20796/thumb/logo.gif?1637677225" + }, + { + "chainId": 1, + "address": "0xbba39fd2935d5769116ce38d46a71bde9cf03099", + "name": "Choise com", + "symbol": "CHO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25935/thumb/cho_%282%29.png?1663309407" + }, + { + "chainId": 1, + "address": "0x4a27e9aab8f8ba9de06766c8476ed1d16494e35f", + "name": "PEPEGOLD", + "symbol": "PEPE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26864/thumb/logo-200x200.png?1660533136" + }, + { + "chainId": 1, + "address": "0x628ab8b061fea2af1239b68efa5e46135d186666", + "name": "XBullion Silver", + "symbol": "SILV", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/24171/thumb/SILV_Logo_%28transparent_circle%29.png?1646816506" + }, + { + "chainId": 1, + "address": "0xd779eea9936b4e323cddff2529eb6f13d0a4d66e", + "name": "EnterDAO", + "symbol": "ENTR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18684/thumb/entr.png?1635826690" + }, + { + "chainId": 1, + "address": "0x5cc56c266143f29a5054b9ae07f3ac3513a7965e", + "name": "ANKR Reward Earning DOT", + "symbol": "ADOTB", + "decimals": 10, + "logoURI": "https://assets.coingecko.com/coins/images/26029/thumb/a-dot-b-d58ca40f7b15ef03310fa1faa974a3b0.png?1655349902" + }, + { + "chainId": 1, + "address": "0xf9c53268e9de692ae1b2ea5216e24e1c3ad7cb1e", + "name": "Idexo", + "symbol": "IDO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18523/thumb/qOiqm7T8_400x400.jpg?1632275628" + }, + { + "chainId": 1, + "address": "0xb6c3dc857845a713d3531cea5ac546f6767992f4", + "name": "Advertise Coin", + "symbol": "ADCO", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/14344/thumb/advertisecoin200x200.png?1615503478" + }, + { + "chainId": 1, + "address": "0x558c7ebb10514a6786d83a26c322d0b53e39d603", + "name": "VIIIDA Gold", + "symbol": "AUV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25191/thumb/VG_-_LOGO_AUV.png?1650605583" + }, + { + "chainId": 1, + "address": "0xfa57f00d948bb6a28072f5416fcbf7836c3d62dd", + "name": "friesDAO", + "symbol": "FRIES", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23951/thumb/friespng.png?1645772414" + }, + { + "chainId": 1, + "address": "0x9b5161a41b58498eb9c5febf89d60714089d2253", + "name": "Meta Finance", + "symbol": "MF1", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21954/thumb/eC1-dKKt_400x400.jpg?1640326512" + }, + { + "chainId": 1, + "address": "0x801de502c493aa9d3f9f79a0348fbc00521b3001", + "name": "Relaxable", + "symbol": "RELAX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28129/thumb/6B1F96A9-E306-4328-862A-FBE9209D1C0D.jpeg?1667649137" + }, + { + "chainId": 1, + "address": "0x5f4361971667c8198706dec8c59cf7607e405c6e", + "name": "Fileshare Platform", + "symbol": "FSC", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/28190/thumb/fsc.png?1668325601" + }, + { + "chainId": 1, + "address": "0x641927e970222b10b2e8cdbc96b1b4f427316f16", + "name": "MEEB Vault NFTX ", + "symbol": "MEEB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17044/thumb/Meebs.png?1626147616" + }, + { + "chainId": 1, + "address": "0x70e36f6bf80a52b3b46b3af8e106cc0ed743e8e4", + "name": "cCOMP", + "symbol": "CCOMP", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/12840/thumb/1_z8UrVtod3bme4-J_pXAQQA_2x.png?1602936322" + }, + { + "chainId": 1, + "address": "0x03066da434e5264ef0b32f787923f974a5726fdc", + "name": "Basis Coin Share", + "symbol": "BCS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13530/thumb/Basiscoin_Share.png?1609406623" + }, + { + "chainId": 1, + "address": "0x6025f65f6b2f93d8ed1efedc752acfd4bdbcec3e", + "name": "eGold", + "symbol": "EGOLD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1105/thumb/egold.png?1547035084" + }, + { + "chainId": 1, + "address": "0xb8e2e2101ed11e9138803cd3e06e16dd19910647", + "name": "ArdCoin", + "symbol": "ARDX", + "decimals": 2, + "logoURI": "https://assets.coingecko.com/coins/images/9432/thumb/ARDC.png?1627466542" + }, + { + "chainId": 1, + "address": "0x639ae8f3eed18690bf451229d14953a5a5627b72", + "name": "Nimbus Governance", + "symbol": "GNBU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16391/thumb/gnbu.PNG?1623898676" + }, + { + "chainId": 1, + "address": "0xfb5453340c03db5ade474b27e68b6a9c6b2823eb", + "name": "Robot", + "symbol": "ROBOT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13517/thumb/MF_Robot_200px.png?1609312481" + }, + { + "chainId": 1, + "address": "0x15ee120fd69bec86c1d38502299af7366a41d1a6", + "name": "BitANT", + "symbol": "BITANT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19055/thumb/BitANT.png?1634264861" + }, + { + "chainId": 1, + "address": "0x5ea82c27efc7634f1c5ad20a3561c453433a2f3a", + "name": "BTRIPS", + "symbol": "BTR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19273/thumb/btr.png?1638182009" + }, + { + "chainId": 1, + "address": "0x6f8b23296394d20ec048fbdec8ebc0ca90f5c8f1", + "name": "TUF Token", + "symbol": "TUF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28410/thumb/2022-12-06_10.10.16.jpg?1670385344" + }, + { + "chainId": 1, + "address": "0xc0b182b2e06164568a3310ca1086e9bf19209e6c", + "name": "Pumptopia", + "symbol": "PTPA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24262/thumb/pinksale-200x200-1.jpg?1647171185" + }, + { + "chainId": 1, + "address": "0x4da9b813057d04baef4e5800e36083717b4a0341", + "name": "Aave TUSD v1", + "symbol": "ATUSD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11724/thumb/aTUSD.png?1593082700" + }, + { + "chainId": 1, + "address": "0x405ce8b2eaeea7d4ba5fc160848cb2a6569e03f0", + "name": "Metria Network", + "symbol": "METR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24870/thumb/Metria-logo_1.png?1649213114" + }, + { + "chainId": 1, + "address": "0xc00e94cb662c3520282e6f5717214004a7f26888", + "name": "Compound", + "symbol": "COMP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10775/thumb/COMP.png?1592625425" + }, + { + "chainId": 1, + "address": "0xaf80951201a0eff85a0fd3adf4c7043db856d3e6", + "name": "Mobilian Coin", + "symbol": "MBN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12472/thumb/TqhkduvK_400x400.jpg?1600122610" + }, + { + "chainId": 1, + "address": "0x1c95b093d6c236d3ef7c796fe33f9cc6b8606714", + "name": "BOMB", + "symbol": "BOMB", + "decimals": 0, + "logoURI": "https://assets.coingecko.com/coins/images/7713/thumb/Bomb-token.png?1549944422" + }, + { + "chainId": 1, + "address": "0xbbeca80a4c99c3b1bd3c10e64595d0fc7dc26ee0", + "name": "hiMEEBITS", + "symbol": "HIMEEBITS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28126/thumb/himeebit.png?1667640906" + }, + { + "chainId": 1, + "address": "0x8c1bee08bdcb69e68fd23f1d02495a2d59f2a01a", + "name": "Safuchain", + "symbol": "SAFU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27381/thumb/QmZh4N7mpwJv9wRUffy9P4bc35k4DuzCRkmLD1fSYUKzpA.png?1663743589" + }, + { + "chainId": 1, + "address": "0x1997830b5beb723f5089bb8fc38766d419a0444d", + "name": "Newinu", + "symbol": "NEWINU", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/16192/thumb/Newinu.png?1625583532" + }, + { + "chainId": 1, + "address": "0x69e8b9528cabda89fe846c67675b5d73d463a916", + "name": "OPEN Governance", + "symbol": "OPEN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13233/thumb/opendao_logo.png?1606575207" + }, + { + "chainId": 1, + "address": "0x57db3ffca78dbbe0efa0ec745d55f62aa0cbd345", + "name": "Symmetric", + "symbol": "SYMM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18525/thumb/SYMM-Coin-2.png?1632276841" + }, + { + "chainId": 1, + "address": "0x618679df9efcd19694bb1daa8d00718eacfa2883", + "name": "Universe XYZ", + "symbol": "XYZ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15809/thumb/universexyz.png?1621950483" + }, + { + "chainId": 1, + "address": "0xa64c3a85ddc4cd351eeb7aecebc6a44a64a76392", + "name": "Rice Wallet", + "symbol": "RICE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17204/thumb/RICE-200x200.png?1626847877" + }, + { + "chainId": 1, + "address": "0xc221b7e65ffc80de234bbb6667abdd46593d34f0", + "name": "Wrapped Centrifuge", + "symbol": "WCFG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17106/thumb/WCFG.jpg?1626266462" + }, + { + "chainId": 1, + "address": "0x08711d3b02c8758f2fb3ab4e80228418a7f8e39c", + "name": "Edgeless", + "symbol": "EDG", + "decimals": 0, + "logoURI": "https://assets.coingecko.com/coins/images/635/thumb/Edgeless-Token.jpg?1631795809" + }, + { + "chainId": 1, + "address": "0xb4371da53140417cbb3362055374b10d97e420bb", + "name": "Carbon Protocol", + "symbol": "SWTH", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/3645/thumb/SWTH_Symbol_Origin.png?1645000262" + }, + { + "chainId": 1, + "address": "0x6ce21e5f5383c95691d243879a86a6025e0870c0", + "name": "Hintchain", + "symbol": "HINT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9329/thumb/JwEnTYRktjoozNKeI6qtQ0CEuiwNhl_vWNoXvob7OO-ZJ7YsXqK6oUmBjdXy0XRTnLcOywgKyWP-3WPcpelcT2ZQyBYoYEGLXA4Q-n6utwbn43oTkW3Ro6Mm93tr9lC1lrb3E4vPTS17TYRvYDP_6c9KLulnS4y_E4FlU9u6Y2FkoYhFdrV9-XF1CPif17GxyVa9vr45xfgGmqmU5.jpg?1566284372" + }, + { + "chainId": 1, + "address": "0x4fd51cb87ffefdf1711112b5bd8ab682e54988ea", + "name": "WPT Investing Corp", + "symbol": "WPT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26431/thumb/200200.png?1657934772" + }, + { + "chainId": 1, + "address": "0x9fc8f0ca1668e87294941b7f627e9c15ea06b459", + "name": "True PNL", + "symbol": "PNL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15282/thumb/256x256logo.png?1623230007" + }, + { + "chainId": 1, + "address": "0x8f6e8cdfa6cee7080864dcbb6b973d17d8d80a8f", + "name": "NFCore", + "symbol": "NFCR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25655/thumb/nfcr.png?1653048464" + }, + { + "chainId": 1, + "address": "0x515d7e9d75e2b76db60f8a051cd890eba23286bc", + "name": "Governor DAO", + "symbol": "GDAO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13140/thumb/GDAOlogo2-bird.png?1605591842" + }, + { + "chainId": 1, + "address": "0x54c9ea2e9c9e8ed865db4a4ce6711c2a0d5063ba", + "name": "BarterTrade", + "symbol": "BART", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12142/thumb/200x200-transparent.png?1606958206" + }, + { + "chainId": 1, + "address": "0x9040e237c3bf18347bb00957dc22167d0f2b999d", + "name": "Standard Protocol", + "symbol": "STND", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15100/thumb/standard.jpeg?1619691869" + }, + { + "chainId": 1, + "address": "0x0c37bcf456bc661c14d596683325623076d7e283", + "name": "Aeron", + "symbol": "ARNX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1124/thumb/ARNX-token-logo-256x256.png?1602652111" + }, + { + "chainId": 1, + "address": "0xb62132e35a6c13ee1ee0f84dc5d40bad8d815206", + "name": "NEXO", + "symbol": "NEXO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3695/thumb/nexo.png?1548086057" + }, + { + "chainId": 1, + "address": "0xab93df617f51e1e415b5b4f8111f122d6b48e55c", + "name": "Delta Exchange", + "symbol": "DETO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14610/thumb/deto-logo.png?1617247295" + }, + { + "chainId": 1, + "address": "0x110fe5f21c1edd4f03a6e0de0d96d0c2eed0b9cc", + "name": "Tessla Coin", + "symbol": "TSLA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13045/thumb/Tessla-Icon.png?1604630729" + }, + { + "chainId": 1, + "address": "0x26e43759551333e57f073bb0772f50329a957b30", + "name": "DegenVC", + "symbol": "DGVC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12208/thumb/degen_vc_logo.png?1598186601" + }, + { + "chainId": 1, + "address": "0x8b39b70e39aa811b69365398e0aace9bee238aeb", + "name": "Firebird", + "symbol": "PKF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14422/thumb/LOGO_FB.png?1669460464" + }, + { + "chainId": 1, + "address": "0x586aa273f262909eef8fa02d90ab65f5015e0516", + "name": "Fixed Income Asset", + "symbol": "FIAT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25477/thumb/fiat.png?1652007537" + }, + { + "chainId": 1, + "address": "0xe814aee960a85208c3db542c53e7d4a6c8d5f60f", + "name": "Chronologic", + "symbol": "DAY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/951/thumb/Chronologic-network.png?1547034815" + }, + { + "chainId": 1, + "address": "0x343c6de13833bc7d9890eb6b1cd3fbebc730ebec", + "name": "Decentralized Activism", + "symbol": "DACT", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/27700/thumb/logodact200x200.png?1665305210" + }, + { + "chainId": 1, + "address": "0xf21661d0d1d76d3ecb8e1b9f1c923dbfffae4097", + "name": "Realio Network", + "symbol": "RIO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12206/thumb/0.jpg?1598083003" + }, + { + "chainId": 1, + "address": "0x244517dc59943e8cdfbd424bdb3262c5f04a1387", + "name": "Fluid DAI", + "symbol": "FDAI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28473/thumb/fDAI-200x200.png?1671002526" + }, + { + "chainId": 1, + "address": "0xda4dd9586d27202a338843dd6b9824d267006783", + "name": "Echain Network", + "symbol": "ECT", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/28133/thumb/1666808362379-8226c3c3451e049842cfe21d65cb91ad.png?1667719253" + }, + { + "chainId": 1, + "address": "0x1e797ce986c3cff4472f7d38d5c4aba55dfefe40", + "name": "BlockCDN", + "symbol": "BCDN", + "decimals": 15, + "logoURI": "https://assets.coingecko.com/coins/images/1301/thumb/blockcdn.png?1547350830" + }, + { + "chainId": 1, + "address": "0xadf86e75d8f0f57e0288d0970e7407eaa49b3cab", + "name": "Apollo Crypto", + "symbol": "APOLLO", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/22606/thumb/apollo-icon-green-black-w3-200.png?1656312049" + }, + { + "chainId": 1, + "address": "0x9669890e48f330acd88b78d63e1a6b3482652cd9", + "name": "Bincentive", + "symbol": "BCNT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9661/thumb/bcnt.png?1640328324" + }, + { + "chainId": 1, + "address": "0xbed4ab0019ff361d83ddeb74883dac8a70f5ea1e", + "name": "MerchDAO", + "symbol": "MRCH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14540/thumb/logo_256x256.png?1616891356" + }, + { + "chainId": 1, + "address": "0xc12d099be31567add4e4e4d0d45691c3f58f5663", + "name": "Auctus", + "symbol": "AUC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2165/thumb/Auc_Discord_Avatar1.png?1618983355" + }, + { + "chainId": 1, + "address": "0x99295f1141d58a99e939f7be6bbe734916a875b8", + "name": "LinkPool", + "symbol": "LPL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14548/thumb/linkpool-logo-256x256.png?1616988567" + }, + { + "chainId": 1, + "address": "0x364fcd7325c035cc4f2cde8b6c8d7df5e7db6589", + "name": "Metalk", + "symbol": "META", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24801/thumb/meta.png?1648983422" + }, + { + "chainId": 1, + "address": "0x4b1e80cac91e2216eeb63e29b957eb91ae9c2be8", + "name": "Jupiter", + "symbol": "JUP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10351/thumb/logo512.png?1632480932" + }, + { + "chainId": 1, + "address": "0x255aa6df07540cb5d3d297f0d0d4d84cb52bc8e6", + "name": "Raiden Network", + "symbol": "RDN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1132/thumb/raiden-logo.jpg?1547035131" + }, + { + "chainId": 1, + "address": "0xdfc628a33c18e856cd1c59583cb5ace8db706f14", + "name": "Projekt Gold", + "symbol": "GOLD", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/16417/thumb/gold.png?1623982279" + }, + { + "chainId": 1, + "address": "0xf24d8651578a55b0c119b9910759a351a3458895", + "name": "Stake DAO Balancer", + "symbol": "SDBAL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26224/thumb/6uqFPXny_400x400.jpg?1656642803" + }, + { + "chainId": 1, + "address": "0xba11d00c5f74255f56a5e366f4f77f5a186d7f55", + "name": "Band Protocol", + "symbol": "BAND", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9545/thumb/Band_token_blue_violet_token.png?1625881431" + }, + { + "chainId": 1, + "address": "0x7101a9392eac53b01e7c07ca3baca945a56ee105", + "name": "X7101", + "symbol": "X7101", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28419/thumb/X7101_LOGO_black_back_200_x_200_px.png?1670460693" + }, + { + "chainId": 1, + "address": "0x4092678e4e78230f46a1534c0fbc8fa39780892b", + "name": "Odyssey", + "symbol": "OCN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2559/thumb/ocn.png?1547036683" + }, + { + "chainId": 1, + "address": "0x5150956e082c748ca837a5dfa0a7c10ca4697f9c", + "name": "Zeedex", + "symbol": "ZDEX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12412/thumb/Untitled-design-4.png?1599647173" + }, + { + "chainId": 1, + "address": "0xc56f38a1e1a14727d89eccdc97d23a59159b31bd", + "name": "Beavis and Butthead", + "symbol": "BBH", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/19213/thumb/bbh.jpeg?1634696594" + }, + { + "chainId": 1, + "address": "0x99534ef705df1fff4e4bd7bbaaf9b0dff038ebfe", + "name": "Ankr MATIC Reward Earning Bond", + "symbol": "AMATICB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26096/thumb/aMATICb.png?1658821076" + }, + { + "chainId": 1, + "address": "0x833850be8858722cfc5e5e75f2fe6275e055d888", + "name": "DecentraBNB", + "symbol": "DBNB", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/26544/thumb/Screenshot_2022-07-22_at_18.16.11.png?1658735503" + }, + { + "chainId": 1, + "address": "0xe5feeac09d36b18b3fa757e5cf3f8da6b8e27f4c", + "name": "NFT Index", + "symbol": "NFTI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14215/thumb/nfti.png?1614992905" + }, + { + "chainId": 1, + "address": "0x8db253a1943dddf1af9bcf8706ac9a0ce939d922", + "name": "Unbound Finance", + "symbol": "UNB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21412/thumb/Unbound_icon_png.png?1639091708" + }, + { + "chainId": 1, + "address": "0x888888888889c00c67689029d7856aac1065ec11", + "name": "Opium", + "symbol": "OPIUM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13758/thumb/opium-token-black_%281%29.png?1611767960" + }, + { + "chainId": 1, + "address": "0x2cad4991f62fc6fcd8ec219f37e7de52b688b75a", + "name": "Schain Wallet", + "symbol": "SCHA", + "decimals": 0, + "logoURI": "https://assets.coingecko.com/coins/images/12135/thumb/schain.png?1597462731" + }, + { + "chainId": 1, + "address": "0x44108f0223a3c3028f5fe7aec7f9bb2e66bef82f", + "name": "Across Protocol", + "symbol": "ACX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28161/thumb/across-200x200.png?1668168201" + }, + { + "chainId": 1, + "address": "0xd33526068d116ce69f19a9ee46f0bd304f21a51f", + "name": "Rocket Pool", + "symbol": "RPL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2090/thumb/rocket_pool_%28RPL%29.png?1637662441" + }, + { + "chainId": 1, + "address": "0x74159651a992952e2bf340d7628459aa4593fc05", + "name": "Tenet", + "symbol": "TEN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13545/thumb/iMqC3F_p_400x400.png?1609711856" + }, + { + "chainId": 1, + "address": "0xbf776e4fca664d791c4ee3a71e2722990e003283", + "name": "Smoothy", + "symbol": "SMTY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15039/thumb/dDxKgwPN_400x400.jpg?1619507030" + }, + { + "chainId": 1, + "address": "0xcec2387e04f9815bf12670dbf6cf03bba26df25f", + "name": "YFILEND FINANCE", + "symbol": "YFILD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12414/thumb/ylend.png?1599684775" + }, + { + "chainId": 1, + "address": "0x01b23286ff60a543ec29366ae8d6b6274ca20541", + "name": "Brother Music Platform", + "symbol": "BMP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13207/thumb/BMP_logo.png?1606199707" + }, + { + "chainId": 1, + "address": "0x7c5d5100b339fe7d995a893af6cb496b9474373c", + "name": "Loon Network", + "symbol": "LOON", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11673/thumb/ErUvUA2D4Q8hPWXxZBIuiI8MD0nrU2rDEY56d6EtVzJDTqlflAFXa2bgJ_kFwb8OtotfAvESvm-dik7d_SeJJh23f6RosUJ0AzU64QcKk5H3fu300KOJjFDFsntpRWARFKI5S4Cc8F3pcRPBkFIw6oPF58mKi83sa2DJPl-E5JMqmj6rJh5acb7Fvi80kfziWv3DHhhpg1YJYMP.jpg?1592536236" + }, + { + "chainId": 1, + "address": "0xb64fde8f199f073f41c132b9ec7ad5b61de0b1b7", + "name": "Incognito", + "symbol": "PRV", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/21971/thumb/50738351.png?1640560573" + }, + { + "chainId": 1, + "address": "0x6a6aa13393b7d1100c00a57c76c39e8b6c835041", + "name": "OpenAI ERC", + "symbol": "OPENAIERC", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/28412/thumb/OpenAI.jpeg?1670387260" + }, + { + "chainId": 1, + "address": "0x410e731c2970dce3add351064acf5ce9e33fdbf0", + "name": "ONBUFF", + "symbol": "ONIT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12252/thumb/d4suDHSzEZjDXc0uxFGPZXfDFp0L1tfoEusBx03zB1bvMLLbxa7Yq5naXAOutkirIlLXacFRRebX_hF2Ez69_fIPUfr2LuN0Z_UrXTLYds4aT95C6eHGXsZnezMHKAaOmjLpKto0xPTiYkXExvEvXrqL7O_J1wecb4eJsgwCoVprMLpm89BdKO9IyMmpNsfbW7JJFMiHgL8vq9fPhaeEi.jpg?1598519096" + }, + { + "chainId": 1, + "address": "0x3633f95e4d5900cb7525f5801639aeabc998c750", + "name": "ProjectFeenixv2", + "symbol": "FEENIXV2", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/22768/thumb/Project-Feenix-Logo_32x32.png?1642575940" + }, + { + "chainId": 1, + "address": "0x179cd91631d96e8fafee6a744eac6ffdbb923520", + "name": "IxiCash", + "symbol": "IXI", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/8368/thumb/ixi.png?1565866972" + }, + { + "chainId": 1, + "address": "0xbea98c05eeae2f3bc8c3565db7551eb738c8ccab", + "name": "Geyser", + "symbol": "GYSR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12995/thumb/logo_padded_shifted.png?1636633987" + }, + { + "chainId": 1, + "address": "0xa518c9f3724cced4715e6813858dc2ce9b21ed78", + "name": "ShibRWD", + "symbol": "SRWD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21777/thumb/SRWD-LOGO-1.png?1643186506" + }, + { + "chainId": 1, + "address": "0x467bccd9d29f223bce8043b84e8c8b282827790f", + "name": "Telcoin", + "symbol": "TEL", + "decimals": 2, + "logoURI": "https://assets.coingecko.com/coins/images/1899/thumb/tel.png?1547036203" + }, + { + "chainId": 1, + "address": "0x6a7260e44789aef24fdaf72d80ecdc253aaa079e", + "name": "Corra Finance", + "symbol": "CORA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15684/thumb/Corra_C_Logo.png?1631116498" + }, + { + "chainId": 1, + "address": "0xd33d0eb1c0c0295c3a2409a9101dd511823bf217", + "name": "Unique Fans", + "symbol": "FANS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14715/thumb/fans_200X200.png?1617922576" + }, + { + "chainId": 1, + "address": "0x1453dbb8a29551ade11d89825ca812e05317eaeb", + "name": "Tendies", + "symbol": "TEND", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11924/thumb/aaaaa.jpg?1596645622" + }, + { + "chainId": 1, + "address": "0xb5be7557fe8f69a2b5707d25fa0aee80dfda512e", + "name": "POLYSPORTS", + "symbol": "PS1", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25070/thumb/L-T2x_cG_400x400.jpg?1650024620" + }, + { + "chainId": 1, + "address": "0x7697b462a7c4ff5f8b55bdbc2f4076c2af9cf51a", + "name": "Sarcophagus", + "symbol": "SARCO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15091/thumb/E2S2-CcUcAAyNxD.jpeg?1622519884" + }, + { + "chainId": 1, + "address": "0xf4cd3d3fda8d7fd6c5a500203e38640a70bf9577", + "name": "YfDAI finance", + "symbol": "YF-DAI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12385/thumb/1619048513068.png?1622193581" + }, + { + "chainId": 1, + "address": "0x340d2bde5eb28c1eed91b2f790723e3b160613b7", + "name": "BLOCKv", + "symbol": "VEE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1266/thumb/blockv.png?1547351380" + }, + { + "chainId": 1, + "address": "0x656c00e1bcd96f256f224ad9112ff426ef053733", + "name": "Efinity", + "symbol": "EFI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16558/thumb/efi-200px_%281%29.png?1624439132" + }, + { + "chainId": 1, + "address": "0x7051620d11042c4335069aaa4f10cd3b4290c681", + "name": "TCASH", + "symbol": "TCASH", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/6574/thumb/jiPkVuI7_400x400.jpg?1547042782" + }, + { + "chainId": 1, + "address": "0xd68cb7a643079311b8645ed90f2d5267cfa6ea26", + "name": "Wall Street Inu", + "symbol": "WALLSTREETINU", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/20551/thumb/logo-coingecko.png?1637767297" + }, + { + "chainId": 1, + "address": "0x1955d744f9435522be508d1ba60e3c12d0690b6a", + "name": "WPP Token", + "symbol": "WPP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8103/thumb/WzdD53fh_400x400.jpg?1554860792" + }, + { + "chainId": 1, + "address": "0x7dd1a71898dd122b4613a12d897f7b64c4ccac64", + "name": "Mars Protocol", + "symbol": "MARS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27469/thumb/MARSlogo-200x200.png?1664186518" + }, + { + "chainId": 1, + "address": "0x7dbdd9dafdc4c1c03d67925a4f85daa398af32b0", + "name": "Anchor Neural World", + "symbol": "ANW", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11104/thumb/logo_scan.png?1588567155" + }, + { + "chainId": 1, + "address": "0x488e0369f9bc5c40c002ea7c1fe4fd01a198801c", + "name": "Golff", + "symbol": "GOF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12445/thumb/_x-AmLBv_400x400.jpg?1599902833" + }, + { + "chainId": 1, + "address": "0xd15a1a2a3211b58113e45809f05934252e34e2f8", + "name": "Woozoo Music", + "symbol": "WZM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21891/thumb/logo_200_200_%281%29.png?1640228330" + }, + { + "chainId": 1, + "address": "0xed0439eacf4c4965ae4613d77a5c2efe10e5f183", + "name": "Niftyx Protocol", + "symbol": "SHROOM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12341/thumb/niftyx_logo.jpg?1617784430" + }, + { + "chainId": 1, + "address": "0x8947da500eb47f82df21143d0c01a29862a8c3c5", + "name": "Thales", + "symbol": "THALES", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18388/thumb/CLVZJN_C_400x400.png?1631758808" + }, + { + "chainId": 1, + "address": "0x48fb253446873234f2febbf9bdeaa72d9d387f94", + "name": "Bancor Governance", + "symbol": "VBNT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14053/thumb/bancorvbnt_32.png?1614048819" + }, + { + "chainId": 1, + "address": "0xa1d0e215a23d7030842fc67ce582a6afa3ccab83", + "name": "DFI money", + "symbol": "YFII", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11902/thumb/YFII-logo.78631676.png?1598677348" + }, + { + "chainId": 1, + "address": "0x674c964ac0e89d847d6b0abd144b797bf78ba56b", + "name": "GreenWorld", + "symbol": "GWD", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/27771/thumb/200x200logo.png?1665737292" + }, + { + "chainId": 1, + "address": "0xa9d2927d3a04309e008b6af6e2e282ae2952e7fd", + "name": "Zipper Network", + "symbol": "ZIP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4524/thumb/zip_token_logo.png?1547039822" + }, + { + "chainId": 1, + "address": "0xc82e3db60a52cf7529253b4ec688f631aad9e7c2", + "name": "Arc", + "symbol": "ARC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24235/thumb/arc.png?1647694270" + }, + { + "chainId": 1, + "address": "0x409c4d8cd5d2924b9bc5509230d16a61289c8153", + "name": "TONStarter", + "symbol": "TOS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17878/thumb/tos.PNG?1629703380" + }, + { + "chainId": 1, + "address": "0x7104d1f179cc9cc7fb5c79be6da846e3fbc4c105", + "name": "X7104", + "symbol": "X7104", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28422/thumb/X7104_LOGO_black_back_200_x_200_px.png?1670460882" + }, + { + "chainId": 1, + "address": "0x69beab403438253f13b6e92db91f7fb849258263", + "name": "Neuro NTK", + "symbol": "NTK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3028/thumb/neurotoken.png?1547037334" + }, + { + "chainId": 1, + "address": "0x7659ce147d0e714454073a5dd7003544234b6aa0", + "name": "XCAD Network", + "symbol": "XCAD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15857/thumb/logoWhiteX.jpg?1666230966" + }, + { + "chainId": 1, + "address": "0x88400f09934f817baf7e5e5be3b88961a501eead", + "name": "Zappay", + "symbol": "ZAPC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26535/thumb/zappay200.png?1658715592" + }, + { + "chainId": 1, + "address": "0x638f24096ff33e047e05e59fabc76325207090dc", + "name": "SquishiVerse", + "symbol": "SLIME", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25004/thumb/19481.png?1649759045" + }, + { + "chainId": 1, + "address": "0xc97232527b62efb0d8ed38cf3ea103a6cca4037e", + "name": "LP Yearn CRV Vault", + "symbol": "LP-YCRV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27624/thumb/yearncrvlp_32.png?1664885596" + }, + { + "chainId": 1, + "address": "0xa2cd3d43c775978a96bdbf12d733d5a1ed94fb18", + "name": "Chain", + "symbol": "XCN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24210/thumb/Chain_icon_200x200.png?1646895054" + }, + { + "chainId": 1, + "address": "0x1bf7fd22709733ccd7c45ab27dd02c7ec8e50078", + "name": "Quiztok", + "symbol": "QTCON", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8208/thumb/QTCON.png?1587543372" + }, + { + "chainId": 1, + "address": "0x2942e3b38e33123965bfbc21e802be943a76bbc6", + "name": "EHash", + "symbol": "EHASH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14180/thumb/ehash.png?1614820416" + }, + { + "chainId": 1, + "address": "0x90f36d7bfba633f17eccc62ec31c58a9a3c04c2a", + "name": "PulseFloki", + "symbol": "PLSF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26833/thumb/Pulse_Floki_Transparant.PNG?1660298457" + }, + { + "chainId": 1, + "address": "0xf6fd82dedbbe0ffadb5e1ecc2a283ab52b9ed2b0", + "name": "Etheal", + "symbol": "HEAL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3267/thumb/heal.png?1547037807" + }, + { + "chainId": 1, + "address": "0x85ca6710d0f1d511d130f6935edda88acbd921bd", + "name": "Pledgecamp", + "symbol": "PLG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5120/thumb/pledgecamop.png?1550204115" + }, + { + "chainId": 1, + "address": "0xcda2f16c6aa895d533506b426aff827b709c87f5", + "name": "Fairum", + "symbol": "FAI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13894/thumb/logo-65ce48ea8d2b64b6478a42c0050214e2.png?1612645237" + }, + { + "chainId": 1, + "address": "0xd43be54c1aedf7ee4099104f2dae4ea88b18a249", + "name": "Traxx", + "symbol": "TRAXX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24441/thumb/TT.png?1658383110" + }, + { + "chainId": 1, + "address": "0x2be1e42bf263aab47d27ba92e72c14823e101d7c", + "name": "Fluid FRAX", + "symbol": "FFRAX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28475/thumb/fFRAX-200x200.png?1671002588" + }, + { + "chainId": 1, + "address": "0x0b319db00d07c8fadfaaef13c910141a5da0aa8f", + "name": "Fluid TUSD", + "symbol": "FTUSD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28474/thumb/fTUSD-200x200.png?1671002558" + }, + { + "chainId": 1, + "address": "0xd7efb00d12c2c13131fd319336fdf952525da2af", + "name": "Proton", + "symbol": "XPR", + "decimals": 4, + "logoURI": "https://assets.coingecko.com/coins/images/10941/thumb/Proton-Icon.png?1588283737" + }, + { + "chainId": 1, + "address": "0x324af2d5353f2dd138e234b359d30d67c64b1b20", + "name": "Oracle System", + "symbol": "ORC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12517/thumb/www.oraclesystem.io-home-org-logo.png?1600382654" + }, + { + "chainId": 1, + "address": "0xc0ba369c8db6eb3924965e5c4fd0b4c1b91e305f", + "name": "DLP Duck", + "symbol": "DUCK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13440/thumb/DLP_Duck_Token.png?1612840740" + }, + { + "chainId": 1, + "address": "0x6e98e5401adcb0d76f4debfc3d794b3031f48790", + "name": "Aurix", + "symbol": "AUR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14372/thumb/gold-brown-2.png?1615769158" + }, + { + "chainId": 1, + "address": "0x1122b6a0e00dce0563082b6e2953f3a943855c1f", + "name": "CENNZnet", + "symbol": "CENNZ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3408/thumb/CENNZ_ticker.png?1650943548" + }, + { + "chainId": 1, + "address": "0x187d1018e8ef879be4194d6ed7590987463ead85", + "name": "FUZE", + "symbol": "FUZE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8941/thumb/logo-fuze-fix-big.png?1563117524" + }, + { + "chainId": 1, + "address": "0xf92364c2369a2633ffcd7db1b18d1fafff6bcbab", + "name": "BABIL TOKEN", + "symbol": "BABIL", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/27252/thumb/PKUhX3jRL.png?1666258453" + }, + { + "chainId": 1, + "address": "0x922105fad8153f516bcfb829f56dc097a0e1d705", + "name": "Yee", + "symbol": "YEE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2576/thumb/YeeCo-logo.png?1598519113" + }, + { + "chainId": 1, + "address": "0x9d93692e826a4bd9e903e2a27d7fbd1e116efdad", + "name": "POLY Maximus", + "symbol": "POLY", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/28236/thumb/photo_2022-11-09_12-53-56.jpg?1668576107" + }, + { + "chainId": 1, + "address": "0xcbcc0f036ed4788f63fc0fee32873d6a7487b908", + "name": "Humaniq", + "symbol": "HMQ", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/647/thumb/humaniq.jpg?1547034375" + }, + { + "chainId": 1, + "address": "0x2370f9d504c7a6e775bf6e14b3f12846b594cd53", + "name": "JPY Coin v1", + "symbol": "JPYC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17277/thumb/WoZ8rruL_400x400.png?1627016492" + }, + { + "chainId": 1, + "address": "0xa80f2c8f61c56546001f5fc2eb8d6e4e72c45d4c", + "name": "Unique Utility", + "symbol": "UNQT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23382/thumb/D31DBA6B-FB7E-4ACB-82B4-98E255C1C483.jpg?1643962784" + }, + { + "chainId": 1, + "address": "0x0abdace70d3790235af448c88547603b945604ea", + "name": "district0x", + "symbol": "DNT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/849/thumb/district0x.png?1547223762" + }, + { + "chainId": 1, + "address": "0xa58a4f5c4bb043d2cc1e170613b74e767c94189b", + "name": "UTU Coin", + "symbol": "UTU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12831/thumb/Aa5nmbkJ_400x400.png?1602884636" + }, + { + "chainId": 1, + "address": "0xe3278df3eb2085ba9b6899812a99a10f9ca5e0df", + "name": "Tourist", + "symbol": "TOTO", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/5271/thumb/tourist-token.png?1548759070" + }, + { + "chainId": 1, + "address": "0xfdbc1adc26f0f8f8606a5d63b7d3a3cd21c22b23", + "name": "1World", + "symbol": "1WO", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/3443/thumb/unnamed.png?1547038151" + }, + { + "chainId": 1, + "address": "0x4f3afec4e5a3f2a6a1a411def7d7dfe50ee057bf", + "name": "Digix Gold", + "symbol": "DGX", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/4171/thumb/DGX_Token.png?1547039436" + }, + { + "chainId": 1, + "address": "0x6fb0855c404e09c47c3fbca25f08d4e41f9f062f", + "name": "Aave ZRX v1", + "symbol": "AZRX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11735/thumb/aZRX.png?1593085371" + }, + { + "chainId": 1, + "address": "0x9e32b13ce7f2e80a01932b42553652e053d6ed8e", + "name": "Metis", + "symbol": "METIS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15595/thumb/metis.jpeg?1660285312" + }, + { + "chainId": 1, + "address": "0xe3818504c1b32bf1557b16c238b2e01fd3149c17", + "name": "Pillar", + "symbol": "PLR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/809/thumb/v2logo-1.png?1624906282" + }, + { + "chainId": 1, + "address": "0xdac657ffd44a3b9d8aba8749830bf14beb66ff2d", + "name": "humanDAO", + "symbol": "HDAO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21138/thumb/Untitled-2.jpg?1645163749" + }, + { + "chainId": 1, + "address": "0xb1e93236ab6073fdac58ada5564897177d4bcc43", + "name": "Seele", + "symbol": "SEELE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3294/thumb/Seele.png?1649325804" + }, + { + "chainId": 1, + "address": "0x04e0af0af1b7f0023c6b12af5a94df59b0e8cf59", + "name": "Sensitrust", + "symbol": "SETS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15035/thumb/SETS-token-logo-200.png?1619503990" + }, + { + "chainId": 1, + "address": "0x054d64b73d3d8a21af3d764efd76bcaa774f3bb2", + "name": "Plasma Finance", + "symbol": "PPAY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13340/thumb/Hi9sEGAD.png?1607586849" + }, + { + "chainId": 1, + "address": "0x138c2f1123cf3f82e4596d097c118eac6684940b", + "name": "AlphaCoin", + "symbol": "ALPHA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22199/thumb/coingeckologo.png?1641193441" + }, + { + "chainId": 1, + "address": "0x2932624ff57f5920ce498bb343385c0332ec6e40", + "name": "Slay To Earn", + "symbol": "SLAY2EARN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26257/thumb/cmc-logo.png?1657600932" + }, + { + "chainId": 1, + "address": "0xb31ef9e52d94d4120eb44fe1ddfde5b4654a6515", + "name": "DOSE", + "symbol": "DOSE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18847/thumb/dose.PNG?1633590548" + }, + { + "chainId": 1, + "address": "0x1e0b2992079b620aa13a7c2e7c88d2e1e18e46e9", + "name": "KOMPETE Token", + "symbol": "KOMPETE", + "decimals": 10, + "logoURI": "https://assets.coingecko.com/coins/images/24298/thumb/KOMPETE_LOGO.?1669463130" + }, + { + "chainId": 1, + "address": "0x2f57430a6ceda85a67121757785877b4a71b8e6d", + "name": "DefiPlaza", + "symbol": "DFP2", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19552/thumb/profile-round.png?1654153498" + }, + { + "chainId": 1, + "address": "0x77f0cc420dea0ae726db6bef1460a4b69176a8ea", + "name": "KONG Land Alpha Citizenship", + "symbol": "CITIZEN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17751/thumb/QmQmZNp7JNdvYAA8ichVr5bVZUUTfU83zJ8hTZoQfb9YBh.png?1629175195" + }, + { + "chainId": 1, + "address": "0x6b0956258ff7bd7645aa35369b55b61b8e6d6140", + "name": "Maximus LUCKY", + "symbol": "LUCKY", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/27685/thumb/IMG_1129.PNG?1665214648" + }, + { + "chainId": 1, + "address": "0x66fd97a78d8854fec445cd1c80a07896b0b4851f", + "name": "Lunch Money", + "symbol": "LMY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4149/thumb/IMG_2073.png?1612754752" + }, + { + "chainId": 1, + "address": "0x39317b8a1ae06c30bb615d88cdc5522781499f1c", + "name": "Brainiac", + "symbol": "BRAINS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21356/thumb/CVIaisb.png?1639006193" + }, + { + "chainId": 1, + "address": "0x01fb70ea8acfdd5435c8e8bd1531d96d57ced0ec", + "name": "Smart Electrum", + "symbol": "SELECT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25131/thumb/NRKjS5Cm_400x400.jpg?1650420526" + }, + { + "chainId": 1, + "address": "0xc3d088842dcf02c13699f936bb83dfbbc6f721ab", + "name": "Voucher ETH", + "symbol": "VETH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14484/thumb/veth_logo_uniswap_200x200.png?1616471309" + }, + { + "chainId": 1, + "address": "0x22143217662334f073652da5e2f1e0ae7349240c", + "name": "Crown CWT", + "symbol": "CWT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24201/thumb/Crown_Token_JPG_%282%29.jpg?1646838419" + }, + { + "chainId": 1, + "address": "0xd9016a907dc0ecfa3ca425ab20b6b785b42f2373", + "name": "GAMEE", + "symbol": "GMEE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14716/thumb/gmee-200x200.png?1621827468" + }, + { + "chainId": 1, + "address": "0x440238cc07186adea6653a2e8cb9a24737615609", + "name": "Shibmerican", + "symbol": "SHIBMERICAN", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/17008/thumb/60e1bb9c402f36243557ca79_200.png?1626066342" + }, + { + "chainId": 1, + "address": "0xc14830e53aa344e8c14603a91229a0b925b0b262", + "name": "Populous XBRL", + "symbol": "PXT", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/6207/thumb/populous.jpg?1564992440" + }, + { + "chainId": 1, + "address": "0x044d078f1c86508e13328842cc75ac021b272958", + "name": "Peercoin", + "symbol": "PPC", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/4/thumb/peercoin-icon-green-transparent_6x.png?1547033591" + }, + { + "chainId": 1, + "address": "0x09fe5f0236f0ea5d930197dce254d77b04128075", + "name": "Wrapped CryptoKitties", + "symbol": "WCK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8797/thumb/WCK.png?1561705836" + }, + { + "chainId": 1, + "address": "0x865c77b13a882cc264d0506f85e58dd8231d0d73", + "name": "KList Protocol", + "symbol": "LIST", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24645/thumb/MrZr9nsN_400x400.jpg?1648479425" + }, + { + "chainId": 1, + "address": "0x0c23a0ce478ada00df4e3c951b8fa6ffe7f1c56b", + "name": "Floki Chain", + "symbol": "FLOKICHAIN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27180/thumb/photo_2022-09-05_07-15-54.jpg?1662426957" + }, + { + "chainId": 1, + "address": "0xfc1c93a2507975e98b9d0e9260ded61a00152bf1", + "name": "Atlas Navi", + "symbol": "NAVI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28389/thumb/token_icon_-_logo_ATLAS_NAVI_200x200_transparent.png?1670070012" + }, + { + "chainId": 1, + "address": "0xab2a7b5876d707e0126b3a75ef7781c77c8877ee", + "name": "Quadency", + "symbol": "QUAD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21364/thumb/GkMXE_7A_400x400.png?1639014399" + }, + { + "chainId": 1, + "address": "0xd34c9281585866a9fb2af0931adb1fa35ed44039", + "name": "Be Gaming Coin", + "symbol": "BGC", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/13503/thumb/logo_%2897%29.png?1614982763" + }, + { + "chainId": 1, + "address": "0x6069c9223e8a5da1ec49ac5525d4bb757af72cd8", + "name": "MUSK Gold", + "symbol": "MUSK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21696/thumb/musk-icon-200x200.png?1649329802" + }, + { + "chainId": 1, + "address": "0xd7d6ab522fa41caae78f6edeb46a14954ae0c772", + "name": "Chipz", + "symbol": "CHPZ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17598/thumb/chipz-logo-22.png?1628591100" + }, + { + "chainId": 1, + "address": "0x3a529a8d4f2ea64d206339fa12a3af4d431f53c3", + "name": "Vendetta Finance", + "symbol": "VEN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26601/thumb/VF-Logo.png?1663768906" + }, + { + "chainId": 1, + "address": "0xdefa4e8a7bcba345f687a2f1456f5edd9ce97202", + "name": "Kyber Network Crystal", + "symbol": "KNC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14899/thumb/RwdVsGcw_400x400.jpg?1618923851" + }, + { + "chainId": 1, + "address": "0x1a6921f7b92113c79306f1a9e148d83445ac42bc", + "name": "MoonRock V2", + "symbol": "ROCK", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/25147/thumb/96251267.png?1650438435" + }, + { + "chainId": 1, + "address": "0xdcb5645eda1ed34c5641d81b927d33ebae9cf2a4", + "name": "PayB", + "symbol": "PAYB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25805/thumb/logo_payb_200_x_200.png?1653978259" + }, + { + "chainId": 1, + "address": "0x56e0b2c7694e6e10391e870774daa45cf6583486", + "name": "DUO Network", + "symbol": "DUO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4653/thumb/Duo_Network.png?1556593318" + }, + { + "chainId": 1, + "address": "0xc92276872cd1907d2e00b58a81a9bbd275b0a4ba", + "name": "Collateral Pay Governance", + "symbol": "COLLG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17026/thumb/collg.PNG?1626138703" + }, + { + "chainId": 1, + "address": "0x9e04f519b094f5f8210441e285f603f4d2b50084", + "name": "EarthFund", + "symbol": "1EARTH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20822/thumb/earthfund.PNG?1637722232" + }, + { + "chainId": 1, + "address": "0xc66cdac744916afb6811c71c277d88de90ce8d5b", + "name": "CDbio", + "symbol": "MCD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26957/thumb/mcd.png?1660998546" + }, + { + "chainId": 1, + "address": "0x4461cfd640da24d1a4642fa5f9ea3e6da966b831", + "name": "Cosmostarter", + "symbol": "CSMS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19875/thumb/cosmosstarter.PNG?1636083064" + }, + { + "chainId": 1, + "address": "0xc56c2b7e71b54d38aab6d52e94a04cbfa8f604fa", + "name": "ZUSD", + "symbol": "ZUSD", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/14192/thumb/icon_zusd_200_200.png?1614843297" + }, + { + "chainId": 1, + "address": "0x5136c98a80811c3f46bdda8b5c4555cfd9f812f0", + "name": "indaHash", + "symbol": "IDH", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/1909/thumb/indahash.png?1547973902" + }, + { + "chainId": 1, + "address": "0xe33f363351186e185470f35f6deb94aba44347d8", + "name": "Basid Coin", + "symbol": "BASID", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12566/thumb/basid-logo.png?1600827668" + }, + { + "chainId": 1, + "address": "0x6bff2fe249601ed0db3a87424a2e923118bb0312", + "name": "Fyooz", + "symbol": "FYZ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12202/thumb/fyooz.png?1598017956" + }, + { + "chainId": 1, + "address": "0x5b09a0371c1da44a8e24d36bf5deb1141a84d875", + "name": "MADNetwork", + "symbol": "MAD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2031/thumb/Logo.png?1606984567" + }, + { + "chainId": 1, + "address": "0xb74755f2896e088790f81205f7f3746e2a4b358b", + "name": "SYBC Coin", + "symbol": "SYBC", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/12901/thumb/sybc.png?1603346599" + }, + { + "chainId": 1, + "address": "0xa799c4adcf62e025ce4d8abe6a77cebc487d772a", + "name": "LuxFi", + "symbol": "LXF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20095/thumb/LPue04PB_400x400_%281%29.png?1636494545" + }, + { + "chainId": 1, + "address": "0x259ab9b9eab62b0fd98729b97be121073d5b3479", + "name": "Erica Social Token", + "symbol": "EST", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24076/thumb/EST.png?1646632592" + }, + { + "chainId": 1, + "address": "0x5fdaa123bf828d0d6a1c4ae62a95a6b3bade57c6", + "name": "Sweep Capital", + "symbol": "SWEEP", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/24007/thumb/logo_sweep_CG.png?1646028643" + }, + { + "chainId": 1, + "address": "0xe61fdaf474fac07063f2234fb9e60c1163cfa850", + "name": "Coin", + "symbol": "COIN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2394/thumb/coindefi.png?1629442922" + }, + { + "chainId": 1, + "address": "0xf8c3527cc04340b208c854e985240c02f7b7793f", + "name": "Frontier", + "symbol": "FRONT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12479/thumb/frontier_logo.png?1600145472" + }, + { + "chainId": 1, + "address": "0xf8e9f10c22840b613cda05a0c5fdb59a4d6cd7ef", + "name": "Dogs Of Elon", + "symbol": "DOE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19942/thumb/doe.png?1636336026" + }, + { + "chainId": 1, + "address": "0x24ffe459f51ea20c5d8ad49843529fc33654e7e4", + "name": "Pomeranian ETH", + "symbol": "POM", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/28246/thumb/Pom.jpeg?1668591756" + }, + { + "chainId": 1, + "address": "0xd46ba6d942050d489dbd938a2c909a5d5039a161", + "name": "Ampleforth", + "symbol": "AMPL", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/4708/thumb/Ampleforth.png?1561684250" + }, + { + "chainId": 1, + "address": "0xf4134146af2d511dd5ea8cdb1c4ac88c57d60404", + "name": "SunContract", + "symbol": "SNC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1166/thumb/suncontract.png?1548611174" + }, + { + "chainId": 1, + "address": "0x9d37f31a4e8c6af7f64f1ce6241d24f5cacd391c", + "name": "Viral", + "symbol": "VIRAL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25036/thumb/4iT-NXVI_400x400.jpg?1649853009" + }, + { + "chainId": 1, + "address": "0x62a8c2818bd7034dc24cd22368c3e53e8eb47c18", + "name": "InnitForTheTECH", + "symbol": "INNIT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26724/thumb/INNITlogo.jpg?1659876626" + }, + { + "chainId": 1, + "address": "0x28cb7e841ee97947a86b06fa4090c8451f64c0be", + "name": "YF Link", + "symbol": "YFL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12081/thumb/YFLink.png?1596987945" + }, + { + "chainId": 1, + "address": "0x1b8568fbb47708e9e9d31ff303254f748805bf21", + "name": "Scarcity", + "symbol": "SCX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19064/thumb/scx_gecko.png?1634266881" + }, + { + "chainId": 1, + "address": "0xb9eceb9f717852ad0d936b46155cb0c0f43cbe8e", + "name": "Ubiner", + "symbol": "UBIN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12190/thumb/ubin.PNG?1597965582" + }, + { + "chainId": 1, + "address": "0x2c2f7e7c5604d162d75641256b80f1bf6f4dc796", + "name": "Polkarare", + "symbol": "PRARE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15388/thumb/Image_from_iOS.png?1621145396" + }, + { + "chainId": 1, + "address": "0x3c6ff50c9ec362efa359317009428d52115fe643", + "name": "PeerEx Network", + "symbol": "PERX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12091/thumb/2AyoUJyQ_400x400.jpg?1597273390" + }, + { + "chainId": 1, + "address": "0x35f6b052c598d933d69a4eec4d04c73a191fe6c2", + "name": "Aave SNX", + "symbol": "ASNX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14265/thumb/aSNX.3238f3e7.png?1615528264" + }, + { + "chainId": 1, + "address": "0xa4cf2afd3b165975afffbf7e487cdd40c894ab6b", + "name": "Shibaken Finance", + "symbol": "SHIBAKEN", + "decimals": 0, + "logoURI": "https://assets.coingecko.com/coins/images/15413/thumb/shibak.png?1660902286" + }, + { + "chainId": 1, + "address": "0x58fcaa970339a9b1f8c0a5b4f3fcd7af2ba3075e", + "name": "Polar Sync", + "symbol": "POLAR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18102/thumb/polar-sync-logo-200.jpeg?1668595860" + }, + { + "chainId": 1, + "address": "0xf970b8e36e23f7fc3fd752eea86f8be8d83375a6", + "name": "Ripio Credit Network", + "symbol": "RCN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1057/thumb/ripio-credit-network.png?1548608361" + }, + { + "chainId": 1, + "address": "0xc6e145421fd494b26dcf2bfeb1b02b7c5721978f", + "name": "Crypto Perx", + "symbol": "CPRX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20768/thumb/8iQSd5YY_400x400.jpg?1637655996" + }, + { + "chainId": 1, + "address": "0x6ca88cc8d9288f5cad825053b6a1b179b05c76fc", + "name": "Universal Protocol Token", + "symbol": "UPT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10136/thumb/yS35aK0t_400x400_%281%29.jpg?1576191179" + }, + { + "chainId": 1, + "address": "0x910c4da718caf4ee38ce5c2490cddaeca689204e", + "name": "Waste Digital Coin", + "symbol": "WACO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19035/thumb/waco.png?1634197749" + }, + { + "chainId": 1, + "address": "0x538a151dd910c1d1227719bd400d6c4f99ea06d0", + "name": "Cryptochrome", + "symbol": "CHM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13028/thumb/cryptochrome_logo.png?1604461218" + }, + { + "chainId": 1, + "address": "0xf74941046389c78f12fe44784c0ec9ca7ceb7dc2", + "name": "Dreamr Platform", + "symbol": "DMR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18307/thumb/DMR_SYMBOL_OFFICIAL_200X200.png?1631508227" + }, + { + "chainId": 1, + "address": "0x0a9f693fce6f00a51a8e0db4351b5a8078b4242e", + "name": "Resfinex Token", + "symbol": "RES", + "decimals": 5, + "logoURI": "https://assets.coingecko.com/coins/images/10026/thumb/logo_%281%29.png?1588935633" + }, + { + "chainId": 1, + "address": "0xa1817b6d8d890f3943b61648992730373b71f156", + "name": "Mongoose", + "symbol": "MONGOOSE", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/21456/thumb/61b142508fba4235f29d57eb_Frame_24_%281%29.png?1639291023" + }, + { + "chainId": 1, + "address": "0x728f30fa2f100742c7949d1961804fa8e0b1387d", + "name": "GamerCoin", + "symbol": "GHX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14714/thumb/ghx_icon.png?1618819440" + }, + { + "chainId": 1, + "address": "0xbe9ab37a414c517b2be2bfa5945665bb07379054", + "name": "TomTomCoin", + "symbol": "TOMS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22864/thumb/toms_logo_200.png?1642753016" + }, + { + "chainId": 1, + "address": "0xf03a7eb46d01d9ecaa104558c732cf82f6b6b645", + "name": "Stader MaticX", + "symbol": "MATICX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25383/thumb/6GWyFVHD_400x400.jpg?1651615396" + }, + { + "chainId": 1, + "address": "0x0cdf9acd87e940837ff21bb40c9fd55f68bba059", + "name": "Public Mint", + "symbol": "MINT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14106/thumb/Public_Mint_Icon_200x200.png?1614333027" + }, + { + "chainId": 1, + "address": "0x84f7c44b6fed1080f647e354d552595be2cc602f", + "name": "Bigbom", + "symbol": "BBO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3795/thumb/bigbom-logo.png?1547038875" + }, + { + "chainId": 1, + "address": "0x9c5673002d854de18e9f6feb7f9825f88c5bf1e4", + "name": "Terraform DAO", + "symbol": "TERRAFORM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26742/thumb/tf-logo-200x200.png?1660005166" + }, + { + "chainId": 1, + "address": "0xfb7b4564402e5500db5bb6d63ae671302777c75a", + "name": "DexTools", + "symbol": "DEXT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11603/thumb/dext.png?1605790188" + }, + { + "chainId": 1, + "address": "0xff44b5719f0b77a9951636fc5e69d3a1fc9e7d73", + "name": "4ART Coin", + "symbol": "4ART", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4690/thumb/0_%284%29.png?1595544690" + }, + { + "chainId": 1, + "address": "0x6f259637dcd74c767781e37bc6133cd6a68aa161", + "name": "Huobi", + "symbol": "HT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2822/thumb/huobi-token-logo.png?1547036992" + }, + { + "chainId": 1, + "address": "0x8d96b4ab6c741a4c8679ae323a100d74f085ba8f", + "name": "Bazaars", + "symbol": "BZR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26392/thumb/bazaars_logo-color-black-icon.png?1657753265" + }, + { + "chainId": 1, + "address": "0x5224f552f110ec78e6e0468138950ae5f3040942", + "name": "Anomus Coin", + "symbol": "ANOM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20865/thumb/w07_TWqn_400x400.png?1637807012" + }, + { + "chainId": 1, + "address": "0x90de74265a416e1393a450752175aed98fe11517", + "name": "Unlock Protocol", + "symbol": "UDT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14545/thumb/unlock.jpg?1616948136" + }, + { + "chainId": 1, + "address": "0x94501b6a153c8973fd1f321fcc8188d40dc5d72d", + "name": "DigiDinar Token", + "symbol": "DDRT", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/10415/thumb/8WbpGRw.png?1579128643" + }, + { + "chainId": 1, + "address": "0x16b0a1a87ae8af5c792fabc429c4fe248834842b", + "name": "Algory", + "symbol": "ALG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12231/thumb/logo-2.png?1605256312" + }, + { + "chainId": 1, + "address": "0xe6602b34d8510b033e000975b3322537c7172441", + "name": "Frontrow", + "symbol": "FRR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21658/thumb/uZsO4yI7_400x400.jpg?1639697777" + }, + { + "chainId": 1, + "address": "0x423b5f62b328d0d6d44870f4eee316befa0b2df5", + "name": "GoNetwork", + "symbol": "GOT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3291/thumb/gonetwork.png?1547743011" + }, + { + "chainId": 1, + "address": "0x5319e86f0e41a06e49eb37046b8c11d78bcad68c", + "name": "Zelwin", + "symbol": "ZLW", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11547/thumb/5614.png?1590991128" + }, + { + "chainId": 1, + "address": "0xa6dd98031551c23bb4a2fbe2c4d524e8f737c6f7", + "name": "Tokenfy", + "symbol": "TKNFY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22901/thumb/tknfy.png?1642859030" + }, + { + "chainId": 1, + "address": "0x486f4641ef2b50cc130dadbd27b6f271723873b8", + "name": "Adventurer Gold", + "symbol": "GOLD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28427/thumb/anon-npc-pixel.png?1670548056" + }, + { + "chainId": 1, + "address": "0xf136d7b0b7ae5b86d21e7b78dfa95375a7360f19", + "name": "Toshimon", + "symbol": "TOSHI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14019/thumb/9E1K1PIZ_400x400.png?1613716582" + }, + { + "chainId": 1, + "address": "0x050d94685c6b0477e1fc555888af6e2bb8dfbda5", + "name": "Inu ", + "symbol": "INU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26259/thumb/inulogo_200x200.png?1656941363" + }, + { + "chainId": 1, + "address": "0xa95592dcffa3c080b4b40e459c5f5692f67db7f8", + "name": "Elysian", + "symbol": "ELY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3558/thumb/elysian.png?1548124914" + }, + { + "chainId": 1, + "address": "0xbce0665b20164d6cd6d15e70fed1e094ad4a44f0", + "name": "Meta Capital", + "symbol": "MCAP", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/22320/thumb/EMWN_Ybl_400x400.jpg?1641454816" + }, + { + "chainId": 1, + "address": "0x44086035439e676c02d411880fccb9837ce37c57", + "name": "unified Stable Dollar", + "symbol": "USD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12259/thumb/Uniswap_State_Dollar.png?1598550804" + }, + { + "chainId": 1, + "address": "0x61e90a50137e1f645c9ef4a0d3a4f01477738406", + "name": "League of Kingdoms", + "symbol": "LOKA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22572/thumb/loka_64pix.png?1642643271" + }, + { + "chainId": 1, + "address": "0xff20817765cb7f73d4bde2e66e067e58d11095c2", + "name": "Amp", + "symbol": "AMP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12409/thumb/amp-200x200.png?1599625397" + }, + { + "chainId": 1, + "address": "0x045414e728067ab3da4bceafc0d992d59183463a", + "name": "B watch Box", + "symbol": "BOX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25324/thumb/Screenshot_from_2022-04-29_17-04-42.png?1651223108" + }, + { + "chainId": 1, + "address": "0x2af5d2ad76741191d15dfe7bf6ac92d4bd912ca3", + "name": "LEO Token", + "symbol": "LEO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8418/thumb/leo-token.png?1558326215" + }, + { + "chainId": 1, + "address": "0x6a4c76874e686a7d080d173987a35a9c48905583", + "name": "Luxurious Pro Network", + "symbol": "LPNT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14126/thumb/logo_%2894%29.png?1614570735" + }, + { + "chainId": 1, + "address": "0x6ec8a24cabdc339a06a172f8223ea557055adaa5", + "name": "Genaro Network", + "symbol": "GNX", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/1361/thumb/genaro-network.png?1547035387" + }, + { + "chainId": 1, + "address": "0xb14ebf566511b9e6002bb286016ab2497b9b9c9d", + "name": "Hypersign Identity", + "symbol": "HID", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16158/thumb/hypersign_ONLYlogo_Yellow.png?1623140987" + }, + { + "chainId": 1, + "address": "0x9ccf191169a613eca433a249d3f40131178caebc", + "name": "MicroChains Gov Token", + "symbol": "MCG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26663/thumb/B2QwV0BL_400x400.jpeg?1659449087" + }, + { + "chainId": 1, + "address": "0x39aa39c021dfbae8fac545936693ac917d5e7563", + "name": "cUSDC", + "symbol": "CUSDC", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/9442/thumb/Compound_USDC.png?1567581577" + }, + { + "chainId": 1, + "address": "0x0b4c2708f052dca413600e237675e4d6778a9375", + "name": "CoinClaim", + "symbol": "CLM", + "decimals": 16, + "logoURI": "https://assets.coingecko.com/coins/images/6687/thumb/coinclaim.jpg?1547042891" + }, + { + "chainId": 1, + "address": "0x65b678936c489a2639036755aa2107ec09569198", + "name": "ITEN", + "symbol": "ITEN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12314/thumb/logo-light_%281%29.png?1599084234" + }, + { + "chainId": 1, + "address": "0xbcd4b7de6fde81025f74426d43165a5b0d790fdd", + "name": "SpiderDAO", + "symbol": "SPDR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13378/thumb/spiderdao_logo.png?1608029180" + }, + { + "chainId": 1, + "address": "0xb46eda6219ba121ce9280388e7afb7dc84be3ff2", + "name": "The Youth Pay", + "symbol": "TYP", + "decimals": 0, + "logoURI": "https://assets.coingecko.com/coins/images/27412/thumb/8xJB5QnY_400x400.jpeg?1663855027" + }, + { + "chainId": 1, + "address": "0x3e780920601d61cedb860fe9c4a90c9ea6a35e78", + "name": "Boosted Finance", + "symbol": "BOOST", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12329/thumb/boosted.jpg?1599105606" + }, + { + "chainId": 1, + "address": "0x56123908aca89bf60ce9659ae9f4589e46c8d2cf", + "name": "Mushe", + "symbol": "XMU", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/27965/thumb/2.png?1666762043" + }, + { + "chainId": 1, + "address": "0x0ecc0e963625e0c5504718ec460116176b3aa06c", + "name": "NBLH", + "symbol": "NBLH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27077/thumb/nblh.png?1661756906" + }, + { + "chainId": 1, + "address": "0xe54b3458c47e44c37a267e7c633afef88287c294", + "name": "Artfinity", + "symbol": "AT", + "decimals": 5, + "logoURI": "https://assets.coingecko.com/coins/images/8339/thumb/artfinity.png?1557604049" + }, + { + "chainId": 1, + "address": "0x8d137e3337eb1b58a222fef2b2cc7c423903d9cf", + "name": "SQGL Vault NFTX ", + "symbol": "SQGL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17041/thumb/SQGL.png?1626147070" + }, + { + "chainId": 1, + "address": "0x49184e6dae8c8ecd89d8bdc1b950c597b8167c90", + "name": "LIBERTAS", + "symbol": "LIBERTAS", + "decimals": 2, + "logoURI": "https://assets.coingecko.com/coins/images/11928/thumb/logo200x200_%281%29.png?1596409240" + }, + { + "chainId": 1, + "address": "0x6c3be406174349cfa4501654313d97e6a31072e1", + "name": "CNNS", + "symbol": "CNNS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8362/thumb/cnns.png?1557992686" + }, + { + "chainId": 1, + "address": "0x767fe9edc9e0df98e07454847909b5e959d7ca0e", + "name": "Illuvium", + "symbol": "ILV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14468/thumb/ILV.JPG?1617182121" + }, + { + "chainId": 1, + "address": "0x04969cd041c0cafb6ac462bd65b536a5bdb3a670", + "name": "Wrapped ECOMI", + "symbol": "WOMI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14675/thumb/ecomi.jpg?1617689100" + }, + { + "chainId": 1, + "address": "0xe477292f1b3268687a29376116b0ed27a9c76170", + "name": "HEROcoin", + "symbol": "PLAY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2221/thumb/herocoin.png?1547744781" + }, + { + "chainId": 1, + "address": "0x2f6081e3552b1c86ce4479b80062a1dda8ef23e3", + "name": "Dollars", + "symbol": "USDX", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/12377/thumb/rCdP56C.png?1599445426" + }, + { + "chainId": 1, + "address": "0x2791bfd60d232150bff86b39b7146c0eaaa2ba81", + "name": "BiFi", + "symbol": "BIFI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13671/thumb/ysYIu7Q.png?1610679337" + }, + { + "chainId": 1, + "address": "0xfdb15e5e6799be72798b1ccfaecbf186bf73a0c4", + "name": "NitroEX", + "symbol": "NTX", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/13976/thumb/ntx-icon.png?1613435774" + }, + { + "chainId": 1, + "address": "0xf3281c539716a08c754ec4c8f2b4cee0fab64bb9", + "name": "Markaccy", + "symbol": "MKCY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12522/thumb/e2eLPzTF_400x400.png?1600499534" + }, + { + "chainId": 1, + "address": "0xb4a3b0faf0ab53df58001804dda5bfc6a3d59008", + "name": "Sperax", + "symbol": "SPA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12232/thumb/sperax_logo.jpg?1598342904" + }, + { + "chainId": 1, + "address": "0x6589fe1271a0f29346796c6baf0cdf619e25e58e", + "name": "Grain", + "symbol": "GRAIN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13331/thumb/784594063499853904.png?1607531032" + }, + { + "chainId": 1, + "address": "0xfca59cd816ab1ead66534d82bc21e7515ce441cf", + "name": "Rarible", + "symbol": "RARI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11845/thumb/Rari.png?1594946953" + }, + { + "chainId": 1, + "address": "0x44197a4c44d6a059297caf6be4f7e172bd56caaf", + "name": "Eltcoin", + "symbol": "ELTCOIN", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/1118/thumb/eltcoin.png?1547958349" + }, + { + "chainId": 1, + "address": "0x31903e333809897ee57af57567f4377a1a78756c", + "name": "CryptoPunt", + "symbol": "PUN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19230/thumb/cryptopunt.PNG?1634767637" + }, + { + "chainId": 1, + "address": "0x17d2628d30f8e9e966c9ba831c9b9b01ea8ea75c", + "name": "ISKRA Token", + "symbol": "ISK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27428/thumb/ISKRA_logo.png?1663919121" + }, + { + "chainId": 1, + "address": "0x7b3d36eb606f873a75a6ab68f8c999848b04f935", + "name": "LootBox io", + "symbol": "LOOT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13414/thumb/ezgif-2-c057c84f38.jpg?1643246914" + }, + { + "chainId": 1, + "address": "0x1f22ad99c334e6689bae751cc225bcc38fe54f82", + "name": "CryptoMoonShots", + "symbol": "CMS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18730/thumb/UEYC0ty.png?1633251229" + }, + { + "chainId": 1, + "address": "0x5c62da804298d5972a323c80b539b8e7517a0dde", + "name": "VENJOCOIN", + "symbol": "VJC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8088/thumb/vjc-logo.jpg?1554454773" + }, + { + "chainId": 1, + "address": "0x77e20fc7f2f4084b74284e1190810fca3679aea0", + "name": "Dev Doing Something", + "symbol": "DEV", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/26805/thumb/200x200.png?1660208225" + }, + { + "chainId": 1, + "address": "0xd75f1f81b69bdd4df8efbb70e9c6f4609009d753", + "name": "YASHA", + "symbol": "YASHA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24040/thumb/oX9E7Q7.png?1646119331" + }, + { + "chainId": 1, + "address": "0xd137561c20be8e870d62e2ae92269f0950702f77", + "name": "Exp", + "symbol": "EXP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24263/thumb/explogo.png?1648627774" + }, + { + "chainId": 1, + "address": "0xf527d24391c767b86b8e91385e1ce9c54d230a2b", + "name": "Tsuzuki Inu", + "symbol": "TZKI", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/19437/thumb/tzki.png?1635470570" + }, + { + "chainId": 1, + "address": "0x111111517e4929d3dcbdfa7cce55d30d4b6bc4d6", + "name": "ICHI", + "symbol": "ICHI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13119/thumb/ICHI_%28Round%29.jpg?1614308761" + }, + { + "chainId": 1, + "address": "0xd109b2a304587569c84308c55465cd9ff0317bfb", + "name": "Aave AMM BptBALWETH", + "symbol": "AAMMBPTBALWETH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17261/thumb/aAmmBptBALWETH.png?1626959531" + }, + { + "chainId": 1, + "address": "0x7103ebdbf1f89be2d53eff9b3cf996c9e775c105", + "name": "X7103", + "symbol": "X7103", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28421/thumb/X7103_LOGO_black_back_200_x_200_px.png?1670460779" + }, + { + "chainId": 1, + "address": "0x31c2415c946928e9fd1af83cdfa38d3edbd4326f", + "name": "MADworld", + "symbol": "UMAD", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/20939/thumb/UMAD_.png?1638238294" + }, + { + "chainId": 1, + "address": "0x738865301a9b7dd80dc3666dd48cf034ec42bdda", + "name": "Agoras Currency of Tau", + "symbol": "AGRS", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/399/thumb/agrs.png?1639622234" + }, + { + "chainId": 1, + "address": "0xfdfe8b7ab6cf1bd1e3d14538ef40686296c42052", + "name": "Skraps", + "symbol": "SKRP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7987/thumb/60EnDfxK_400x400.jpg?1552888803" + }, + { + "chainId": 1, + "address": "0x103c3a209da59d3e7c4a89307e66521e081cfdf0", + "name": "Genesis Vision", + "symbol": "GVT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1173/thumb/Genesis-vision.png?1558045005" + }, + { + "chainId": 1, + "address": "0x15874d65e649880c2614e7a480cb7c9a55787ff6", + "name": "EthereumMax", + "symbol": "EMAX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15540/thumb/EMAX-Coin-Final2000x.png?1639402630" + }, + { + "chainId": 1, + "address": "0x16756ec1deb89a2106c35e0b586a799d0a61837d", + "name": "Chedda", + "symbol": "CHEDDA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22654/thumb/cMckil70_400x400.jpg?1642400459" + }, + { + "chainId": 1, + "address": "0xaa4e3edb11afa93c41db59842b29de64b72e355b", + "name": "Marginswap", + "symbol": "MFI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13899/thumb/marginswap_logo.png?1612756590" + }, + { + "chainId": 1, + "address": "0x3b9be07d622accaed78f479bc0edabfd6397e320", + "name": "Lossless", + "symbol": "LSS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15917/thumb/Group_57.png?1623046307" + }, + { + "chainId": 1, + "address": "0xf7413489c474ca4399eee604716c72879eea3615", + "name": "APYSwap", + "symbol": "APYS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14163/thumb/apys.png?1635831990" + }, + { + "chainId": 1, + "address": "0x06a6fc23e6ec8a2b2aeeefd70d772dc3d6b45010", + "name": "CryptoProfile", + "symbol": "CP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7350/thumb/CryptoProfile-logo.png?1547044024" + }, + { + "chainId": 1, + "address": "0x441761326490cacf7af299725b6292597ee822c2", + "name": "Unifi Protocol DAO", + "symbol": "UNFI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13152/thumb/logo-2.png?1605748967" + }, + { + "chainId": 1, + "address": "0xb57420fad6731b004309d5a0ec7c6c906adb8df7", + "name": "DotOracle", + "symbol": "DTO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19527/thumb/84438129.png?1635371187" + }, + { + "chainId": 1, + "address": "0x1856bc58f5511269afe2ca1e89bf08cbdcd01100", + "name": "Black Dragon Society", + "symbol": "BDS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28413/thumb/black_dragon_society_logo_200x200.png?1670387609" + }, + { + "chainId": 1, + "address": "0x95ad61b0a150d79219dcf64e1e6cc01f0b64c4ce", + "name": "Shiba Inu", + "symbol": "SHIB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11939/thumb/shiba.png?1622619446" + }, + { + "chainId": 1, + "address": "0x9a1997c130f4b2997166975d9aff92797d5134c2", + "name": "BondAppetite USD", + "symbol": "USDAP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14874/thumb/USDap_%281%29.png?1618822197" + }, + { + "chainId": 1, + "address": "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", + "name": "Wrapped Bitcoin", + "symbol": "WBTC", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/7598/thumb/wrapped_bitcoin_wbtc.png?1548822744" + }, + { + "chainId": 1, + "address": "0x9d65ff81a3c488d585bbfb0bfe3c7707c7917f54", + "name": "SSV Network", + "symbol": "SSV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19155/thumb/ssv.png?1638181902" + }, + { + "chainId": 1, + "address": "0xbebdab6da046bc49ffbb61fbd7b33157eb270d05", + "name": "Shard Coin", + "symbol": "SHARD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3527/thumb/8680493537c30f81917d034613b289e9.png?1547038326" + }, + { + "chainId": 1, + "address": "0xf3b9569f82b18aef890de263b84189bd33ebe452", + "name": "A Hunters Dream", + "symbol": "CAW", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25130/thumb/x-Logo-color-10x.png?1665831216" + }, + { + "chainId": 1, + "address": "0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359", + "name": "Sai", + "symbol": "SAI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1442/thumb/dai.png?1547035520" + }, + { + "chainId": 1, + "address": "0x508df5aa4746be37b5b6a69684dfd8bdc322219d", + "name": "Crafting Finance", + "symbol": "CRF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21559/thumb/tokenlogo.png?1639611564" + }, + { + "chainId": 1, + "address": "0xb2a63a5dd36c91ec2da59b188ff047f66fac122a", + "name": "Alpha Impact", + "symbol": "FOLO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19988/thumb/folo.PNG?1636357322" + }, + { + "chainId": 1, + "address": "0xdab396ccf3d84cf2d07c4454e10c8a6f5b008d2b", + "name": "Goldfinch", + "symbol": "GFI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19081/thumb/GOLDFINCH.png?1634369662" + }, + { + "chainId": 1, + "address": "0x998ffe1e43facffb941dc337dd0468d52ba5b48a", + "name": "Rupiah", + "symbol": "IDRT", + "decimals": 2, + "logoURI": "https://assets.coingecko.com/coins/images/9441/thumb/57421944_1371636006308255_3647136573922738176_n.jpg?1567462531" + }, + { + "chainId": 1, + "address": "0x9ba00d6856a4edf4665bca2c2309936572473b7e", + "name": "Aave USDC v1", + "symbol": "AUSDC", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/11674/thumb/aUSDC.png?1592546449" + }, + { + "chainId": 1, + "address": "0xe469c4473af82217b30cf17b10bcdb6c8c796e75", + "name": "EXRNchain", + "symbol": "EXRN", + "decimals": 0, + "logoURI": "https://assets.coingecko.com/coins/images/1049/thumb/exrn.png?1616039914" + }, + { + "chainId": 1, + "address": "0x0bb217e40f8a5cb79adf04e1aab60e5abd0dfc1e", + "name": "SWFTCOIN", + "symbol": "SWFTC", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/2346/thumb/SWFTCoin.jpg?1618392022" + }, + { + "chainId": 1, + "address": "0x1966d718a565566e8e202792658d7b5ff4ece469", + "name": "nDEX", + "symbol": "NDX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5576/thumb/nDEX-logo.png?1547041405" + }, + { + "chainId": 1, + "address": "0xfeeeef4d7b4bf3cc8bd012d02d32ba5fd3d51e31", + "name": "Tail", + "symbol": "TAIL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28260/thumb/IMG_20221210_122215_723.jpg?1670744910" + }, + { + "chainId": 1, + "address": "0xf5a56bd9ee4a3e2d493ab8e072658794b38b6d19", + "name": "Shibcraft", + "symbol": "SHFT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28401/thumb/ShibcraftLogo200x200.png?1670299854" + }, + { + "chainId": 1, + "address": "0xe4e822c0d5b329e8bb637972467d2e313824efa0", + "name": "Dfinance", + "symbol": "XFI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14002/thumb/7223.png?1613579385" + }, + { + "chainId": 1, + "address": "0xa0a9c16856c96d5e9d80a8696eea5e02b2dc3398", + "name": "DumpBuster", + "symbol": "GTFO", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/24344/thumb/logo2.png?1647412138" + }, + { + "chainId": 1, + "address": "0x17ef75aa22dd5f6c2763b8304ab24f40ee54d48a", + "name": "Revolution Populi", + "symbol": "RVP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14772/thumb/vsd0Wnc2_400x400.png?1618369912" + }, + { + "chainId": 1, + "address": "0x3a1311b8c404629e38f61d566cefefed083b9670", + "name": "Piccolo Inu", + "symbol": "PINU", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/19335/thumb/Piccolo-Inu.png?1643191682" + }, + { + "chainId": 1, + "address": "0x98585dfc8d9e7d48f0b1ae47ce33332cf4237d96", + "name": "New Order", + "symbol": "NEWO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21440/thumb/new-order-icon-256px.png?1639125759" + }, + { + "chainId": 1, + "address": "0x095797fd4297fb79883cc912a5ba6313b15c445d", + "name": "GOLCOIN", + "symbol": "GOLC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27341/thumb/logo_in_the_middle_.png?1663551501" + }, + { + "chainId": 1, + "address": "0x2ec3275f7ace4044e499823f511cd58250be8e3d", + "name": "Privilege", + "symbol": "PRVG", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/27585/thumb/prvg.png?1664701884" + }, + { + "chainId": 1, + "address": "0x33d6064f0dfb62462a74049f30909ddd4f683ba2", + "name": "Serenity", + "symbol": "SEREN", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/23412/thumb/seren.png?1644151893" + }, + { + "chainId": 1, + "address": "0x22987407fd1fc5a971e3fda3b3e74c88666cda91", + "name": "Smart Reward Token", + "symbol": "SRT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25035/thumb/me-44EyS_400x400.jpg?1649852504" + }, + { + "chainId": 1, + "address": "0xae6e307c3fe9e922e5674dbd7f830ed49c014c6b", + "name": "Credefi", + "symbol": "CREDI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21396/thumb/e1QbZ4qQ_400x400.jpg?1639042835" + }, + { + "chainId": 1, + "address": "0xd7c49cee7e9188cca6ad8ff264c1da2e69d4cf3b", + "name": "Nexus Mutual", + "symbol": "NXM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11810/thumb/nexus-mutual.jpg?1594547726" + }, + { + "chainId": 1, + "address": "0xc0eb85285d83217cd7c891702bcbc0fc401e2d9d", + "name": "Hiveterminal", + "symbol": "HVN", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/899/thumb/Hiveterminal_token.jpg?1547034726" + }, + { + "chainId": 1, + "address": "0xf063fe1ab7a291c5d06a86e14730b00bf24cb589", + "name": "DxSale Network", + "symbol": "SALE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12250/thumb/dx-light.png?1613965390" + }, + { + "chainId": 1, + "address": "0xda9fdab21bc4a5811134a6e0ba6ca06624e67c07", + "name": "Quidd", + "symbol": "QUIDD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19725/thumb/quidd.png?1637303435" + }, + { + "chainId": 1, + "address": "0x850aab69f0e0171a9a49db8be3e71351c8247df4", + "name": "Konomi Network", + "symbol": "KONO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14406/thumb/konomi.jpg?1615907763" + }, + { + "chainId": 1, + "address": "0x1f9840a85d5af5bf1d1762f925bdaddc4201f984", + "name": "Uniswap", + "symbol": "UNI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12504/thumb/uniswap-uni.png?1600306604" + }, + { + "chainId": 1, + "address": "0x6bffa07a1b0cebc474ce6833eaf2be6326252449", + "name": "BAEPAY", + "symbol": "BAEPAY", + "decimals": 4, + "logoURI": "https://assets.coingecko.com/coins/images/13101/thumb/baepay_logo.png?1605150696" + }, + { + "chainId": 1, + "address": "0x5d858bcd53e085920620549214a8b27ce2f04670", + "name": "POP Network", + "symbol": "POP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7281/thumb/Logo_%28Light_Mode%29_%281%29.png?1644482888" + }, + { + "chainId": 1, + "address": "0x3cbf23c081faa5419810ce0f6bc1ecb73006d848", + "name": "Digible", + "symbol": "DIGI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14960/thumb/RE3Fiua.png?1619148839" + }, + { + "chainId": 1, + "address": "0x19ac2659599fd01c853de846919544276ad26f50", + "name": "Covenant", + "symbol": "COVN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22280/thumb/16837.png?1641364060" + }, + { + "chainId": 1, + "address": "0x1f56ae850930460d076e8c2177d92daa6dd046c3", + "name": "Woof Token", + "symbol": "WOOF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22518/thumb/S2s77NqfYuMOh7r8xno5JmkkeqdX_wMsNlCbKU5on2CWnyd3FHb92aDb15CrVaz1zedzKUqyNcs8V4mXhBsfZqQQkeduUQyj6yVSXAkgTrW8itxKOqn3TMQtip4Ca__DPHuaW_Dyt_TmqYxeeIp6CU-lMFGjUlVPKz6pRFd2r0XRFrei77gK1iddcY6LGy0WdF_6lvdscHVkm-.jpg?1641969715" + }, + { + "chainId": 1, + "address": "0xed35af169af46a02ee13b9d79eb57d6d68c1749e", + "name": "ECOMI", + "symbol": "OMI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4428/thumb/ECOMI.png?1557928886" + }, + { + "chainId": 1, + "address": "0x7121d00b4fa18f13da6c2e30d19c04844e6afdc8", + "name": "Luffy", + "symbol": "LUFFY", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/17736/thumb/LUFFY_LOGO.png?1668675291" + }, + { + "chainId": 1, + "address": "0xe481f2311c774564d517d015e678c2736a25ddd3", + "name": "DefHold", + "symbol": "DEFO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13168/thumb/defhold_logo.png?1605849148" + }, + { + "chainId": 1, + "address": "0x99d36e97676a68313ffdc627fd6b56382a2a08b6", + "name": "Baby Trump", + "symbol": "BABYTRUMP", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/18014/thumb/Baby_Trump_Transpa.png?1630237728" + }, + { + "chainId": 1, + "address": "0xa92e7c82b11d10716ab534051b271d2f6aef7df5", + "name": "Ara", + "symbol": "ARA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13877/thumb/ara-icon-200.png?1628171321" + }, + { + "chainId": 1, + "address": "0x0dde6f6e345bfd23f3f419f0dfe04e93143b44fb", + "name": "SOTA Finance", + "symbol": "SOTA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14067/thumb/sota_logo.png?1614132527" + }, + { + "chainId": 1, + "address": "0xe9615071341c6f0392a5dfde1645ad01b810cb43", + "name": "ShibVinci", + "symbol": "SHIV", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/24703/thumb/gk-logo.png?1648645069" + }, + { + "chainId": 1, + "address": "0x19ea630bcbc1a511a16e65b6ecd447c92e1c087c", + "name": "CARAT", + "symbol": "CARAT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6434/thumb/carat.png?1547738711" + }, + { + "chainId": 1, + "address": "0x459086f2376525bdceba5bdda135e4e9d3fef5bf", + "name": "renBCH", + "symbol": "RENBCH", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/11563/thumb/Bitcoin_Cash.jpg?1628072890" + }, + { + "chainId": 1, + "address": "0xbaa70614c7aafb568a93e62a98d55696bcc85dfe", + "name": "Unicap Finance", + "symbol": "UCAP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13300/thumb/unicap256.png?1607308439" + }, + { + "chainId": 1, + "address": "0xd7dcd9b99787c619b4d57979521258d1a7267ad7", + "name": "Evrynet", + "symbol": "EVRY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19194/thumb/evry.png?1634637970" + }, + { + "chainId": 1, + "address": "0xc719d010b63e5bbf2c0551872cd5316ed26acd83", + "name": "Etherisc DIP", + "symbol": "DIP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4586/thumb/dip.png?1547039863" + }, + { + "chainId": 1, + "address": "0xe33ae4e795114279721047484e5ad5cc7df24fcb", + "name": "MCFinance", + "symbol": "MCF", + "decimals": 10, + "logoURI": "https://assets.coingecko.com/coins/images/17608/thumb/arFRQ0b.png?1628650181" + }, + { + "chainId": 1, + "address": "0xbbbbca6a901c926f240b89eacb641d8aec7aeafd", + "name": "Loopring", + "symbol": "LRC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/913/thumb/LRC.png?1572852344" + }, + { + "chainId": 1, + "address": "0x3d1f5e133c2988d14a0c13bdd2b58d260e74ef9a", + "name": "Omega Finance", + "symbol": "OMG", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/26511/thumb/1D23BCAF-AD7E-4176-B652-DFC5AE943191.png?1658448874" + }, + { + "chainId": 1, + "address": "0xcb0d82f4dfa503c9e3b8abc7a3caa01175b2da39", + "name": "AurusX", + "symbol": "AX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27871/thumb/AurusX_token_2D.jpg?1666165444" + }, + { + "chainId": 1, + "address": "0xf2cdf38e24738ba379ffa38d47bc88a941df5627", + "name": "Ally", + "symbol": "ALY", + "decimals": 2, + "logoURI": "https://assets.coingecko.com/coins/images/9619/thumb/BTf_sTXi_400x400.jpg?1569854715" + }, + { + "chainId": 1, + "address": "0x6369c3dadfc00054a42ba8b2c09c48131dd4aa38", + "name": "Morpher", + "symbol": "MPH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12619/thumb/morpher_200_200.png?1601524084" + }, + { + "chainId": 1, + "address": "0x043827a6dcfffb7fe21953d3bad32a1c74bb73bf", + "name": "JPEX Coin", + "symbol": "JPC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27717/thumb/200_200_JPEX_LOGO_transparent.png?1665453898" + }, + { + "chainId": 1, + "address": "0xfb19075d77a0f111796fb259819830f4780f1429", + "name": "Fenerbah e", + "symbol": "FB", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/17711/thumb/FB_Logo.png?1629082961" + }, + { + "chainId": 1, + "address": "0x979aca85ba37c675e78322ed5d97fa980b9bdf00", + "name": "FUSION", + "symbol": "FSN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2515/thumb/Fusion_200x200.png?1639629907" + }, + { + "chainId": 1, + "address": "0xcfeb09c3c5f0f78ad72166d55f9e6e9a60e96eec", + "name": "vEmpire DDAO", + "symbol": "VEMP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18074/thumb/Ay5nuny.png?1630380510" + }, + { + "chainId": 1, + "address": "0x616ef40d55c0d2c506f4d6873bda8090b79bf8fc", + "name": "Kounotori", + "symbol": "KTO", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/21251/thumb/KTO.png?1650528876" + }, + { + "chainId": 1, + "address": "0x8064d9ae6cdf087b1bcd5bdf3531bd5d8c537a68", + "name": "BoringDAO BTC", + "symbol": "OBTC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13525/thumb/gWzm2dr.png?1609390713" + }, + { + "chainId": 1, + "address": "0x3c9d6c1c73b31c837832c72e04d3152f051fc1a9", + "name": "BoringDAO OLD ", + "symbol": "BOR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12917/thumb/bor_logo.png?1603607502" + }, + { + "chainId": 1, + "address": "0x903904cb39bac33d4983ead3b3f573d720c7965e", + "name": "Dogus", + "symbol": "DOGUS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19196/thumb/rsZ3wmA.png?1634643309" + }, + { + "chainId": 1, + "address": "0x9275e8386a5bdda160c0e621e9a6067b8fd88ea2", + "name": "Nobunaga", + "symbol": "NBNG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16798/thumb/nbng.jpeg?1625056917" + }, + { + "chainId": 1, + "address": "0xf6650117017ffd48b725b4ec5a00b414097108a7", + "name": "Xido Finance", + "symbol": "XIDO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16161/thumb/KJw4clj.png?1623141959" + }, + { + "chainId": 1, + "address": "0x7dac25b1a665e1c70f25f1fc37d88c99274984ed", + "name": "Shibnobi", + "symbol": "SHINJA", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/20545/thumb/SibnoboMainIcon3_3x.png?1670664729" + }, + { + "chainId": 1, + "address": "0x4691937a7508860f876c9c0a2a617e7d9e945d4b", + "name": "WOO Network", + "symbol": "WOO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12921/thumb/w2UiemF__400x400.jpg?1603670367" + }, + { + "chainId": 1, + "address": "0xe83d5fb2c60b3a2597452e248cf7b2f52a7e731e", + "name": "ARTIC Foundation", + "symbol": "ARTIC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24279/thumb/Artic_logo_02.png?1647181452" + }, + { + "chainId": 1, + "address": "0x13119e34e140097a507b07a5564bde1bc375d9e6", + "name": "Money IMT", + "symbol": "IMT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2955/thumb/imt.png?1547037191" + }, + { + "chainId": 1, + "address": "0x4618519de4c304f3444ffa7f812dddc2971cc688", + "name": "Kind Ads", + "symbol": "KIND", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/5302/thumb/kind-ads-token.png?1547975306" + }, + { + "chainId": 1, + "address": "0x49e833337ece7afe375e44f4e3e8481029218e5c", + "name": "Value DeFi", + "symbol": "VALUE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12525/thumb/value_logo_-_500x500.png?1601478115" + }, + { + "chainId": 1, + "address": "0xe48972fcd82a274411c01834e2f031d4377fa2c0", + "name": "2key network", + "symbol": "2KEY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6090/thumb/2key.png?1591591830" + }, + { + "chainId": 1, + "address": "0x60f5672a271c7e39e787427a18353ba59a4a3578", + "name": "Pika", + "symbol": "PIKA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14419/thumb/pika-logo-2022-nbg.png?1641971069" + }, + { + "chainId": 1, + "address": "0xbd2f0cd039e0bfcf88901c98c0bfac5ab27566e3", + "name": "Dynamic Set Dollar", + "symbol": "DSD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13249/thumb/DSD.jpg?1606713628" + }, + { + "chainId": 1, + "address": "0xa808b22ffd2c472ad1278088f16d4010e6a54d5f", + "name": "Reimagined Finance", + "symbol": "REFI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21543/thumb/refi.PNG?1639451123" + }, + { + "chainId": 1, + "address": "0xa918897bd10d6dee614470c24a061b78b021b3a9", + "name": "Universal Coin", + "symbol": "UCOIN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13650/thumb/UCOIN_LOGO-min.png?1610549326" + }, + { + "chainId": 1, + "address": "0xc3f65b1c45b0d42a472cd0fbd37dd6678aef667a", + "name": "Cinnamoon", + "symbol": "CIMO", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/28465/thumb/D7287693-BFD2-4E5B-9A52-BBA8749F2B7D.png?1670911437" + }, + { + "chainId": 1, + "address": "0x1b5036bec1b82d44d52fa953a370b3c6cd9328b5", + "name": "Elan", + "symbol": "ELAN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27635/thumb/%D0%97%D0%BD%D1%96%D0%BC%D0%BE%D0%BA_%D0%B5%D0%BA%D1%80%D0%B0%D0%BD%D0%B0_2022-10-04_%D0%BE_17.23.34.png?1664961737" + }, + { + "chainId": 1, + "address": "0xeb6026d3beaa308d5822c44cdd2ca8c7714237ec", + "name": "All Sports", + "symbol": "SOC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25629/thumb/auC_SL79_400x400.jpg?1652863712" + }, + { + "chainId": 1, + "address": "0xcbee6459728019cb1f2bb971dde2ee3271bc7617", + "name": "WemergeToken", + "symbol": "MRG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6833/thumb/wemerge200.png?1547043144" + }, + { + "chainId": 1, + "address": "0x657b83a0336561c8f64389a6f5ade675c04b0c3b", + "name": "Playcent", + "symbol": "PCNT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14335/thumb/1_B5bFcgBld5poUj_c-_K1Jw.png?1615444831" + }, + { + "chainId": 1, + "address": "0x6d60a8dfb16d09f67d46fcd36a0cd310078257ca", + "name": "Centurion Invest", + "symbol": "CIX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28483/thumb/PHOTO-2022-05-27-11-34-42.jpg?1671073667" + }, + { + "chainId": 1, + "address": "0xe5b826ca2ca02f09c1725e9bd98d9a8874c30532", + "name": "ZEON Network", + "symbol": "ZEON", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4247/thumb/XZqXYc2j_400x400.jpg?1547039580" + }, + { + "chainId": 1, + "address": "0x1e053d89e08c24aa2ce5c5b4206744dc2d7bd8f5", + "name": "ThunderCore", + "symbol": "TT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4375/thumb/ThunderCore_Logo_Mark_Gradient_%283%29.png?1650455349" + }, + { + "chainId": 1, + "address": "0x260e63d91fccc499606bae3fe945c4ed1cf56a56", + "name": "MoonTools", + "symbol": "MOONS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12793/thumb/moontools-token-logo.png?1602588060" + }, + { + "chainId": 1, + "address": "0x315dc1b524de57ae8e809a2e97699dbc895b8a21", + "name": "Pist Trust", + "symbol": "PIST", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/16397/thumb/main_img01_pc.png?1623910650" + }, + { + "chainId": 1, + "address": "0x8b79656fc38a04044e495e22fad747126ca305c4", + "name": "AgaveCoin", + "symbol": "AGVC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7056/thumb/G4TML4cb_400x400.jpg?1547043511" + }, + { + "chainId": 1, + "address": "0x1e9d0bb190ac34492aa11b80d28c1c86487a341f", + "name": "The Neko", + "symbol": "NEKO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22692/thumb/FL6SU9b5_400x400.jpg?1642409749" + }, + { + "chainId": 1, + "address": "0xc9b6a17ebb43491635f603a01f8bb3e4b5d22228", + "name": "MAGA Coin ETH", + "symbol": "MAGA", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/27455/thumb/rsz_jimerkya_400x400.png?1664090952" + }, + { + "chainId": 1, + "address": "0x320d31183100280ccdf69366cd56180ea442a3e8", + "name": "Lightcoin", + "symbol": "LHC", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/16381/thumb/lhc.PNG?1623835248" + }, + { + "chainId": 1, + "address": "0xcbe7142f5c16755d8683ba329efa1abf7b54482d", + "name": "MedicalVeda", + "symbol": "MVEDA", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/13069/thumb/medicalveda_new_logo_final_%281%29.png?1604894690" + }, + { + "chainId": 1, + "address": "0x73a058da53220d25bcb2c4cb8ff8520626ea26e7", + "name": "Scro", + "symbol": "SCROH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26882/thumb/SCRO.png?1660646485" + }, + { + "chainId": 1, + "address": "0x35156b404c3f9bdaf45ab65ba315419bcde3775c", + "name": "Chihiro Inu", + "symbol": "CHIRO", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/19721/thumb/chiro200x200.png?1642166355" + }, + { + "chainId": 1, + "address": "0x9f6f91078a5072a8b54695dafa2374ab3ccd603b", + "name": "KRAUSE", + "symbol": "KRAUSE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21022/thumb/-HEQTtGz_400x400.png?1638193269" + }, + { + "chainId": 1, + "address": "0x32c4adb9cf57f972bc375129de91c897b4f364f1", + "name": "Flowchain", + "symbol": "FLC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7446/thumb/logo_%2889%29.png?1597459811" + }, + { + "chainId": 1, + "address": "0x4cd4441f169e472dd7ea462167ba93180b6e6074", + "name": "CURE Chain", + "symbol": "CHAIN", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/27291/thumb/cure_chain_logo.png?1663147515" + }, + { + "chainId": 1, + "address": "0xfec82a1b2638826bfe53ae2f87cfd94329cde60d", + "name": "Adana Demirspor", + "symbol": "DEMIR", + "decimals": 2, + "logoURI": "https://assets.coingecko.com/coins/images/21789/thumb/16300.png?1640051015" + }, + { + "chainId": 1, + "address": "0x6d1dc3928604b00180bb570bdae94b9698d33b79", + "name": "UnitedCrowd", + "symbol": "UCT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14956/thumb/eUvRU9wm.png?1619142511" + }, + { + "chainId": 1, + "address": "0x7f3141c4d6b047fb930991b450f1ed996a51cb26", + "name": "X", + "symbol": "X", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22334/thumb/x.PNG?1641519663" + }, + { + "chainId": 1, + "address": "0x2af72850c504ddd3c1876c66a914caee7ff8a46a", + "name": "WhaleRoom", + "symbol": "WHL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14328/thumb/ArEX8tkV_400x400.png?1615432175" + }, + { + "chainId": 1, + "address": "0xe87e15b9c7d989474cb6d8c56b3db4efad5b21e8", + "name": "Hokkaido Inu", + "symbol": "HOKK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14985/thumb/hokk.png?1662706232" + }, + { + "chainId": 1, + "address": "0xef19f4e48830093ce5bc8b3ff7f903a0ae3e9fa1", + "name": "BOTXCOIN", + "symbol": "BOTX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6827/thumb/botx.jpg?1548317786" + }, + { + "chainId": 1, + "address": "0xb56a1f3310578f23120182fb2e58c087efe6e147", + "name": "All Coins Yield Capital", + "symbol": "ACYC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21109/thumb/acyc.png?1639990309" + }, + { + "chainId": 1, + "address": "0xc4ee0aa2d993ca7c9263ecfa26c6f7e13009d2b6", + "name": "Hoichi", + "symbol": "HOICHI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27227/thumb/3dBs4VvW_400x400.jpeg?1662711951" + }, + { + "chainId": 1, + "address": "0xd0660cd418a64a1d44e9214ad8e459324d8157f1", + "name": "Woofy", + "symbol": "WOOFY", + "decimals": 12, + "logoURI": "https://assets.coingecko.com/coins/images/15410/thumb/woofy.png?1622566328" + }, + { + "chainId": 1, + "address": "0x3a3a65aab0dd2a17e3f1947ba16138cd37d08c04", + "name": "Aave ETH v1", + "symbol": "AETH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11619/thumb/aETH_2x.png?1591976597" + }, + { + "chainId": 1, + "address": "0xc0114f14638a333a4d5c3b04f09b96372348a842", + "name": "Keisuke Inu", + "symbol": "KEI", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/15797/thumb/realicon.png?1628170332" + }, + { + "chainId": 1, + "address": "0x4289c043a12392f1027307fb58272d8ebd853912", + "name": "AiLink", + "symbol": "ALI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5917/thumb/ailink-token.png?1547041855" + }, + { + "chainId": 1, + "address": "0x368c5290b13caa10284db58b4ad4f3e9ee8bf4c9", + "name": "KKO Protocol", + "symbol": "KKO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15366/thumb/kko-coingecko.png?1658982821" + }, + { + "chainId": 1, + "address": "0x9b5c2be869a19e84bdbcb1386dad83a2ec8dae82", + "name": "Stream Protocol", + "symbol": "STPL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13277/thumb/STPL.png?1606897574" + }, + { + "chainId": 1, + "address": "0x159a1dfae19057de57dfffcbb3da1ae784678965", + "name": "Reflex", + "symbol": "RFX", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/12745/thumb/2MKGMRCT_400x400.png?1602194456" + }, + { + "chainId": 1, + "address": "0xc1322d8ae3b0e2e437e0ae36388d0cfd2c02f1c9", + "name": "DAO PlayMarket 2 0", + "symbol": "PMT", + "decimals": 4, + "logoURI": "https://assets.coingecko.com/coins/images/1514/thumb/pmt.png?1547035648" + }, + { + "chainId": 1, + "address": "0x142a774e8b52550e88e196cedd7a5835acb646d0", + "name": "SaitaRealty", + "symbol": "SRLTY", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/27289/thumb/s_mksCdB_400x400.jpeg?1663145048" + }, + { + "chainId": 1, + "address": "0x6888a16ea9792c15a4dcf2f6c623d055c8ede792", + "name": "Signal SIG", + "symbol": "SIG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3508/thumb/5906667d95a2d43d31378ce7_60x60logo.png?1547038276" + }, + { + "chainId": 1, + "address": "0x03cf23efdb2a6cf6cf6eb8b5a3383966f5c6b6d5", + "name": "YAKUSHIMA", + "symbol": "FOREST", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/26984/thumb/photo_2022-08-20_23-40-23.jpg?1661181326" + }, + { + "chainId": 1, + "address": "0x0ab87046fbb341d058f17cbc4c1133f25a20a52f", + "name": "Governance OHM", + "symbol": "GOHM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21129/thumb/token_wsOHM_logo.png?1638764900" + }, + { + "chainId": 1, + "address": "0x3684b581db1f94b721ee0022624329feb16ab653", + "name": "GUNTHY", + "symbol": "GUNTHY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7869/thumb/GUNTHY_128.png?1562130711" + }, + { + "chainId": 1, + "address": "0xea068fba19ce95f12d252ad8cb2939225c4ea02d", + "name": "Fief", + "symbol": "FIEF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23710/thumb/61f837d2703b649ab0213d45_Black_logo_-_no_background-p-500.png?1645083867" + }, + { + "chainId": 1, + "address": "0xb7c2fcd6d7922eddd2a7a9b0524074a60d5b472c", + "name": "VentiSwap", + "symbol": "VST", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25591/thumb/output-onlinepngtools-2_2.png?1652862384" + }, + { + "chainId": 1, + "address": "0xcbfa5f7e44d7cd08666766c2935e2fdaa953178f", + "name": "Meta Farmer Finance", + "symbol": "MFF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23800/thumb/RGJiUIeo_400x400.jpg?1645442711" + }, + { + "chainId": 1, + "address": "0x28cca76f6e8ec81e4550ecd761f899110b060e97", + "name": "ArGoApp", + "symbol": "ARGO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15477/thumb/Group_118.png?1647877401" + }, + { + "chainId": 1, + "address": "0x64b78325d7495d6d4be92f234fa3f3b8d8964b8b", + "name": "Shopping io", + "symbol": "SHOP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27242/thumb/shop.png?1663123573" + }, + { + "chainId": 1, + "address": "0x1bbf25e71ec48b84d773809b4ba55b6f4be946fb", + "name": "Vow", + "symbol": "VOW", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18202/thumb/72Nd63R0_400x400.png?1630974351" + }, + { + "chainId": 1, + "address": "0x0aa7efe4945db24d95ca6e117bba65ed326e291a", + "name": "Ojamu", + "symbol": "OJA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18947/thumb/ojamu-icon-PNK.png?1634006741" + }, + { + "chainId": 1, + "address": "0x26524e35e44e265eb181c7ba6ec084983181aae3", + "name": "Cydotori", + "symbol": "DOTR", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/28109/thumb/dotr.png?1667545446" + }, + { + "chainId": 1, + "address": "0xa5b947687163fe88c3e6af5b17ae69896f4abccf", + "name": "Poseidon", + "symbol": "PSDN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25316/thumb/psdn_32.png?1651216148" + }, + { + "chainId": 1, + "address": "0x2ebd53d035150f328bd754d6dc66b99b0edb89aa", + "name": "Metronome", + "symbol": "MET", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3249/thumb/metronome.png?1548084800" + }, + { + "chainId": 1, + "address": "0x1f0f468ee03a6d99cd8a09dd071494a83dc1c0e5", + "name": "SmartX", + "symbol": "SAT", + "decimals": 4, + "logoURI": "https://assets.coingecko.com/coins/images/11788/thumb/FZf8lPa3_400x400.jpg?1594018352" + }, + { + "chainId": 1, + "address": "0x0763fdccf1ae541a5961815c0872a8c5bc6de4d7", + "name": "SUKU", + "symbol": "SUKU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11969/thumb/suku-200.png?1655447745" + }, + { + "chainId": 1, + "address": "0x4e15361fd6b4bb609fa63c81a2be19d873717870", + "name": "Fantom", + "symbol": "FTM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4001/thumb/Fantom_round.png?1669652346" + }, + { + "chainId": 1, + "address": "0x6b1a8f210ec6b7b6643cea3583fb0c079f367898", + "name": "Baanx", + "symbol": "BXX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17108/thumb/BXX_Token_logo.png?1626311836" + }, + { + "chainId": 1, + "address": "0x3506424f91fd33084466f402d5d97f05f8e3b4af", + "name": "Chiliz", + "symbol": "CHZ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8834/thumb/Chiliz.png?1561970540" + }, + { + "chainId": 1, + "address": "0x765baefcb5418fa9f7dddacb1ccc07bd0e890e4e", + "name": "Meteorite Network", + "symbol": "METEOR", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/14889/thumb/Meteor-token-200.png?1618900489" + }, + { + "chainId": 1, + "address": "0x4b1d0b9f081468d780ca1d5d79132b64301085d1", + "name": "Lumerin", + "symbol": "LMR", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/24593/thumb/Lumerin-icon.png?1650688090" + }, + { + "chainId": 1, + "address": "0x08aa0ed0040736dd28d4c8b16ab453b368248d19", + "name": "Cryptobuyer", + "symbol": "XPT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10845/thumb/XPT.png?1584775672" + }, + { + "chainId": 1, + "address": "0xc19b6a4ac7c7cc24459f08984bbd09664af17bd1", + "name": "SENSO", + "symbol": "SENSO", + "decimals": 0, + "logoURI": "https://assets.coingecko.com/coins/images/11064/thumb/senso.png?1587776458" + }, + { + "chainId": 1, + "address": "0x430ef9263e76dae63c84292c3409d61c598e9682", + "name": "Vulcan Forged", + "symbol": "PYR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14770/thumb/1617088937196.png?1619414736" + }, + { + "chainId": 1, + "address": "0x5a56da75c50aa2733f5fa9a2442aaefcbc60b2e6", + "name": "CortexDAO", + "symbol": "CXD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25224/thumb/cortex.jpg?1650979502" + }, + { + "chainId": 1, + "address": "0x7a5ce6abd131ea6b148a022cb76fc180ae3315a6", + "name": "bAlpha", + "symbol": "BALPHA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14224/thumb/logo_bAlpha_200.png?1615089190" + }, + { + "chainId": 1, + "address": "0x7a9716685f852ee268feb86dffa562d214cc13db", + "name": "FANBI TOKEN", + "symbol": "FBT", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/9828/thumb/logo1_%281%29.png?1572472211" + }, + { + "chainId": 1, + "address": "0xc07a150ecadf2cc352f5586396e344a6b17625eb", + "name": "Bio Passport", + "symbol": "BIOT", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/14167/thumb/logo_%2895%29.png?1614753428" + }, + { + "chainId": 1, + "address": "0x40eb746dee876ac1e78697b7ca85142d178a1fc8", + "name": "Iagon", + "symbol": "IAG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3264/thumb/d8c5hLbX9u0GwYCKcZRbXS2vAQ0Vd-Hfjg-3zQ73ucSZQoFYsLH4NEKN8EQkwwBVR8OPJgrTRG-_dW_XVHL058ezYSvwsSB4bjYtHH7xjZNHBaAaX1NZl7axG8zm2FIRV6AUmgdmxcbP0BcuWvUJkcUKrYYEDf0Msx2_3arxgmS1V85YMb_1SVbWt6E3QnkpvLcGyC0SxN6rGTr.jpg?1627448798" + }, + { + "chainId": 1, + "address": "0xd6bd97a26232ba02172ff86b055d5d7be789335b", + "name": "Ormeus Cash", + "symbol": "OMC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11798/thumb/Vooo8SX.png?1594359387" + }, + { + "chainId": 1, + "address": "0xf07376f0e3bff57116ed62e5e8e2bb1341e4b4c2", + "name": "JoorsChain", + "symbol": "JIC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7128/thumb/H0kIwyNs_400x400.jpg?1547043626" + }, + { + "chainId": 1, + "address": "0xe44d9f88c84af1765b48bab1d09c0d9c39b01056", + "name": "Defun Gaming", + "symbol": "DEFUN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27906/thumb/trans.png?1666335908" + }, + { + "chainId": 1, + "address": "0xc36824905dff2eaaee7ecc09fcc63abc0af5abc5", + "name": "Basis Bond", + "symbol": "BAB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13961/thumb/bab_1.png?1613358492" + }, + { + "chainId": 1, + "address": "0xbd2949f67dcdc549c6ebe98696449fa79d988a9f", + "name": "Meter Governance mapped by Meter io", + "symbol": "EMTRG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12175/thumb/Dark-blue-icon-transparent-vector-white-icon200x200.png?1597819237" + }, + { + "chainId": 1, + "address": "0x191557728e4d8caa4ac94f86af842148c0fa8f7e", + "name": "Ormeus Ecosystem", + "symbol": "ECO", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/8923/thumb/logo_eco_low.png?1562902804" + }, + { + "chainId": 1, + "address": "0xbc6da0fe9ad5f3b0d58160288917aa56653660e9", + "name": "Alchemix USD", + "symbol": "ALUSD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14114/thumb/Alchemix_USD.png?1614410406" + }, + { + "chainId": 1, + "address": "0xb59490ab09a0f526cc7305822ac65f2ab12f9723", + "name": "Litentry", + "symbol": "LIT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13825/thumb/logo_200x200.png?1612153317" + }, + { + "chainId": 1, + "address": "0xefe2afb5f2a9ea8ec6d8a57fe88febcfe29db813", + "name": "bUKHI", + "symbol": "BUKH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18401/thumb/bukh_new.png?1632739515" + }, + { + "chainId": 1, + "address": "0x6e765d26388a17a6e86c49a8e41df3f58abcd337", + "name": "Kangal", + "symbol": "KANGAL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14241/thumb/logo-200.png?1622341641" + }, + { + "chainId": 1, + "address": "0x3a856d4effa670c54585a5d523e96513e148e95d", + "name": "TriasLab", + "symbol": "TRIAS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13963/thumb/5ELqtwp__400x400_%281%29.jpg?1613527958" + }, + { + "chainId": 1, + "address": "0x047686fb287e7263a23873dea66b4501015a2226", + "name": "Blockchain Cuties Universe", + "symbol": "CUTE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8328/thumb/bnLvIEl1_400x400.jpg?1557533240" + }, + { + "chainId": 1, + "address": "0xfa898efdb91e35bd311c45b9b955f742b6719aa2", + "name": "Baddest Alpha Ape Bundle", + "symbol": "APED", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18874/thumb/bteKOcAH_400x400.jpg?1633658256" + }, + { + "chainId": 1, + "address": "0x4a220e6096b25eadb88358cb44068a3248254675", + "name": "Quant", + "symbol": "QNT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3370/thumb/5ZOu7brX_400x400.jpg?1612437252" + }, + { + "chainId": 1, + "address": "0x74be64b45d394fa57816c1950e94dbb8d7a7b306", + "name": "Givewell Inu", + "symbol": "GINU", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/28323/thumb/5FADC518-3EE8-4914-A627-602B9C3FAFB4.jpeg?1669445878" + }, + { + "chainId": 1, + "address": "0x5f0e628b693018f639d10e4a4f59bd4d8b2b6b44", + "name": "Whiteheart", + "symbol": "WHITE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13484/thumb/whiteheart.png?1609076548" + }, + { + "chainId": 1, + "address": "0x9cf4679c67bee8da2d6f58c64592fff6bee79330", + "name": "Yearn Cash", + "symbol": "YFIC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24777/thumb/yfic.png?1648900564" + }, + { + "chainId": 1, + "address": "0xb26631c6dda06ad89b93c71400d25692de89c068", + "name": "Minds", + "symbol": "MINDS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11517/thumb/Minds.png?1590580465" + }, + { + "chainId": 1, + "address": "0xa95c5ebb86e0de73b4fb8c47a45b792cfea28c23", + "name": "stake link", + "symbol": "SDL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28406/thumb/stake.png?1670334146" + }, + { + "chainId": 1, + "address": "0x9cb1aeafcc8a9406632c5b084246ea72f62d37b6", + "name": "LBK", + "symbol": "LBK", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/9492/thumb/lbk.jpeg?1586144855" + }, + { + "chainId": 1, + "address": "0x6bd361e10c1afed0d95259e7c0115f3a60e4ea99", + "name": "BollyCoin", + "symbol": "BOLLY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21610/thumb/IMG-20211208-124337-701.jpg?1639579540" + }, + { + "chainId": 1, + "address": "0xba1ed22c69ad00739ee2b4abd70e270be9e87ee2", + "name": "WebFlix", + "symbol": "WFX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8559/thumb/dr4OEbWK_400x400.jpg?1559199557" + }, + { + "chainId": 1, + "address": "0xd1b5651e55d4ceed36251c61c50c889b36f6abb5", + "name": "Stake DAO CRV", + "symbol": "SDCRV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27756/thumb/scCRV-2.png?1665654580" + }, + { + "chainId": 1, + "address": "0xad5fe5b0b8ec8ff4565204990e4405b2da117d8e", + "name": "TronClassic", + "symbol": "TRXC", + "decimals": 0, + "logoURI": "https://assets.coingecko.com/coins/images/4626/thumb/trxc.png?1547039893" + }, + { + "chainId": 1, + "address": "0x3449fc1cd036255ba1eb19d65ff4ba2b8903a69a", + "name": "Basis Cash", + "symbol": "BAC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13246/thumb/BAC.png?1613231642" + }, + { + "chainId": 1, + "address": "0x24b47299e756af0571f512232a3629e0dabb52ed", + "name": "concertVR", + "symbol": "CVT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2914/thumb/cvt.png?1547037094" + }, + { + "chainId": 1, + "address": "0x35e78b3982e87ecfd5b3f3265b601c046cdbe232", + "name": "SideShift", + "symbol": "XAI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15719/thumb/sideshift-icon_3x.png?1621595183" + }, + { + "chainId": 1, + "address": "0xffe136de12a2cd95f64cef9f36414c93e9003959", + "name": "DUCK Vault NFTX ", + "symbol": "DUCK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18346/thumb/duck.png?1631603088" + }, + { + "chainId": 1, + "address": "0x33d20575f20c6a1881f8ab08e69f6fbaffaeedf2", + "name": "BlueWizard", + "symbol": "WIZ", + "decimals": 12, + "logoURI": "https://assets.coingecko.com/coins/images/15261/thumb/BW.jpg?1620270880" + }, + { + "chainId": 1, + "address": "0x8dd4228605e467671941ffb4cae15cf7959c8d9d", + "name": "Ziticoin", + "symbol": "ZITI", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/15255/thumb/logo200x200_%284%29.png?1620267412" + }, + { + "chainId": 1, + "address": "0x34bdf48a8f753de4822a6cfb1fee275f9b4d662e", + "name": "FACTS", + "symbol": "BKC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8461/thumb/sFNOkmVx_400x400.jpg?1558690624" + }, + { + "chainId": 1, + "address": "0xf4d2888d29d722226fafa5d9b24f9164c092421e", + "name": "LooksRare", + "symbol": "LOOKS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22173/thumb/circle-black-256.png?1641173160" + }, + { + "chainId": 1, + "address": "0x878cf148ccbb50426043a9affe54ba408221c7fa", + "name": "Crypto Kombat", + "symbol": "KOMBAT", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/15147/thumb/Kombat-token-logo-200.jpg?1619859575" + }, + { + "chainId": 1, + "address": "0x74faab6986560fd1140508e4266d8a7b87274ffd", + "name": "HyperDAO", + "symbol": "HDAO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10780/thumb/B7-ppPfE_400x400.png?1583467291" + }, + { + "chainId": 1, + "address": "0x6fb1e018f107d3352506c23777e4cd62e063584a", + "name": "Identity", + "symbol": "IDTT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18384/thumb/identity.PNG?1631745919" + }, + { + "chainId": 1, + "address": "0x763fa6806e1acf68130d2d0f0df754c93cc546b2", + "name": "Lition", + "symbol": "LIT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6580/thumb/Lition_ico.png?1547042787" + }, + { + "chainId": 1, + "address": "0x5d285f735998f36631f678ff41fb56a10a4d0429", + "name": "MixMarvel", + "symbol": "MIX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8222/thumb/8878caf93b1e3b6cfb3b414bda3b5250.png?1613945432" + }, + { + "chainId": 1, + "address": "0x5dced3c2fab61e21b25177c6050d3f166f696110", + "name": "Tea", + "symbol": "TEA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14426/thumb/teachain-logo.png?1616031044" + }, + { + "chainId": 1, + "address": "0xa1a4e303e9c56962f201c5e834abc1e677a3c4f3", + "name": "CVNX", + "symbol": "CVNX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/862/thumb/CVNX-logo.png?1649528798" + }, + { + "chainId": 1, + "address": "0x0f612a09ead55bb81b6534e80ed5a21bf0a27b16", + "name": "EUNOMIA", + "symbol": "ENTS", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/6524/thumb/eunomia.png?1548125623" + }, + { + "chainId": 1, + "address": "0x57b946008913b82e4df85f501cbaed910e58d26c", + "name": "Marlin", + "symbol": "POND", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8903/thumb/POND_200x200.png?1622515451" + }, + { + "chainId": 1, + "address": "0xb3e2cb7cccfe139f8ff84013823bf22da6b6390a", + "name": "Iconic ICNQ", + "symbol": "ICNQ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7830/thumb/2_Iconic_Holding_icon.png?1593396172" + }, + { + "chainId": 1, + "address": "0x7ff7a55a7c637e3953ab25569c335e04b96c475b", + "name": "Kondux OLD ", + "symbol": "KNDX", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/16987/thumb/bzYx6E41zeLl2gopOj9UqNmIdFgrGU2zSA.jpeg?1646104675" + }, + { + "chainId": 1, + "address": "0x85ffb35957203dfd12061eaecd708db623bd567c", + "name": "Ledgity", + "symbol": "LTY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17939/thumb/ledgity.PNG?1629876428" + }, + { + "chainId": 1, + "address": "0x580c8520deda0a441522aeae0f9f7a5f29629afa", + "name": "Dawn Protocol", + "symbol": "DAWN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11555/thumb/dawn_protocol.png?1591060256" + }, + { + "chainId": 1, + "address": "0x10f44a834097469ac340592d28c479c442e99bfe", + "name": "Alcazar", + "symbol": "ALCAZAR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28010/thumb/Alcazar.jpeg?1666943350" + }, + { + "chainId": 1, + "address": "0x6c58ee9794882c608e6015bde2802412b3d1377e", + "name": "Inescoin", + "symbol": "INES", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26537/thumb/Piece_face_inescoin_1_3_bryefr.png?1658720155" + }, + { + "chainId": 1, + "address": "0x5552e5a89a70cb2ef5adbbc45a6be442fe7160ec", + "name": "Kawakami", + "symbol": "KAWA", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/16369/thumb/kawakami-2022-red-logo.png?1665374338" + }, + { + "chainId": 1, + "address": "0xdb298285fe4c5410b05390ca80e8fbe9de1f259b", + "name": "handle fi", + "symbol": "FOREX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18533/thumb/handle.fiFOREXLogoDark200x200.png?1632755675" + }, + { + "chainId": 1, + "address": "0x30cf203b48edaa42c3b4918e955fed26cd012a3f", + "name": "MetaGame", + "symbol": "SEED", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13099/thumb/V8phEz8V.png?1612854078" + }, + { + "chainId": 1, + "address": "0x06874f973dc3c96dc22a10ef0d0609f877f335ea", + "name": "STOA Network", + "symbol": "STA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16710/thumb/RSloE6X1_400x400.jpeg?1624684021" + }, + { + "chainId": 1, + "address": "0xa8006e3ac1bd94e54e3136b8e5dd75db0163e6f4", + "name": "EveryonesCrypto", + "symbol": "EOC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13081/thumb/logo_blue.png?1604976930" + }, + { + "chainId": 1, + "address": "0xf88951d7b676798705fd3a362ba5b1dbca2b233b", + "name": "Piction Network", + "symbol": "PXL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7870/thumb/4091.png?1562798644" + }, + { + "chainId": 1, + "address": "0x5ddafa0856f883a634051dcb4dd710863d85a0c1", + "name": "IlliquidDAO", + "symbol": "JPEGS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22498/thumb/sXd3uwVJ_400x400.png?1641951772" + }, + { + "chainId": 1, + "address": "0x89d3c0249307ae570a316030764d12f53bb191fd", + "name": "Xiglute Coin", + "symbol": "XGC", + "decimals": 14, + "logoURI": "https://assets.coingecko.com/coins/images/15240/thumb/256x256_%282%29.png?1620196016" + }, + { + "chainId": 1, + "address": "0x70e67ec0939ec87c3a77b089ca08e0443ea4a177", + "name": "Immortal Cat", + "symbol": "ICC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26397/thumb/l4P_a2cv_400x400.png?1657753905" + }, + { + "chainId": 1, + "address": "0xcc1f757e3fa67b70e761c71f4b75b1e9f72263af", + "name": "GET", + "symbol": "GET", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27210/thumb/LOGO_%281%29.jpeg?1662609050" + }, + { + "chainId": 1, + "address": "0xa4ef4b0b23c1fc81d3f9ecf93510e64f58a4a016", + "name": "1MillionNFTs", + "symbol": "1MIL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14990/thumb/4kQ8hRnU_400x400.jpg?1619334818" + }, + { + "chainId": 1, + "address": "0x41a3dba3d677e573636ba691a70ff2d606c29666", + "name": "BlockWallet", + "symbol": "BLANK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14209/thumb/blank.png?1614940842" + }, + { + "chainId": 1, + "address": "0xff19138b039d938db46bdda0067dc4ba132ec71c", + "name": "Snetwork", + "symbol": "SNET", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/5382/thumb/snetwork.png?1548609904" + }, + { + "chainId": 1, + "address": "0x1788430620960f9a70e3dc14202a3a35dde1a316", + "name": "OpenAlexa Protocol", + "symbol": "OAP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12400/thumb/256x256-OAP.png?1599556701" + }, + { + "chainId": 1, + "address": "0x0ccd5dd52dee42b171a623478e5261c1eaae092a", + "name": "DeFi on MCW", + "symbol": "DFM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13831/thumb/logo_200x200_%281%29.png?1612168790" + }, + { + "chainId": 1, + "address": "0x024b6e7dc26f4d5579bdd936f8d7bc31f2339999", + "name": "Mithril Share", + "symbol": "MIS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13516/thumb/MIS.png?1609306996" + }, + { + "chainId": 1, + "address": "0xf629cbd94d3791c9250152bd8dfbdf380e2a3b9c", + "name": "Enjin Coin", + "symbol": "ENJ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1102/thumb/enjin-coin-logo.png?1547035078" + }, + { + "chainId": 1, + "address": "0x0ce6d5a093d4166237c7a9ff8e0553b0293214a1", + "name": "Decenturion", + "symbol": "DCNT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6195/thumb/X5_20dt1_400x400.jpg?1547042224" + }, + { + "chainId": 1, + "address": "0x8254e26e453eb5abd29b3c37ac9e8da32e5d3299", + "name": "RBX", + "symbol": "RBX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19253/thumb/output-onlinepngtools-9.png?1634801960" + }, + { + "chainId": 1, + "address": "0x29d578cec46b50fa5c88a99c6a4b70184c062953", + "name": "Everscale", + "symbol": "EVER", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/12783/thumb/everscale_badge_main_round_1x.png?1640050196" + }, + { + "chainId": 1, + "address": "0x777fd20c983d6658c1d50b3958b3a1733d1cd1e1", + "name": "PUBLISH", + "symbol": "NEWS", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/9572/thumb/PUBLISH_Logo_280X280.png?1617605563" + }, + { + "chainId": 1, + "address": "0x045da4bfe02b320f4403674b3b7d121737727a36", + "name": "DeFi Franc", + "symbol": "DCHF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28108/thumb/22249.png?1667544891" + }, + { + "chainId": 1, + "address": "0x9aab071b4129b083b01cb5a0cb513ce7eca26fa5", + "name": "Hunt", + "symbol": "HUNT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7989/thumb/HUNT.png?1571024256" + }, + { + "chainId": 1, + "address": "0x4740735aa98dc8aa232bd049f8f0210458e7fca3", + "name": "Ridotto", + "symbol": "RDT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18671/thumb/200x200_%2832%29.png?1632875527" + }, + { + "chainId": 1, + "address": "0xea3983fc6d0fbbc41fb6f6091f68f3e08894dc06", + "name": "Unido", + "symbol": "UDO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14176/thumb/unido.jpg?1614792353" + }, + { + "chainId": 1, + "address": "0x5592c5aa89492ea918d55b804e177b5ca7dccd5a", + "name": "Wrapped xBTC", + "symbol": "WXBTC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15688/thumb/XBTC-Logo-6.png?1621564837" + }, + { + "chainId": 1, + "address": "0xb6ee9668771a79be7967ee29a63d4184f8097143", + "name": "CargoX", + "symbol": "CXO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2580/thumb/cargox.png?1547738832" + }, + { + "chainId": 1, + "address": "0xf55a93b613d172b86c2ba3981a849dae2aecde2f", + "name": "Your Futures Exchange", + "symbol": "YFX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15654/thumb/yfx.PNG?1621478455" + }, + { + "chainId": 1, + "address": "0x43dfc4159d86f3a37a5a4b3d4580b888ad7d4ddd", + "name": "DODO", + "symbol": "DODO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12651/thumb/dodo_logo.png?1601433025" + }, + { + "chainId": 1, + "address": "0xd2be3722b17b616c51ed9b8944a227d1ce579c24", + "name": "Dtube Coin", + "symbol": "DTUBE", + "decimals": 2, + "logoURI": "https://assets.coingecko.com/coins/images/13126/thumb/dtube_logo.png?1605500467" + }, + { + "chainId": 1, + "address": "0xefc1c73a3d8728dc4cf2a18ac5705fe93e5914ac", + "name": "MetricExchange", + "symbol": "METRIC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12664/thumb/metric_exchange_logo.png?1601453711" + }, + { + "chainId": 1, + "address": "0x84fe25f3921f3426395c883707950d0c00367576", + "name": "Insight Protocol", + "symbol": "INX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11694/thumb/logo_%EC%B0%90%EB%B8%94%EB%A3%A8.png?1592879247" + }, + { + "chainId": 1, + "address": "0xf058501585023d040ea9493134ed72c083553eed", + "name": "Dymmax", + "symbol": "DMX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13476/thumb/dmmx.png?1608934713" + }, + { + "chainId": 1, + "address": "0xc4c75f2a0cb1a9acc33929512dc9733ea1fd6fde", + "name": "Martin Shkreli Inu", + "symbol": "MSI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26365/thumb/jEYEUxUI_400x400.jpeg?1657600080" + }, + { + "chainId": 1, + "address": "0x6aedb157b9ca86e32200857aa2579d47098ace39", + "name": "Up Spiral", + "symbol": "SPIRAL", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/26615/thumb/200logo.png?1664098207" + }, + { + "chainId": 1, + "address": "0x2a1174d1cd4348cb1eaec3f00310908ca289e5be", + "name": "Exgold", + "symbol": "EXG", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/14068/thumb/-HgHqzsy_400x400.png?1614137624" + }, + { + "chainId": 1, + "address": "0x14cc8dfaf2258e1b8b2869300dba1b734dc0fe43", + "name": "K Tune", + "symbol": "KTT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13939/thumb/KakaoTalk_20220928_162525453.png?1664356062" + }, + { + "chainId": 1, + "address": "0xd07d9fe2d2cc067015e2b4917d24933804f42cfa", + "name": "Tolar", + "symbol": "TOL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4487/thumb/tolar.png?1548759060" + }, + { + "chainId": 1, + "address": "0x7d92a06808b4c4833623f809218ed403e4a85fe1", + "name": "Universe Crystal Gene", + "symbol": "UCG", + "decimals": 0, + "logoURI": "https://assets.coingecko.com/coins/images/24619/thumb/19073.png?1648418625" + }, + { + "chainId": 1, + "address": "0xaae3cf9968d26925bdb73ce3864e0084a20f4687", + "name": "Farmland Protocol", + "symbol": "FAR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13497/thumb/70059912.jpg?1609193763" + }, + { + "chainId": 1, + "address": "0x9469d013805bffb7d3debe5e7839237e535ec483", + "name": "Darwinia Network", + "symbol": "RING", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9443/thumb/RING.png?1615271827" + }, + { + "chainId": 1, + "address": "0xecc0f1f860a82ab3b442382d93853c02d6384389", + "name": "Axis DeFi", + "symbol": "AXIS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12199/thumb/YeLWZ3V.jpg?1597998424" + }, + { + "chainId": 1, + "address": "0x1af4f195a8aaa7ffd752c28a13b719b84056f0d6", + "name": "NFT Track Protocol", + "symbol": "NTP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27108/thumb/NTP_Symbol_CoinGecko.jpg?1662009323" + }, + { + "chainId": 1, + "address": "0xbeab712832112bd7664226db7cd025b153d3af55", + "name": "Bright Union", + "symbol": "BRIGHT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17552/thumb/BrightToken_Token-only_200x200-1.png?1628227007" + }, + { + "chainId": 1, + "address": "0xbe601dd49da9ee1d2f64d422c4aecf8eb83c119f", + "name": "JustCarbon Governance", + "symbol": "JCG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25701/thumb/Just-Carbon-JCG.png?1653451947" + }, + { + "chainId": 1, + "address": "0x7bec98609cb6378d6f995e8f8097ee78376fbec9", + "name": "LeisureMeta", + "symbol": "LM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25761/thumb/SVG_16533804486374586M.jpg?1653548604" + }, + { + "chainId": 1, + "address": "0x28b5e12cce51f15594b0b91d5b5adaa70f684a02", + "name": "Napoleon X", + "symbol": "NPX", + "decimals": 2, + "logoURI": "https://assets.coingecko.com/coins/images/1471/thumb/napoleon-x.jpg?1547035570" + }, + { + "chainId": 1, + "address": "0xac042d9284df95cc6bd35982f6a61e3e7a6f875b", + "name": "Lobby", + "symbol": "LBY", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/20699/thumb/6197f0a241be5b582742b263_lobbySocial256w.png?1637565411" + }, + { + "chainId": 1, + "address": "0xe7ab45162f5979f09b0bda1cc7dfc97c270ea3d5", + "name": "Dobermann", + "symbol": "DOBE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16002/thumb/doberman.PNG?1622593349" + }, + { + "chainId": 1, + "address": "0xbf8fb919a8bbf28e590852aef2d284494ebc0657", + "name": "ABCC", + "symbol": "AT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5132/thumb/abcc-token.png?1547040523" + }, + { + "chainId": 1, + "address": "0x6149c26cd2f7b5ccdb32029af817123f6e37df5b", + "name": "Launchpool", + "symbol": "LPOOL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14041/thumb/dGUvV0HQ_400x400.jpg?1613976219" + }, + { + "chainId": 1, + "address": "0x62d3c05b9c3d916fbc111819bbd3cee52906c1ae", + "name": "Every Game", + "symbol": "EGAME", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20758/thumb/egame.png?1637648306" + }, + { + "chainId": 1, + "address": "0x927159670c50042109d7c0f4aed0cee89452433e", + "name": "DGPayment", + "symbol": "DGP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13291/thumb/dgpay-icon-logo.png?1607062736" + }, + { + "chainId": 1, + "address": "0x39c6b3e42d6a679d7d776778fe880bc9487c2eda", + "name": "Aave KNC", + "symbol": "AKNC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14250/thumb/aKNC.42bcd2e3.png?1615528613" + }, + { + "chainId": 1, + "address": "0x764104dc24dadff01150253a58c82337984b4319", + "name": "hiCLONEX", + "symbol": "HICLONEX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28436/thumb/hiclonex.png?1670568067" + }, + { + "chainId": 1, + "address": "0x28fda76721a8077a5de802ab0212849b8c38429e", + "name": "Artemis Vision", + "symbol": "ARV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23716/thumb/uUMU6_Cr_400x400.jpg?1645147096" + }, + { + "chainId": 1, + "address": "0x11c49e5ca7222f89909a6ec42d81eb6b2af5ff40", + "name": "BridgeCoin", + "symbol": "BRC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27334/thumb/brc.png?1663481808" + }, + { + "chainId": 1, + "address": "0x8bbe1a2961b41340468d0548c2cd5b7dfa9b684c", + "name": "Handy", + "symbol": "HANDY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21944/thumb/Handy_Token_symbol-01.png?1640313628" + }, + { + "chainId": 1, + "address": "0x0000000005c6b7c1fd10915a05f034f90d524d6e", + "name": "TRYC", + "symbol": "TRYC", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/21985/thumb/16357.png?1640577395" + }, + { + "chainId": 1, + "address": "0x054f76beed60ab6dbeb23502178c52d6c5debe40", + "name": "DeFiner", + "symbol": "FIN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12780/thumb/PdaW8Lb.png?1602500407" + }, + { + "chainId": 1, + "address": "0x7c0853ab074f2f17e37c5482dcf6c5f6c1246e8b", + "name": "LondonCoinGold", + "symbol": "LDXG", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/24419/thumb/E9eOuH6W_400x400.jpg?1647611828" + }, + { + "chainId": 1, + "address": "0x1ca02dd95f3f1e33da7f5afe15ea866dab07af04", + "name": "King Arthur", + "symbol": "BKING", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/16162/thumb/king-arthur.png?1623142524" + }, + { + "chainId": 1, + "address": "0x1cdd2eab61112697626f7b4bb0e23da4febf7b7c", + "name": "Tether USD Wormhole ", + "symbol": "USDTSO", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/22881/thumb/USDTso_wh_small.png?1644223113" + }, + { + "chainId": 1, + "address": "0x4e0fca55a6c3a94720ded91153a27f60e26b9aa8", + "name": "Boost", + "symbol": "BOOST", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17657/thumb/02FjG1Og.png?1628757020" + }, + { + "chainId": 1, + "address": "0xbf52f2ab39e26e0951d2a02b49b7702abe30406a", + "name": "ODEM", + "symbol": "ODE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3752/thumb/odem.png?1548329893" + }, + { + "chainId": 1, + "address": "0xc53342fd7575f572b0ff4569e31941a5b821ac76", + "name": "Ethereum Volatility Index Token", + "symbol": "ETHV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16716/thumb/logo_-_2021-06-28T092549.772.png?1624843558" + }, + { + "chainId": 1, + "address": "0x0ea984e789302b7b612147e4e4144e64f21425eb", + "name": "Wale", + "symbol": "WTN", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/6404/thumb/waletoken_2_sosmed_Square.png?1547042539" + }, + { + "chainId": 1, + "address": "0x41e5560054824ea6b0732e656e3ad64e20e94e45", + "name": "Civic", + "symbol": "CVC", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/788/thumb/civic-orange.png?1657246016" + }, + { + "chainId": 1, + "address": "0x0a76aad21948ea1ef447d26dee91a54370e151e0", + "name": "Ethereum Lite", + "symbol": "ELITE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1062/thumb/elite.png?1547035007" + }, + { + "chainId": 1, + "address": "0xba358b6f5b4c0215650444b8c30d870b55050d2d", + "name": "Hub", + "symbol": "HUB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13345/thumb/Hub-Logo-Transparent-BG-200x200_%281%29.png?1607661813" + }, + { + "chainId": 1, + "address": "0x57ab1ec28d129707052df4df418d58a2d46d5f51", + "name": "sUSD", + "symbol": "SUSD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5013/thumb/sUSD.png?1616150765" + }, + { + "chainId": 1, + "address": "0x1fe70be734e473e5721ea57c8b5b01e6caa52686", + "name": "BitRent", + "symbol": "RNTB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3499/thumb/photo.png?1547273521" + }, + { + "chainId": 1, + "address": "0x673a2722e5a8f614beaa66a2ba73384d98424d51", + "name": "Multi Strategies Capital", + "symbol": "MSC", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/23846/thumb/logo200.png?1645519048" + }, + { + "chainId": 1, + "address": "0x68749665ff8d2d112fa859aa293f07a622782f38", + "name": "Tether Gold", + "symbol": "XAUT", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/10481/thumb/Tether_Gold.png?1668148656" + }, + { + "chainId": 1, + "address": "0xd0d6d6c5fe4a677d343cc433536bb717bae167dd", + "name": "adChain", + "symbol": "ADT", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/778/thumb/adtoken.png?1547034537" + }, + { + "chainId": 1, + "address": "0x4485561db76614ff727f8e0a3ea95690b8b16022", + "name": "Invox Finance", + "symbol": "INVOX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3200/thumb/invox.png?1547037651" + }, + { + "chainId": 1, + "address": "0x96b52b5bf8d902252d0714a1bd2651a785fd2660", + "name": "EtherBone", + "symbol": "ETHBN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11596/thumb/ETHBN.png?1615803426" + }, + { + "chainId": 1, + "address": "0x8a88f04e0c905054d2f33b26bb3a46d7091a039a", + "name": "IGT", + "symbol": "IG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5434/thumb/igtoken.png?1547041141" + }, + { + "chainId": 1, + "address": "0x2f4eb47a1b1f4488c71fc10e39a4aa56af33dd49", + "name": "UNCL", + "symbol": "UNCL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13102/thumb/uncl_logo.png?1605230945" + }, + { + "chainId": 1, + "address": "0xf6537fe0df7f0cc0985cf00792cc98249e73efa0", + "name": "GIV", + "symbol": "GIV", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/8996/thumb/giv.png?1629952637" + }, + { + "chainId": 1, + "address": "0x30680ac0a8a993088223925265fd7a76beb87e7f", + "name": "ARAW", + "symbol": "ARAW", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4281/thumb/araw.png?1547039642" + }, + { + "chainId": 1, + "address": "0x3e828ac5c480069d4765654fb4b8733b910b13b2", + "name": "Colony Network", + "symbol": "CLNY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23269/thumb/Logo.png?1644482438" + }, + { + "chainId": 1, + "address": "0xd3c625f54dec647db8780dbbe0e880ef21ba4329", + "name": "HollaEx", + "symbol": "XHT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16157/thumb/xGyZxK8.png?1623139610" + }, + { + "chainId": 1, + "address": "0x737fa0372c8d001904ae6acaf0552d4015f9c947", + "name": "MEDIBIT", + "symbol": "MEDIBIT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6606/thumb/medibit.png?1547978632" + }, + { + "chainId": 1, + "address": "0x01022591fce0609b57670beba60102dfd2b95d77", + "name": "Hitop", + "symbol": "HITOP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25959/thumb/20540.png?1654860802" + }, + { + "chainId": 1, + "address": "0x53dfea0a8cc2a2a2e425e1c174bc162999723ea0", + "name": "Jarvis Synthetic Swiss Franc", + "symbol": "JCHF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15727/thumb/jCHF.png?1634046084" + }, + { + "chainId": 1, + "address": "0x0ecdd783dc7bf820614044b51862ed29714d2ba5", + "name": "Medooza Ecosystem", + "symbol": "MDZA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13448/thumb/medooza-red-symbol-logo-exchange.png?1608681531" + }, + { + "chainId": 1, + "address": "0xd075e95423c5c4ba1e122cae0f4cdfa19b82881b", + "name": "OPES Wrapped PE ", + "symbol": "WPE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16647/thumb/opes.png?1625834316" + }, + { + "chainId": 1, + "address": "0xdf35988d795d90711e785b488bb2127692e6f956", + "name": "BabyFloki", + "symbol": "BABYFLOKI", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/16712/thumb/floki.jpg?1624810144" + }, + { + "chainId": 1, + "address": "0xf5b1fd29d23e98db2d9ebb8435e1082e3b38fb65", + "name": "Kishimoto old ", + "symbol": "KISHIMOTO", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/19188/thumb/cmclogo.png?1666922508" + }, + { + "chainId": 1, + "address": "0xda1e53e088023fe4d1dc5a418581748f52cbd1b8", + "name": "Aidi Inu", + "symbol": "AIDI", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/16339/thumb/aidi_200.png?1634199020" + }, + { + "chainId": 1, + "address": "0x78c292d1445e6b9558bf42e8bc369271ded062ea", + "name": "CyberMusic", + "symbol": "CYMT", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/6039/thumb/cybermusic.png?1547791125" + }, + { + "chainId": 1, + "address": "0xaaf37055188feee4869de63464937e683d61b2a1", + "name": "UChain", + "symbol": "UCN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4254/thumb/UChain-logo.jpg?1547039592" + }, + { + "chainId": 1, + "address": "0x582d872a1b094fc48f5de31d3b73f2d9be47def1", + "name": "Toncoin", + "symbol": "TON", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/17980/thumb/ton_symbol.png?1670498136" + }, + { + "chainId": 1, + "address": "0xeed3ae7b0f8b5b9bb8c035a9941382b1822671cd", + "name": "EveryCoin", + "symbol": "EVY", + "decimals": 12, + "logoURI": "https://assets.coingecko.com/coins/images/5629/thumb/TutkUC1x_400x400_%281%29.jpg?1547447105" + }, + { + "chainId": 1, + "address": "0x9f52c8ecbee10e00d9faaac5ee9ba0ff6550f511", + "name": "Sipher", + "symbol": "SIPHER", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21070/thumb/SipherToken.png?1638312272" + }, + { + "chainId": 1, + "address": "0x9ce84f6a69986a83d92c324df10bc8e64771030f", + "name": "CHEX Token", + "symbol": "CHEX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10349/thumb/1_0zxuLe6QnvfsZPFzOoUteQ.png?1578434355" + }, + { + "chainId": 1, + "address": "0x954b890704693af242613edef1b603825afcd708", + "name": "Cardstack", + "symbol": "CARD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3247/thumb/cardstack.png?1547037769" + }, + { + "chainId": 1, + "address": "0xc56b13ebbcffa67cfb7979b900b736b3fb480d78", + "name": "Social Activity", + "symbol": "SAT", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/2586/thumb/sat.png?1547036721" + }, + { + "chainId": 1, + "address": "0x04c17b9d3b29a78f7bd062a57cf44fc633e71f85", + "name": "IMPT", + "symbol": "IMPT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28486/thumb/IMPT_logo.png?1671077901" + }, + { + "chainId": 1, + "address": "0xc8ef1460277ea47d179dec66d1c5f8b7f7ae5a28", + "name": "Rikkei Finance", + "symbol": "RIFI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21309/thumb/rikkei-finance.jpeg?1638888855" + }, + { + "chainId": 1, + "address": "0x3abdff32f76b42e7635bdb7e425f0231a5f3ab17", + "name": "ConnectJob", + "symbol": "CJT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2207/thumb/connectjob.png?1547739980" + }, + { + "chainId": 1, + "address": "0x853d955acef822db058eb8505911ed77f175b99e", + "name": "Frax", + "symbol": "FRAX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13422/thumb/ethCanonicalFRAX.png?1669277108" + }, + { + "chainId": 1, + "address": "0xcc7ab8d78dba187dc95bf3bb86e65e0c26d0041f", + "name": "Spacelens", + "symbol": "SPACE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16979/thumb/SPACE___Spacelens.png?1625900475" + }, + { + "chainId": 1, + "address": "0xe6f143a0e0a8f24f6294ce3432ea10fad0206920", + "name": "PolkaEx", + "symbol": "PKEX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18616/thumb/1024-1024-02.png?1632698540" + }, + { + "chainId": 1, + "address": "0x282d0ad1fa03dfbdb88243b958e77349c73737d1", + "name": "Protector Roge", + "symbol": "PROGE", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/16993/thumb/Proge_200x200.png?1668677143" + }, + { + "chainId": 1, + "address": "0x50d1c9771902476076ecfc8b2a83ad6b9355a4c9", + "name": "FTX", + "symbol": "FTT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9026/thumb/F.png?1609051564" + }, + { + "chainId": 1, + "address": "0xba745513acebcbb977497c569d4f7d340f2a936b", + "name": "Mainstream For The Underground", + "symbol": "MFTU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5519/thumb/Mainstream_for_the_underground.png?1534426154" + }, + { + "chainId": 1, + "address": "0x05ec93c0365baaeabf7aeffb0972ea7ecdd39cf1", + "name": "Aave BAT", + "symbol": "ABAT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14246/thumb/aBAT.1fe436f7_-_Copy.png?1615528663" + }, + { + "chainId": 1, + "address": "0xdb262c7d67fe7336574f005db47b7c8e1df41852", + "name": "Naffiti", + "symbol": "NAFF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24057/thumb/Naffiti_1200x1200.png?1646203375" + }, + { + "chainId": 1, + "address": "0x8185bc4757572da2a610f887561c32298f1a5748", + "name": "Aluna", + "symbol": "ALN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14379/thumb/uaLoLU8c_400x400_%281%29.png?1627873106" + }, + { + "chainId": 1, + "address": "0x705ee96c1c160842c92c1aecfcffccc9c412e3d9", + "name": "ClearPoll", + "symbol": "POLL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1050/thumb/clearpoll.png?1547034985" + }, + { + "chainId": 1, + "address": "0x874d4c9b980f1a13dd44cbcdb912e24ef0671ed0", + "name": "Guider", + "symbol": "GDR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8425/thumb/mROuNfEF_400x400.png?1571308333" + }, + { + "chainId": 1, + "address": "0x677ddbd918637e5f2c79e164d402454de7da8619", + "name": "Vesper V Dollar", + "symbol": "VUSD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16253/thumb/Vesper_Token_600.png?1623394697" + }, + { + "chainId": 1, + "address": "0x455f7ef6d8bcfc35f9337e85aee1b0600a59fabe", + "name": "Aloha", + "symbol": "ALOHA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14048/thumb/aloha.png?1615527835" + }, + { + "chainId": 1, + "address": "0x68350d30d9f58c81aaaa41929f1bfc52fff4ea49", + "name": "Rapidz", + "symbol": "RPZX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7663/thumb/rapidzpay-logo.jpg?1549038850" + }, + { + "chainId": 1, + "address": "0x7a41e0517a5eca4fdbc7fbeba4d4c47b9ff6dc63", + "name": "Zeusshield", + "symbol": "ZSC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1009/thumb/zeusshield.png?1548761440" + }, + { + "chainId": 1, + "address": "0xe8e8486228753e01dbc222da262aa706bd67e601", + "name": "Arch Ethereum Web3", + "symbol": "WEB3", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26562/thumb/WEB3-TOKEN.png?1658798344" + }, + { + "chainId": 1, + "address": "0x6fc13eace26590b80cccab1ba5d51890577d83b2", + "name": "Umbrella Network", + "symbol": "UMB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13913/thumb/Umbrella_Network_Logo-Vertical_Version.png?1612836176" + }, + { + "chainId": 1, + "address": "0x8a9c67fee641579deba04928c4bc45f66e26343a", + "name": "Jarvis Reward", + "symbol": "JRT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10390/thumb/cfeii0y.png?1578868949" + }, + { + "chainId": 1, + "address": "0x4e12eb8e506ccd1427f6b8f7faa3e88fb698eb28", + "name": "Jack Token", + "symbol": "JACK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10991/thumb/Jacktoken200x200.png?1586938972" + }, + { + "chainId": 1, + "address": "0xa10ae543db5d967a73e9abcc69c81a18a7fc0a78", + "name": "BLOCKCLOUT", + "symbol": "CLOUT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11870/thumb/communityIcon_nys28lije4b51.png?1595505057" + }, + { + "chainId": 1, + "address": "0xf947b0824c3995787efc899017a36bc9f281265e", + "name": "Lotoblock", + "symbol": "LOTO", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/6611/thumb/xkKemBDV_400x400.jpg?1547042813" + }, + { + "chainId": 1, + "address": "0x67a9099f0008c35c61c00042cd9fb03684451097", + "name": "Game Stars", + "symbol": "GST", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4075/thumb/game-stars.png?1548126796" + }, + { + "chainId": 1, + "address": "0xc96c1609a1a45ccc667b2b7fa6508e29617f7b69", + "name": "2gether", + "symbol": "2GT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14516/thumb/m329Ic5i_400x400.jpg?1616647761" + }, + { + "chainId": 1, + "address": "0xf51ebf9a26dbc02b13f8b3a9110dac47a4d62d78", + "name": "APIX", + "symbol": "APIX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10124/thumb/5sSKmtlA_400x400.png?1576126911" + }, + { + "chainId": 1, + "address": "0xe1bda0c3bfa2be7f740f0119b6a34f057bd58eba", + "name": "The Winkyverse", + "symbol": "WNK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22260/thumb/wnk.png?1644053369" + }, + { + "chainId": 1, + "address": "0x8a7adc1b690e81c758f1bd0f72dfe27ae6ec56a5", + "name": "Bolide", + "symbol": "BLID", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25548/thumb/BLID_token_logo_200x200.png?1652334831" + }, + { + "chainId": 1, + "address": "0x01cc4151fe5f00efb8df2f90ff833725d3a482a3", + "name": "SPECTRUM", + "symbol": "SPT", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/7688/thumb/SPT-Logo-200x200.png?1549596154" + }, + { + "chainId": 1, + "address": "0xa960d2ba7000d58773e7fa5754dec3bb40a069d5", + "name": "One DEX", + "symbol": "ODEX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7712/thumb/WzsJ6pIr_400x400.jpg?1549940214" + }, + { + "chainId": 1, + "address": "0xbcfdaeb22ab6e10dfb99546e6240155edc1084f7", + "name": "Genexi", + "symbol": "GXI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7126/thumb/bR4FuOeq_400x400.jpg?1547043624" + }, + { + "chainId": 1, + "address": "0xea38eaa3c86c8f9b751533ba2e562deb9acded40", + "name": "Etherparty", + "symbol": "FUEL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1082/thumb/etherparty.png?1547394573" + }, + { + "chainId": 1, + "address": "0x58f9102bf53cf186682bd9a281d3cd3c616eec41", + "name": "Triall", + "symbol": "TRL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18679/thumb/-B7ftfN8_400x400.png?1632964301" + }, + { + "chainId": 1, + "address": "0xda022ca91df99413e8cb0caab4d1cba4e9018bea", + "name": "JMTIME", + "symbol": "JMT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7397/thumb/SQA_voBI.png?1555664534" + }, + { + "chainId": 1, + "address": "0x72e5390edb7727e3d4e3436451dadaff675dbcc0", + "name": "Hanu Yokia", + "symbol": "HANU", + "decimals": 12, + "logoURI": "https://assets.coingecko.com/coins/images/17161/thumb/Goji_Hanu_Logo_200x200.png?1627127472" + }, + { + "chainId": 1, + "address": "0x7495e5cc8f27e0bd5bd4cb86d17f0d841ca58ee4", + "name": "Arnoya classic", + "symbol": "ARNC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28194/thumb/ARNC_200.png?1668332937" + }, + { + "chainId": 1, + "address": "0x425c5b7b55f9c981c71935418ed044e79d8080e2", + "name": "Mad Hatter Society", + "symbol": "MADHAT", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/27407/thumb/MADHAT_TOKEN_CROP.png?1663842237" + }, + { + "chainId": 1, + "address": "0x41a08648c3766f9f9d85598ff102a08f4ef84f84", + "name": "Aave Balancer Pool Token", + "symbol": "ABPT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16788/thumb/ABPT_2x.png?1625046056" + }, + { + "chainId": 1, + "address": "0x36b00c4c6ce3653a091c7940fc98c3acb0043871", + "name": "Shibamon", + "symbol": "SHIBAMON", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/19891/thumb/cm170VEL_400x400.jpg?1636093140" + }, + { + "chainId": 1, + "address": "0x4527a3b4a8a150403090a99b87effc96f2195047", + "name": "P2P solutions foundation", + "symbol": "P2PS", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/2798/thumb/p2ps.png?1547036973" + }, + { + "chainId": 1, + "address": "0x1977be49c33dfacf6590c16ca9a9cfa0463f663c", + "name": "DoRen", + "symbol": "DRE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16901/thumb/DoRen_project_whitepaper_v1_1_EN_pdf.png?1625572581" + }, + { + "chainId": 1, + "address": "0xe9a95d175a5f4c9369f3b74222402eb1b837693b", + "name": "ChangeNOW", + "symbol": "NOW", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/8224/thumb/now.png?1660465450" + }, + { + "chainId": 1, + "address": "0x3f68e7b44e9bcb486c2feadb7a2289d9cdfc9088", + "name": "SportsIcon", + "symbol": "ICONS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20856/thumb/icons-coin-gold.png?1638349473" + }, + { + "chainId": 1, + "address": "0x1bdc5e5aa2749b4934c33441e050b8854b77a331", + "name": "First Inu", + "symbol": "FINU", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/19705/thumb/finu.png?1638346534" + }, + { + "chainId": 1, + "address": "0xbf825207c74b6c3c01ab807c4f4a4fce26ebdf0f", + "name": "DaddyBezos", + "symbol": "DJBZ", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/19782/thumb/tOyy80Z.png?1635846414" + }, + { + "chainId": 1, + "address": "0x8ae4bf2c33a8e667de34b54938b0ccd03eb8cc06", + "name": "Patientory", + "symbol": "PTOY", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/746/thumb/patientory.png?1548330777" + }, + { + "chainId": 1, + "address": "0xdd3a88ef8535ff7b19178b735c52ea277ef25623", + "name": "DeFi ", + "symbol": "DFX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28351/thumb/b3a69dfd-3250-4382-8fee-be61acc7c5de.png?1669771397" + }, + { + "chainId": 1, + "address": "0x400b1d8a7dd8c471026b2c8cbe1062b27d120538", + "name": "Limestone Network", + "symbol": "LIMEX", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/11907/thumb/nw1FE_f4_400x400.png?1596074376" + }, + { + "chainId": 1, + "address": "0xa7925aa2a6e4575ab0c74d169f3bc3e03d4c319a", + "name": "Better Money", + "symbol": "BETTER", + "decimals": 4, + "logoURI": "https://assets.coingecko.com/coins/images/12838/thumb/BETTER_MONEY_MASK_ICON.png?1602899651" + }, + { + "chainId": 1, + "address": "0x9ab7bb7fdc60f4357ecfef43986818a2a3569c62", + "name": "Guild of Guardians", + "symbol": "GOG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17362/thumb/V2QDNoLg_400x400.jpg?1640054187" + }, + { + "chainId": 1, + "address": "0xd7c9f0e536dc865ae858b0c0453fe76d13c3beac", + "name": "XAI Stablecoin", + "symbol": "XAI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28254/thumb/Xai_logo.png?1668674085" + }, + { + "chainId": 1, + "address": "0x992d339532a9c42f1b0e59a57e95f38da38c66f6", + "name": "Soulsaver", + "symbol": "SOUL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27494/thumb/SOUL_LOGO.png?1664268950" + }, + { + "chainId": 1, + "address": "0x1829aa045e21e0d59580024a951db48096e01782", + "name": "FuzeX", + "symbol": "FXT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3692/thumb/fuzex-token.png?1547038696" + }, + { + "chainId": 1, + "address": "0x9d91be44c06d373a8a226e1f3b146956083803eb", + "name": "Aave KNC v1", + "symbol": "AKNC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11727/thumb/aKNC.png?1593083924" + }, + { + "chainId": 1, + "address": "0x3ed3b47dd13ec9a98b44e6204a523e766b225811", + "name": "Aave USDT", + "symbol": "AUSDT", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/14243/thumb/aUSDT.78f5faae.png?1615528400" + }, + { + "chainId": 1, + "address": "0xf9e5af7b42d31d51677c75bbbd37c1986ec79aee", + "name": "QuickX Protocol", + "symbol": "QCX", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/4971/thumb/qcx.png?1547040393" + }, + { + "chainId": 1, + "address": "0x4fabf135bcf8111671870d4399af739683198f96", + "name": "Xave Coin", + "symbol": "XVC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24084/thumb/k8qjP9t9_400x400.jpg?1646292464" + }, + { + "chainId": 1, + "address": "0x184b6f31aeaa6a19eb207dfea01f4289629e0f0f", + "name": "FiveKM KMT", + "symbol": "KMT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25410/thumb/logo-200.png?1651732812" + }, + { + "chainId": 1, + "address": "0x8727c112c712c4a03371ac87a74dd6ab104af768", + "name": "Jetcoin", + "symbol": "JET", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2487/thumb/jetcoin.png?1547974820" + }, + { + "chainId": 1, + "address": "0x786e995a975c2ab7c1dd252a9019fb0c91c9ca83", + "name": "Landworld", + "symbol": "LWD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25642/thumb/v-MhJXeSQuKSjz5gJRpptF5E5v95862DXJhkSeVabQcVsbBxzryaaQQ-eqwp0hvjrXQQmQRUKYW3gFfzUi3zVjhWoZKg79rmFF5dL6igKT0iWWpDtfNRcr6XA1mL9WiLgg6EOqwfmuLNu1-qan38OQJve32FKgJ7FL_fAyZRHvSuuIwO4qmcLPVqWo08oYELCC5ParMmS7FfNsHtu38u6j0gxw.jpg?1652949037" + }, + { + "chainId": 1, + "address": "0x36ed7baad9a571b5dad55d096c0ed902188d6d3c", + "name": "Infinity Pad OLD ", + "symbol": "IPAD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17302/thumb/ipad.jpg?1627268574" + }, + { + "chainId": 1, + "address": "0x1d6405138a335ce5fd7364086334efb3e4f28b59", + "name": "ClearCryptos", + "symbol": "CCX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27900/thumb/3e88b61451995da1a5aa572cd4f48e78023e010c0bf984cd5456b2a7bd85f7a5.png?1666322609" + }, + { + "chainId": 1, + "address": "0x20be82943e8d9c682580e11d424ec15db95b4a24", + "name": "No Bull", + "symbol": "NB", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/21366/thumb/Logo-E-2.png?1652944972" + }, + { + "chainId": 1, + "address": "0x4f4f0ef7978737ce928bff395529161b44e27ad9", + "name": "Your Finance Decentralized", + "symbol": "YFD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13225/thumb/YFD2.png?1613362452" + }, + { + "chainId": 1, + "address": "0xcf9fbffec9e0e5bbc62e79bf1965f5db76955661", + "name": "MeshBox", + "symbol": "MESH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6200/thumb/DPuEPJQ6_400x400.jpg?1547042229" + }, + { + "chainId": 1, + "address": "0x923b83c26b3809d960ff80332ed00aa46d7ed375", + "name": "Creator Platform", + "symbol": "CTR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18252/thumb/logo_%281%29.png?1631137441" + }, + { + "chainId": 1, + "address": "0x8515cd0f00ad81996d24b9a9c35121a3b759d6cd", + "name": "BlockBurn", + "symbol": "BURN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8851/thumb/blockburn.JPG?1582774870" + }, + { + "chainId": 1, + "address": "0x54cb643ab007f47882e8120a8c57b639005c2688", + "name": "IMPACTXPRIME", + "symbol": "IXP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28128/thumb/IXP_LOGO.jpg?1667641972" + }, + { + "chainId": 1, + "address": "0xc29acac647c63dbd8618e817d41ea9de69174ae1", + "name": "NRGY Defi", + "symbol": "NRGY", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/18075/thumb/nrgy.jpeg?1630391703" + }, + { + "chainId": 1, + "address": "0x41dbecc1cdc5517c6f76f6a6e836adbee2754de3", + "name": "Medicalchain", + "symbol": "MTN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2850/thumb/medicalchain.png?1547037019" + }, + { + "chainId": 1, + "address": "0xcbd55d4ffc43467142761a764763652b48b969ff", + "name": "AstroTools", + "symbol": "ASTRO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12345/thumb/AT-flat-purple_logo.png?1599190828" + }, + { + "chainId": 1, + "address": "0xd1afbccc9a2c2187ea544363b986ea0ab6ef08b5", + "name": "Ethereum Yield", + "symbol": "ETHY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13191/thumb/rOIuPZM.png?1606101103" + }, + { + "chainId": 1, + "address": "0x08f5a9235b08173b7569f83645d2c7fb55e8ccd8", + "name": "Tierion", + "symbol": "TNT", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/923/thumb/tierion.png?1547034767" + }, + { + "chainId": 1, + "address": "0x8a2ead49d2123edee893181fb69527a022235c36", + "name": "Max Revive", + "symbol": "MAXR", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/22402/thumb/17030.png?1641794243" + }, + { + "chainId": 1, + "address": "0x435d664f72d6f194ef67d63b5f3936650187b131", + "name": "Pocket Node", + "symbol": "NODE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10376/thumb/u1L_YtHS_400x400.jpg?1583377126" + }, + { + "chainId": 1, + "address": "0xc98d64da73a6616c42117b582e832812e7b8d57f", + "name": "RSS3", + "symbol": "RSS3", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23575/thumb/RSS3.png?1644494645" + }, + { + "chainId": 1, + "address": "0xd4f6f9ae14399fd5eb8dfc7725f0094a1a7f5d80", + "name": "Bitsten OLD ", + "symbol": "BST", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7335/thumb/bitsten.png?1589629209" + }, + { + "chainId": 1, + "address": "0x12e56851ec22874520dc4c7fa0a8a8d7dba1bac8", + "name": "GENART", + "symbol": "GENART", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23055/thumb/token_logo.jpeg?1643151315" + }, + { + "chainId": 1, + "address": "0x92d6c1e31e14520e676a687f0a93788b716beff5", + "name": "dYdX", + "symbol": "DYDX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17500/thumb/hjnIm9bV.jpg?1628009360" + }, + { + "chainId": 1, + "address": "0x6c8c6b02e7b2be14d4fa6022dfd6d75921d90e4e", + "name": "cBAT", + "symbol": "CBAT", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/10645/thumb/cBAT1.JPG?1581390910" + }, + { + "chainId": 1, + "address": "0xf25c91c87e0b1fd9b4064af0f427157aab0193a7", + "name": "BASIC", + "symbol": "BASIC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11050/thumb/unTgJN6U_400x400.jpg?1587540882" + }, + { + "chainId": 1, + "address": "0x234d51ee02be808a0160b19b689660fb7bfa871b", + "name": "CoinScan", + "symbol": "SCAN", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/24254/thumb/scan.png?1647155535" + }, + { + "chainId": 1, + "address": "0x456125cd98107ae0480ba566f1b716d48ba31453", + "name": "Ultimate Champions", + "symbol": "CHAMP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28091/thumb/champ.png?1667472074" + }, + { + "chainId": 1, + "address": "0x4946fcea7c692606e8908002e55a582af44ac121", + "name": "FOAM", + "symbol": "FOAM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3345/thumb/K51lJQc.png?1547037959" + }, + { + "chainId": 1, + "address": "0x9d3e0892d11f19f5181d4a4c5d04187a9e0d7032", + "name": "Dragonbit", + "symbol": "DRGB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10123/thumb/drgb.PNG?1576125394" + }, + { + "chainId": 1, + "address": "0xbfd815347d024f449886c171f78fa5b8e6790811", + "name": "AMPnet", + "symbol": "AAPX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14303/thumb/AAPX.png?1615356946" + }, + { + "chainId": 1, + "address": "0x18aaa7115705e8be94bffebde57af9bfc265b998", + "name": "Audius", + "symbol": "AUDIO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12913/thumb/AudiusCoinLogo_2x.png?1603425727" + }, + { + "chainId": 1, + "address": "0x7bef710a5759d197ec0bf621c3df802c2d60d848", + "name": "SHOPX", + "symbol": "SHOPX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14600/thumb/shopx_icon_.png?1646381164" + }, + { + "chainId": 1, + "address": "0x26ea1f595f6567b7050fbba24f6a66e19db4d560", + "name": "APE Punk", + "symbol": "APE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14510/thumb/ape-punk-shards.png?1616596505" + }, + { + "chainId": 1, + "address": "0x8cd480260a47f04589670a313d27a15b321ad266", + "name": "Swiftlance", + "symbol": "SWL", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/6052/thumb/swiftlance_qssxxz.png?1547042011" + }, + { + "chainId": 1, + "address": "0x5cf04716ba20127f1e2297addcf4b5035000c9eb", + "name": "NKN", + "symbol": "NKN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3375/thumb/nkn.png?1548329212" + }, + { + "chainId": 1, + "address": "0x567300e14f8d67e1f6720a95291dce2511a86723", + "name": "Helper Search", + "symbol": "HSN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6463/thumb/hsn.png?1547042670" + }, + { + "chainId": 1, + "address": "0x7acb51e690301b114a2a65b2e557cc1b7e644ba8", + "name": "Expo", + "symbol": "EXPO", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/6548/thumb/t4GE48eH_400x400.png?1547042762" + }, + { + "chainId": 1, + "address": "0x84c722e6f1363e8d5c6db3ea600bef9a006da824", + "name": "Misbloc", + "symbol": "MSB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13021/thumb/xREV4lXV.png?1604396822" + }, + { + "chainId": 1, + "address": "0xfd5f65a7e4fae82778be1085ffd2f1de5b2de92c", + "name": "DCAP", + "symbol": "DCAP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25478/thumb/dcap.png?1652007843" + }, + { + "chainId": 1, + "address": "0x389999216860ab8e0175387a0c90e5c52522c945", + "name": "FEG", + "symbol": "FEG", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/13878/thumb/F-Icon-FEG-200x200-288dpi-01_%281%29.png?1665641152" + }, + { + "chainId": 1, + "address": "0xbc647aad10114b89564c0a7aabe542bd0cf2c5af", + "name": "IONChain", + "symbol": "IONC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6572/thumb/3PD7ycbU_400x400.jpg?1547042781" + }, + { + "chainId": 1, + "address": "0xaee433adebe0fbb88daa47ef0c1a513caa52ef02", + "name": "Pontoon", + "symbol": "TOON", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19575/thumb/pontoon.PNG?1635467899" + }, + { + "chainId": 1, + "address": "0xd2946be786f35c3cc402c29b323647abda799071", + "name": "Vikky", + "symbol": "VIKKY", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/5278/thumb/vikkytoken.png?1548760050" + }, + { + "chainId": 1, + "address": "0x2bba3cf6de6058cc1b4457ce00deb359e2703d7f", + "name": "HashCoin", + "symbol": "HSC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4989/thumb/hashfuture-logo.png?1531741876" + }, + { + "chainId": 1, + "address": "0x45734927fa2f616fbe19e65f42a0ef3d37d1c80a", + "name": "Rogue Doge", + "symbol": "ROGE", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/17440/thumb/njbVg2f.png?1645356462" + }, + { + "chainId": 1, + "address": "0x1712aad2c773ee04bdc9114b32163c058321cd85", + "name": "LimitSwap", + "symbol": "LIMIT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12760/thumb/limit_swap_logo.png?1602347106" + }, + { + "chainId": 1, + "address": "0x3aadc3bce49724ce299fd9f3850211211c399c8c", + "name": "Coinstox", + "symbol": "CSX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14373/thumb/CSX-token-200.png?1615771653" + }, + { + "chainId": 1, + "address": "0xedb171c18ce90b633db442f2a6f72874093b49ef", + "name": "Wrapped Ampleforth", + "symbol": "WAMPL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20825/thumb/photo_2021-11-25_02-05-11.jpg?1637811951" + }, + { + "chainId": 1, + "address": "0xda30f261a962d5aae94c9ecd170544600d193766", + "name": "Orbler", + "symbol": "ORBR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24056/thumb/fA2YATWT_400x400.jpg?1646203182" + }, + { + "chainId": 1, + "address": "0x1a7a8bd9106f2b8d977e08582dc7d24c723ab0db", + "name": "AppCoins", + "symbol": "APPC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1876/thumb/appcoins.png?1547036186" + }, + { + "chainId": 1, + "address": "0xf1dc500fde233a4055e25e5bbf516372bc4f6871", + "name": "Saddle Finance", + "symbol": "SDL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20476/thumb/edit_saddle.png?1660734429" + }, + { + "chainId": 1, + "address": "0x7475c42f8bf2c19f4eaf12feaababa859fdc8914", + "name": "Accel Defi", + "symbol": "ACCEL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22405/thumb/accel_new.png?1645426698" + }, + { + "chainId": 1, + "address": "0xea097a2b1db00627b2fa17460ad260c016016977", + "name": "Upfiring", + "symbol": "UFR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1170/thumb/upfiring.png?1548759693" + }, + { + "chainId": 1, + "address": "0x1e5193ccc53f25638aa22a940af899b692e10b09", + "name": "Alluo", + "symbol": "ALLUO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21484/thumb/logo-sm-wb.png?1649993895" + }, + { + "chainId": 1, + "address": "0x5f4c148d17effd165c2e2d46b46d2bd6e3ebdc3e", + "name": "5KM RUN", + "symbol": "RUN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26072/thumb/logo-200.png?1655621986" + }, + { + "chainId": 1, + "address": "0x1726b8d5dc3a93cc08fa079477d4ebe782b25bf7", + "name": "Shinjiro", + "symbol": "SHOX", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/25018/thumb/Shinjiro_200x200.png?1649830769" + }, + { + "chainId": 1, + "address": "0x10ba8c420e912bf07bedac03aa6908720db04e0c", + "name": "Raise", + "symbol": "RAISE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4411/thumb/Raise.png?1590671180" + }, + { + "chainId": 1, + "address": "0x030ba81f1c18d280636f32af80b9aad02cf0854e", + "name": "Aave WETH", + "symbol": "AWETH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17238/thumb/aWETH_2x.png?1626940782" + }, + { + "chainId": 1, + "address": "0x20b2d0a368d34adc544720c841281fa8a99f5a2e", + "name": "CoinGhost", + "symbol": "GST", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25978/thumb/20568.png?1655112863" + }, + { + "chainId": 1, + "address": "0xd241d7b5cb0ef9fc79d9e4eb9e21f5e209f52f7d", + "name": "Hoo", + "symbol": "HOO", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/12968/thumb/LOGO1.jpeg?1654140098" + }, + { + "chainId": 1, + "address": "0x6faa826af0568d1866fca570da79b318ef114dab", + "name": "B21", + "symbol": "B21", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3510/thumb/B21_%283%29.png?1608706191" + }, + { + "chainId": 1, + "address": "0x6431fa4b812a2dcc062a38cb55cc7d18135adead", + "name": "RankerDao", + "symbol": "RANKER", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23902/thumb/ranker.png?1645676549" + }, + { + "chainId": 1, + "address": "0x6f063c0fcda0ea6dcc01d5a7cb3066ed4f90d1a8", + "name": "EBSP", + "symbol": "EBSP", + "decimals": 0, + "logoURI": "https://assets.coingecko.com/coins/images/7650/thumb/mwlDkYEKIpcWAP00hfCU7KPQti7jgbew1OKea9RGlGwpdkwOTWp7shOWG5EAsXpUonAo8ZnQoVYoWIz0Tju71QcYMesj8-4Qz_CAyxUy12MTknHGjwfpITWwDaRtHXeTDCCGMvPRPR5ebXultUTIQAtB1x9gtvA03QAi5RVg4GkfX6kB_r04Qx6w2lxuLuyUAqd4x6zaQo_1Hy8NV333I.jpg?1549001856" + }, + { + "chainId": 1, + "address": "0xc0f9bd5fa5698b6505f643900ffa515ea5df54a9", + "name": "Donut", + "symbol": "DONUT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7538/thumb/Donut.png?1548234345" + }, + { + "chainId": 1, + "address": "0x5c89736e9454200141b80c37eb28eaceca2ce8cb", + "name": "Cherry YT", + "symbol": "YT", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/8321/thumb/cherry.png?1557480352" + }, + { + "chainId": 1, + "address": "0xb009bfaaf85e53f55d8657781eb69feaaed83672", + "name": "EdgeSwap", + "symbol": "EGS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24878/thumb/egs.png?1649218020" + }, + { + "chainId": 1, + "address": "0x69ed89ecd35082e031fe52b75123f801db083306", + "name": "Kaeri", + "symbol": "KAERI", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/27977/thumb/63370e2a1f2bea31fc7f6977_512x512_v2-p-500-2.png?1666846544" + }, + { + "chainId": 1, + "address": "0x6628606c321faf52b7230a57b26c01b19aa68e82", + "name": "BitHash", + "symbol": "BT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13224/thumb/bt.png?1606358296" + }, + { + "chainId": 1, + "address": "0x09970aec766b6f3223aca9111555e99dc50ff13a", + "name": "Levolution", + "symbol": "LEVL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7370/thumb/L_Icon_Blue_200x200.png?1618983083" + }, + { + "chainId": 1, + "address": "0x7bfde33d790411a88d46e9e1be32fc86228891a4", + "name": "Shiba Universe", + "symbol": "SHIBU", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/25423/thumb/logocmc.png?1651737047" + }, + { + "chainId": 1, + "address": "0x7a647637e75d34a7798ba06bd1adf5c084bb5dd5", + "name": "Bestay", + "symbol": "BSY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12166/thumb/photo-2019-07-04-17-03-29.jpg?1597787199" + }, + { + "chainId": 1, + "address": "0xeb57bf569ad976974c1f861a5923a59f40222451", + "name": "Loomi", + "symbol": "LOOMI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22919/thumb/C8miy1Qi_400x400.jpg?1643000828" + }, + { + "chainId": 1, + "address": "0x63f7b1b538a78cb699e5399621b3d2e047c40de4", + "name": "Maxity", + "symbol": "MAX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26933/thumb/MAX_token_200.png?1666345433" + }, + { + "chainId": 1, + "address": "0x68c85b9f78f30a0df5ac5723e4e700037f185415", + "name": "AiWork", + "symbol": "AWO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15373/thumb/aiwork.PNG?1620691299" + }, + { + "chainId": 1, + "address": "0x4bb3205bf648b7f59ef90dee0f1b62f6116bc7ca", + "name": "Beyondfi", + "symbol": "BYN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14746/thumb/token_symbol.png?1669462137" + }, + { + "chainId": 1, + "address": "0x710aa623c2c881b0d7357bcf9aeedf660e606c22", + "name": "Hearts", + "symbol": "HEART", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24121/thumb/heart.png?1646456042" + }, + { + "chainId": 1, + "address": "0x64cdf819d3e75ac8ec217b3496d7ce167be42e80", + "name": "InsurePal", + "symbol": "IPL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1858/thumb/ipl.png?1547036172" + }, + { + "chainId": 1, + "address": "0x56bd0c900acaf04125ee26f546d6214634fd970f", + "name": "HubCoin", + "symbol": "HUB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25671/thumb/logo-200_%281%29.png?1653358021" + }, + { + "chainId": 1, + "address": "0xc969e16e63ff31ad4bcac3095c616644e6912d79", + "name": "Seed Venture", + "symbol": "SEED", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10860/thumb/Seed.png?1585204998" + }, + { + "chainId": 1, + "address": "0x5a41290104b8f65ece9ed9d67a4d82f8080b7310", + "name": "Game Federation", + "symbol": "GFT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26760/thumb/gft.png?1660311385" + }, + { + "chainId": 1, + "address": "0x65ccd72c0813ce6f2703593b633202a0f3ca6a0c", + "name": "Nestree", + "symbol": "EGG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9362/thumb/nestree.png?1566529061" + }, + { + "chainId": 1, + "address": "0xbb1f24c0c1554b9990222f036b0aad6ee4caec29", + "name": "CryptoSoul", + "symbol": "SOUL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6723/thumb/cryptosoul.png?1547042952" + }, + { + "chainId": 1, + "address": "0x72f020f8f3e8fd9382705723cd26380f8d0c66bb", + "name": "PlotX", + "symbol": "PLOT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12795/thumb/PlotX.png?1611109969" + }, + { + "chainId": 1, + "address": "0xb06b8186cc008a79fd6722b1eefad07c14e97da0", + "name": "Sign", + "symbol": "SIGN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26495/thumb/PWRjbqG9_400x400.png?1658303265" + }, + { + "chainId": 1, + "address": "0x274e7eb07b485cfde53d02270555213447570ac6", + "name": "SubDAO", + "symbol": "GOV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28379/thumb/gov.png?1669972199" + }, + { + "chainId": 1, + "address": "0x485d17a6f1b8780392d53d64751824253011a260", + "name": "chrono tech", + "symbol": "TIME", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/604/thumb/time-32x32.png?1627130666" + }, + { + "chainId": 1, + "address": "0xbe1fa1303e2979ab4d4e5df3d1c6e3656acab027", + "name": "Dripto", + "symbol": "DRYP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25569/thumb/dryp.png?1652602736" + }, + { + "chainId": 1, + "address": "0x59c6900949ad1835f07a04321f4d9934a054e114", + "name": "TroveDAO", + "symbol": "TROVE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24764/thumb/coin.png?1655723800" + }, + { + "chainId": 1, + "address": "0xbe0c826f17680d8da620855be89dd6544c034ca1", + "name": "BankEth", + "symbol": "BANKETH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17401/thumb/BankEth_200x200.png?1627529730" + }, + { + "chainId": 1, + "address": "0x7ca5af5ba3472af6049f63c1abc324475d44efc1", + "name": "KONDUX", + "symbol": "KNDX", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/28244/thumb/kndx.png?1668587937" + }, + { + "chainId": 1, + "address": "0xac8e13ecc30da7ff04b842f21a62a1fb0f10ebd5", + "name": "BabyDoge ETH", + "symbol": "BABYDOGE", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/17166/thumb/logo_256px_%281%29.png?1626684127" + }, + { + "chainId": 1, + "address": "0x77a7b7defcc0c582dadb9d2375975e2a75fb4538", + "name": "Fan2Go", + "symbol": "FNTG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28180/thumb/ftgo_logo%28200x200%29.png?1668253761" + }, + { + "chainId": 1, + "address": "0x003e0af2916e598fa5ea5cb2da4edfda9aed9fde", + "name": "Basis Dollar", + "symbol": "BSD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13409/thumb/bdollar_logo.png?1608263890" + }, + { + "chainId": 1, + "address": "0x68a118ef45063051eac49c7e647ce5ace48a68a5", + "name": "Based Money", + "symbol": "BASED", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12115/thumb/Based.png?1597261198" + }, + { + "chainId": 1, + "address": "0x93c9175e26f57d2888c7df8b470c9eea5c0b0a93", + "name": "B cube ai", + "symbol": "BCUBE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15948/thumb/bcube.PNG?1622511353" + }, + { + "chainId": 1, + "address": "0xef952363c1d990a2fa58f8b379a9fa33bad1dfd1", + "name": "LynKey", + "symbol": "LYNK", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/25069/thumb/oOcTsBsg_400x400_%281%29.jpg?1650038695" + }, + { + "chainId": 1, + "address": "0x34364bee11607b1963d66bca665fde93fca666a8", + "name": "YOU Chain", + "symbol": "YOU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4649/thumb/youchain-logo.jpg?1547039915" + }, + { + "chainId": 1, + "address": "0x662b67d00a13faf93254714dd601f5ed49ef2f51", + "name": "Orbit Chain", + "symbol": "ORC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9782/thumb/-p1Br7oh_400x400.png?1571716593" + }, + { + "chainId": 1, + "address": "0x73484a262730d1d422610729e828346f9b2ff480", + "name": "BRCP", + "symbol": "BRCP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14388/thumb/brcp-500x500-verde.png?1615855378" + }, + { + "chainId": 1, + "address": "0x686c650dbcfeaa75d09b883621ad810f5952bd5d", + "name": "AAX", + "symbol": "AAB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11073/thumb/GluwoJk__400x400.jpg?1587969347" + }, + { + "chainId": 1, + "address": "0xd70240dd62f4ea9a6a2416e0073d72139489d2aa", + "name": "GLYPH Vault NFTX ", + "symbol": "GLYPH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17050/thumb/Glyph.png?1626149071" + }, + { + "chainId": 1, + "address": "0x501e8726d06cdef66f3e0cb67f54924cca1cc894", + "name": "BRMV", + "symbol": "BRMV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14389/thumb/brmv-logo-256px.png?1615856173" + }, + { + "chainId": 1, + "address": "0xacfe45c352c902ae3a3f9b6bfe6ec994c5d791bf", + "name": "megaBonk", + "symbol": "MBONK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14996/thumb/Bonk_v2_gecko.png?1619391636" + }, + { + "chainId": 1, + "address": "0xa5f1dbb0e55bc31f32c6d032bee330288490e722", + "name": "Day By Day", + "symbol": "DBD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21691/thumb/DBD-icon_200x200_%281%29.png?1639721079" + }, + { + "chainId": 1, + "address": "0x3ecf9840deb8e3c395e1941fc39ceb662bf5a1dd", + "name": "New Year Resolution", + "symbol": "NYR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22201/thumb/Q-5kE0wd_400x400.jpg?1641193367" + }, + { + "chainId": 1, + "address": "0x4688a8b1f292fdab17e9a90c8bc379dc1dbd8713", + "name": "Cover Protocol", + "symbol": "COVER", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13563/thumb/1_eWBbDaqpxXqt7WYPSP4qSw.jpeg?1609822578" + }, + { + "chainId": 1, + "address": "0xc3b5284b2c0cfa1871a6ac63b6d6ee43c08bdc79", + "name": "BGAN Vault NFTX ", + "symbol": "BGAN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17051/thumb/bgan.png?1626149084" + }, + { + "chainId": 1, + "address": "0x3d3af44cf092a49280e316f09c8f20ecf97bc933", + "name": "UCX", + "symbol": "UCX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10131/thumb/UCX_200200.png?1576186720" + }, + { + "chainId": 1, + "address": "0x69692d3345010a207b759a7d1af6fc7f38b35c5e", + "name": "CHADS VC", + "symbol": "CHADS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12455/thumb/Chad_VC.png?1599940044" + }, + { + "chainId": 1, + "address": "0x84f710bae3316a74fb0fcb01904d2578a4cc6a26", + "name": "PHILLIPS PAY COIN", + "symbol": "PPC", + "decimals": 1, + "logoURI": "https://assets.coingecko.com/coins/images/10311/thumb/ppc.PNG?1588127720" + }, + { + "chainId": 1, + "address": "0x6afcff9189e8ed3fcc1cffa184feb1276f6a82a5", + "name": "PolkaPet World", + "symbol": "PETS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19409/thumb/pets_polka.PNG?1635211453" + }, + { + "chainId": 1, + "address": "0x7b32e70e8d73ac87c1b342e063528b2930b15ceb", + "name": "Robo Inu Finance", + "symbol": "RBIF", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/20821/thumb/O68Gs5SE_400x400.jpg?1654929220" + }, + { + "chainId": 1, + "address": "0x9b02dd390a603add5c07f9fd9175b7dabe8d63b7", + "name": "Shopping io OLD", + "symbol": "SPI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13537/thumb/SPI_Token.png?1623763713" + }, + { + "chainId": 1, + "address": "0xaac41ec512808d64625576eddd580e7ea40ef8b2", + "name": "Gameswap", + "symbol": "GSWAP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13026/thumb/gameswap.jpg?1604456704" + }, + { + "chainId": 1, + "address": "0xeccf15a4b5976a1365baed5297058b4ca42777c0", + "name": "Nosturis", + "symbol": "NTRS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9990/thumb/47010860_203643113858754_2966343352238211072_n.jpg?1574373395" + }, + { + "chainId": 1, + "address": "0xdb5c3c46e28b53a39c255aa39a411dd64e5fed9c", + "name": "Neos Credits", + "symbol": "NCR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17935/thumb/s4C4tVi.png?1629860208" + }, + { + "chainId": 1, + "address": "0xb81d70802a816b5dacba06d708b5acf19dcd436d", + "name": "Dextoken Governance", + "symbol": "DEXG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12223/thumb/dextoken-logo-v2_200.png?1598408669" + }, + { + "chainId": 1, + "address": "0xada62f7ccd6af6cacff04accbc4f56f3d4ffd4ef", + "name": "PlayFuel", + "symbol": "PLF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10313/thumb/BNXcW4kq_400x400.jpg?1577833532" + }, + { + "chainId": 1, + "address": "0x171d76d931529384639bc9aad5b77b77041ed604", + "name": "MetaOctagon", + "symbol": "MOTG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26496/thumb/iJoylNuO_400x400.jpeg?1658304109" + }, + { + "chainId": 1, + "address": "0xba98c0fbebc892f5b07a42b0febd606913ebc981", + "name": "meh", + "symbol": "MEH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27714/thumb/mlogo.png?1665453127" + }, + { + "chainId": 1, + "address": "0xb3cb8d5aeff0f4d1f432f353309f47b885e404e3", + "name": "MEVerse", + "symbol": "MEV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24566/thumb/0sp1DWVw_400x400.png?1648191682" + }, + { + "chainId": 1, + "address": "0x2604fa406be957e542beb89e6754fcde6815e83f", + "name": "PlayKey", + "symbol": "PKT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2116/thumb/playkey.png?1548331394" + }, + { + "chainId": 1, + "address": "0x468ab3b1f63a1c14b361bc367c3cc92277588da1", + "name": "Yeld Finance", + "symbol": "YELD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12389/thumb/X4bTDcZ.png?1622177749" + }, + { + "chainId": 1, + "address": "0xca47bc04ecfcd324b238ed411741efb65b3c777b", + "name": "Ecosystem Coin Network", + "symbol": "ECN", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/18529/thumb/WeChat_Image_20210928174723.jpg?1632822490" + }, + { + "chainId": 1, + "address": "0xd73cab6a16c67cb79fc61f8c13dfec4f32f9dcbf", + "name": "Inusanity", + "symbol": "INUSANITY", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/27719/thumb/inusanity200.png?1665462344" + }, + { + "chainId": 1, + "address": "0x692accdd8b86692427e0aa4752ae917df01cc56f", + "name": "Sunrise", + "symbol": "SUNC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17601/thumb/ticker_sunc_200_200.png?1628864229" + }, + { + "chainId": 1, + "address": "0xa9598333b99d14d90bc81cad8af82c4c70625e75", + "name": "Metis MTS", + "symbol": "MTS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13218/thumb/1Vd_NuQU_400x400.jpg?1606292031" + }, + { + "chainId": 1, + "address": "0xe225aca29524bb65fd82c79a9602f3b4f9c6fe3f", + "name": "Tratok", + "symbol": "TRAT", + "decimals": 5, + "logoURI": "https://assets.coingecko.com/coins/images/6791/thumb/tratok.png?1547043075" + }, + { + "chainId": 1, + "address": "0xd9c2d319cd7e6177336b0a9c93c21cb48d84fb54", + "name": "HAPI", + "symbol": "HAPI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14298/thumb/R9i2HjAL_400x400.jpg?1615332438" + }, + { + "chainId": 1, + "address": "0x8df586aa346c3d9d1c99a21316a2735d71355ec8", + "name": "Wallstreetbets com", + "symbol": "WSB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24170/thumb/18622.png?1646718687" + }, + { + "chainId": 1, + "address": "0x916c5de09cf63f6602d1e1793fb41f6437814a62", + "name": "JACY", + "symbol": "JACY", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/19740/thumb/tBwbvjZK_400x400.jpg?1641803022" + }, + { + "chainId": 1, + "address": "0x882e5b370d595e50c24b2a0e7a94e87cc32adda1", + "name": "X Consoles", + "symbol": "GAME", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21616/thumb/photo_2021-12-25_01-03-14.jpg?1640519963" + }, + { + "chainId": 1, + "address": "0xd5930c307d7395ff807f2921f12c5eb82131a789", + "name": "Bolt", + "symbol": "BOLT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4489/thumb/bolt.png?1555648257" + }, + { + "chainId": 1, + "address": "0x20f7a3ddf244dc9299975b4da1c39f8d5d75f05a", + "name": "Sapien", + "symbol": "SPN", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/2596/thumb/Sapien_Token_450x450.png?1607560493" + }, + { + "chainId": 1, + "address": "0x362bc4b0b2a8134d87ace9143d284a2eced3fd2a", + "name": "Dar afaka Sports Club", + "symbol": "DSK", + "decimals": 2, + "logoURI": "https://assets.coingecko.com/coins/images/25980/thumb/20572.png?1655113316" + }, + { + "chainId": 1, + "address": "0xceeb07dd26b36287b6d109f0b06d7e8202ce8c1d", + "name": "Got Guaranteed", + "symbol": "GOTG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26107/thumb/%EA%B0%93%EC%A7%80%EB%A1%9C%EA%B3%A0.png?1655882278" + }, + { + "chainId": 1, + "address": "0x98968f0747e0a261532cacc0be296375f5c08398", + "name": "MOONCAT Vault NFTX ", + "symbol": "MOONCAT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17055/thumb/Mooncats.png?1626149563" + }, + { + "chainId": 1, + "address": "0xde1e0ae6101b46520cf66fdc0b1059c5cc3d106c", + "name": "DeltaChain", + "symbol": "DELTA", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/5794/thumb/deltachain.png?1547041664" + }, + { + "chainId": 1, + "address": "0x5d5e244660ca05c42073c9a526616d99f2c99516", + "name": "Game Tree", + "symbol": "GTCOIN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24719/thumb/hUEmunGU_400x400.jpg?1648696738" + }, + { + "chainId": 1, + "address": "0x0778cc2e8bbad3d483e82371606d100cc8604522", + "name": "LHCoin", + "symbol": "LHCOIN", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/6709/thumb/lhcoin.jpg?1547042926" + }, + { + "chainId": 1, + "address": "0xc713e5e149d5d0715dcd1c156a020976e7e56b88", + "name": "Aave MKR", + "symbol": "AMKR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14248/thumb/aMKR.ac965178.png?1615528346" + }, + { + "chainId": 1, + "address": "0x50de6856358cc35f3a9a57eaaa34bd4cb707d2cd", + "name": "Razor Network", + "symbol": "RAZOR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13797/thumb/icon.png?1611919354" + }, + { + "chainId": 1, + "address": "0xac51066d7bec65dc4589368da368b212745d63e8", + "name": "My Neighbor Alice", + "symbol": "ALICE", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/14375/thumb/alice_logo.jpg?1615782968" + }, + { + "chainId": 1, + "address": "0x2e1368fe7b9cbb3f777c2d85e9e804f8f67d7074", + "name": "Shibboo Inu", + "symbol": "SHIBBOO", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/19601/thumb/shibboo.jpeg?1635491024" + }, + { + "chainId": 1, + "address": "0x86772b1409b61c639eaac9ba0acfbb6e238e5f83", + "name": "Indexed Finance", + "symbol": "NDX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13546/thumb/indexed-light.74bb5471.png?1609712728" + }, + { + "chainId": 1, + "address": "0xa49d7499271ae71cd8ab9ac515e6694c755d400c", + "name": "Mute", + "symbol": "MUTE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14331/thumb/MUTE.png?1617618967" + }, + { + "chainId": 1, + "address": "0xa3c4dc4a9ce2a6b40b57f25f8b50decc2c64dec2", + "name": "SeedSwap", + "symbol": "SNFT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15300/thumb/ZkJWmP1.png?1629463853" + }, + { + "chainId": 1, + "address": "0xfb22ced41b1267da411f68c879f4defd0bd4796a", + "name": "Ziot", + "symbol": "ZIOT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14546/thumb/1_iSvPXhw4frHgjyMejcmoKQ.png?1616973916" + }, + { + "chainId": 1, + "address": "0xb1f136a74e18e4e2921febbf25820d1bb65b5647", + "name": "hiPunks", + "symbol": "HIPUNKS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26739/thumb/hipunks.png?1659946062" + }, + { + "chainId": 1, + "address": "0x6f40d4a6237c257fff2db00fa0510deeecd303eb", + "name": "Instadapp", + "symbol": "INST", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14688/thumb/30hFM0-n_400x400.jpg?1617786420" + }, + { + "chainId": 1, + "address": "0x3cbc780d2934d55a06069e837fabd3e6fc23dab0", + "name": "DBX", + "symbol": "DBX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15682/thumb/logo.png?1646903349" + }, + { + "chainId": 1, + "address": "0x24700a297960e8477ce3ca6c58b70a7af3410398", + "name": "Oasis City", + "symbol": "OSC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7038/thumb/wJepb5N.png?1550038108" + }, + { + "chainId": 1, + "address": "0xb8366948b4a3f07bcbf14eb1739daa42a26b07c4", + "name": "VALOBIT", + "symbol": "VBIT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12394/thumb/Untitled-design-3.png?1599550715" + }, + { + "chainId": 1, + "address": "0xe530441f4f73bdb6dc2fa5af7c3fc5fd551ec838", + "name": "GSENetwork", + "symbol": "GSE", + "decimals": 4, + "logoURI": "https://assets.coingecko.com/coins/images/4776/thumb/gsenetwork.png?1547743285" + }, + { + "chainId": 1, + "address": "0x08c32b0726c5684024ea6e141c50ade9690bbdcc", + "name": "Stratos", + "symbol": "STOS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16213/thumb/token_512x512.png?1623313898" + }, + { + "chainId": 1, + "address": "0x419b8ed155180a8c9c64145e76dad49c0a4efb97", + "name": "AltEstate", + "symbol": "ALT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3076/thumb/AltEstate_Token.jpg?1547037426" + }, + { + "chainId": 1, + "address": "0x3c48ca59bf2699e51d4974d4b6d284ae52076e5e", + "name": "Capital DAO Starter", + "symbol": "CDS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20332/thumb/cds.png?1661762062" + }, + { + "chainId": 1, + "address": "0x6e9730ecffbed43fd876a264c982e254ef05a0de", + "name": "Nord Finance", + "symbol": "NORD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13630/thumb/nord.jpg?1610465136" + }, + { + "chainId": 1, + "address": "0x69570f3e84f51ea70b7b68055c8d667e77735a25", + "name": "Betswap gg", + "symbol": "BSGG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22496/thumb/betswap.jpg?1641924550" + }, + { + "chainId": 1, + "address": "0x20910e5b5f087f6439dfcb0dda4e27d1014ac2b8", + "name": "BananaTok", + "symbol": "BNA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10289/thumb/sMCxdYBa_400x400.jpg?1577013480" + }, + { + "chainId": 1, + "address": "0xd714d91a169127e11d8fab3665d72e8b7ef9dbe2", + "name": "BlackHole Protocol", + "symbol": "BLACK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15124/thumb/blackhole.PNG?1620094580" + }, + { + "chainId": 1, + "address": "0x6ff1bfa14a57594a5874b37ff6ac5efbd9f9599a", + "name": "TotemFi", + "symbol": "TOTM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14680/thumb/TOTM.png?1617721704" + }, + { + "chainId": 1, + "address": "0x37fc4b48ce93469dbea9918468993c735049642a", + "name": "CropBytes", + "symbol": "CBX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19907/thumb/cbx.png?1647698560" + }, + { + "chainId": 1, + "address": "0x40803cea2b2a32bda1be61d3604af6a814e70976", + "name": "Spool DAO", + "symbol": "SPOOL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21532/thumb/spool.png?1639388809" + }, + { + "chainId": 1, + "address": "0x53c8395465a84955c95159814461466053dedede", + "name": "DeGate", + "symbol": "DG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14415/thumb/DG_token_brand_web_rgb_blue.png?1669460087" + }, + { + "chainId": 1, + "address": "0x15f0eedf9ce24fc4b6826e590a8292ce5524a1da", + "name": "Decentralized Nations", + "symbol": "DENA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22167/thumb/denations.PNG?1641166526" + }, + { + "chainId": 1, + "address": "0x07a858fc699f99ddf2b186bf162fd7f4d42f7f63", + "name": "ARTII", + "symbol": "ARTII", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20767/thumb/logo-img.png?1637654806" + }, + { + "chainId": 1, + "address": "0x8eb5bd8c9ab0f8ad28e94693f3c889f490be2ab0", + "name": "PoS 32", + "symbol": "POS32", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27358/thumb/90532f66-9158-4bd4-8928-bcb8ec012579.png?1663663764" + }, + { + "chainId": 1, + "address": "0x1c1c14a6b5074905ce5d367b0a7e098b58ebfd47", + "name": "FIDEX Exchange", + "symbol": "FEX", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/6843/thumb/1LC9qeLf_400x400.jpg?1547043159" + }, + { + "chainId": 1, + "address": "0x8b40761142b9aa6dc8964e61d0585995425c3d94", + "name": "Tripio", + "symbol": "TRIO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4648/thumb/tripio-logo.jpg?1547039914" + }, + { + "chainId": 1, + "address": "0xa5f2211b9b8170f694421f2046281775e8468044", + "name": "THORSwap", + "symbol": "THOR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19292/thumb/THORSwap_Logo-removebg-preview.png?1657210461" + }, + { + "chainId": 1, + "address": "0x6e36556b3ee5aa28def2a8ec3dae30ec2b208739", + "name": "BUILD Finance", + "symbol": "BUILD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12380/thumb/build.PNG?1599463828" + }, + { + "chainId": 1, + "address": "0x2f85e502a988af76f7ee6d83b7db8d6c0a823bf9", + "name": "LatiumX", + "symbol": "LATX", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/3500/thumb/latium.jpg?1547038261" + }, + { + "chainId": 1, + "address": "0x831091da075665168e01898c6dac004a867f1e1b", + "name": "Gains Farm", + "symbol": "GFARM2", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13703/thumb/gfarm_v2.png?1611035398" + }, + { + "chainId": 1, + "address": "0xef497b970f50286a9805b91809b8615e6d0ef19b", + "name": "HARU", + "symbol": "HARU", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/26786/thumb/haru.png?1661062811" + }, + { + "chainId": 1, + "address": "0x2ba592f78db6436527729929aaf6c908497cb200", + "name": "Cream", + "symbol": "CREAM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11976/thumb/Cream.png?1596593418" + }, + { + "chainId": 1, + "address": "0x5b685863494c33f344081f75e5430c260c224a32", + "name": "CORE MultiChain", + "symbol": "CMCX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18848/thumb/O4IzY2CQ_400x400.png?1633590798" + }, + { + "chainId": 1, + "address": "0x7e8c149f70437eba6785f9059190a5b08abf03de", + "name": "MiniBitcoin", + "symbol": "MBTC", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/7180/thumb/logo_brown.png?1547043731" + }, + { + "chainId": 1, + "address": "0xc6065b9fc8171ad3d29bad510709249681758972", + "name": "Wallfair", + "symbol": "WFAIR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18920/thumb/wallfair_logo.png?1633942136" + }, + { + "chainId": 1, + "address": "0x2162f572b25f7358db9376ab58a947a4e45cede1", + "name": "LABEL Foundation", + "symbol": "LBL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19202/thumb/tele_profile_%EB%8C%80%EC%A7%80_1_-_%282%29.png?1634680838" + }, + { + "chainId": 1, + "address": "0x243cacb4d5ff6814ad668c3e225246efa886ad5a", + "name": "Shina Inu", + "symbol": "SHI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25208/thumb/coingecko-shina-purple-bg.png?1655266989" + }, + { + "chainId": 1, + "address": "0xd1420af453fd7bf940573431d416cace7ff8280c", + "name": "Answer Governance", + "symbol": "AGOV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14383/thumb/AgoV_Logo1.png?1622448433" + }, + { + "chainId": 1, + "address": "0x419c4db4b9e25d6db2ad9691ccb832c8d9fda05e", + "name": "Dragonchain", + "symbol": "DRGN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1289/thumb/dragonchain.png?1547957761" + }, + { + "chainId": 1, + "address": "0xcfbf70e33d5163e25b0dad73955c1bd9e8cd8ba2", + "name": "WinStars Live", + "symbol": "WNL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4178/thumb/HEq48ZDOCvVTVFw8J8qws9les1E27b_8F_k34sVhpwULn3muT66wiQI9HjNNUhGLELkGGSi0daPgxt8YHjbRqHzX1uurAbySQdtr_FW0GRBNN3CEWGU03Vn_z9NdJiGHV193Y_RWPDAGlm69ISIMSdTxT34VycLZTMrgJeWaNXrblBrXpPprJXKDJCKsa_Wt1jofCsygfNLdWQ0j_.jpg?1563768641" + }, + { + "chainId": 1, + "address": "0x8cb1d155a5a1d5d667611b7710920fd9d1cd727f", + "name": "Aircoins", + "symbol": "AIRX", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/9201/thumb/Aircoins.png?1591615033" + }, + { + "chainId": 1, + "address": "0x9a24b8e8a6d4563c575a707b1275381119298e60", + "name": "EVNY", + "symbol": "EVNY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14555/thumb/envy.jpg?1616999935" + }, + { + "chainId": 1, + "address": "0x7f280dac515121dcda3eac69eb4c13a52392cace", + "name": "Fancy Games", + "symbol": "FNC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21367/thumb/fnc.png?1639025576" + }, + { + "chainId": 1, + "address": "0x31429d1856ad1377a8a0079410b297e1a9e214c2", + "name": "ANGLE", + "symbol": "ANGLE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19060/thumb/ANGLE_Token-light.png?1666774221" + }, + { + "chainId": 1, + "address": "0x549e4d92285ff5a16c9484ff79211e4358b1f202", + "name": "Infinite Arcade TIC", + "symbol": "TIC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25919/thumb/VNReVzc5Sg6NqHONgxEQ_4BI9yq3820sYQx0R.jpg?1654593140" + }, + { + "chainId": 1, + "address": "0x7869c4a1a3f6f8684fbcc422a21ad7abe3167834", + "name": "Pivot", + "symbol": "PVT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8977/thumb/j5ovdTKP_400x400.png?1563405624" + }, + { + "chainId": 1, + "address": "0x4da34f8264cb33a5c9f17081b9ef5ff6091116f4", + "name": "ELYFI", + "symbol": "ELFI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23733/thumb/elyfi_logo.png?1645691480" + }, + { + "chainId": 1, + "address": "0x106538cc16f938776c7c180186975bca23875287", + "name": "Basis Share", + "symbol": "BAS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13251/thumb/BAS.png?1613231139" + }, + { + "chainId": 1, + "address": "0x8f1135ea4f8946949441716d66e5390c5a990df0", + "name": "MesChain", + "symbol": "MES", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/9719/thumb/TtPovcoX_400x400.jpg?1571263455" + }, + { + "chainId": 1, + "address": "0x28fac5334c9f7262b3a3fe707e250e01053e07b5", + "name": "IdleUSDT Risk Adjusted ", + "symbol": "IDLEUSDTSAFE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11931/thumb/idleusdt-safe.png?1596263270" + }, + { + "chainId": 1, + "address": "0x2001f2a0cf801ecfda622f6c28fb6e10d803d969", + "name": "CoinLoan", + "symbol": "CLT", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/1713/thumb/blue-logo-transparent-200x200.png?1595912819" + }, + { + "chainId": 1, + "address": "0x2c000c0093de75a8fa2fccd3d97b314e20b431c3", + "name": "Huobi Litecoin", + "symbol": "HLTC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14110/thumb/HLTC.png?1614335967" + }, + { + "chainId": 1, + "address": "0x8a0cdfab62ed35b836dc0633482798421c81b3ec", + "name": "Spherium", + "symbol": "SPHRI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17787/thumb/Group_15.png?1629252159" + }, + { + "chainId": 1, + "address": "0xba21ef4c9f433ede00badefcc2754b8e74bd538a", + "name": "Swapfolio", + "symbol": "SWFL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12263/thumb/swapfolio-token-logo-icon-symbol-256-256.png?1598593097" + }, + { + "chainId": 1, + "address": "0x9135d92e3a34e2a94e4474b74b9dc2d51118eed5", + "name": "Ulgen Hash Power", + "symbol": "UHP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11897/thumb/download_%2816%29.png?1595892702" + }, + { + "chainId": 1, + "address": "0x965d79f1a1016b574a62986e13ca8ab04dfdd15c", + "name": "M2", + "symbol": "M2", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18239/thumb/m2_%281%29.png?1631068956" + }, + { + "chainId": 1, + "address": "0xd4eb79a193e7e1a7b998202a9407e5ce3ff02b4f", + "name": "Web69", + "symbol": "WEB69", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/26928/thumb/web69200x200.png?1660880767" + }, + { + "chainId": 1, + "address": "0x0b342c51d1592c41068d5d4b4da4a68c0a04d5a4", + "name": "OneSwap DAO", + "symbol": "ONES", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12552/thumb/logo.png?1600682344" + }, + { + "chainId": 1, + "address": "0x5afff9876c1f98b7d2b53bcb69eb57e92408319f", + "name": "metavisa", + "symbol": "MESA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23246/thumb/twitteravatar_circle.png?1653551813" + }, + { + "chainId": 1, + "address": "0x07150e919b4de5fd6a63de1f9384828396f25fdc", + "name": "Base Protocol", + "symbol": "BASE", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/13265/thumb/200x200green.png?1607650121" + }, + { + "chainId": 1, + "address": "0xd2287a52287dd64ae2c690d74322e2e345dc8f69", + "name": "BabyWhale", + "symbol": "BBW", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24168/thumb/babywhale_32.png?1646716918" + }, + { + "chainId": 1, + "address": "0x6692de64716a177c15360d8d010bc522bbc530a0", + "name": "Talent", + "symbol": "TNT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25563/thumb/tnt.png?1652521166" + }, + { + "chainId": 1, + "address": "0x8916187112fd6e3624a80c42fa354cd9756e695f", + "name": "Shibird", + "symbol": "SHIRD", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/28074/thumb/CGLOGO-1.png?1667386097" + }, + { + "chainId": 1, + "address": "0x0ab39ac604f992aaec3c36de337c3cd3917a7d26", + "name": "KEEPs Coin", + "symbol": "KVERSE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19622/thumb/keeps.PNG?1635498049" + }, + { + "chainId": 1, + "address": "0xb7c9e99da8a857ce576a830a9c19312114d9de02", + "name": "Maximus TEAM", + "symbol": "TEAM", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/27711/thumb/TEAM.png?1665451692" + }, + { + "chainId": 1, + "address": "0xa223e8a8d445b5b9a2f477c00ae79267a8f94225", + "name": "Meme Protocol", + "symbol": "MEME", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27795/thumb/memeprotocol.png?1665821284" + }, + { + "chainId": 1, + "address": "0xc3dd23a0a854b4f9ae80670f528094e9eb607ccb", + "name": "Trendering", + "symbol": "TRND", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11941/thumb/trnd-ico-200.png?1605147194" + }, + { + "chainId": 1, + "address": "0x358bd0d980e031e23eba9aa793926857703783bd", + "name": "Aave AMM BptWBTCWETH", + "symbol": "AAMMBPTWBTCWETH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17260/thumb/aAmmBptWBTCWETH.png?1626959325" + }, + { + "chainId": 1, + "address": "0xdef1ca1fb7fbcdc777520aa7f396b4e015f497ab", + "name": "CoW Protocol", + "symbol": "COW", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24384/thumb/cow.png?1660960589" + }, + { + "chainId": 1, + "address": "0xaf1250fa68d7decd34fd75de8742bc03b29bd58e", + "name": "Invictus Hyperion Fund", + "symbol": "IHF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3747/thumb/ihp.png?1547038807" + }, + { + "chainId": 1, + "address": "0xe38b72d6595fd3885d1d2f770aa23e94757f91a1", + "name": "TecraCoin ERC20", + "symbol": "TCR", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/7836/thumb/tcr.jpg?1604903462" + }, + { + "chainId": 1, + "address": "0x61bfc979ea8160ede9b862798b7833a97bafa02a", + "name": "RELEASE", + "symbol": "REL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5387/thumb/release.jpg?1547041000" + }, + { + "chainId": 1, + "address": "0xe0df31d06d72b2f5231489af0edc422b372f49f1", + "name": "MarsX", + "symbol": "MX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19659/thumb/png256x256.png?1636908533" + }, + { + "chainId": 1, + "address": "0xd578779dbc9252218e12d18d628e3cb27e4a56f2", + "name": "Britto", + "symbol": "BRT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22830/thumb/britto-coin-logo.jpg?1642664707" + }, + { + "chainId": 1, + "address": "0x0789dbae94fb18e5789b8e4489bcb7a1adb58622", + "name": "FISCO Coin", + "symbol": "FSCC", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/6507/thumb/AnyConv.com__fscc_icon_fin.png?1608779052" + }, + { + "chainId": 1, + "address": "0x8713d26637cf49e1b6b4a7ce57106aabc9325343", + "name": "Content Neutrality Network", + "symbol": "CNN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2787/thumb/cnn_logo_big.png?1547036967" + }, + { + "chainId": 1, + "address": "0x44f262622248027f8e2a8fb1090c4cf85072392c", + "name": "Planet Inverse", + "symbol": "XIV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14231/thumb/photo_2021-06-07_22-10-41.jpg?1623075271" + }, + { + "chainId": 1, + "address": "0x66079fb941c03f848f8d6601190c8b876461237a", + "name": "DIVI LAND", + "symbol": "DVLD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25559/thumb/dvld.jpg?1652441515" + }, + { + "chainId": 1, + "address": "0x06a87f6afec4a739c367bef69eefe383d27106bd", + "name": "Scoobi Doge", + "symbol": "SCOOBI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16101/thumb/scoobi_doge.jpg?1622963978" + }, + { + "chainId": 1, + "address": "0x5ca5a5efb57dbaf4462edbd15da889448b1919ed", + "name": "RocketToken", + "symbol": "RKTN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25052/thumb/5F8FyJDt_400x400.jpg?1649925450" + }, + { + "chainId": 1, + "address": "0xcfeaead4947f0705a14ec42ac3d44129e1ef3ed5", + "name": "Notional Finance", + "symbol": "NOTE", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/20282/thumb/NOTE-340x340.png?1636821924" + }, + { + "chainId": 1, + "address": "0x3757232b55e60da4a8793183ac030cfce4c3865d", + "name": "YDragon", + "symbol": "YDR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17807/thumb/icon.png?1629302175" + }, + { + "chainId": 1, + "address": "0xf52cdcd458bf455aed77751743180ec4a595fd3f", + "name": "IdleSUSD Yield ", + "symbol": "IDLESUSDYIELD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11934/thumb/idlesusdv3mmaxyield_32.png?1596263703" + }, + { + "chainId": 1, + "address": "0xdb792b1d8869a7cfc34916d6c845ff05a7c9b789", + "name": "Cross Chain BCH", + "symbol": "CCBCH", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/19747/thumb/ccBCH.png?1635822615" + }, + { + "chainId": 1, + "address": "0x2e65e12b5f0fd1d58738c6f38da7d57f5f183d1c", + "name": "Tepleton", + "symbol": "TEP", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/9622/thumb/tep.PNG?1569856834" + }, + { + "chainId": 1, + "address": "0x0fd67b4ceb9b607ef206904ec73459c4880132c9", + "name": "ShoeFy", + "symbol": "SHOE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19082/thumb/SHOEFY.jpg?1634371392" + }, + { + "chainId": 1, + "address": "0xf0ee6b27b759c9893ce4f094b49ad28fd15a23e4", + "name": "Enigma", + "symbol": "ENG", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/1007/thumb/enigma-logo.png?1547034914" + }, + { + "chainId": 1, + "address": "0xf6a9baef8c66e9b24152014222871c8e02d0ee97", + "name": "CelsiusX Wrapped BTC", + "symbol": "CXBTC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25535/thumb/cxBTC.png?1652252129" + }, + { + "chainId": 1, + "address": "0x058bc8ef040bd3971418e36aa88b64899378ccf4", + "name": "DONA", + "symbol": "DONA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18429/thumb/DONA.jpg?1631889823" + }, + { + "chainId": 1, + "address": "0xa42f266684ac2ad6ecb00df95b1c76efbb6f136c", + "name": "Cash Tech", + "symbol": "CATE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14529/thumb/CG.jpg?1624471293" + }, + { + "chainId": 1, + "address": "0xc7c36ee729968944a86e0cd504deccd3b0edbae1", + "name": "microNFT", + "symbol": "MNT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27510/thumb/qEXG4boD_400x400.jpeg?1664349800" + }, + { + "chainId": 1, + "address": "0x0def8d8adde14c9ef7c2a986df3ea4bd65826767", + "name": "DefiCliq", + "symbol": "CLIQ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13242/thumb/deficliq_logo.png?1606660146" + }, + { + "chainId": 1, + "address": "0x3ea8ea4237344c9931214796d9417af1a1180770", + "name": "FluxProtocol", + "symbol": "FLX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21137/thumb/flux-flx.jpeg?1638372222" + }, + { + "chainId": 1, + "address": "0xed025a9fe4b30bcd68460bca42583090c2266468", + "name": "Ripio Coin", + "symbol": "RPC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24901/thumb/624e429cffe3fe0001456cb8_01_rpc-icon.png?1649324477" + }, + { + "chainId": 1, + "address": "0x9f5f3cfd7a32700c93f971637407ff17b91c7342", + "name": "Scry info", + "symbol": "DDD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2569/thumb/Scry.info.jpg?1547036695" + }, + { + "chainId": 1, + "address": "0x96184d9c811ea0624fc30c80233b1d749b9e485b", + "name": "Dapp com", + "symbol": "DAPPT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8282/thumb/dappt_logo.png?1593074788" + }, + { + "chainId": 1, + "address": "0x406b9dca8b52f08385014ec1ed1cf6a0d5c01289", + "name": "Meishu", + "symbol": "MEISHU", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/24112/thumb/LDtBuFcu_400x400.jpg?1646378468" + }, + { + "chainId": 1, + "address": "0x0327112423f3a68efdf1fcf402f6c5cb9f7c33fd", + "name": "PieDAO BTC ", + "symbol": "BTC++", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10959/thumb/BTC__.png?1586499443" + }, + { + "chainId": 1, + "address": "0x331a4589516eae384ea5f557853af6af73b9534e", + "name": "Token CashPay", + "symbol": "TCP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11616/thumb/559059354_256256.png?1591932551" + }, + { + "chainId": 1, + "address": "0xd341d1680eeee3255b8c4c75bcce7eb57f144dae", + "name": "SoMee Social OLD ", + "symbol": "ONG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1286/thumb/So_Mee_logo_icons_11.png?1581305902" + }, + { + "chainId": 1, + "address": "0x70008f18fc58928dce982b0a69c2c21ff80dca54", + "name": "X7R", + "symbol": "X7R", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27710/thumb/X7R.png?1665314632" + }, + { + "chainId": 1, + "address": "0x5cac718a3ae330d361e39244bf9e67ab17514ce8", + "name": "Cosplay Token", + "symbol": "COT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21294/thumb/brave_ZxsjzUc8xn.png?1638874098" + }, + { + "chainId": 1, + "address": "0x5aa7c403c7de4b3bb0cc07079a03e389671a4771", + "name": "Ibiza", + "symbol": "IBZ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19349/thumb/AZHnAHiY_400x400.jpg?1635127261" + }, + { + "chainId": 1, + "address": "0x593114f03a0a575aece9ed675e52ed68d2172b8c", + "name": "BidiPass", + "symbol": "BDP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3890/thumb/AxiFAoHc_400x400.jpg?1567461770" + }, + { + "chainId": 1, + "address": "0x82a77710495a35549d2add797412b4a4497d33ef", + "name": "Dogz", + "symbol": "DOGZ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7544/thumb/dogz.png?1604655282" + }, + { + "chainId": 1, + "address": "0x74bff2018687b8a1ff7132e13cd4fdc763725bcf", + "name": "Credit Suisse Inu", + "symbol": "CSI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27612/thumb/Credit-Suisse-Inu.jpg?1664853199" + }, + { + "chainId": 1, + "address": "0x8af38d3530bbd802ff2d132ae361897aca004ec1", + "name": "PulseApeCoin", + "symbol": "PLSA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26891/thumb/2022-08-15_16.40.06.jpg?1660706016" + }, + { + "chainId": 1, + "address": "0x03806ce5ef69bd9780edfb04c29da1f23db96294", + "name": "Tesla TSL", + "symbol": "TSL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1222/thumb/energo.png?1547035249" + }, + { + "chainId": 1, + "address": "0x4b4b1d389d4f4e082b30f75c6319c0ce5acbd619", + "name": "Heart Number", + "symbol": "HTN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9002/thumb/htn%28200x200%29.png?1600757668" + }, + { + "chainId": 1, + "address": "0xa8155cf81adaa78f9cec69d698be1859d4f3bf3b", + "name": "Hel Games", + "symbol": "HEL", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/26635/thumb/logo_%281%29.png?1659327747" + }, + { + "chainId": 1, + "address": "0x095cf7f3e82a1dcadbf0fbc59023f419883ea296", + "name": "Pocket Arena", + "symbol": "POC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8731/thumb/poc.png?1638521756" + }, + { + "chainId": 1, + "address": "0x4c6ec08cf3fc987c6c4beb03184d335a2dfc4042", + "name": "MurAll", + "symbol": "PAINT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14103/thumb/paint_logo_200x200.png?1614325640" + }, + { + "chainId": 1, + "address": "0x8c661806f716652b637728355cc4e2620d428f99", + "name": "Delio DSP", + "symbol": "DSP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26236/thumb/4Wbz4ZFt_400x400.png?1656901850" + }, + { + "chainId": 1, + "address": "0x7e7e112a68d8d2e221e11047a72ffc1065c38e1a", + "name": "Badger Sett Digg", + "symbol": "BDIGG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14503/thumb/DIGG.png?1616560407" + }, + { + "chainId": 1, + "address": "0x558ec3152e2eb2174905cd19aea4e34a23de9ad6", + "name": "Bread", + "symbol": "BRD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1440/thumb/bread.png?1547563238" + }, + { + "chainId": 1, + "address": "0x846c66cf71c43f80403b51fe3906b3599d63336f", + "name": "PumaPay", + "symbol": "PMA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2307/thumb/pumapay_dark_rounded_256x256.png?1622176373" + }, + { + "chainId": 1, + "address": "0x9ceb84f92a0561fa3cc4132ab9c0b76a59787544", + "name": "Doki Doki", + "symbol": "DOKI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12759/thumb/doki_logo.png?1602338064" + }, + { + "chainId": 1, + "address": "0x48783486ddd7fa85eca6b0c4ae8920bc25dfbcd7", + "name": "GoMoney2", + "symbol": "GOM2", + "decimals": 0, + "logoURI": "https://assets.coingecko.com/coins/images/10374/thumb/lvAhDIqmH0fh6U3NIiYLmKETR3uUBcySAv-K28eW6CCFm-ODhCdId71Ug5c4TCoEtxsre30Efe08muctK0MlK-JPdAbxilzZ7dHyiBNOCvcc_9AmJIo09TRLaiAafgqcFKsxpNOON2D28oTLnVTaqwxWL8zKSzjbI6ChKTCJKOiM2mq7VhQRZYe93StR30mf2O7DnkqmGEbZ5_i.jpg?1578675305" + }, + { + "chainId": 1, + "address": "0x24861414c8845b8115397302e9dcfaab3f239826", + "name": "Shield Protocol Token", + "symbol": "SHIELD", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/24014/thumb/Shield_Universal_Avatar_black.png?1646030958" + }, + { + "chainId": 1, + "address": "0x6247c86b016bc4d9ae141849c0a9eb38c004b742", + "name": "Hotelium", + "symbol": "HTL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8812/thumb/hotelium.PNG?1561539590" + }, + { + "chainId": 1, + "address": "0x6a27348483d59150ae76ef4c0f3622a78b0ca698", + "name": "BeeKan Beenews", + "symbol": "BKBT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5004/thumb/beekan.png?1547040430" + }, + { + "chainId": 1, + "address": "0xdffa3a7f5b40789c7a437dbe7b31b47f9b08fe75", + "name": "CryptoPunk 7171", + "symbol": "HOODIE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17842/thumb/cryptopunk-hoodie.png?1629468579" + }, + { + "chainId": 1, + "address": "0x9e5bd9d9fad182ff0a93ba8085b664bcab00fa68", + "name": "Dinger", + "symbol": "DINGER", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/19443/thumb/dinger.png?1661498131" + }, + { + "chainId": 1, + "address": "0xb269ab3b20e09e6fd17c3ed5b4cecf3dea1a5141", + "name": "Sakura Planet", + "symbol": "SAK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27225/thumb/SAK.?1662698993" + }, + { + "chainId": 1, + "address": "0x8ee325ae3e54e83956ef2d5952d3c8bc1fa6ec27", + "name": "Fable Of The Dragon", + "symbol": "TYRANT", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/27911/thumb/XX45VJKq_400x400.jpeg?1669956200" + }, + { + "chainId": 1, + "address": "0x3833dda0aeb6947b98ce454d89366cba8cc55528", + "name": "SophiaTX", + "symbol": "SPHTX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1443/thumb/sophiatx.png?1548609885" + }, + { + "chainId": 1, + "address": "0x06576eb3b212d605b797dc15523d9dc9f4f66db4", + "name": "The Crypto Prophecies", + "symbol": "TCP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15054/thumb/tcp.PNG?1619579195" + }, + { + "chainId": 1, + "address": "0xb4058411967d5046f3510943103805be61f0600e", + "name": "Stonk", + "symbol": "STONK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14805/thumb/f9YBOaOF_400x400.jpg?1618534520" + }, + { + "chainId": 1, + "address": "0x309c1b3282c49e4dc6796644417f8c76b7c8233c", + "name": "First Eleven", + "symbol": "F11", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21295/thumb/f11.PNG?1638875819" + }, + { + "chainId": 1, + "address": "0xe70ea90718fd21471db240f3bae343daece65f53", + "name": "The Americans NFT", + "symbol": "USACOIN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26566/thumb/american_NFT.jpg?1658800655" + }, + { + "chainId": 1, + "address": "0xd13432fdd2ae4eed84c3a0233d6c5265087c96c3", + "name": "SatelStar", + "symbol": "STSR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28202/thumb/Satelstar_logo_200x.png?1668338911" + }, + { + "chainId": 1, + "address": "0x6c139349ee94ebaaff55ed52d382673c263b22d6", + "name": "Upper Euro", + "symbol": "EURU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12353/thumb/euru.png?1642929585" + }, + { + "chainId": 1, + "address": "0xc12ecee46ed65d970ee5c899fcc7ae133aff9b03", + "name": "Try Finance", + "symbol": "TRY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13865/thumb/try-logo.png?1612420128" + }, + { + "chainId": 1, + "address": "0x39795344cbcc76cc3fb94b9d1b15c23c2070c66d", + "name": "Seigniorage Shares", + "symbol": "SHARE", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/12306/thumb/logo_%281%29.png?1607658707" + }, + { + "chainId": 1, + "address": "0x34f7da1243a4aaa69de3639a2f124fa56f4dd5cd", + "name": "Tesseract", + "symbol": "TESS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27966/thumb/photo_2022-10-20_10.54.55.jpeg?1666766468" + }, + { + "chainId": 1, + "address": "0x78a52e12c7b63d05c12f9608307587cf654ec3d0", + "name": "Crypto Village Accelerator", + "symbol": "CVA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10071/thumb/logo_tondo_%281%29.png?1575499784" + }, + { + "chainId": 1, + "address": "0x1b9baf2a3edea91ee431f02d449a1044d5726669", + "name": "Clifford Inu", + "symbol": "CLIFF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21624/thumb/Cliff-Logo-with-with-Circle-NO-Background.png?1655968797" + }, + { + "chainId": 1, + "address": "0xfd30c9bea1a952feeed2ef2c6b2ff8a8fc4aad07", + "name": "Kally", + "symbol": "KALLY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15812/thumb/polkally.PNG?1621979722" + }, + { + "chainId": 1, + "address": "0xb2dbf14d0b47ed3ba02bdb7c954e05a72deb7544", + "name": "MobiFi", + "symbol": "MOFI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14697/thumb/MOFI_Coin_Green_200x200.png?1634024056" + }, + { + "chainId": 1, + "address": "0x0cc9fccff81252f4bd8c5c6b359b14ae2ed851cf", + "name": "InnovativeBioresearchClassic", + "symbol": "INNBCL", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/7911/thumb/INNBCL.png?1551777826" + }, + { + "chainId": 1, + "address": "0x574f84108a98c575794f75483d801d1d5dc861a5", + "name": "Robotina", + "symbol": "ROX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3153/thumb/rox.png?1519831400" + }, + { + "chainId": 1, + "address": "0x560cc7de81b2a594f6518713cbe122bcf297a6e8", + "name": "ImpulseVen", + "symbol": "I7", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14514/thumb/Impulseven.png?1631092895" + }, + { + "chainId": 1, + "address": "0xa14c04dea16798aa8f25b1da583cd5fbbfd6579e", + "name": "Polychain Monsters Genesis", + "symbol": "PMLG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25396/thumb/19329.png?1651710855" + }, + { + "chainId": 1, + "address": "0xb8e103b60a33597136ea9511f46b6dbeb643a3a5", + "name": "SiamBitcoin", + "symbol": "SBTC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7089/thumb/image-62DF_5C05991C.jpg?1547043573" + }, + { + "chainId": 1, + "address": "0x790bfacae71576107c068f494c8a6302aea640cb", + "name": "CryptoBossCoin", + "symbol": "CBC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7114/thumb/eqIkj-ZZ_400x400.jpg?1549521587" + }, + { + "chainId": 1, + "address": "0xe04491d64eaa464ec8fdf53c7a4c92bf5b2278cd", + "name": "WORLDPET", + "symbol": "WPT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11707/thumb/worldpet3.png?1592986614" + }, + { + "chainId": 1, + "address": "0x1e18821e69b9faa8e6e75dffe54e7e25754beda0", + "name": "KIMCHI finance", + "symbol": "KIMCHI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12302/thumb/VBa2Z60o_400x400.png?1598982471" + }, + { + "chainId": 1, + "address": "0x394a16744dcd805bb0ca7252e70691f0dcac56aa", + "name": "Trazable", + "symbol": "TRZ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24851/thumb/Logo_TRZ-Token_200.png?1649133506" + }, + { + "chainId": 1, + "address": "0x4fb721ef3bf99e0f2c193847afa296b9257d3c30", + "name": "Tokenplace", + "symbol": "TOK", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/15779/thumb/output-onlinepngtools_%283%29.png?1621837855" + }, + { + "chainId": 1, + "address": "0xcfa0885131f602d11d4da248d2c65a62063567a9", + "name": "TORG", + "symbol": "TORG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17596/thumb/TORG_Logo_200x200.png?1628586056" + }, + { + "chainId": 1, + "address": "0xd909c5862cdb164adb949d92622082f0092efc3d", + "name": "Interest Protocol Token", + "symbol": "IPT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27000/thumb/logo.white_%281%29.png?1661328083" + }, + { + "chainId": 1, + "address": "0xcf78c7dd70d6f30f6e3609e905e78305da98c863", + "name": "Ownix", + "symbol": "ONX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17469/thumb/200_200.jpg?1633360949" + }, + { + "chainId": 1, + "address": "0x1de5e000c41c8d35b9f1f4985c23988f05831057", + "name": "BonFi", + "symbol": "BNF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12862/thumb/bonfi_logo.png?1603114422" + }, + { + "chainId": 1, + "address": "0x02e7ac540409d32c90bfb51114003a9e1ff0249c", + "name": "JPG NFT Index", + "symbol": "JPG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25071/thumb/JPG-token-logo-01.png?1650242041" + }, + { + "chainId": 1, + "address": "0x8379f52d09b9998ecba731288ee4fe532fd91c0b", + "name": "Backed Protocol", + "symbol": "BAKT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16773/thumb/QXP11lB.png?1624945482" + }, + { + "chainId": 1, + "address": "0xc4e15973e6ff2a35cc804c2cf9d2a1b817a8b40f", + "name": "Badger Interest Bearing Bitcoin", + "symbol": "IBBTC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15500/thumb/ibbtc.png?1621077589" + }, + { + "chainId": 1, + "address": "0xfca47962d45adfdfd1ab2d972315db4ce7ccf094", + "name": "iXledger", + "symbol": "IXT", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/814/thumb/ixledger.png?1547034602" + }, + { + "chainId": 1, + "address": "0x1864ce27e9f7517047933caae530674e8c70b8a7", + "name": "Pibble", + "symbol": "PIB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2972/thumb/pibble.jpg?1551683103" + }, + { + "chainId": 1, + "address": "0xd7631787b4dcc87b1254cfd1e5ce48e96823dee8", + "name": "Sociall", + "symbol": "SCL", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/874/thumb/scl.png?1547034694" + }, + { + "chainId": 1, + "address": "0xcd1cb16a67937ff8af5d726e2681010ce1e9891a", + "name": "Themis", + "symbol": "MIS", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/13478/thumb/3uZAPv2CbXF5txM.png?1608947522" + }, + { + "chainId": 1, + "address": "0x19d97d8fa813ee2f51ad4b4e04ea08baf4dffc28", + "name": "Badger Sett Badger", + "symbol": "BBADGER", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14502/thumb/BADGER_DAO.png?1616559959" + }, + { + "chainId": 1, + "address": "0x0e192d382a36de7011f795acc4391cd302003606", + "name": "Futureswap", + "symbol": "FST", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14520/thumb/futureswap_logo.png?1634122916" + }, + { + "chainId": 1, + "address": "0xbaa9af8a83500ac4137c555b9e58ccb3e1f2269d", + "name": "ShinChan", + "symbol": "SHINNOSUKE", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/20134/thumb/shinchan.png?1636530348" + }, + { + "chainId": 1, + "address": "0xd91e9a0fef7c0fa4ebdaf4d0acf55888949a2a9b", + "name": "MCN Ventures", + "symbol": "MCN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17580/thumb/mcn-logo-white-bg.png?1628561611" + }, + { + "chainId": 1, + "address": "0x2f109021afe75b949429fe30523ee7c0d5b27207", + "name": "OccamFi", + "symbol": "OCC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14801/thumb/occfi.PNG?1618531140" + }, + { + "chainId": 1, + "address": "0x101cc05f4a51c0319f570d5e146a8c625198e636", + "name": "Aave TUSD", + "symbol": "ATUSD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14317/thumb/aTUSD.08592b49.png?1615528207" + }, + { + "chainId": 1, + "address": "0x824e35f7a75324f99300afac75ecf7354e17ea26", + "name": "TIA", + "symbol": "TIA", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/23994/thumb/tia.png?1645952362" + }, + { + "chainId": 1, + "address": "0x92e187a03b6cd19cb6af293ba17f2745fd2357d5", + "name": "Unit Protocol", + "symbol": "DUCK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13359/thumb/6f38719f-fe83-44ff-af30-7965fd23ac06.png?1660612730" + }, + { + "chainId": 1, + "address": "0xf7970499814654cd13cb7b6e7634a12a7a8a9abc", + "name": "TOM Finance", + "symbol": "TOM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13173/thumb/TOM_logo.png?1605857896" + }, + { + "chainId": 1, + "address": "0x8c81121b15197fa0eeaee1dc75533419dcfd3151", + "name": "IdleWBTC Best Yield ", + "symbol": "IDLEWBTCYIELD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11936/thumb/idlewbtcv3maxyield_32.png?1596263736" + }, + { + "chainId": 1, + "address": "0x5afe3855358e112b5647b952709e6165e1c1eeee", + "name": "Safe Token", + "symbol": "SAFE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27032/thumb/Artboard_1_copy_8circle-1.png?1661498342" + }, + { + "chainId": 1, + "address": "0xd7d706ed3598a354a4adfce5d8c5383df99a4461", + "name": "Dain", + "symbol": "DAIN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14811/thumb/%C2%B4%C3%99%C3%80%C3%8E%C2%B7%C3%8E%C2%B0%C3%AD.png?1618541340" + }, + { + "chainId": 1, + "address": "0xbb126042235e6bd38b17744cb31a8bf4a206c045", + "name": "fanC", + "symbol": "FANC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26500/thumb/hJ6MD49P_400x400.jpeg?1658356676" + }, + { + "chainId": 1, + "address": "0x26946ada5ecb57f3a1f91605050ce45c482c9eb1", + "name": "BitcoinSoV", + "symbol": "BSOV", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/9205/thumb/bsov.png?1578020375" + }, + { + "chainId": 1, + "address": "0x53bd789f2cdb846b227d8ffc7b46ed4263231fdf", + "name": "SimbCoin Swap", + "symbol": "SMBSWAP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16808/thumb/smb.png?1625134960" + }, + { + "chainId": 1, + "address": "0x38c87aa89b2b8cd9b95b736e1fa7b612ea972169", + "name": "AMO Coin", + "symbol": "AMO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4009/thumb/amo-logomark_black.png?1547039106" + }, + { + "chainId": 1, + "address": "0x7b7983967409fce461ea8bbdf9ed37631b1d59c9", + "name": "KPOP Coin", + "symbol": "KPOP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15923/thumb/kpop.PNG?1622431964" + }, + { + "chainId": 1, + "address": "0xeed4d7316a04ee59de3d301a384262ffbdbd589a", + "name": "Page Network", + "symbol": "PGX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26319/thumb/ICfb5Z0c_400x400.jpg?1657244779" + }, + { + "chainId": 1, + "address": "0xb30f5d11b94efbbfdeaa4de38edffceec0be6513", + "name": "Play It Forward DAO", + "symbol": "PIF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22904/thumb/pif.png?1642938913" + }, + { + "chainId": 1, + "address": "0xbbbbbbb5aa847a2003fbc6b5c16df0bd1e725f61", + "name": "B Protocol", + "symbol": "BPRO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15110/thumb/66428641.jpg?1619749844" + }, + { + "chainId": 1, + "address": "0x2f9411088cef82fd9fb904eb8092f28eb485c8f6", + "name": "Athens", + "symbol": "ATH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24514/thumb/ATH-logo-round.png?1647951491" + }, + { + "chainId": 1, + "address": "0xfcc63e6459936216b7b887f6da5fcd90c0c62b7c", + "name": "Korea Entertainment Education Shoppin", + "symbol": "KEES", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27513/thumb/lo2XCLcf_400x400.jpeg?1664351911" + }, + { + "chainId": 1, + "address": "0x6e1a19f235be7ed8e3369ef73b196c07257494de", + "name": "Wrapped Filecoin", + "symbol": "WFIL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13238/thumb/WFIL.png?1623827165" + }, + { + "chainId": 1, + "address": "0xea26c4ac16d4a5a106820bc8aee85fd0b7b2b664", + "name": "QuarkChain", + "symbol": "QKC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3849/thumb/quarkchain.png?1548387524" + }, + { + "chainId": 1, + "address": "0xe7976c4efc60d9f4c200cc1bcef1a1e3b02c73e7", + "name": "MAX", + "symbol": "MAX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6454/thumb/MAX_Token.jpg?1547042651" + }, + { + "chainId": 1, + "address": "0x0fd3822072ad001aac1c90a09d9506f097f24458", + "name": "NOA PLAY", + "symbol": "NOA", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/15723/thumb/XHFjmBTx_400x400.png?1621635644" + }, + { + "chainId": 1, + "address": "0xa1afffe3f4d611d252010e3eaf6f4d77088b0cd7", + "name": "reflect finance", + "symbol": "RFI", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/13189/thumb/reflect_finance_logo.png?1606098213" + }, + { + "chainId": 1, + "address": "0xbd0793332e9fb844a52a205a233ef27a5b34b927", + "name": "ZB", + "symbol": "ZB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4773/thumb/zb-token-logo.png?1547040106" + }, + { + "chainId": 1, + "address": "0xde30da39c46104798bb5aa3fe8b9e0e1f348163f", + "name": "Gitcoin", + "symbol": "GTC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15810/thumb/gitcoin.png?1621992929" + }, + { + "chainId": 1, + "address": "0xc656b2279b0fdf761e832133b06ce607fbbcbceb", + "name": "Asuna Inu", + "symbol": "ASUNAINU", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/19214/thumb/asuna-logo-200px.jpg?1642668987" + }, + { + "chainId": 1, + "address": "0x6de037ef9ad2725eb40118bb1702ebb27e4aeb24", + "name": "Render", + "symbol": "RNDR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11636/thumb/rndr.png?1638840934" + }, + { + "chainId": 1, + "address": "0xe1fc4455f62a6e89476f1072530c20cf1a0622da", + "name": "Phuture", + "symbol": "PHTR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16071/thumb/phtr.png?1655535400" + }, + { + "chainId": 1, + "address": "0x6dd4e4aad29a40edd6a409b9c1625186c9855b4d", + "name": "Parkgene", + "symbol": "GENE", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/2298/thumb/gene.png?1547036520" + }, + { + "chainId": 1, + "address": "0x86911b82bfa596e9377836838ac1f0d9ad4ecc19", + "name": "LCMS", + "symbol": "LCMS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17324/thumb/lcms.jpeg?1627309697" + }, + { + "chainId": 1, + "address": "0x9be89d2a4cd102d8fecc6bf9da793be995c22541", + "name": "Binance Wrapped BTC", + "symbol": "BBTC", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/14867/thumb/binance-btc_32.png?1618814666" + }, + { + "chainId": 1, + "address": "0xca7b3ba66556c4da2e2a9afef9c64f909a59430a", + "name": "WOLVERINU OLD ", + "symbol": "WOLVERINU", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/19374/thumb/logo200.png?1643189122" + }, + { + "chainId": 1, + "address": "0x5e9f35e8163c44cd7e606bdd716abed32ad2f1c6", + "name": "Saitanobi", + "symbol": "SAITANOBI", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/23473/thumb/saitanobi.png?1645856764" + }, + { + "chainId": 1, + "address": "0x559ebc30b0e58a45cc9ff573f77ef1e5eb1b3e18", + "name": "Volt Protocol", + "symbol": "VOLT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25218/thumb/200x200_Volt_logo.png?1650869138" + }, + { + "chainId": 1, + "address": "0xcd6adc6b8bd396e2d53ccd7d7257b4de55be4fbe", + "name": "CFL365 Finance", + "symbol": "CFL365", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17548/thumb/cfl365.PNG?1628218865" + }, + { + "chainId": 1, + "address": "0x865bb9a28041259b4badafd37799a288aabbfc8c", + "name": "Moma Protocol", + "symbol": "MOMAT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16910/thumb/moma.PNG?1625618080" + }, + { + "chainId": 1, + "address": "0x0ada190c81b814548ddc2f6adc4a689ce7c1fe73", + "name": "yAxis", + "symbol": "YAXIS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12620/thumb/Logo.png?1608310944" + }, + { + "chainId": 1, + "address": "0x9b8d5f3402f74c7a61d9f09c32d3ca07b45c1466", + "name": "Gimmer", + "symbol": "GMR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6693/thumb/gimmer_token.jpg?1547042897" + }, + { + "chainId": 1, + "address": "0x5fce9fc9b5d62af082a59d0823a062f7529efa5a", + "name": "Shaman", + "symbol": "SHAMAN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25292/thumb/0v-V3FPz_400x400.jpg?1651139525" + }, + { + "chainId": 1, + "address": "0x7420b4b9a0110cdc71fb720908340c03f9bc03ec", + "name": "JasmyCoin", + "symbol": "JASMY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13876/thumb/JASMY200x200.jpg?1612473259" + }, + { + "chainId": 1, + "address": "0x51db5ad35c671a87207d88fc11d593ac0c8415bd", + "name": "Moeda Loyalty Points", + "symbol": "MDA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/895/thumb/moeda-loyalty-points.png?1547034720" + }, + { + "chainId": 1, + "address": "0x24e89bdf2f65326b94e36978a7edeac63623dafa", + "name": "Tiger King Coin", + "symbol": "TKING", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15605/thumb/tigerking.png?1649149229" + }, + { + "chainId": 1, + "address": "0x4eeea7b48b9c3ac8f70a9c932a8b1e8a5cb624c7", + "name": "Membrana", + "symbol": "MBN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5117/thumb/membrana_logo.png?1565238625" + }, + { + "chainId": 1, + "address": "0x3a707d56d538e85b783e8ce12b346e7fb6511f90", + "name": "Inverse Ethereum Volatility Index Token", + "symbol": "IETHV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16715/thumb/logo_-_2021-06-28T085526.083.png?1624841740" + }, + { + "chainId": 1, + "address": "0x6286a9e6f7e745a6d884561d88f94542d6715698", + "name": "Cryptomeda", + "symbol": "TECH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17983/thumb/tech.png?1654330771" + }, + { + "chainId": 1, + "address": "0x777e2ae845272a2f540ebf6a3d03734a5a8f618e", + "name": "Ryoshis Vision", + "symbol": "RYOSHI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17614/thumb/OFFICIAL_RYOSHI_LOGO-removebg-preview_2_200x200.png?1629794604" + }, + { + "chainId": 1, + "address": "0xfcdc835939a23c5db3f056470341e1947bb7a552", + "name": "Husky VC", + "symbol": "HUSKY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27353/thumb/logo_husky200.png?1663659027" + }, + { + "chainId": 1, + "address": "0x015b94ab2b0a14a96030573fbcd0f3d3d763541f", + "name": "Zunami USD", + "symbol": "UZD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27621/thumb/UZD_Logo_200x200.png?1666428507" + }, + { + "chainId": 1, + "address": "0x5dc60c4d5e75d22588fa17ffeb90a63e535efce0", + "name": "dKargo", + "symbol": "DKA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11875/thumb/bVD0g0dlmrEOPIkt943KZIBZ086eCshyY0jIQFti4zxYdOlFltU8tKa6uJlcA14HvNjX4bc7dxdMvlpoW5NFMND85oG4aiiCbFRhI6eowDfKEBY3BoSVY0IrBbA9SFGIxh_IYrkNC5uNdG-roZ0_TlGO3098now6Tbzga0p4IDqVk6lnaX3TuRC7pgnAYWZM15RD-uEIHr3O_3OoIIWP-.jpg?1595563347" + }, + { + "chainId": 1, + "address": "0xf83301c5cd1ccbb86f466a6b3c53316ed2f8465a", + "name": "COMSA", + "symbol": "CMS", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/2500/thumb/comsa-_xem_.png?1547036614" + }, + { + "chainId": 1, + "address": "0x6710c63432a2de02954fc0f851db07146a6c0312", + "name": "Smart MFG", + "symbol": "MFG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1842/thumb/Smart_MFG_Cropped_Logo.png?1621422155" + }, + { + "chainId": 1, + "address": "0xdcdc1c1cc33aa817cbdbe8f5e2390bf7cc43dc4b", + "name": "AVASTR Vault NFTX ", + "symbol": "AVASTR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17034/thumb/AVASTR.png?1626142802" + }, + { + "chainId": 1, + "address": "0x7ccfeef4f0ff48b0e0abd19bbbebae90939f180d", + "name": "StarShip Stars", + "symbol": "STARS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17533/thumb/DhtU6Z.jpg?1628130727" + }, + { + "chainId": 1, + "address": "0xccf4429db6322d5c611ee964527d42e5d685dd6a", + "name": "cWBTC", + "symbol": "CWBTC", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/10823/thumb/cwbtc.png?1584331700" + }, + { + "chainId": 1, + "address": "0xc28e931814725bbeb9e670676fabbcb694fe7df2", + "name": "Quadrant Protocol", + "symbol": "EQUAD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4462/thumb/equad.png?1547039783" + }, + { + "chainId": 1, + "address": "0xd24dff6117936b6ff97108cf26c1dd8865743d87", + "name": "MEDIUM", + "symbol": "MDM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9961/thumb/VEEFC4sG.png?1574293042" + }, + { + "chainId": 1, + "address": "0xcb056a2f3ca0b82ab69dcbd677875d68b74d6189", + "name": "The Akragas Decadrachm", + "symbol": "THEAD", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/27078/thumb/200x200.PNG?1661761303" + }, + { + "chainId": 1, + "address": "0x0ef3b2024ae079e6dbc2b37435ce30d2731f0101", + "name": "UNIFI DeFi", + "symbol": "UNIFI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12533/thumb/unifi_defi_logo.jpg?1600531278" + }, + { + "chainId": 1, + "address": "0x56a41eef4aba11292c58b39f61dabc82ed22c79b", + "name": "Space Link", + "symbol": "SPLINK", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/19609/thumb/splink.png?1635925515" + }, + { + "chainId": 1, + "address": "0x01e0e2e61f554ecaaec0cc933e739ad90f24a86d", + "name": "GTON CAPITAL", + "symbol": "GTON", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15728/thumb/GC_logo_200x200.png?1642669327" + }, + { + "chainId": 1, + "address": "0xa4e9584daa093cb1205e17ba737c3fd015748087", + "name": "FOREXCOIN", + "symbol": "FOREX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6852/thumb/forex-logo.PNG?1547043174" + }, + { + "chainId": 1, + "address": "0x706cb9e741cbfee00ad5b3f5acc8bd44d1644a74", + "name": "YFOX Finance", + "symbol": "YFOX", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/12702/thumb/Yfox.png?1601865990" + }, + { + "chainId": 1, + "address": "0xe3a46b2bc1d83c731d58cab765d3b45bce789095", + "name": "DAYSTARTER", + "symbol": "DST", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28006/thumb/daystarter_logo_200_200.png?1667148509" + }, + { + "chainId": 1, + "address": "0x51395ade06eae126f590e7b06dc8f6baf511f13f", + "name": "hiSQUIGGLE", + "symbol": "HISQUIGGLE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28127/thumb/hisquiggle.png?1667641238" + }, + { + "chainId": 1, + "address": "0x00c2999c8b2adf4abc835cc63209533973718eb1", + "name": "New World Order", + "symbol": "STATE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27387/thumb/icon.png?1663812357" + }, + { + "chainId": 1, + "address": "0xdb05ea0877a2622883941b939f0bb11d1ac7c400", + "name": "Opacity", + "symbol": "OPCT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7237/thumb/Opacity.jpg?1551843524" + }, + { + "chainId": 1, + "address": "0xf81421fc15300c5a8cca9afe12f5cbad502fa756", + "name": "Cardiocoin", + "symbol": "CRDC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25135/thumb/gQiyJrGcTRjEN-6bI22FOtHOmYF8-_MMYS_U1gIlUm1wf6QxiGnZ64tIeGNNFk9z5xPPch5FMie2grAN4fXQfcjKI9L0EQDVzDEdYDfqWl8ch4ree_q4pypGPNHeSCxnynfOOLAvd9XbKguJHEJNTLAdSKnWCKu92Kho49SplFvDBplt2ruvOz1v5QB795cnjZg4ZemfgfAB_ipJU1YE4TA3uL.jpg?1650432016" + }, + { + "chainId": 1, + "address": "0x3bb86d867a9f3addf994cdadb210fa82f0d4157a", + "name": "Ghoul", + "symbol": "GHOUL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16455/thumb/rsz-ghoul2.png?1624249816" + }, + { + "chainId": 1, + "address": "0x5ecb025e51415dba9fd272c551076357cf4069f5", + "name": "Crespo", + "symbol": "CSO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9125/thumb/crespo.png?1564547729" + }, + { + "chainId": 1, + "address": "0x76851a93977bea9264c32255b6457882035c7501", + "name": "Fat Doge", + "symbol": "FOGE", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/15497/thumb/foge.png?1621057848" + }, + { + "chainId": 1, + "address": "0x33811d4edbcaed10a685254eb5d3c4e4398520d2", + "name": "YFE Money", + "symbol": "YFE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12644/thumb/logo-round.png?1601373377" + }, + { + "chainId": 1, + "address": "0xe51b8ab09008285a0380dd2680cd9dd5e13924d3", + "name": "BallSwap", + "symbol": "BSP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14050/thumb/bsp.png?1637556507" + }, + { + "chainId": 1, + "address": "0xbf30461210b37012783957d90dc26b95ce3b6f2d", + "name": "Swivel Governance", + "symbol": "SWIV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24496/thumb/tKRKjCx.png?1647868486" + }, + { + "chainId": 1, + "address": "0x9e976f211daea0d652912ab99b0dc21a7fd728e4", + "name": "MAP Protocol", + "symbol": "MAP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10085/thumb/53819931.png?1649044945" + }, + { + "chainId": 1, + "address": "0x70da48f4b7e83c386ef983d4cef4e58c2c09d8ac", + "name": "Quras", + "symbol": "XQC", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/10112/thumb/FZFHac2z_400x400.jpg?1575964560" + }, + { + "chainId": 1, + "address": "0x4270bb238f6dd8b1c3ca01f96ca65b2647c06d3c", + "name": "Fortuna", + "symbol": "FOTA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2689/thumb/fortuna.png?1547483931" + }, + { + "chainId": 1, + "address": "0x579cea1889991f68acc35ff5c3dd0621ff29b0c9", + "name": "IQ", + "symbol": "IQ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5010/thumb/YAIS3fUh.png?1626267646" + }, + { + "chainId": 1, + "address": "0xf974b5f9ac9c6632fee8b76c61b0242ce69c839d", + "name": "ZYX", + "symbol": "ZYX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11964/thumb/zyx.png?1596454904" + }, + { + "chainId": 1, + "address": "0xe5caef4af8780e59df925470b050fb23c43ca68c", + "name": "Ferrum Network", + "symbol": "FRM", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/8251/thumb/FRM.png?1658819429" + }, + { + "chainId": 1, + "address": "0xf1f508c7c9f0d1b15a76fba564eef2d956220cf7", + "name": "Pepedex", + "symbol": "PPDEX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13022/thumb/output-onlinepngtools-1.png?1604720841" + }, + { + "chainId": 1, + "address": "0xc324a2f6b05880503444451b8b27e6f9e63287cb", + "name": "Exchange Union", + "symbol": "XUC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1052/thumb/exchange-union.png?1548125817" + }, + { + "chainId": 1, + "address": "0x3810a4ddf41e586fa0dba1463a7951b748cecfca", + "name": "Menapay", + "symbol": "MPAY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6360/thumb/Menapay_ico.png?1547042454" + }, + { + "chainId": 1, + "address": "0x9b53e429b0badd98ef7f01f03702986c516a5715", + "name": "Hybrix", + "symbol": "HY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11518/thumb/Hybrix_PNG_200x200.png?1628770703" + }, + { + "chainId": 1, + "address": "0x6d57b2e05f26c26b549231c866bdd39779e4a488", + "name": "VNX Gold", + "symbol": "VNXAU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28019/thumb/wnxgold.png?1667026518" + }, + { + "chainId": 1, + "address": "0x249ca82617ec3dfb2589c4c17ab7ec9765350a18", + "name": "Verse", + "symbol": "VERSE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28424/thumb/verselogo.png?1670461811" + }, + { + "chainId": 1, + "address": "0x5befbb272290dd5b8521d4a938f6c4757742c430", + "name": "Xfinance", + "symbol": "XFI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12449/thumb/go.png?1599904281" + }, + { + "chainId": 1, + "address": "0xfe9a29ab92522d14fc65880d817214261d8479ae", + "name": "Snowswap", + "symbol": "SNOW", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12751/thumb/uQBJL3A.png?1602237225" + }, + { + "chainId": 1, + "address": "0x15b7c0c907e4c6b9adaaaabc300c08991d6cea05", + "name": "Gelato", + "symbol": "GEL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15026/thumb/Gelato_Icon_Logo_1024x1024.png?1619491717" + }, + { + "chainId": 1, + "address": "0x5d29011d843b0b1760c43e10d66f302174bccd1a", + "name": "RickMortyDoxx", + "symbol": "RICKMORTYDOXX", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/19148/thumb/cropped-IMG_20211203_223720_101.png?1643004811" + }, + { + "chainId": 1, + "address": "0x9783b81438c24848f85848f8df31845097341771", + "name": "Dog Collar", + "symbol": "COLLAR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18324/thumb/dcLogo.png?1631532599" + }, + { + "chainId": 1, + "address": "0x34d6a0f5c2f5d0082141fe73d93b9dd00ca7ce11", + "name": "Golden", + "symbol": "GOLD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8939/thumb/4uf1Sim9_400x400.png?1563116366" + }, + { + "chainId": 1, + "address": "0xb551d08d2189ef67b4788be2c35c0743693625ca", + "name": "EAutocoin", + "symbol": "ATO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7132/thumb/ato.png?1547043631" + }, + { + "chainId": 1, + "address": "0xcdca1b81dbb543baa92c97b701396cd3ba315e5d", + "name": "Shuey Rhon Inu", + "symbol": "SHUEY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24306/thumb/shuey.jpg?1647316292" + }, + { + "chainId": 1, + "address": "0x77c6e4a580c0dce4e5c7a17d0bc077188a83a059", + "name": "Swerve fi USD", + "symbol": "SWUSD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12918/thumb/swerve.png?1603631063" + }, + { + "chainId": 1, + "address": "0xd1ba9bac957322d6e8c07a160a3a8da11a0d2867", + "name": "HUMAN Protocol", + "symbol": "HMT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16412/thumb/human_protocol.PNG?1623971316" + }, + { + "chainId": 1, + "address": "0xba75fbc4c7a553081f7a137b6e652520db444660", + "name": "MonstaVerse", + "symbol": "MONSTR", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/21887/thumb/yn3q0se.png?1640226777" + }, + { + "chainId": 1, + "address": "0xa67b8e40111a0edd30c3210b77aadb86ad234c43", + "name": "Banana Index", + "symbol": "BANDEX", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/26700/thumb/6233e7f496c72994c313a50a_cactusboy90_%282%29-p-1080.png?1659616101" + }, + { + "chainId": 1, + "address": "0x05fcc72cfb4150abae415c885f7a433ff523296f", + "name": "YOKcoin", + "symbol": "YOK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12425/thumb/YOKcoin_200x200.png?1599732314" + }, + { + "chainId": 1, + "address": "0x8888801af4d980682e47f1a9036e589479e835c5", + "name": "88mph", + "symbol": "MPH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13137/thumb/yfU-_Tcj_400x400.png?1605581509" + }, + { + "chainId": 1, + "address": "0x5c3a228510d246b78a3765c20221cbf3082b44a4", + "name": "Storiqa", + "symbol": "STQ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1929/thumb/storiqa.png?1548611108" + }, + { + "chainId": 1, + "address": "0x95b4e47025372ded4b73f9b5f0671b94a81445bc", + "name": "InfinityGaming", + "symbol": "PLAY", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/21804/thumb/ig.png?1640066214" + }, + { + "chainId": 1, + "address": "0xcc665390b03c5d324d8faf81c15ecee29a73bcb4", + "name": "Chainswap", + "symbol": "ASAP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14945/thumb/chainswap_logo.png?1619109717" + }, + { + "chainId": 1, + "address": "0xacbd826394189cf2623c6df98a18b41fc8ffc16d", + "name": "NFTify", + "symbol": "N1", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16095/thumb/n1-token-logo-circle-200x200.png?1627130530" + }, + { + "chainId": 1, + "address": "0xc77b230f31b517f1ef362e59c173c2be6540b5e8", + "name": "VIDY", + "symbol": "VIDY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5088/thumb/vidy-logo.jpg?1547040486" + }, + { + "chainId": 1, + "address": "0xaf8a215e81faea7c180ce22b72483525121813bd", + "name": "Engine", + "symbol": "EGCC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4531/thumb/2852.png?1547039827" + }, + { + "chainId": 1, + "address": "0xd6a5ab46ead26f49b03bbb1f9eb1ad5c1767974a", + "name": "Ethermon", + "symbol": "EMON", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15889/thumb/LtET0reH_400x400.jpg?1622213962" + }, + { + "chainId": 1, + "address": "0x426fc8be95573230f6e6bc4af91873f0c67b21b4", + "name": "BlackPearl", + "symbol": "BPLC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8931/thumb/EJIpComQ_400x400.png?1584653141" + }, + { + "chainId": 1, + "address": "0x2781246fe707bb15cee3e5ea354e2154a2877b16", + "name": "ELYSIA", + "symbol": "EL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10887/thumb/CeyRVXPY_400x400.jpg?1585559128" + }, + { + "chainId": 1, + "address": "0x2b645a57e82123796c3ea7d78de27c3e3ff7f016", + "name": "Meta Miner", + "symbol": "MINER", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26876/thumb/200x200.png?1660620947" + }, + { + "chainId": 1, + "address": "0xb087c2180e3134db396977065817aed91fea6ead", + "name": "Hellsing Inu", + "symbol": "HELLSING", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/19795/thumb/hellsing.png?1638182960" + }, + { + "chainId": 1, + "address": "0x4a9d711100aff9a444a3c40284f70269bb3f0487", + "name": "Chellitcoin", + "symbol": "CHLT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19192/thumb/chellit_ticker-01.png?1634632273" + }, + { + "chainId": 1, + "address": "0x2e922f84ec5bb9cedfbb1a99543b143aa43d94b6", + "name": "ThreeOh DAO", + "symbol": "3OH", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/26398/thumb/98052236.jpeg?1657770947" + }, + { + "chainId": 1, + "address": "0x2ef52ed7de8c5ce03a4ef0efbe9b7450f2d7edc9", + "name": "Revain", + "symbol": "REV", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/1107/thumb/256x256.png?1587018647" + }, + { + "chainId": 1, + "address": "0x6006fc2a849fedaba8330ce36f5133de01f96189", + "name": "Spaceswap SHAKE", + "symbol": "SHAKE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12765/thumb/shake.png?1633423725" + }, + { + "chainId": 1, + "address": "0x21cf09bc065082478dcc9ccb5fd215a978dc8d86", + "name": "Jem", + "symbol": "JEM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13044/thumb/itchiro-defi.png?1605892179" + }, + { + "chainId": 1, + "address": "0x7728cd70b3dd86210e2bd321437f448231b81733", + "name": "Envelop Niftsy ", + "symbol": "NIFTSY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19161/thumb/logo200x200.png?1643188130" + }, + { + "chainId": 1, + "address": "0x68bb81b3f67f7aab5fd1390ecb0b8e1a806f2465", + "name": "NFT Platform Index", + "symbol": "NFTP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14543/thumb/nftp-light-circular.c54a6825.png?1616935648" + }, + { + "chainId": 1, + "address": "0x34612903db071e888a4dadcaa416d3ee263a87b9", + "name": "Items", + "symbol": "ARTE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11720/thumb/Arte.png?1607332372" + }, + { + "chainId": 1, + "address": "0x06b884e60794ce02aafab13791b59a2e6a07442f", + "name": "Unbanked", + "symbol": "UNBNK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20171/thumb/logo_-_2021-11-11T115427.135.png?1636602880" + }, + { + "chainId": 1, + "address": "0x5d65d971895edc438f465c17db6992698a52318d", + "name": "Nebulas", + "symbol": "NAS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2431/thumb/193394331.png?1597976208" + }, + { + "chainId": 1, + "address": "0x98af2e926206f1eb5af46aeddd144727267d0487", + "name": "QoinIQ", + "symbol": "QIQ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17905/thumb/qiq.PNG?1629774762" + }, + { + "chainId": 1, + "address": "0x2edc01f6e8b2387e76872cbbe1b69407ec058f34", + "name": "semicon1", + "symbol": "SMC1", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27503/thumb/mvsyBzOGKm20JndbDQrD8jXwAVwVTIA87Xc1ULBqb7NcFCv0fnpN71bACOvyIbc798xCyssiXAtEmTyumW2APB_hdvz7E_wti4nFTHTSBclhMWXO5Osiilpb6haIfFFHp1VStEPZ-RiHJtIbiqzyqtnAoD7BE2flxQ1fBLYnzff8-_tQ9-olz-31m8kZQGMPvW7zDw9WFhm-xUGQUd8HJVsFo9_74cK_Ko3fb4sKLidVs0P.jpeg?1664331574" + }, + { + "chainId": 1, + "address": "0x509a38b7a1cc0dcd83aa9d06214663d9ec7c7f4a", + "name": "Blocksquare", + "symbol": "BST", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23924/thumb/XpkkqPVR_400x400.jpg?1645689021" + }, + { + "chainId": 1, + "address": "0x9adc7710e9d1b29d8a78c04d52d32532297c2ef3", + "name": "Quadrans", + "symbol": "QDT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26493/thumb/mu-N6mCY_400x400.png?1658285089" + }, + { + "chainId": 1, + "address": "0x492baa7a6450712d4bbcca01b87f029dee3ea3ec", + "name": "WAGIE", + "symbol": "WAGIE", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/28428/thumb/Screen_Shot_2022-08-12_at_12.56.08.png?1670548863" + }, + { + "chainId": 1, + "address": "0x739763a258640919981f9ba610ae65492455be53", + "name": "Node Runners", + "symbol": "NDR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13400/thumb/ndr.jpg?1608172954" + }, + { + "chainId": 1, + "address": "0xe94b97b6b43639e238c851a7e693f50033efd75c", + "name": "HaloDAO", + "symbol": "RNBW", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16754/thumb/RNBW-256x256.png?1624927932" + }, + { + "chainId": 1, + "address": "0x6b32022693210cd2cfc466b9ac0085de8fc34ea6", + "name": "Maximus DECI", + "symbol": "DECI", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/27693/thumb/Deci.png?1665222159" + }, + { + "chainId": 1, + "address": "0x7ddc52c4de30e94be3a6a0a2b259b2850f421989", + "name": "GMT", + "symbol": "GMT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15662/thumb/gmt.png?1640069038" + }, + { + "chainId": 1, + "address": "0x91af0fbb28aba7e31403cb457106ce79397fd4e6", + "name": "Aergo", + "symbol": "AERGO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4490/thumb/aergo.png?1647696770" + }, + { + "chainId": 1, + "address": "0xc4de189abf94c57f396bd4c52ab13b954febefd8", + "name": "B20", + "symbol": "B20", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13803/thumb/b20.png?1611996305" + }, + { + "chainId": 1, + "address": "0xfe5f69dfa2d4501e78078266f6d430c079098f90", + "name": "Archie Neko", + "symbol": "ARCHIE", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/28234/thumb/photo1667927837.jpeg?1668575767" + }, + { + "chainId": 1, + "address": "0x8cb24ed2e4f7e2065f4eb2be5f6b0064b1919850", + "name": "ZARP Stablecoin", + "symbol": "ZARP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27333/thumb/zarp_coin.png?1669366653" + }, + { + "chainId": 1, + "address": "0xec681f28f4561c2a9534799aa38e0d36a83cf478", + "name": "YVS Finance", + "symbol": "YVS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13471/thumb/cu0LSzE.png?1608852718" + }, + { + "chainId": 1, + "address": "0x543ff227f64aa17ea132bf9886cab5db55dcaddf", + "name": "DAOstack", + "symbol": "GEN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3479/thumb/gen.png?1547038215" + }, + { + "chainId": 1, + "address": "0x55c08ca52497e2f1534b59e2917bf524d4765257", + "name": "UwU Lend", + "symbol": "UWU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27408/thumb/uwu_logo_no-bg_1024.png?1663842922" + }, + { + "chainId": 1, + "address": "0xf55cd1e399e1cc3d95303048897a680be3313308", + "name": "Maximus TRIO", + "symbol": "TRIO", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/27684/thumb/IMG_1127.PNG?1665214637" + }, + { + "chainId": 1, + "address": "0xb113c6cf239f60d380359b762e95c13817275277", + "name": "BitMEX", + "symbol": "BMEX", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/21831/thumb/bitmex-token.jpeg?1640081706" + }, + { + "chainId": 1, + "address": "0x579e5eafabae696aad762ad36e77a16ae9f0ef91", + "name": "Apex Predator", + "symbol": "APEX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24837/thumb/apex.jpg?1649066165" + }, + { + "chainId": 1, + "address": "0x9b9087756eca997c5d595c840263001c9a26646d", + "name": "DogeFi", + "symbol": "DOGEFI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12290/thumb/DOGEFI-Logo.png?1598868716" + }, + { + "chainId": 1, + "address": "0x6bc1f3a1ae56231dbb64d3e82e070857eae86045", + "name": "Xensor", + "symbol": "XSR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9224/thumb/Xensor_Logo_%28White__200x200px%29.png?1593570861" + }, + { + "chainId": 1, + "address": "0xd101dcc414f310268c37eeb4cd376ccfa507f571", + "name": "ResearchCoin", + "symbol": "RSC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28146/thumb/RH_Logo_200x200.png?1668678529" + }, + { + "chainId": 1, + "address": "0xbbff34e47e559ef680067a6b1c980639eeb64d24", + "name": "Leverj Gluon", + "symbol": "L2", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12950/thumb/Gluon256x256.png?1604048379" + }, + { + "chainId": 1, + "address": "0x83d60e7aed59c6829fb251229061a55f35432c4d", + "name": "Infinito", + "symbol": "INFT", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/9461/thumb/5TOvk2A.png?1604885818" + }, + { + "chainId": 1, + "address": "0xed3d4e446a96dc3b181b64b75c3c70da41dc3cbe", + "name": "Vodra", + "symbol": "VDR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19338/thumb/vdr.png?1635832496" + }, + { + "chainId": 1, + "address": "0xc962ad021a69d457564e985738c719ae3f79b707", + "name": "IFX24", + "symbol": "IFX24", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10444/thumb/lpFSaoD.png?1579475634" + }, + { + "chainId": 1, + "address": "0x3166c570935a7d8554c8f4ea792ff965d2efe1f2", + "name": "Q DAO Governance v1 0", + "symbol": "QDAO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8599/thumb/QDAO_logo_white_black.png?1562131656" + }, + { + "chainId": 1, + "address": "0x0e0989b1f9b8a38983c2ba8053269ca62ec9b195", + "name": "Po et", + "symbol": "POE", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/910/thumb/poet.png?1548331583" + }, + { + "chainId": 1, + "address": "0xe6c3502997f97f9bde34cb165fbce191065e068f", + "name": "Klondike BTC", + "symbol": "KBTC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13789/thumb/klondike.jpg?1611759492" + }, + { + "chainId": 1, + "address": "0x3e1d5a855ad9d948373ae68e4fe1f094612b1322", + "name": "HyperQuant", + "symbol": "HQT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4410/thumb/hqt.png?1547039746" + }, + { + "chainId": 1, + "address": "0xaec7d1069e3a914a3eb50f0bfb1796751f2ce48a", + "name": "S4FE", + "symbol": "S4F", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7405/thumb/logo_%284%29.png?1547085640" + }, + { + "chainId": 1, + "address": "0x9f9c8ec3534c3ce16f928381372bfbfbfb9f4d24", + "name": "GraphLinq Protocol", + "symbol": "GLQ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14474/thumb/graphlinq_logo.jpg?1616397109" + }, + { + "chainId": 1, + "address": "0x0eb638648207d00b9025684d13b1cb53806debe4", + "name": "NIL", + "symbol": "NIL", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/21612/thumb/nil.PNG?1639608851" + }, + { + "chainId": 1, + "address": "0x174afe7a032b5a33a3270a9f6c30746e25708532", + "name": "Humanscape", + "symbol": "HUM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4243/thumb/Webp.net-resizeimage_%2836%29.png?1547039574" + }, + { + "chainId": 1, + "address": "0xf091cf09c51811819db705710e9634b8bf18f164", + "name": "Couchain", + "symbol": "COU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4529/thumb/couchain.png?1547039825" + }, + { + "chainId": 1, + "address": "0xf5555732b3925356964695578fefcffcd31bcbb8", + "name": "Promodio", + "symbol": "PMD", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/18423/thumb/pmd_%281%29.png?1631858128" + }, + { + "chainId": 1, + "address": "0x38a2fdc11f526ddd5a607c1f251c065f40fbf2f7", + "name": "PhoenixDAO", + "symbol": "PHNX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11523/thumb/Token_Icon.png?1618447147" + }, + { + "chainId": 1, + "address": "0xa249de6948022783765fee4850d7b85e43118fcc", + "name": "Jarvis ", + "symbol": "JAR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8774/thumb/3jmUWB3e_400x400.jpg?1561085148" + }, + { + "chainId": 1, + "address": "0x9b68bfae21df5a510931a262cecf63f41338f264", + "name": "DecentBet", + "symbol": "DBET", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1168/thumb/decent-bet.jpg?1547035195" + }, + { + "chainId": 1, + "address": "0x68e9c0d9aa450254aed2cd102503d4dff6b3c37c", + "name": "CrownSterling", + "symbol": "WCSOV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25179/thumb/9kL0liy4_400x400.jpg?1650541820" + }, + { + "chainId": 1, + "address": "0x6a6c2ada3ce053561c2fbc3ee211f23d9b8c520a", + "name": "TON", + "symbol": "TON", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12334/thumb/ton.jpg?1599128436" + }, + { + "chainId": 1, + "address": "0x8d1ce361eb68e9e05573443c407d4a3bed23b033", + "name": "PieDAO DEFI ", + "symbol": "DEFI++", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13304/thumb/piedao__.png?1607322674" + }, + { + "chainId": 1, + "address": "0x10be9a8dae441d276a5027936c3aaded2d82bc15", + "name": "UniMex Network", + "symbol": "UMX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13615/thumb/sloYxHx.jpeg?1633154340" + }, + { + "chainId": 1, + "address": "0xe81d72d14b1516e68ac3190a46c93302cc8ed60f", + "name": "Coinlancer", + "symbol": "CL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2445/thumb/coinlancer.png?1516072576" + }, + { + "chainId": 1, + "address": "0x7e9e431a0b8c4d532c745b1043c7fa29a48d4fba", + "name": "eosDAC", + "symbol": "EOSDAC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3878/thumb/2644.png?1547038931" + }, + { + "chainId": 1, + "address": "0x3106a0a076bedae847652f42ef07fd58589e001f", + "name": "Alkimi", + "symbol": "ADS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17979/thumb/Alkimi_Alternatives_PNG.png?1669458732" + }, + { + "chainId": 1, + "address": "0x2373c5dc96238a64ce4062e74000fd3dacfd3bf7", + "name": "Angel Inu", + "symbol": "ANGEL", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/21024/thumb/NMqevqZ.png?1638193979" + }, + { + "chainId": 1, + "address": "0x0e2ef8aecb3c01ad5d596f1b67134e178199984d", + "name": "LandBox", + "symbol": "LAND", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14875/thumb/jmKvZDn7_400x400.jpg?1618826129" + }, + { + "chainId": 1, + "address": "0xe35f19e4457a114a951781aaf421ec5266ef25fe", + "name": "Vidiachange", + "symbol": "VIDA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14346/thumb/vidia.png?1615504632" + }, + { + "chainId": 1, + "address": "0x6911f552842236bd9e8ea8ddbb3fb414e2c5fa9d", + "name": "Synapse Network", + "symbol": "SNP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17962/thumb/Webp-net-resizeimage_%282%29.png?1629943450" + }, + { + "chainId": 1, + "address": "0x2731d151cbdf84a8a4c6d9d0bae74012db51e428", + "name": "IFT", + "symbol": "IFT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14049/thumb/ift_200x200.jpg?1614046057" + }, + { + "chainId": 1, + "address": "0x60be1e1fe41c1370adaf5d8e66f07cf1c2df2268", + "name": "Perion", + "symbol": "PERC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23302/thumb/perion.png?1661498749" + }, + { + "chainId": 1, + "address": "0xf2ddae89449b7d26309a5d54614b1fc99c608af5", + "name": "ASTA", + "symbol": "ASTA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11123/thumb/asta_logo.png?1588734656" + }, + { + "chainId": 1, + "address": "0x25b3e27f03fd51163818b111690066e1b088f800", + "name": "Multi Farm Capital", + "symbol": "MFC", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/20694/thumb/mfclogo.png?1637564399" + }, + { + "chainId": 1, + "address": "0x78132543d8e20d2417d8a07d9ae199d458a0d581", + "name": "Luna Inu", + "symbol": "LINU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25623/thumb/output-onlinepngtools.png?1653983337" + }, + { + "chainId": 1, + "address": "0x251457b7c5d85251ca1ab384361c821330be2520", + "name": "Hati", + "symbol": "HATI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25736/thumb/hati-logo.png?1653461606" + }, + { + "chainId": 1, + "address": "0x8eef5a82e6aa222a60f009ac18c24ee12dbf4b41", + "name": "Autobahn Network", + "symbol": "TXL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12432/thumb/txl.png?1646463631" + }, + { + "chainId": 1, + "address": "0xa461258c192cb6057ad8729589b0d18b08ccace8", + "name": "Planet Inu", + "symbol": "PLANETINU", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/21025/thumb/61a411c49069ade3e2229ae2_2021-11-29_00.32_1.png?1638196668" + }, + { + "chainId": 1, + "address": "0x4eed0fa8de12d5a86517f214c2f11586ba2ed88d", + "name": "DragonBite", + "symbol": "BITE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16386/thumb/dragonbite.PNG?1623893567" + }, + { + "chainId": 1, + "address": "0x0ebb614204e47c09b6c3feb9aaecad8ee060e23e", + "name": "Cryptopay", + "symbol": "CPAY", + "decimals": 0, + "logoURI": "https://assets.coingecko.com/coins/images/2216/thumb/cryptopay.png?1547036499" + }, + { + "chainId": 1, + "address": "0xadc3f2c3d728202658930860158c726d8180a38f", + "name": "StarkMeta", + "symbol": "SMETA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25851/thumb/logo_starkmeta.png?1654150866" + }, + { + "chainId": 1, + "address": "0x24e3794605c84e580eea4972738d633e8a7127c8", + "name": "Katalyo", + "symbol": "KTLYO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13347/thumb/katalyo_logo_aqua_256.png?1607762430" + }, + { + "chainId": 1, + "address": "0x048fe49be32adfc9ed68c37d32b5ec9df17b3603", + "name": "Skrumble Network", + "symbol": "SKM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3826/thumb/skrumble-network.png?1548609513" + }, + { + "chainId": 1, + "address": "0xb97048628db6b661d4c2aa833e95dbe1a905b280", + "name": "TenX", + "symbol": "PAY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/775/thumb/TenX-Icon-CircleBlack.png?1553766360" + }, + { + "chainId": 1, + "address": "0xcdb7ecfd3403eef3882c65b761ef9b5054890a47", + "name": "Hurify", + "symbol": "HUR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2705/thumb/Hurify.jpg?1547036915" + }, + { + "chainId": 1, + "address": "0x391e86e2c002c70dee155eaceb88f7a3c38f5976", + "name": "Aave AMM UniUSDCWETH", + "symbol": "AAMMUNIUSDCWETH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17219/thumb/aAmmUniUSDCWETH.png?1626879118" + }, + { + "chainId": 1, + "address": "0x9a0587eae7ef64b2b38a10442a44cfa43edd7d2a", + "name": "Welltrado", + "symbol": "WTL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3612/thumb/welltrado.png?1548760605" + }, + { + "chainId": 1, + "address": "0xd24946147829deaa935be2ad85a3291dbf109c80", + "name": "Aave AMM USDC", + "symbol": "AAMMUSDC", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/17226/thumb/aAMMUSDC_2x.png?1626939994" + }, + { + "chainId": 1, + "address": "0x2822f6d1b2f41f93f33d937bc7d84a8dfa4f4c21", + "name": "Poseidon Network", + "symbol": "QQQ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8442/thumb/LNBLzKy2_400x400.jpg?1558562627" + }, + { + "chainId": 1, + "address": "0xb83c27805aaca5c7082eb45c868d955cf04c337f", + "name": "JungleKing TigerCoin", + "symbol": "TIGER", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26494/thumb/jungleparty.png?1658300842" + }, + { + "chainId": 1, + "address": "0x1c4481750daa5ff521a2a7490d9981ed46465dbd", + "name": "Blockmason Credit Protocol", + "symbol": "BCPT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1022/thumb/mason.jpg?1547034948" + }, + { + "chainId": 1, + "address": "0x2fdf40c484b1bd6f1c214acac737fedc8b03e5a8", + "name": "MCS", + "symbol": "MCS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18925/thumb/MCS.png?1633928135" + }, + { + "chainId": 1, + "address": "0x33e07f5055173cf8febede8b21b12d1e2b523205", + "name": "Etherland", + "symbol": "ELAND", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14432/thumb/eland.png?1616044253" + }, + { + "chainId": 1, + "address": "0xc91c885580da11ac060bdd692bdaa7ee29cfc976", + "name": "ZKasino", + "symbol": "ZKAS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26649/thumb/zkasino.jpeg?1659405528" + }, + { + "chainId": 1, + "address": "0x5d4d57cd06fa7fe99e26fdc481b468f77f05073c", + "name": "Netkoin", + "symbol": "NTK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5162/thumb/NTK.png?1606878538" + }, + { + "chainId": 1, + "address": "0x2d94aa3e47d9d5024503ca8491fce9a2fb4da198", + "name": "Bankless DAO", + "symbol": "BANK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15227/thumb/j4WEJrwU.png?1622615796" + }, + { + "chainId": 1, + "address": "0xf4f618eff5ef36cde2fca4fbd86554c62fb1382b", + "name": "Astra Guild Ventures", + "symbol": "AGV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21603/thumb/astra_guild.PNG?1639551997" + }, + { + "chainId": 1, + "address": "0x2f6ad7743924b1901a0771746152dde44c5f11de", + "name": "SCARDust", + "symbol": "SCARD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22098/thumb/SCARDust-token-icon-full-color-transparent-bg.png?1640796874" + }, + { + "chainId": 1, + "address": "0xb7fbff4ce5200215c690cc95855e5d6c5236ee9f", + "name": "CCSwap", + "symbol": "CC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15037/thumb/NEW-Logo-1.png?1622196132" + }, + { + "chainId": 1, + "address": "0x8a6aca71a218301c7081d4e96d64292d3b275ce0", + "name": "S Finance", + "symbol": "SFG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12605/thumb/Z7D8B4b.png?1605346184" + }, + { + "chainId": 1, + "address": "0x2008e3057bd734e10ad13c9eae45ff132abc1722", + "name": "Zebi", + "symbol": "ZCO", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/2756/thumb/zebi.png?1548761131" + }, + { + "chainId": 1, + "address": "0xa361718326c15715591c299427c62086f69923d9", + "name": "Aave BUSD", + "symbol": "ABUSD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14245/thumb/aBUSD.346a65d7_-_Copy.png?1615528703" + }, + { + "chainId": 1, + "address": "0xa888d9616c2222788fa19f05f77221a290eef704", + "name": "Daruma", + "symbol": "DARUMA", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/27357/thumb/CGlogo.png?1663661942" + }, + { + "chainId": 1, + "address": "0x528b3e98c63ce21c6f680b713918e0f89dfae555", + "name": "DeepSpace DXO", + "symbol": "DXO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18068/thumb/dxo.png?1635638762" + }, + { + "chainId": 1, + "address": "0x8f12dfc7981de79a8a34070a732471f2d335eece", + "name": "Crypto Excellence", + "symbol": "CE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14809/thumb/New_logo_CE.jpg?1643879310" + }, + { + "chainId": 1, + "address": "0xc631be100f6cf9a7012c23de5a6ccb990eafc133", + "name": "Banana Task Force Ape", + "symbol": "BTFA", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/25032/thumb/ZZpipp8e_400x400.jpg?1649851881" + }, + { + "chainId": 1, + "address": "0x53263d9ef74db583b15fbc6d5d4e8b83833fa134", + "name": "LEAP Token", + "symbol": "LEAP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27258/thumb/LEAPtoken_LOGO.png?1663053803" + }, + { + "chainId": 1, + "address": "0xe632e1ea781df32c60ab11052958744cbfbc439a", + "name": "BAKC Vault NFTX ", + "symbol": "BAKC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17052/thumb/BYAC.png?1626149096" + }, + { + "chainId": 1, + "address": "0xdf49c9f599a0a9049d97cff34d0c30e468987389", + "name": "SaTT", + "symbol": "SATT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4070/thumb/r3s9XKk.png?1623046839" + }, + { + "chainId": 1, + "address": "0x27b5739e22ad9033bcbf192059122d163b60349d", + "name": "Staked Yearn CRV Vault", + "symbol": "ST-YCRV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27623/thumb/styearncrv_32.png?1664885292" + }, + { + "chainId": 1, + "address": "0xceb286c9604c542d3cc08b41aa6c9675b078a832", + "name": "Vortex DeFi", + "symbol": "VTX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14120/thumb/vortex_defi.png?1614514332" + }, + { + "chainId": 1, + "address": "0x60bb16c4a931b1a0b8a7d945c651dd90f41d42cf", + "name": "Finance Blocks", + "symbol": "FBX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24117/thumb/financeblocksshadow.png?1646380305" + }, + { + "chainId": 1, + "address": "0x3d371413dd5489f3a04c07c0c2ce369c20986ceb", + "name": "YOUcash", + "symbol": "YOUC", + "decimals": 10, + "logoURI": "https://assets.coingecko.com/coins/images/11152/thumb/round-400x400.png?1589162715" + }, + { + "chainId": 1, + "address": "0x8275ebf521dc217aa79c88132017a5bcef001dd9", + "name": "Jewel", + "symbol": "JWL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6996/thumb/jewelpay_token.jpg?1547043400" + }, + { + "chainId": 1, + "address": "0xabea7663c472648d674bd3403d94c858dfeef728", + "name": "PUDGY Vault NFTX ", + "symbol": "PUDGY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18330/thumb/pudgy.png?1631605038" + }, + { + "chainId": 1, + "address": "0x333a4823466879eef910a04d473505da62142069", + "name": "Nation3", + "symbol": "NATION", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25106/thumb/Orb_gradient.png?1650321118" + }, + { + "chainId": 1, + "address": "0xb1f66997a5760428d3a87d68b90bfe0ae64121cc", + "name": "LuaSwap", + "symbol": "LUA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12627/thumb/Screenshot_2020-09-28_at_6.24.59_PM.jpg?1601288721" + }, + { + "chainId": 1, + "address": "0x3af33bef05c2dcb3c7288b77fe1c8d2aeba4d789", + "name": "Kromatika", + "symbol": "KROM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20541/thumb/KROM_Transparent.png?1641398421" + }, + { + "chainId": 1, + "address": "0x09f098b155d561fc9f7bccc97038b7e3d20baf74", + "name": "ZooDAO", + "symbol": "ZOO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24305/thumb/Zt2BM_8D_400x400.jpg?1647305115" + }, + { + "chainId": 1, + "address": "0x813b428af3920226e059b68a62e4c04933d4ea7a", + "name": "Decentralized Asset Trading Platform", + "symbol": "DATP", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/6565/thumb/Decentralized_Asset_Trading_Platform.jpg?1547042776" + }, + { + "chainId": 1, + "address": "0x7e6c38d007740931e4b419bf15a68c79a0fb0c66", + "name": "Unicly Doki Doki Collection", + "symbol": "UDOKI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14900/thumb/uDOKI.jpg?1618935840" + }, + { + "chainId": 1, + "address": "0x3ef389f264e07fff3106a3926f2a166d1393086f", + "name": "Sator", + "symbol": "SAO", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/19410/thumb/sator-logo-CMC.png?1635211626" + }, + { + "chainId": 1, + "address": "0xef8ba8cba86f81b3108f60186fce9c81b5096d5c", + "name": "YFII Gold", + "symbol": "YFIIG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12587/thumb/yfiigold_logo.png?1600937694" + }, + { + "chainId": 1, + "address": "0x5fa2e9ba5757504b3d6e8f6da03cc40d4ce19499", + "name": "NFT Tech", + "symbol": "NFTT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19297/thumb/nft_tech.PNG?1634916467" + }, + { + "chainId": 1, + "address": "0x5046e860ff274fb8c66106b0ffb8155849fb0787", + "name": "JavaScript", + "symbol": "JS", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/1061/thumb/js.png?1511578998" + }, + { + "chainId": 1, + "address": "0x9efdfc77017cb9b878300ecdca21fab0529a22a0", + "name": "Akitsuki", + "symbol": "AKI", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/27746/thumb/akitsuinu-200.png?1665644986" + }, + { + "chainId": 1, + "address": "0x681ecc5a0bfd18c308a1138ff607f818bac5e417", + "name": "Luckstar", + "symbol": "LST", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7804/thumb/49211002_377935006115216_8098246624284770304_n.png?1550735229" + }, + { + "chainId": 1, + "address": "0x513c3200f227ebb62e3b3d00b7a83779643a71cf", + "name": "Uplift", + "symbol": "LIFT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20666/thumb/logo-200x200.png?1657675050" + }, + { + "chainId": 1, + "address": "0xceb53519a2b891d33b36e3826962d2a48f878e45", + "name": "YellowHeart Protocol", + "symbol": "HRTS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25304/thumb/HRTS.png?1652087596" + }, + { + "chainId": 1, + "address": "0x47da5456bc2e1ce391b645ce80f2e97192e4976a", + "name": "PL Gnet", + "symbol": "PLUG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15824/thumb/PLUG_token.png?1622007572" + }, + { + "chainId": 1, + "address": "0xab846fb6c81370327e784ae7cbb6d6a6af6ff4bf", + "name": "Paladin", + "symbol": "PAL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24558/thumb/Circle-Logo.png?1648180728" + }, + { + "chainId": 1, + "address": "0x96eb50804d0ef2790f2e1a33670feff6040cf89d", + "name": "Space Xmitter", + "symbol": "SX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28335/thumb/X200.png?1669680704" + }, + { + "chainId": 1, + "address": "0xaffcdd96531bcd66faed95fc61e443d08f79efef", + "name": "Perth Mint Gold Token", + "symbol": "PMGT", + "decimals": 5, + "logoURI": "https://assets.coingecko.com/coins/images/10730/thumb/pmgt_logo_256x256.png?1582668331" + }, + { + "chainId": 1, + "address": "0x668dbf100635f593a3847c0bdaf21f0a09380188", + "name": "BNSD Finance", + "symbol": "BNSD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12368/thumb/bnsd.png?1599358388" + }, + { + "chainId": 1, + "address": "0xe0a189c975e4928222978a74517442239a0b86ff", + "name": "Keys", + "symbol": "KEYS", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/20604/thumb/200x200_%2843%29.png?1637289427" + }, + { + "chainId": 1, + "address": "0xb67718b98d52318240c52e71a898335da4a28c42", + "name": "Innovative Bioresearch Coin", + "symbol": "INNBC", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/4043/thumb/INNBC.png?1582800857" + }, + { + "chainId": 1, + "address": "0x64d91f12ece7362f91a6f8e7940cd55f05060b92", + "name": "ASH", + "symbol": "ASH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15714/thumb/omnPqaTY.png?1622820503" + }, + { + "chainId": 1, + "address": "0x6100dd79fcaa88420750dcee3f735d168abcb771", + "name": "Ethereans", + "symbol": "OS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19592/thumb/newOS.png?1635474948" + }, + { + "chainId": 1, + "address": "0xee4458e052b533b1aabd493b5f8c4d85d7b263dc", + "name": "Blockpass", + "symbol": "PASS", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/5462/thumb/cQl0gX0.png?1604815859" + }, + { + "chainId": 1, + "address": "0xfa5b75a9e13df9775cf5b996a049d9cc07c15731", + "name": "28VCK", + "symbol": "VCK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20063/thumb/9435.png?1636446186" + }, + { + "chainId": 1, + "address": "0xd37ee7e4f452c6638c96536e68090de8cbcdb583", + "name": "Aave GUSD", + "symbol": "AGUSD", + "decimals": 2, + "logoURI": "https://assets.coingecko.com/coins/images/17246/thumb/aGUSD_2x.png?1626942603" + }, + { + "chainId": 1, + "address": "0xb439b8731ee047799019ef0b745a51d256b116af", + "name": "BullionFX", + "symbol": "BULL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19251/thumb/237813872_101246862292596_7969491648103245595_n.png?1634797631" + }, + { + "chainId": 1, + "address": "0x0107c4aaa31940ef88760acb1f32424ca8d8bd80", + "name": "Authencity", + "symbol": "AUTH", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/26960/thumb/1.png?1661062419" + }, + { + "chainId": 1, + "address": "0x86e44543164d9b97b14ef7f6f3ab7ba670cab346", + "name": "QUINADS", + "symbol": "QUIN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7041/thumb/quinads-logo.png?1547043484" + }, + { + "chainId": 1, + "address": "0x6c16119b20fa52600230f074b349da3cb861a7e3", + "name": "Alkemi Network DAO", + "symbol": "ALK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18391/thumb/alkemi-logo-icon-256x256.png?1631760166" + }, + { + "chainId": 1, + "address": "0x2d64750ec85f6ec442e3093d74c7b1b0a133be6a", + "name": "Point Coin", + "symbol": "POINT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27295/thumb/point.png?1663150205" + }, + { + "chainId": 1, + "address": "0x1fc5ef0337aea85c5f9198853a6e3a579a7a6987", + "name": "ReapChain", + "symbol": "REAP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13109/thumb/REAP.jpg?1605259422" + }, + { + "chainId": 1, + "address": "0x0142c3b2fc51819b5af5dfc4aa52df9722790851", + "name": "Paycent", + "symbol": "PYN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2008/thumb/paycentos-logo-maroon.png?1547036284" + }, + { + "chainId": 1, + "address": "0x06a01a4d579479dd5d884ebf61a31727a3d8d442", + "name": "Skey Network", + "symbol": "SKEY", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/13425/thumb/SKEY_Network_logo_black.png?1633421778" + }, + { + "chainId": 1, + "address": "0xcfaf8edcea94ebaa080dc4983c3f9be5701d6613", + "name": "Exponential Capital", + "symbol": "EXPO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23409/thumb/expo.png?1645856094" + }, + { + "chainId": 1, + "address": "0x15c9dd08fb16331b9749a8d7d16bcd71c985f190", + "name": "CC", + "symbol": "CC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11593/thumb/CC_logo_200.png?1591599112" + }, + { + "chainId": 1, + "address": "0x884ddbb5dc6c2cef77d3e74c6ccca315797d655b", + "name": "Carnomaly", + "symbol": "CARR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14403/thumb/tcjOTKE3_400x400.png?1615895296" + }, + { + "chainId": 1, + "address": "0x0c3ef32f802967db75b9d49fe1e76620151ccb81", + "name": "Whole Network", + "symbol": "NODE", + "decimals": 5, + "logoURI": "https://assets.coingecko.com/coins/images/9522/thumb/61410314_394870017826322_8137973916426567680_n.png?1568604555" + }, + { + "chainId": 1, + "address": "0xcd74cf66c43e45abd5703f3642f73d0675d6aff7", + "name": "Erugo World Coin", + "symbol": "EWC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21652/thumb/Swhwfr3G_400x400.jpg?1639650872" + }, + { + "chainId": 1, + "address": "0x25e1474170c4c0aa64fa98123bdc8db49d7802fa", + "name": "Bidao", + "symbol": "BID", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12596/thumb/bidao.png?1600996485" + }, + { + "chainId": 1, + "address": "0x7e80e4d7d5725499791cf8b17a4586f1f0672a0c", + "name": "ZOGI", + "symbol": "ZOGI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28446/thumb/ZOGI_Token_Logo.png?1670659477" + }, + { + "chainId": 1, + "address": "0x03b155af3f4459193a276395dd76e357bb472da1", + "name": "Swace", + "symbol": "SWACE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3727/thumb/swace-symbol.png?1564553792" + }, + { + "chainId": 1, + "address": "0x9af15d7b8776fa296019979e70a5be53c714a7ec", + "name": "Evolution Finance", + "symbol": "EVN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13932/thumb/Frame_63_2.png?1612936435" + }, + { + "chainId": 1, + "address": "0x905e337c6c8645263d3521205aa37bf4d034e745", + "name": "Doc com", + "symbol": "MTC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4177/thumb/2711.png?1650864171" + }, + { + "chainId": 1, + "address": "0xc314b0e758d5ff74f63e307a86ebfe183c95767b", + "name": "Adappter", + "symbol": "ADP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14203/thumb/logo_on.png?1614909616" + }, + { + "chainId": 1, + "address": "0x8e1b448ec7adfc7fa35fc2e885678bd323176e34", + "name": "Egretia", + "symbol": "EGT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3614/thumb/egretia.png?1547224764" + }, + { + "chainId": 1, + "address": "0xd059c8a4c7f53c4352d933b059349ba492294ac9", + "name": "Apple Protocol", + "symbol": "AAPL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13208/thumb/aapl.png?1606200126" + }, + { + "chainId": 1, + "address": "0x9d62526f5ce701950c30f2caca70edf70f9fbf0f", + "name": "Blocktanium", + "symbol": "BKT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16650/thumb/bkt.png?1624592883" + }, + { + "chainId": 1, + "address": "0xfc05987bd2be489accf0f509e44b0145d68240f7", + "name": "Essentia", + "symbol": "ESS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2483/thumb/Essentia-token.jpg?1547036604" + }, + { + "chainId": 1, + "address": "0x3700adfd26d5bc062cb8b8a77e68fbd43f58ecab", + "name": "hiDOODLES", + "symbol": "HIDOODLES", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27427/thumb/hidoodles.png?1663918652" + }, + { + "chainId": 1, + "address": "0xb753428af26e81097e7fd17f40c88aaa3e04902c", + "name": "saffron finance", + "symbol": "SFI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13117/thumb/sfi_red_250px.png?1606020144" + }, + { + "chainId": 1, + "address": "0xca1207647ff814039530d7d35df0e1dd2e91fa84", + "name": "dHEDGE DAO", + "symbol": "DHT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12508/thumb/dht.png?1600752201" + }, + { + "chainId": 1, + "address": "0x0b44547be0a0df5dcd5327de8ea73680517c5a54", + "name": "DATACHAIN FOUNDATION", + "symbol": "DC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24783/thumb/dc.png?1648903780" + }, + { + "chainId": 1, + "address": "0x71fc860f7d3a592a4a98740e39db31d25db65ae8", + "name": "Aave USDT v1", + "symbol": "AUSDT", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/11725/thumb/aUSDT.png?1593082796" + }, + { + "chainId": 1, + "address": "0x7777777777697cfeecf846a76326da79cc606517", + "name": "xSigma", + "symbol": "SIG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14090/thumb/logo_128.png?1619775781" + }, + { + "chainId": 1, + "address": "0x0ec72cd6690db40b16be166858299f19d4f8e5b0", + "name": "Teh Golden One", + "symbol": "GOLD1", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/27290/thumb/teh_golden_one_200x200.png?1663147215" + }, + { + "chainId": 1, + "address": "0xd0d3ebcad6a20ce69bc3bc0e1ec964075425e533", + "name": "Ethereum Stake", + "symbol": "ETHYS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13328/thumb/eths_logo.png?1607494708" + }, + { + "chainId": 1, + "address": "0x8e57c27761ebbd381b0f9d09bb92ceb51a358abb", + "name": "extraDNA", + "symbol": "XDNA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12667/thumb/Logo_coin_black.png?1601463830" + }, + { + "chainId": 1, + "address": "0x9280abf1af455d6228def9c93b5e6d85f3f1ecc8", + "name": "Film Coin", + "symbol": "FLIKS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25117/thumb/Filmcoin_icon_32x32.png?1650349948" + }, + { + "chainId": 1, + "address": "0x686c77609afe6a2fac50421888530288b441fbd6", + "name": "Capital Aggregator", + "symbol": "CAT+", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24794/thumb/cat_.png?1648977982" + }, + { + "chainId": 1, + "address": "0x20d4db1946859e2adb0e5acc2eac58047ad41395", + "name": "Moon DAO", + "symbol": "MOONEY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22905/thumb/cVWTHdA.png?1645690722" + }, + { + "chainId": 1, + "address": "0x0000000000b3f879cb30fe243b4dfee438691c04", + "name": "GasToken", + "symbol": "GST2", + "decimals": 2, + "logoURI": "https://assets.coingecko.com/coins/images/10779/thumb/gas.png?1583466756" + }, + { + "chainId": 1, + "address": "0x3543638ed4a9006e4840b105944271bcea15605d", + "name": "U Network", + "symbol": "UUU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3877/thumb/2645.png?1547038930" + }, + { + "chainId": 1, + "address": "0x7ca62545a380e7d71f8f5cfa14b9211002075930", + "name": "GivingToServices SVS", + "symbol": "SVS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16436/thumb/9UbufKC.png?1655180835" + }, + { + "chainId": 1, + "address": "0xe75ad3aab14e4b0df8c5da4286608dabb21bd864", + "name": "Double A Chain", + "symbol": "AAC", + "decimals": 5, + "logoURI": "https://assets.coingecko.com/coins/images/2577/thumb/acute-angle-cloud.png?1547036708" + }, + { + "chainId": 1, + "address": "0xa96f31f1c187c28980176c3a27ba7069f48abde4", + "name": "Ethereum Gold Project", + "symbol": "ETGP", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/7337/thumb/llxg4bqE_400x400.jpg?1547044001" + }, + { + "chainId": 1, + "address": "0xcc802c45b55581713cecd1eb17be9ab7fccb0844", + "name": "SBU Honey", + "symbol": "BHNY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26079/thumb/honey.png?1655694712" + }, + { + "chainId": 1, + "address": "0xfd020998a1bb316dfe7b136fe59ae4b365d79978", + "name": "Golden Goal", + "symbol": "GDG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26345/thumb/3kmKPRHZ_400x400.jpeg?1657586811" + }, + { + "chainId": 1, + "address": "0xa06bc25b5805d5f8d82847d191cb4af5a3e873e0", + "name": "Aave LINK", + "symbol": "ALINK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14315/thumb/aLINK.412c6589.png?1615527827" + }, + { + "chainId": 1, + "address": "0xbdcfbf5c4d91abc0bc9709c7286d00063c0e6f22", + "name": "PeerGuess", + "symbol": "GUESS", + "decimals": 2, + "logoURI": "https://assets.coingecko.com/coins/images/1743/thumb/guess.png?1547036022" + }, + { + "chainId": 1, + "address": "0x4ba6ddd7b89ed838fed25d208d4f644106e34279", + "name": "Vether", + "symbol": "VETH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11375/thumb/vether-symbol-coingecko.png?1622341592" + }, + { + "chainId": 1, + "address": "0xf3db5fa2c66b7af3eb0c0b782510816cbe4813b8", + "name": "Everex", + "symbol": "EVX", + "decimals": 4, + "logoURI": "https://assets.coingecko.com/coins/images/997/thumb/everex.png?1548125695" + }, + { + "chainId": 1, + "address": "0xc813ea5e3b48bebeedb796ab42a30c5599b01740", + "name": "Autonio", + "symbol": "NIOX", + "decimals": 4, + "logoURI": "https://assets.coingecko.com/coins/images/1122/thumb/NewLogo.png?1597298450" + }, + { + "chainId": 1, + "address": "0x539efe69bcdd21a83efd9122571a64cc25e0282b", + "name": "Blue Protocol", + "symbol": "BLUE", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/1036/thumb/blue-protocol.jpg?1547034969" + }, + { + "chainId": 1, + "address": "0x1f4cb968b76931c494ff92ed80ccb169ad641cb1", + "name": "Structure Finance", + "symbol": "STF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18409/thumb/v4RAXKdq_400x400_%281%29.jpg?1631797904" + }, + { + "chainId": 1, + "address": "0xf921ae2dac5fa128dc0f6168bf153ea0943d2d43", + "name": "Fire Protocol", + "symbol": "FIRE", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/13495/thumb/fire.jpg?1609165121" + }, + { + "chainId": 1, + "address": "0x970cf867ca0530a989f222be01fdd67c1ab5b2bf", + "name": "Basan", + "symbol": "BASAN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27988/thumb/BigBasanLogo_%281%29.png?1666864518" + }, + { + "chainId": 1, + "address": "0x9f7229af0c4b9740e207ea283b9094983f78ba04", + "name": "Tadpole", + "symbol": "TAD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13134/thumb/9DmF_cs3_400x400.jpg?1605574755" + }, + { + "chainId": 1, + "address": "0x539f3615c1dbafa0d008d87504667458acbd16fa", + "name": "Fera", + "symbol": "FERA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12143/thumb/IMG_20200908_085545_557.jpg?1599563732" + }, + { + "chainId": 1, + "address": "0x8cb924583681cbfe487a62140a994a49f833c244", + "name": "SWAPP Protocol", + "symbol": "SWAPP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16216/thumb/swapp.png?1634259998" + }, + { + "chainId": 1, + "address": "0x035df12e0f3ac6671126525f1015e47d79dfeddf", + "name": "0xMonero", + "symbol": "0XMR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11035/thumb/0xmnr.PNG?1587357680" + }, + { + "chainId": 1, + "address": "0xcdeee767bed58c5325f68500115d4b722b3724ee", + "name": "Carbon", + "symbol": "CRBN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13262/thumb/carbon.png?1662693418" + }, + { + "chainId": 1, + "address": "0x0e5c8c387c5eba2ecbc137ad012aed5fe729e251", + "name": "Rangers Protocol", + "symbol": "RPG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18791/thumb/tO8MlqiM_400x400.png?1633421196" + }, + { + "chainId": 1, + "address": "0x083d41d6dd21ee938f0c055ca4fb12268df0efac", + "name": "GogolCoin", + "symbol": "GOL", + "decimals": 4, + "logoURI": "https://assets.coingecko.com/coins/images/14824/thumb/GOL.png?1618559300" + }, + { + "chainId": 1, + "address": "0x80ce3027a70e0a928d9268994e9b85d03bd4cdcf", + "name": "Lokr", + "symbol": "LKR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14692/thumb/lokr.png?1648886932" + }, + { + "chainId": 1, + "address": "0xe5a733681bbe6cd8c764bb8078ef8e13a576dd78", + "name": "Devour", + "symbol": "DPAY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27191/thumb/dpay.png?1665907874" + }, + { + "chainId": 1, + "address": "0xab37e1358b639fd877f015027bb62d3ddaa7557e", + "name": "Lien", + "symbol": "LIEN", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/12224/thumb/Lien.png?1598262819" + }, + { + "chainId": 1, + "address": "0xe516d78d784c77d479977be58905b3f2b1111126", + "name": "Bitspawn", + "symbol": "SPWN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16513/thumb/token_logo.png?1631603192" + }, + { + "chainId": 1, + "address": "0xdc47f2ba852669b178699449e50682d6ceaf8c07", + "name": "Ston", + "symbol": "STON", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13001/thumb/ston-v2-200x200.png?1604284194" + }, + { + "chainId": 1, + "address": "0x1ccaa0f2a7210d76e1fdec740d5f323e2e1b1672", + "name": "Faceter", + "symbol": "FACE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4383/thumb/faceter-logo.png?1547039727" + }, + { + "chainId": 1, + "address": "0xee1ae38be4ce0074c4a4a8dc821cc784778f378c", + "name": "VYNK Chain", + "symbol": "VYNC", + "decimals": 4, + "logoURI": "https://assets.coingecko.com/coins/images/17743/thumb/vynk_chain.PNG?1629150126" + }, + { + "chainId": 1, + "address": "0x514cdb9cd8a2fb2bdcf7a3b8ddd098caf466e548", + "name": "RedPanda Earth", + "symbol": "REDPANDA", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/15736/thumb/N-52GutZ_400x400.jpg?1621684353" + }, + { + "chainId": 1, + "address": "0x0aacfbec6a24756c20d41914f2caba817c0d8521", + "name": "YAM", + "symbol": "YAM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12530/thumb/YAM-icon.png?1600495536" + }, + { + "chainId": 1, + "address": "0xf720e38f678b29b243f7d53b56acbf5de98f2385", + "name": "Upfire", + "symbol": "UPR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20562/thumb/UPR256.png?1637214757" + }, + { + "chainId": 1, + "address": "0x7a3c45f34ea5df6fe5f6af710ec8a04d388a71d1", + "name": "Pando", + "symbol": "PANDO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14150/thumb/pando_logo.png?1614667045" + }, + { + "chainId": 1, + "address": "0x9cf98eb8a8b28c83e8612046cf55701ce3eb0063", + "name": "Unreal Finance", + "symbol": "UGT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17943/thumb/11292.png?1629883358" + }, + { + "chainId": 1, + "address": "0x66186008c1050627f979d464eabb258860563dbe", + "name": "MediShares", + "symbol": "MDS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1343/thumb/medishares.png?1547978625" + }, + { + "chainId": 1, + "address": "0xaa602de53347579f86b996d2add74bb6f79462b2", + "name": "Zipmex", + "symbol": "ZMT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13866/thumb/ZMT_Token.png?1637241562" + }, + { + "chainId": 1, + "address": "0x4fbb350052bca5417566f188eb2ebce5b19bc964", + "name": "RigoBlock", + "symbol": "GRG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1532/thumb/Symbol-RigoblockRGB.png?1547035682" + }, + { + "chainId": 1, + "address": "0x310c8f00b9de3c31ab95ea68feb6c877538f7947", + "name": "Undead Blocks", + "symbol": "UNDEAD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25382/thumb/AB0Uemhlw6jR.png?1651488079" + }, + { + "chainId": 1, + "address": "0x6a969d379700b2e5ea4e684d273d63c1c050ba49", + "name": "Pacific", + "symbol": "PAF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20915/thumb/paf.png?1637922989" + }, + { + "chainId": 1, + "address": "0xd83ae04c9ed29d6d3e6bf720c71bc7beb424393e", + "name": "InsureDAO", + "symbol": "INSURE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23913/thumb/InsureDAO_-_Final_Logo_%28solo%29.png?1645682885" + }, + { + "chainId": 1, + "address": "0x0173661769325565d4f011b2e5cda688689cc87c", + "name": "Quantland", + "symbol": "QLT", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/24536/thumb/8jYfKBTk_400x400.jpg?1648051247" + }, + { + "chainId": 1, + "address": "0xbbd900e05b4af2124390d206f70bc4e583b1be85", + "name": "MintySwap", + "symbol": "MINTYS", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/17975/thumb/Minty-logo-200x200.png?1629966728" + }, + { + "chainId": 1, + "address": "0xac6df26a590f08dcc95d5a4705ae8abbc88509ef", + "name": "Aave ENJ", + "symbol": "AENJ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14251/thumb/aENJ.ed76293b.png?1615528574" + }, + { + "chainId": 1, + "address": "0xd945d2031b4c63c0e363304fb771f709b502dc0a", + "name": "BountyMarketCap", + "symbol": "BMC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13472/thumb/bmc-logo-200.png?1608852915" + }, + { + "chainId": 1, + "address": "0x39d30828a163713d91c4eadbba2c497a9139ec5c", + "name": "Happy Birthday Coin", + "symbol": "HBDC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12814/thumb/%EC%A7%84%ED%92%88.png?1630840854" + }, + { + "chainId": 1, + "address": "0xbe428c3867f05dea2a89fc76a102b544eac7f772", + "name": "CyberVein", + "symbol": "CVT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3886/thumb/CyberVein_LOGO.png?1616062326" + }, + { + "chainId": 1, + "address": "0x66761fa41377003622aee3c7675fc7b5c1c2fac5", + "name": "Clearpool", + "symbol": "CPOOL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19252/thumb/photo_2022-08-31_12.45.02.jpeg?1662105063" + }, + { + "chainId": 1, + "address": "0x99c6e435ec259a7e8d65e1955c9423db624ba54c", + "name": "Finminity", + "symbol": "FMT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14696/thumb/finminity.png?1617834914" + }, + { + "chainId": 1, + "address": "0x6765fdd028be3d7874bc2bb3d7d5ca01c1bf14b2", + "name": "Talaria Inu", + "symbol": "TALI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21849/thumb/200_%2815%29.png?1640137716" + }, + { + "chainId": 1, + "address": "0x6f4ee03ca6c942c9397d2ba5f8f83ea58f918f47", + "name": "CashBackPro", + "symbol": "CBP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12893/thumb/logo_%2818%29.png?1603766120" + }, + { + "chainId": 1, + "address": "0x4be10da47a07716af28ad199fbe020501bddd7af", + "name": "XT com", + "symbol": "XT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8391/thumb/XT_token.jpg?1557979399" + }, + { + "chainId": 1, + "address": "0x3c4008eca800ec1283e4cf500e68d06bfabc00a8", + "name": "HistoryDAO", + "symbol": "HAO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27318/thumb/5961657012978_.pic.jpg?1663316216" + }, + { + "chainId": 1, + "address": "0xd49efa7bc0d339d74f487959c573d518ba3f8437", + "name": "Coliquidity", + "symbol": "COLI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15813/thumb/sign_dark_200x200.png?1646641417" + }, + { + "chainId": 1, + "address": "0x1b980e05943de3db3a459c72325338d327b6f5a9", + "name": "Bitgear", + "symbol": "GEAR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12127/thumb/bitgear_logo.png?1597377982" + }, + { + "chainId": 1, + "address": "0xb1f233835de2440620332267ba729bfe74fa2cfd", + "name": "SoloxCoin", + "symbol": "SL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25704/thumb/22223333333.png?1653460112" + }, + { + "chainId": 1, + "address": "0x9d5963ba32e877871dff3e2e697283dc64066271", + "name": "Edcoin", + "symbol": "EDC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13872/thumb/EDCOIN-1.png?1612447671" + }, + { + "chainId": 1, + "address": "0x630d98424efe0ea27fb1b3ab7741907dffeaad78", + "name": "PEAKDEFI", + "symbol": "PEAK", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/9626/thumb/PEAKDEFI_Logo_250x250.png?1603094772" + }, + { + "chainId": 1, + "address": "0x3391bc034f2935ef0e1e41619445f998b2680d35", + "name": "IdleUSDC Risk Adjusted ", + "symbol": "IDLEUSDCSAFE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11930/thumb/idleusdc-safe.png?1596263257" + }, + { + "chainId": 1, + "address": "0x1e4e46b7bf03ece908c88ff7cc4975560010893a", + "name": "Internet of Energy Network", + "symbol": "IOEN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19095/thumb/12799.png?1634422996" + }, + { + "chainId": 1, + "address": "0x963035453633f6f7433032c958f82eb3043d8cd2", + "name": "USD Freedom", + "symbol": "USDF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26920/thumb/USDF_200x200.png?1660815930" + }, + { + "chainId": 1, + "address": "0xa803778ab953d3ffe4fbd20cfa0042ecefe8319d", + "name": "Totem", + "symbol": "CTZN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21558/thumb/ctzn.png?1642930817" + }, + { + "chainId": 1, + "address": "0xd31a59c85ae9d8edefec411d448f90841571b89c", + "name": "SOL Wormhole ", + "symbol": "SOL", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/22876/thumb/SOL_wh_small.png?1644224316" + }, + { + "chainId": 1, + "address": "0xdfe691f37b6264a90ff507eb359c45d55037951c", + "name": "Karma DAO", + "symbol": "KARMA", + "decimals": 4, + "logoURI": "https://assets.coingecko.com/coins/images/11884/thumb/Karma.png?1597042574" + }, + { + "chainId": 1, + "address": "0x9590d8c06ba451bbad0893f2ef0d2a8b5acc67d3", + "name": "SCORCHER", + "symbol": "SCOR", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/26683/thumb/SCORCHER_LOGO_-_200.png?1659594039" + }, + { + "chainId": 1, + "address": "0xc9bc48c72154ef3e5425641a3c747242112a46af", + "name": "Aave RAI", + "symbol": "ARAI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17245/thumb/aRAI_2x.png?1626942652" + }, + { + "chainId": 1, + "address": "0x1afb69dbc9f54d08dab1bd3436f8da1af819e647", + "name": "Melos Studio", + "symbol": "MELOS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24411/thumb/18551.png?1647558428" + }, + { + "chainId": 1, + "address": "0x26cbc7008cd879f4b63b69a915378f2d9b17bbf0", + "name": "Natural Farm Union Protocol", + "symbol": "NFUP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21052/thumb/logo_-_2021-11-30T163428.088.png?1638261294" + }, + { + "chainId": 1, + "address": "0x95a1796437bad6502d1c1cce165cd76e522409a9", + "name": "Official Crypto Cowboy", + "symbol": "OCCT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20302/thumb/OCCT-SPROCCT_200x200.PNG?1644480861" + }, + { + "chainId": 1, + "address": "0xc4d5545392f5fc57eba3af8981815669bb7e2a48", + "name": "HEdpAY", + "symbol": "HDP", + "decimals": 4, + "logoURI": "https://assets.coingecko.com/coins/images/7496/thumb/icon_hedpay.png?1555485710" + }, + { + "chainId": 1, + "address": "0x939a7a577d93ad29b64c1595b1284ce660a479b9", + "name": "Jejudoge", + "symbol": "JEJUDOGE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15983/thumb/jejudoge.png?1634782252" + }, + { + "chainId": 1, + "address": "0x4576e6825b462b6916d2a41e187626e9090a92c6", + "name": "Donkey DON", + "symbol": "DON", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18257/thumb/Donkey_Logo_CMC.png?1631154862" + }, + { + "chainId": 1, + "address": "0xdae5add81b1fa1b04c0df225f0c3a029b93cb91b", + "name": "3gg", + "symbol": "3GG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27864/thumb/%E8%9E%A2%E5%B9%95%E6%88%AA%E5%9C%96_2022-10-17_%E4%B8%8B%E5%8D%888.28.14.png?1666151176" + }, + { + "chainId": 1, + "address": "0x3abf2a4f8452ccc2cf7b4c1e4663147600646f66", + "name": "Juicebox", + "symbol": "JBX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21120/thumb/CCeIEmvE_400x400.jpg?1638341224" + }, + { + "chainId": 1, + "address": "0xe09216f1d343dd39d6aa732a08036fee48555af0", + "name": "Contribute", + "symbol": "TRIB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12576/thumb/New_logo_circle.png?1604214723" + }, + { + "chainId": 1, + "address": "0x7deb5e830be29f91e298ba5ff1356bb7f8146998", + "name": "Aave MKR v1", + "symbol": "AMKR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11731/thumb/aMKR.png?1593084715" + }, + { + "chainId": 1, + "address": "0xd49ff13661451313ca1553fd6954bd1d9b6e02b9", + "name": "Electrify Asia", + "symbol": "ELEC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3415/thumb/d45b1d82743c749d05697da200179874.jpg?1547038096" + }, + { + "chainId": 1, + "address": "0x52928c95c4c7e934e0efcfab08853a0e4558861d", + "name": "Hara", + "symbol": "HART", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5138/thumb/hara.jpg?1547040533" + }, + { + "chainId": 1, + "address": "0x8b98df4dff429e64e9a56fc6eebe2380c6c3409c", + "name": "Si14Bet", + "symbol": "SI14", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/14973/thumb/logo-si14.png?1619213479" + }, + { + "chainId": 1, + "address": "0xc0ec8caec55f37d47fbfa595727418868a21fd48", + "name": "EcoG9coin", + "symbol": "EGC", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/8038/thumb/Screenshot_2019-12-05_at_7.14.34_AM.png?1575501284" + }, + { + "chainId": 1, + "address": "0xa6a1cc527d48585538b137e6abc14b2a55489d11", + "name": "Linework Coin", + "symbol": "LWC", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/27739/thumb/Linework-logo_coin_200px-01.png?1665578755" + }, + { + "chainId": 1, + "address": "0xc1d9b5a0776d7c8b98b8a838e5a0dd1bc5fdd53c", + "name": "GridZone io", + "symbol": "ZONE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18098/thumb/Gridzone_logo_V2.png?1630468285" + }, + { + "chainId": 1, + "address": "0x1341a2257fa7b770420ef70616f888056f90926c", + "name": "Zoo", + "symbol": "ZOOT", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/15629/thumb/gyzERsO.png?1621394316" + }, + { + "chainId": 1, + "address": "0xb26c4b3ca601136daf98593feaeff9e0ca702a8d", + "name": "Aladdin DAO", + "symbol": "ALD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18277/thumb/78200839.png?1631234134" + }, + { + "chainId": 1, + "address": "0x93ed3fbe21207ec2e8f2d3c3de6e058cb73bc04d", + "name": "Kleros", + "symbol": "PNK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3833/thumb/kleros.png?1547975322" + }, + { + "chainId": 1, + "address": "0x0e29e5abbb5fd88e28b2d355774e73bd47de3bcd", + "name": "Hakka Finance", + "symbol": "HAKKA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12163/thumb/Hakka-icon.png?1597746776" + }, + { + "chainId": 1, + "address": "0x26db5439f651caf491a87d48799da81f191bdb6b", + "name": "CBC network", + "symbol": "CBC", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/2477/thumb/Icon_for_White_Bg_75x75.png?1637155730" + }, + { + "chainId": 1, + "address": "0xb9ef770b6a5e12e45983c5d80545258aa38f3b78", + "name": "Zus", + "symbol": "ZCN", + "decimals": 10, + "logoURI": "https://assets.coingecko.com/coins/images/4934/thumb/200x200_transparent.png?1669366739" + }, + { + "chainId": 1, + "address": "0x3bbd4cb91442d8aeaeb0523a5f99540658a685ea", + "name": "Elden Knights", + "symbol": "KNIGHTS", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/27406/thumb/Eldenknights-LOGO.png?1663842018" + }, + { + "chainId": 1, + "address": "0x534d1f5e617e0f72a6b06a04aa599839af776a5e", + "name": "Blockswap Network", + "symbol": "BSN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27023/thumb/BSN_brandmark_in_black_circle_preview.png?1661484890" + }, + { + "chainId": 1, + "address": "0x1900e8b5619a3596745f715d0427fe617c729ba9", + "name": "Chainbing", + "symbol": "CBG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18052/thumb/j3saoPU.png?1630330010" + }, + { + "chainId": 1, + "address": "0xdfd8d604951ebf1b2297285f1b68de140c43992b", + "name": "Metasens", + "symbol": "MSU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24418/thumb/Metasens-3d-LOGO.png?1647611333" + }, + { + "chainId": 1, + "address": "0x6570ffe19da7e2b425329b157d9109b87f18304b", + "name": "UNIUM", + "symbol": "UNM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24567/thumb/Unium_logo.png?1648195706" + }, + { + "chainId": 1, + "address": "0x3f5294df68f871241c4b18fcf78ebd8ac18ab654", + "name": "99Starz", + "symbol": "STZ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21467/thumb/stz.png?1639651623" + }, + { + "chainId": 1, + "address": "0xff8be4b22cedc440591dcb1e641eb2a0dd9d25a5", + "name": "Uranus", + "symbol": "URAC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4683/thumb/Leood48Z_400x400.jpg?1563118461" + }, + { + "chainId": 1, + "address": "0x653430560be843c4a3d143d0110e896c2ab8ac0d", + "name": "Molecular Future", + "symbol": "MOF", + "decimals": 16, + "logoURI": "https://assets.coingecko.com/coins/images/2607/thumb/molecular_future.png?1547036754" + }, + { + "chainId": 1, + "address": "0xf256cc7847e919fac9b808cc216cac87ccf2f47a", + "name": "Aave XSUSHI", + "symbol": "AXSUSHI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17256/thumb/aXSUSHI_2x.png?1626957111" + }, + { + "chainId": 1, + "address": "0x957891c11616d3e0b0a76a76fb42724c382e0ef3", + "name": "Collateral Pay", + "symbol": "COLL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14682/thumb/cpay.jpg?1617767452" + }, + { + "chainId": 1, + "address": "0x1f19f83fc9a25f3c861260143e36c17706257986", + "name": "DAO Invest", + "symbol": "VEST", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17901/thumb/logo-round-200.png?1629773511" + }, + { + "chainId": 1, + "address": "0x3231cb76718cdef2155fc47b5286d82e6eda273f", + "name": "Monerium EUR emoney", + "symbol": "EURE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23354/thumb/eur.png?1643926562" + }, + { + "chainId": 1, + "address": "0xcc12abe4ff81c9378d670de1b57f8e0dd228d77a", + "name": "Aave REN", + "symbol": "AREN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14249/thumb/aREN.382be386.png?1615528633" + }, + { + "chainId": 1, + "address": "0x2a54ba2964c8cd459dc568853f79813a60761b58", + "name": "Interest Protocol USDi", + "symbol": "USDI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25999/thumb/20598.png?1655277115" + }, + { + "chainId": 1, + "address": "0xb9d7cb55f463405cdfbe4e90a6d2df01c2b92bf1", + "name": "Aave UNI", + "symbol": "AUNI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17247/thumb/aUNI_2x.png?1626942594" + }, + { + "chainId": 1, + "address": "0x2baac9330cf9ac479d819195794d79ad0c7616e3", + "name": "adbank", + "symbol": "ADB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2806/thumb/adbank.png?1547036978" + }, + { + "chainId": 1, + "address": "0x9319820ad5447180d0cbb76c1c06c870562aef93", + "name": "Oceidon Blox", + "symbol": "OBLOX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23708/thumb/Oceidon-Blox-Logo-Square-GC.png?1645083132" + }, + { + "chainId": 1, + "address": "0x4e3bddd468abfc6c88bc25daa5d894380ced5bc8", + "name": "NSS Coin", + "symbol": "NSS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9501/thumb/adddcf817f.png?1568108247" + }, + { + "chainId": 1, + "address": "0x26a9c0c6f28ae2e69270bc39f13db87a27db4ce5", + "name": "Defi Bomb", + "symbol": "DBOMB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27946/thumb/IMG_8762E9D638E0-1.jpeg?1666606436" + }, + { + "chainId": 1, + "address": "0x035bfe6057e15ea692c0dfdcab3bb41a64dd2ad4", + "name": "Universal Liquidity Union", + "symbol": "ULU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12376/thumb/ulu_finance_logo.ico?1599444401" + }, + { + "chainId": 1, + "address": "0x0275e1001e293c46cfe158b3702aade0b99f88a5", + "name": "Oiler", + "symbol": "OIL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15249/thumb/oiler.png?1620237607" + }, + { + "chainId": 1, + "address": "0xa54d2ebfd977ad836203c85f18db2f0a0cf88854", + "name": "Bacon Coin", + "symbol": "BACON", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25173/thumb/bacon-200.png?1650526720" + }, + { + "chainId": 1, + "address": "0xb624fde1a972b1c89ec1dad691442d5e8e891469", + "name": "SporkDAO", + "symbol": "SPORK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23358/thumb/sporkdao.PNG?1643942687" + }, + { + "chainId": 1, + "address": "0x0557e0d15aec0b9026dd17aa874fdf7d182a2ceb", + "name": "CFX Quantum", + "symbol": "CFXQ", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/15031/thumb/CFXQ_TOKEN_LOGO_200x200.png?1619500058" + }, + { + "chainId": 1, + "address": "0x4fc15c91a9c4a9efb404174464687e8e128730c2", + "name": "STAT", + "symbol": "STAT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26602/thumb/stat.png?1667291701" + }, + { + "chainId": 1, + "address": "0x3a0b022f32b3191d44e5847da12dc0b63fb07c91", + "name": "Spellfire", + "symbol": "SPELLFIRE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23107/thumb/17316.png?1643261163" + }, + { + "chainId": 1, + "address": "0xed03ed872159e199065401b6d0d487d78d9464aa", + "name": "Mexican Peso Tether", + "symbol": "MXNT", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/26087/thumb/MXNT_green.jpg?1655772424" + }, + { + "chainId": 1, + "address": "0x433fce7dfbec729a79999eaf056cb073b2153eba", + "name": "CoinWealth", + "symbol": "CNW", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/23769/thumb/cw_logo-4955f59a5c8079f246fa07ac71b2541870ca7d906ca1d9c26d74a3870fafef2f_%281%29.png?1645425522" + }, + { + "chainId": 1, + "address": "0x114f1388fab456c4ba31b1850b244eedcd024136", + "name": "COOL Vault NFTX ", + "symbol": "COOL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17032/thumb/COOL.png?1626142075" + }, + { + "chainId": 1, + "address": "0xa2a54f1ec1f09316ef12c1770d32ed8f21b1fb6a", + "name": "DigiFinex", + "symbol": "DFT", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/4819/thumb/digifinextoken.png?1547040187" + }, + { + "chainId": 1, + "address": "0x737f98ac8ca59f2c68ad658e3c3d8c8963e40a4c", + "name": "Amon", + "symbol": "AMN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2369/thumb/amon.png?1547036554" + }, + { + "chainId": 1, + "address": "0xf722b7b4876cbba560846556dd1f5932eb503de2", + "name": "Alpha Pad", + "symbol": "APAD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24324/thumb/Untitled-design-1.png?1647357411" + }, + { + "chainId": 1, + "address": "0x0d15009896efe9972f8e086bdd3bcba5c1f74bf3", + "name": "SonoCoin", + "symbol": "SONO", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/7230/thumb/MeWTs09-_400x400.jpg?1582700314" + }, + { + "chainId": 1, + "address": "0x4b7ee45f30767f36f06f79b32bf1fca6f726deda", + "name": "Ethereum Wrapped Filecoin", + "symbol": "EFIL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18231/thumb/output-onlinepngtools_%287%29.png?1631060559" + }, + { + "chainId": 1, + "address": "0x72de803b67b6ab05b61efab2efdcd414d16ebf6d", + "name": "LedgerScore", + "symbol": "LED", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16144/thumb/photo-2021-06-05-07-45-06.jpg?1623119314" + }, + { + "chainId": 1, + "address": "0x35a18000230da775cac24873d00ff85bccded550", + "name": "cUNI", + "symbol": "CUNI", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/12696/thumb/compound-uni.png?1601789718" + }, + { + "chainId": 1, + "address": "0x8af5fedc0f263841c18f31d9dbcc97a47e1ab462", + "name": "MESSIER", + "symbol": "M87", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25957/thumb/MESSIERlogonew_%281%29.png?1666773848" + }, + { + "chainId": 1, + "address": "0x9d561d63375672abd02119b9bc4fb90eb9e307ca", + "name": "Ally Direct", + "symbol": "DRCT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16807/thumb/ally_icon.png?1625148232" + }, + { + "chainId": 1, + "address": "0xeaf61fc150cd5c3bea75744e830d916e60ea5a9f", + "name": "Typerium", + "symbol": "TYPE", + "decimals": 4, + "logoURI": "https://assets.coingecko.com/coins/images/4019/thumb/type.png?1547039124" + }, + { + "chainId": 1, + "address": "0x38e491a71291cd43e8de63b7253e482622184894", + "name": "Aave AMM UniSNXWETH", + "symbol": "AAMMUNISNXWETH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17224/thumb/aAmmUniSNXWETH.png?1626880874" + }, + { + "chainId": 1, + "address": "0x900db999074d9277c5da2a43f252d74366230da0", + "name": "Giveth", + "symbol": "GIV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21792/thumb/GIVToken_200x200.png?1640055088" + }, + { + "chainId": 1, + "address": "0xf8497f1dab075a3674363b5609ba679f7dc9c885", + "name": "Sodatsu", + "symbol": "SODATSU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28061/thumb/SODATSU_Token_Logo_-_200x200.png?1667300564" + }, + { + "chainId": 1, + "address": "0x375abb85c329753b1ba849a601438ae77eec9893", + "name": "ParagonsDAO", + "symbol": "PDT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22642/thumb/6_Ms7ltG_400x400.jpg?1642395792" + }, + { + "chainId": 1, + "address": "0x58f7345b5295e43aa454911571f13be186655be9", + "name": "Garlicoin", + "symbol": "GRLC", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/2699/thumb/garlicoin.png?1548126827" + }, + { + "chainId": 1, + "address": "0xf9fb4ad91812b704ba883b11d2b576e890a6730a", + "name": "Aave AMM WETH", + "symbol": "AAMMWETH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17259/thumb/aAMMWETH_2x.png?1626958225" + }, + { + "chainId": 1, + "address": "0x5d3a4f62124498092ce665f865e0b38ff6f5fbea", + "name": "Ideaology", + "symbol": "IDEA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13938/thumb/idea_logo.png?1613022658" + }, + { + "chainId": 1, + "address": "0x6876eba317272fe221c67405c5e8eb3b24535547", + "name": "MicroTuber", + "symbol": "MCT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15489/thumb/mct.PNG?1621040638" + }, + { + "chainId": 1, + "address": "0x549044000a94870ab7c5017cd8fb0aefa9239a13", + "name": "UCONetwork", + "symbol": "UCOIL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27633/thumb/logo.png?1664961037" + }, + { + "chainId": 1, + "address": "0x9332dfc361763d58565139da819c86e773e17249", + "name": "UniPlay", + "symbol": "UNP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27768/thumb/yHxDwXCN_400x400.png?1665721111" + }, + { + "chainId": 1, + "address": "0xe00639a1f59b52773b7d39d9f9bef07f6248dbae", + "name": "The DAOX Index", + "symbol": "DAOX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25042/thumb/200px-DAOx.png?1649911875" + }, + { + "chainId": 1, + "address": "0xebf4ca5319f406602eeff68da16261f1216011b5", + "name": "Yobit", + "symbol": "YO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9231/thumb/ybx_logo.gif?1565306320" + }, + { + "chainId": 1, + "address": "0x4e114d405b9ba2f59524941733e505ae03fb1fb5", + "name": "Joystick", + "symbol": "JOY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27666/thumb/awKbFbPi_400x400.jpg?1665140248" + }, + { + "chainId": 1, + "address": "0x009178997aff09a67d4caccfeb897fb79d036214", + "name": "1Sol", + "symbol": "1SOL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21615/thumb/YyGDie9f_400x400.jpg?1639610633" + }, + { + "chainId": 1, + "address": "0xdfc3829b127761a3218bfcee7fc92e1232c9d116", + "name": "PRivaCY Coin", + "symbol": "PRCY", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/14151/thumb/prcy.png?1614666991" + }, + { + "chainId": 1, + "address": "0x59e9261255644c411afdd00bd89162d09d862e38", + "name": "ETHA Lend", + "symbol": "ETHA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14141/thumb/etha_logo200x200.png?1614646986" + }, + { + "chainId": 1, + "address": "0xbbff862d906e348e9946bfb2132ecb157da3d4b4", + "name": "Sharder protocol", + "symbol": "SS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2921/thumb/sharder-200px.png?1595305234" + }, + { + "chainId": 1, + "address": "0xed1480d12be41d92f36f5f7bdd88212e381a3677", + "name": "Fiat DAO", + "symbol": "FDT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20388/thumb/MLamPGZI_400x400.jpg?1636960965" + }, + { + "chainId": 1, + "address": "0x42f3a4901b2b2c5e2d6bc8dadb8c1d8d5afd2618", + "name": "Durham Inu", + "symbol": "RBI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24016/thumb/wk9djJpG_400x400.jpg?1646032297" + }, + { + "chainId": 1, + "address": "0x97fef38b79640ee95eaef250aaf8733c70007a58", + "name": "MemeNFT Official", + "symbol": "MNFT", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/26773/thumb/MNFT-ICON-NO-BAKGROUND.png?1660048771" + }, + { + "chainId": 1, + "address": "0x40fd72257597aa14c7231a7b1aaa29fce868f677", + "name": "Sora", + "symbol": "XOR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11093/thumb/sora_logo_cg_white.png?1588284194" + }, + { + "chainId": 1, + "address": "0x4057db5bd9f67a566aa10e5587b1a964affc6a16", + "name": "Truefeedback", + "symbol": "TFBX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8842/thumb/5rd7a55q_400x400.png?1562902557" + }, + { + "chainId": 1, + "address": "0x12d102f06da35cc0111eb58017fd2cd28537d0e1", + "name": "Vox Finance", + "symbol": "VOX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12880/thumb/BSensIa.png?1603261093" + }, + { + "chainId": 1, + "address": "0x4c1e085d8c2d2a8377834d0d7b38f12cc5b86898", + "name": "SilkChain", + "symbol": "SILK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3810/thumb/2.png?1561537249" + }, + { + "chainId": 1, + "address": "0xf4fe95603881d0e07954fd7605e0e9a916e42c44", + "name": "WhenHub", + "symbol": "WHEN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4136/thumb/when.png?1547039367" + }, + { + "chainId": 1, + "address": "0x3496b523e5c00a4b4150d6721320cddb234c3079", + "name": "NUM Token", + "symbol": "NUM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20495/thumb/NP_Social_media_profile_pic.png?1664026542" + }, + { + "chainId": 1, + "address": "0x4156d3342d5c385a87d264f90653733592000581", + "name": "SALT", + "symbol": "SALT", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/962/thumb/salt.png?1548608746" + }, + { + "chainId": 1, + "address": "0x75ecb52e403c617679fbd3e77a50f9d10a842387", + "name": "CSR", + "symbol": "CSR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25585/thumb/CSR-LOGO-200x200-1.png?1652767956" + }, + { + "chainId": 1, + "address": "0xd3cdc4e75750dc1e59f8342200742b6b29490e70", + "name": "Decurian", + "symbol": "ECU", + "decimals": 3, + "logoURI": "https://assets.coingecko.com/coins/images/10988/thumb/ECU-LOGO-200x200.png?1586914495" + }, + { + "chainId": 1, + "address": "0x72430a612adc007c50e3b6946dbb1bb0fd3101d1", + "name": "Thingschain", + "symbol": "TIC", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/5320/thumb/thingschain-logo.png?1547040881" + }, + { + "chainId": 1, + "address": "0x7220e92d418e2eb59d0c25d195fa004bfd3afc42", + "name": "Ad Flex", + "symbol": "ADF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5620/thumb/ad-flex-token.png?1547041485" + }, + { + "chainId": 1, + "address": "0x7d48fbe0a877bb1f511fcf9b57f12420c75841e9", + "name": "DOOR", + "symbol": "DOOR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16885/thumb/door256.png?1625548384" + }, + { + "chainId": 1, + "address": "0x1961b3331969ed52770751fc718ef530838b6dee", + "name": "BitDegree", + "symbol": "BDG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1653/thumb/bitdegree.jpg?1547035900" + }, + { + "chainId": 1, + "address": "0x5abf88cf3444611d13f6d1b39f3f3ee8575c91a2", + "name": "Super Athletes Token", + "symbol": "SAT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27761/thumb/SAT_200.png?1665658758" + }, + { + "chainId": 1, + "address": "0xf9a7e47f6d00a75be08bb23a804f4153c01a1636", + "name": "DeGEM", + "symbol": "DGM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27449/thumb/556.JPG?1664017738" + }, + { + "chainId": 1, + "address": "0x8a6d4c8735371ebaf8874fbd518b56edd66024eb", + "name": "BLOCKS", + "symbol": "BLOCKS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19666/thumb/BLOCKS_200x200_logo_%282%29..png?1635738258" + }, + { + "chainId": 1, + "address": "0xf8a4a419c2d7140e49ef952a7e7ae1bd4a8b6b9c", + "name": "Lith OLD ", + "symbol": "LITH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16199/thumb/200x200px_LOGO.png?1657177574" + }, + { + "chainId": 1, + "address": "0xde5ea375ffbdc8b25a80fe13d631e8ba0ab4bb02", + "name": "Gera Coin", + "symbol": "GERA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13686/thumb/GeraCoin_Logo-icon-1000px.png?1610919942" + }, + { + "chainId": 1, + "address": "0xedadeb5faa413e6c8623461849dfd0b7c3790c32", + "name": "Obortech", + "symbol": "OBOT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14929/thumb/OBORTECH_200.png?1619070515" + }, + { + "chainId": 1, + "address": "0xcb4e8cafeda995da5cedfda5205bd5664a12b848", + "name": "Shabu Shabu", + "symbol": "KOBE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13577/thumb/shabu_shabu_logo.jpg?1609901993" + }, + { + "chainId": 1, + "address": "0x2365a4890ed8965e564b7e2d27c38ba67fec4c6f", + "name": "Aave AMM UniWBTCUSDC", + "symbol": "AAMMUNIWBTCUSDC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17255/thumb/aAmmUniWBTCUSDC.png?1626956709" + }, + { + "chainId": 1, + "address": "0xf3dcbc6d72a4e1892f7917b7c43b74131df8480e", + "name": "Big Data Protocol", + "symbol": "BDP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14222/thumb/logo_BDP_200.png?1615088501" + }, + { + "chainId": 1, + "address": "0x4dd28568d05f09b02220b09c2cb307bfd837cb95", + "name": "FingerprintsDAO", + "symbol": "PRINTS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18143/thumb/prints.png?1634698868" + }, + { + "chainId": 1, + "address": "0x16c52ceece2ed57dad87319d91b5e3637d50afa4", + "name": "Total Crypto Market Cap", + "symbol": "TCAP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14703/thumb/tcap.png?1617860242" + }, + { + "chainId": 1, + "address": "0xaad54c9f27b876d2538455dda69207279ff673a5", + "name": "Davinci Coin", + "symbol": "DAC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5494/thumb/dac.png?1644149184" + }, + { + "chainId": 1, + "address": "0x946112efab61c3636cbd52de2e1392d7a75a6f01", + "name": "Hydro", + "symbol": "HYDRO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3678/thumb/New_Hydro_logo.png?1625473878" + }, + { + "chainId": 1, + "address": "0x8355dbe8b0e275abad27eb843f3eaf3fc855e525", + "name": "Wolf Game Wool", + "symbol": "WOOL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20760/thumb/KM3RwIVx_400x400.jpg?1637650093" + }, + { + "chainId": 1, + "address": "0xae353daeed8dcc7a9a12027f7e070c0a50b7b6a4", + "name": "InnovaMinex", + "symbol": "MINX", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/7116/thumb/innovaminex.jpg?1547043613" + }, + { + "chainId": 1, + "address": "0xf91ac30e9b517f6d57e99446ee44894e6c22c032", + "name": "LOL", + "symbol": "LOL", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/20354/thumb/lollogo.png?1648442855" + }, + { + "chainId": 1, + "address": "0xbfce0e06dedcbea3e170ba4df2a6793334cac5ef", + "name": "Naruto Inu", + "symbol": "NARUTO", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/20509/thumb/6HHkduP.jpeg?1637153210" + }, + { + "chainId": 1, + "address": "0x94804dc4948184ffd7355f62ccbb221c9765886f", + "name": "Rage Fan", + "symbol": "RAGE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14585/thumb/Copy_of_RAGE_FAN_LOGO_ONLY.png?1627476357" + }, + { + "chainId": 1, + "address": "0x5f64ab1544d28732f0a24f4713c2c8ec0da089f0", + "name": "Domani Protocol", + "symbol": "DEXTF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12634/thumb/0qgT0aMu_400x400.jpg?1639175406" + }, + { + "chainId": 1, + "address": "0xdc0327d50e6c73db2f8117760592c8bbf1cdcf38", + "name": "Stronger", + "symbol": "STRNGR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24922/thumb/200x200_logo.png?1650609989" + }, + { + "chainId": 1, + "address": "0xe23faefcdaae646527eb86b1c746a25ae4a36f75", + "name": "WGMI", + "symbol": "WGMI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20330/thumb/new_WGMI_logo-01.png?1650534006" + }, + { + "chainId": 1, + "address": "0x41875c2332b0877cdfaa699b641402b7d4642c32", + "name": "FUTURAX", + "symbol": "FTXT", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/5796/thumb/futurax.png?1547484031" + }, + { + "chainId": 1, + "address": "0x9d409a0a012cfba9b15f6d4b36ac57a46966ab9a", + "name": "Yearn Compounding veCRV yVault", + "symbol": "YVBOOST", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15152/thumb/yvBOOST.png?1619978216" + }, + { + "chainId": 1, + "address": "0x8ffe40a3d0f80c0ce6b203d5cdc1a6a86d9acaea", + "name": "IG Gold", + "symbol": "IGG", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/7697/thumb/N7aEdYrY_400x400.png?1561587437" + }, + { + "chainId": 1, + "address": "0xde4ee8057785a7e8e800db58f9784845a5c2cbd6", + "name": "DeXe", + "symbol": "DEXE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12713/thumb/logo_%2814%29.png?1601952779" + }, + { + "chainId": 1, + "address": "0xbc4171f45ef0ef66e76f979df021a34b46dcc81d", + "name": "Dora Factory", + "symbol": "DORA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14478/thumb/dora_logo.jpg?1616410086" + }, + { + "chainId": 1, + "address": "0xa8e7ad77c60ee6f30bac54e2e7c0617bd7b5a03e", + "name": "zLOT", + "symbol": "ZLOT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13073/thumb/z-LOT-logo-transparent.png?1604900416" + }, + { + "chainId": 1, + "address": "0xcadc0acd4b445166f12d2c07eac6e2544fbe2eef", + "name": "CAD Coin", + "symbol": "CADC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14149/thumb/cadc_2.png?1614666625" + }, + { + "chainId": 1, + "address": "0x70efdc485a10210b056ef8e0a32993bc6529995e", + "name": "Blaze Network", + "symbol": "BLZN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12248/thumb/A8JOuPSJ_400x400.jpg?1598511402" + }, + { + "chainId": 1, + "address": "0x9ea3b5b4ec044b70375236a281986106457b20ef", + "name": "Delta Financial", + "symbol": "DELTA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14564/thumb/Delta_logo.png?1619067341" + }, + { + "chainId": 1, + "address": "0x89020f0d5c5af4f3407eb5fe185416c457b0e93e", + "name": "Edenchain", + "symbol": "EDN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3292/thumb/Eden.png?1574126935" + }, + { + "chainId": 1, + "address": "0xc1f976b91217e240885536af8b63bc8b5269a9be", + "name": "Public Index Network", + "symbol": "PIN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/241/thumb/pin.jpeg?1623054253" + }, + { + "chainId": 1, + "address": "0xfc4913214444af5c715cc9f7b52655e788a569ed", + "name": "Icosa", + "symbol": "ICSA", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/27708/thumb/icsa.e2b79cbc.png?1665314034" + }, + { + "chainId": 1, + "address": "0x9ab165d795019b6d8b3e971dda91071421305e5a", + "name": "Aurora Chain", + "symbol": "AOA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4755/thumb/aurora-logo.png?1547040076" + }, + { + "chainId": 1, + "address": "0xc08512927d12348f6620a698105e1baac6ecd911", + "name": "GYEN", + "symbol": "GYEN", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/14191/thumb/icon_gyen_200_200.png?1614843343" + }, + { + "chainId": 1, + "address": "0x3819f64f282bf135d62168c1e513280daf905e06", + "name": "Hedron", + "symbol": "HDRN", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/24208/thumb/hdrn.png?1647079428" + }, + { + "chainId": 1, + "address": "0x622dffcc4e83c64ba959530a5a5580687a57581b", + "name": "Cube Intelligence", + "symbol": "AUTO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3503/thumb/2559.png?1547038267" + }, + { + "chainId": 1, + "address": "0x4da08a1bff50be96bded5c7019227164b49c2bfc", + "name": "Mononoke Inu", + "symbol": "MONONOKE-INU", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/18769/thumb/z9YDK0f.png?1633357322" + }, + { + "chainId": 1, + "address": "0x41a03e41ef555392c9f0ad60f4f61e263078bf10", + "name": "Upper Dollar", + "symbol": "USDU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12332/thumb/usdu.png?1642929548" + }, + { + "chainId": 1, + "address": "0x069f967be0ca21c7d793d8c343f71e597d9a49b3", + "name": "HZM Coin", + "symbol": "HZM", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/18032/thumb/hzm.PNG?1630296878" + }, + { + "chainId": 1, + "address": "0x175ab41e2cedf3919b2e4426c19851223cf51046", + "name": "BaconSwap", + "symbol": "BACON", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12336/thumb/bacon_swap_logo.png?1599133231" + }, + { + "chainId": 1, + "address": "0x88ff74676591faa8317494df556bf45757c567a1", + "name": "Tsukuyomi no Mikoto", + "symbol": "MIKOTO", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/27189/thumb/output-onlinepngtools_%285%29.png?1662440321" + }, + { + "chainId": 1, + "address": "0xb98d4c97425d9908e66e53a6fdf673acca0be986", + "name": "Arcblock", + "symbol": "ABT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2341/thumb/arcblock.png?1547036543" + }, + { + "chainId": 1, + "address": "0x475db18d764df7fadfbd3e73fccbbc1e14342ab3", + "name": "ApolloFi", + "symbol": "APO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26451/thumb/apo.png?1660311541" + }, + { + "chainId": 1, + "address": "0x4b0181102a0112a2ef11abee5563bb4a3176c9d7", + "name": "cSUSHI", + "symbol": "CSUSHI", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/17529/thumb/csushi.PNG?1628122792" + }, + { + "chainId": 1, + "address": "0xc5b3d3231001a776123194cf1290068e8b0c783b", + "name": "LIT", + "symbol": "LIT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21344/thumb/LitLogo_CG.png?1639990605" + }, + { + "chainId": 1, + "address": "0x4cd988afbad37289baaf53c13e98e2bd46aaea8c", + "name": "Key", + "symbol": "KEY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4182/thumb/bihu-key-token.png?1547039459" + }, + { + "chainId": 1, + "address": "0xce13abce0db5a8224616ef24d3979d466f19cf90", + "name": "Rebit", + "symbol": "KEYT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9891/thumb/rebit.PNG?1573119183" + }, + { + "chainId": 1, + "address": "0xdf290b162a7d3e0a328cf198308d421954f08b94", + "name": "Beyond Protocol", + "symbol": "BP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4732/thumb/b-logo-200x200.png?1633423345" + }, + { + "chainId": 1, + "address": "0x27ed129c298c5df130364083f491e2920e5a2f29", + "name": "Upper Pound", + "symbol": "GBPU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12357/thumb/gbpu.png?1642929642" + }, + { + "chainId": 1, + "address": "0x37e83a94c6b1bdb816b59ac71dd02cf154d8111f", + "name": "PhotoChromic", + "symbol": "PHCR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23640/thumb/L7vabJibqXHHmGtsIfIEQRaR3SjaE94QSaKWGlqYU7fpuz--nKsWG4BlB6Ddhn5-tGPWo-MDhfZPVAYG7ZM2vpWrVZlSx1Euw78tZcNey6FvpKX6a8w26qBWYeV7wxFzvW7VKieijrMXQ0BkISpt8d6jrCMBvx2ZFKVxF1x31_2X7WhRyqAgIG3epFPNz7v0j0ECaS7HmE0_sTHM4RS3CW1d0a.jpg?1644908390" + }, + { + "chainId": 1, + "address": "0xf4d861575ecc9493420a3f5a14f85b13f0b50eb3", + "name": "Fractal", + "symbol": "FCL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14096/thumb/fractal_logo.png?1614264502" + }, + { + "chainId": 1, + "address": "0x625ae63000f46200499120b906716420bd059240", + "name": "Aave SUSD v1", + "symbol": "ASUSD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11723/thumb/aSUSD.png?1593082612" + }, + { + "chainId": 1, + "address": "0x07f9702ce093db82dfdc92c2c6e578d6ea8d5e22", + "name": "Oobit", + "symbol": "OBT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19855/thumb/obt.png?1636062272" + }, + { + "chainId": 1, + "address": "0x08ba718f288c3b12b01146816bef9fa03cc635bc", + "name": "Centaurify", + "symbol": "CENT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20512/thumb/GTU5RBD0.png?1645205770" + }, + { + "chainId": 1, + "address": "0xb6ff96b8a8d214544ca0dbc9b33f7ad6503efd32", + "name": "Sync Network", + "symbol": "SYNC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13231/thumb/sync_network.png?1629777103" + }, + { + "chainId": 1, + "address": "0x80fb784b7ed66730e8b1dbd9820afd29931aab03", + "name": "Aave OLD ", + "symbol": "LEND", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1365/thumb/ethlend.png?1547394586" + }, + { + "chainId": 1, + "address": "0x327673ae6b33bd3d90f0096870059994f30dc8af", + "name": "Lympo Market", + "symbol": "LMT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15155/thumb/coin_%282%29.png?1619995483" + }, + { + "chainId": 1, + "address": "0xa64bd6c70cb9051f6a9ba1f163fdc07e0dfb5f84", + "name": "Aave LINK v1", + "symbol": "ALINK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11729/thumb/aLINK.png?1593084323" + }, + { + "chainId": 1, + "address": "0x0b63128c40737b13647552e0c926bcfeccc35f93", + "name": "wLITI", + "symbol": "WLITI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16810/thumb/liticapital_real.png?1625151260" + }, + { + "chainId": 1, + "address": "0x83031984b45553070a088273f341bff7fb4f2f46", + "name": "hiBAYC", + "symbol": "HIBAYC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26623/thumb/hibayc.png?1659150840" + }, + { + "chainId": 1, + "address": "0x5dbcf33d8c2e976c6b560249878e6f1491bca25c", + "name": "yUSD", + "symbol": "YVAULT-LP-YCURVE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12210/thumb/yUSD.png?1600166557" + }, + { + "chainId": 1, + "address": "0xfde57fee4bcca80485714bd640d6e5afe8ac4d66", + "name": "StellarInu", + "symbol": "STELLARINU", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/20615/thumb/Screenshot-2021-11-18-at-20-09-23.png?1637307533" + }, + { + "chainId": 1, + "address": "0x1c7e83f8c581a967940dbfa7984744646ae46b29", + "name": "The RandomDAO", + "symbol": "RND", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24256/thumb/rnd.png?1647160021" + }, + { + "chainId": 1, + "address": "0x04dc37b220a055c5f93680815f670babcd912c2c", + "name": "Eiichiro Oda Inu", + "symbol": "ODA", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/19546/thumb/oda.png?1635390942" + }, + { + "chainId": 1, + "address": "0x2d77f5b3efa51821ad6483adaf38ea4cb1824cc5", + "name": "Genesis Mana", + "symbol": "MANA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19031/thumb/genesis-icon.png?1634196000" + }, + { + "chainId": 1, + "address": "0x461b71cff4d4334bba09489ace4b5dc1a1813445", + "name": "Hoard", + "symbol": "HRD", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/27300/thumb/hoard.png?1663212320" + }, + { + "chainId": 1, + "address": "0x2d80f5f5328fdcb6eceb7cacf5dd8aedaec94e20", + "name": "AGA", + "symbol": "AGA", + "decimals": 4, + "logoURI": "https://assets.coingecko.com/coins/images/12180/thumb/aga-logo.png?1597937396" + }, + { + "chainId": 1, + "address": "0x5d3a536e4d6dbd6114cc1ead35777bab948e3643", + "name": "cDAI", + "symbol": "CDAI", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/9281/thumb/cDAI.png?1576467585" + }, + { + "chainId": 1, + "address": "0x4086e77c5e993fdb90a406285d00111a974f877a", + "name": "Blockchain Brawlers", + "symbol": "BRWL", + "decimals": 4, + "logoURI": "https://assets.coingecko.com/coins/images/24701/thumb/fuDdvI8Y_400x400.png?1648642627" + }, + { + "chainId": 1, + "address": "0xa23c1194d421f252b4e6d5edcc3205f7650a4ebe", + "name": "LaunchBlock", + "symbol": "LBP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24181/thumb/S6z_-9GB_400x400.jpg?1646786017" + }, + { + "chainId": 1, + "address": "0xb05097849bca421a3f51b249ba6cca4af4b97cb9", + "name": "Float Protocol Float", + "symbol": "FLOAT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15502/thumb/FLOAT_LOGO-reduced_01.png?1621081152" + }, + { + "chainId": 1, + "address": "0x5b0f6ad5875da96ac224ba797c6f362f4c3a2b3b", + "name": "Nerdy Inu", + "symbol": "NERDY", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/19517/thumb/nerdy.jpeg?1635322382" + }, + { + "chainId": 1, + "address": "0xc9859fccc876e6b4b3c749c5d29ea04f48acb74f", + "name": "Ino Coin", + "symbol": "INO", + "decimals": 0, + "logoURI": "https://assets.coingecko.com/coins/images/4096/thumb/inologo.jpg?1547039275" + }, + { + "chainId": 1, + "address": "0x35872fea6a4843facbcdbce99e3b69596a3680b8", + "name": "1337", + "symbol": "1337", + "decimals": 4, + "logoURI": "https://assets.coingecko.com/coins/images/13348/thumb/logo.png?1607791847" + }, + { + "chainId": 1, + "address": "0x2b1fe2cea92436e8c34b7c215af66aaa2932a8b2", + "name": "Sakhalin Husky", + "symbol": "SAHU", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/15750/thumb/HUSKY_H-1024x683-1.png?1621785464" + }, + { + "chainId": 1, + "address": "0x668c50b1c7f46effbe3f242687071d7908aab00a", + "name": "CoShi Inu", + "symbol": "COSHI", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/15219/thumb/200.jpg?1620119215" + }, + { + "chainId": 1, + "address": "0x15dd37a83564559927bbdcdbfcf85f60a2c6a419", + "name": "StonkLeague", + "symbol": "AEGIS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26294/thumb/iShot_2022-07-07_10.44.16.png?1657161870" + }, + { + "chainId": 1, + "address": "0x9b06d48e0529ecf05905ff52dd426ebec0ea3011", + "name": "XSwap", + "symbol": "XSP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12541/thumb/256x256_%282%29.png?1600645409" + }, + { + "chainId": 1, + "address": "0x03ab458634910aad20ef5f1c8ee96f1d6ac54919", + "name": "Rai Reflex Index", + "symbol": "RAI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14004/thumb/RAI-logo-coin.png?1613592334" + }, + { + "chainId": 1, + "address": "0x4a1d542b52a95ad01ddc70c2e7df0c7bbaadc56f", + "name": "Niftify", + "symbol": "NIFT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20558/thumb/AWPDLxLK_400x400.jpg?1637209747" + }, + { + "chainId": 1, + "address": "0xbcf91e60a6719eb3e9308addf1f7c6185c2af889", + "name": "ExenPay", + "symbol": "EXENP", + "decimals": 2, + "logoURI": "https://assets.coingecko.com/coins/images/18975/thumb/LlydYS1w_400x400.png?1634094918" + }, + { + "chainId": 1, + "address": "0x0557df767419296474c3f551bb0a0ed4c2dd3380", + "name": "Universal Gold", + "symbol": "UPXAU", + "decimals": 5, + "logoURI": "https://assets.coingecko.com/coins/images/13534/thumb/UPXAU-1.png?1609540908" + }, + { + "chainId": 1, + "address": "0xe6cc10ef4de1ccfb821c99c04abfe1859d8eab8f", + "name": "Exen", + "symbol": "EXEN", + "decimals": 2, + "logoURI": "https://assets.coingecko.com/coins/images/19036/thumb/Exen_Logo_f1f7d970fd.png?1634201249" + }, + { + "chainId": 1, + "address": "0x2c974b2d0ba1716e644c1fc59982a89ddd2ff724", + "name": "Viberate", + "symbol": "VIB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/983/thumb/Viberate.png?1547034873" + }, + { + "chainId": 1, + "address": "0x9a0aba393aac4dfbff4333b06c407458002c6183", + "name": "ACoconut", + "symbol": "AC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12779/thumb/ac_logo.png?1602500084" + }, + { + "chainId": 1, + "address": "0xd5e7d22362bcc9881d06512d3189eae79dd98d70", + "name": "Miyazaki Inu", + "symbol": "MIYAZAKI", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/19889/thumb/DzuUGOg.png?1636091545" + }, + { + "chainId": 1, + "address": "0xc91b523a59acc63a64f61fc7bbfb4bfc82dd25f2", + "name": "Multiverse", + "symbol": "AI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16329/thumb/multiverse_logo_full_color_rgb_200px_72ppi.png?1652011384" + }, + { + "chainId": 1, + "address": "0x0fd10b9899882a6f2fcb5c371e17e70fdee00c38", + "name": "Pundi X", + "symbol": "PUNDIX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14571/thumb/vDyefsXq_400x400.jpg?1617085003" + }, + { + "chainId": 1, + "address": "0xd83c569268930fadad4cde6d0cb64450fef32b65", + "name": "Invictus Capital", + "symbol": "ICAP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18334/thumb/ICAP-logo-icon.png?1631584746" + }, + { + "chainId": 1, + "address": "0x823556202e86763853b40e9cde725f412e294689", + "name": "Altered State Machine", + "symbol": "ASTO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24893/thumb/ASTO.png?1649303806" + }, + { + "chainId": 1, + "address": "0xa0bed124a09ac2bd941b10349d8d224fe3c955eb", + "name": "DePay", + "symbol": "DEPAY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13183/thumb/DEPAY.png?1650615816" + }, + { + "chainId": 1, + "address": "0x4ee438be38f8682abb089f2bfea48851c5e71eaf", + "name": "Cryptonovae", + "symbol": "YAE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14693/thumb/yae.png?1640337904" + }, + { + "chainId": 1, + "address": "0xfb9553afa2b5c19c5f8e5b8ee175fc01abd1555f", + "name": "Hybrid Bank Cash", + "symbol": "HBC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12489/thumb/hb_logo.png?1600208518" + }, + { + "chainId": 1, + "address": "0x3fa729b4548becbad4eab6ef18413470e6d5324c", + "name": "Mover", + "symbol": "MOVE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13719/thumb/o0KIvs7T_400x400.jpg?1617672818" + }, + { + "chainId": 1, + "address": "0xa8262eb913fccea4c3f77fc95b8b4043b384cfbb", + "name": "Krypton Galaxy Coin", + "symbol": "KGC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9152/thumb/krypton.PNG?1564733517" + }, + { + "chainId": 1, + "address": "0x5faa989af96af85384b8a938c2ede4a7378d9875", + "name": "Galxe", + "symbol": "GAL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24530/thumb/galaxy.jpg?1662517258" + }, + { + "chainId": 1, + "address": "0x8254c1c134436f74047f79eaaea97e3324ef78b5", + "name": "Ichigo Inu", + "symbol": "ICHIGO", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/19243/thumb/ichigoinu.png?1634779236" + }, + { + "chainId": 1, + "address": "0x996229d0c6a485c7f4b52e092eaa907cb2def5c6", + "name": "BuckHath Coin", + "symbol": "BHIG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7821/thumb/logstex.PNG?1585121237" + }, + { + "chainId": 1, + "address": "0x0ff6ffcfda92c53f615a4a75d982f399c989366b", + "name": "UniLayer", + "symbol": "LAYER", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12164/thumb/Unilayer.jpg?1597779313" + }, + { + "chainId": 1, + "address": "0x3597bfd533a99c9aa083587b074434e61eb0a258", + "name": "Dent", + "symbol": "DENT", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/1152/thumb/gLCEA2G.png?1604543239" + }, + { + "chainId": 1, + "address": "0x8cc0f052fff7ead7f2edcccac895502e884a8a71", + "name": "ARTH", + "symbol": "ARTH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16876/thumb/ARTH_Token.png?1625651538" + }, + { + "chainId": 1, + "address": "0x0d86eb9f43c57f6ff3bc9e23d8f9d82503f0e84b", + "name": "Maximus DAO", + "symbol": "MAXI", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/25126/thumb/maxilogo200.png?1650372648" + }, + { + "chainId": 1, + "address": "0x43a96962254855f16b925556f9e97be436a43448", + "name": "Hord", + "symbol": "HORD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14972/thumb/Avatar_white.png?1619513849" + }, + { + "chainId": 1, + "address": "0xa6a840e50bcaa50da017b91a0d86b8b2d41156ee", + "name": "EchoLink", + "symbol": "EKO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2437/thumb/echolink.png?1547224598" + }, + { + "chainId": 1, + "address": "0x8eb1779a32678452eb273a22d413207299904d90", + "name": "Pochi Inu", + "symbol": "POCHI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23816/thumb/logo-gold.png?1645513711" + }, + { + "chainId": 1, + "address": "0xa5b46ff9a887180c8fb2d97146398ddfc5fef1cd", + "name": "SuperSkyNet", + "symbol": "SSN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8944/thumb/p3dTwXMK_400x400.jpg?1563153164" + }, + { + "chainId": 1, + "address": "0x36ac219f90f5a6a3c77f2a7b660e3cc701f68e25", + "name": "Coinmetro", + "symbol": "XCM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3125/thumb/XCM_Token_Logo_.png?1646280053" + }, + { + "chainId": 1, + "address": "0x355a824bea1adc22733978a3748271e1bbb34130", + "name": "Metanept", + "symbol": "NEPT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26798/thumb/OH1UiJ16_400x400.jpeg?1660202251" + }, + { + "chainId": 1, + "address": "0x69a95185ee2a045cdc4bcd1b1df10710395e4e23", + "name": "Poolz Finance", + "symbol": "POOLZ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13679/thumb/poolz_logo.png?1610806091" + }, + { + "chainId": 1, + "address": "0x5f0bc16d50f72d10b719dbf6845de2e599eb5624", + "name": "Vent Finance", + "symbol": "VENT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17925/thumb/Artboard_29.png?1629804982" + }, + { + "chainId": 1, + "address": "0x2e95cea14dd384429eb3c4331b776c4cfbb6fcd9", + "name": "Throne", + "symbol": "THN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16965/thumb/aXhD3i_g_400x400.jpg?1625804145" + }, + { + "chainId": 1, + "address": "0x98d8d146e644171cd47ff8588987b7bdeef72a87", + "name": "Blockchain Exchange Alliance", + "symbol": "BXA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7842/thumb/images.png?1551144999" + }, + { + "chainId": 1, + "address": "0xdb0acc14396d108b3c5574483acb817855c9dc8d", + "name": "Overline Emblem", + "symbol": "EMB", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/3335/thumb/czcuIce.png?1621842831" + }, + { + "chainId": 1, + "address": "0xb13de094cc5cee6c4cc0a3737bf0290166d9ca5d", + "name": "GoWithMi", + "symbol": "GMAT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7162/thumb/qXNbxVny_400x400.png?1564433322" + }, + { + "chainId": 1, + "address": "0xd82df0abd3f51425eb15ef7580fda55727875f14", + "name": "DAV Network", + "symbol": "DAV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2842/thumb/DAV-Network-logo.jpg?1547037011" + }, + { + "chainId": 1, + "address": "0x8013266cb5c9dd48be3ad7d1ce832874d64b3ce1", + "name": "Boop", + "symbol": "BOOP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27918/thumb/boop.png?1666351418" + }, + { + "chainId": 1, + "address": "0xcccf837f40d334f8602f031e64b52ad4cd2b6601", + "name": "Unicly Fewocious Collection", + "symbol": "UFEWO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16387/thumb/uFEWO.png?1623894677" + }, + { + "chainId": 1, + "address": "0x5e6ffe7b174a50c81ff3f3c54c04fd3c11e20830", + "name": "DragonVein", + "symbol": "DVC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8263/thumb/LrDC1OmYiqq05_-E3PFLO6oJou6HOvVMFpjEqbYdcvaIPgQp7mF52lpj_rCmQW1FhAoBg5E2Z9o16L3Z7n8SQrMIp1YZNEGHRzc3P0P3jOZnyKvHNuTXQx9q13_kxXG1oMzaN3HfWdUnTMAfKRwghCa7BX67W9pSV-AJkcQ4-5Qy_qlAN28UCUgVnM0k6ZXlNWZo7Vi00CD7657qw.jpg?1557125797" + }, + { + "chainId": 1, + "address": "0x31d939dc09a6bb55642fcbf9d56166ebc0bdec9a", + "name": "Peach Finance", + "symbol": "PEECH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15376/thumb/PEECH-token-logo-200.png?1620692908" + }, + { + "chainId": 1, + "address": "0xbe6c8f2810ef39420d2dc2901b8414c8c45fee6d", + "name": "Micromines", + "symbol": "MICRO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7000/thumb/micromines.png?1548085033" + }, + { + "chainId": 1, + "address": "0x108a850856db3f85d0269a2693d896b394c80325", + "name": "THORWallet DEX", + "symbol": "TGT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21843/thumb/tgt_logo.png?1641568708" + }, + { + "chainId": 1, + "address": "0x5e3845a1d78db544613edbe43dc1ea497266d3b8", + "name": "LNX Protocol", + "symbol": "LNX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8776/thumb/Linix.png?1561103529" + }, + { + "chainId": 1, + "address": "0x426ca1ea2406c07d75db9585f22781c096e3d0e0", + "name": "Minereum", + "symbol": "MNE", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/702/thumb/mne.png?1587615060" + }, + { + "chainId": 1, + "address": "0x53fd2342b43ecd24aef1535bc3797f509616ce8c", + "name": "Anarchy", + "symbol": "ANARCHY", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/26583/thumb/90EWu8yp_400x400.jpg?1658891996" + }, + { + "chainId": 1, + "address": "0x63b8b7d4a3efd0735c4bffbd95b332a55e4eb851", + "name": "DigiCol", + "symbol": "DGCL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13519/thumb/DigiCol_Logo-01.png?1609372199" + }, + { + "chainId": 1, + "address": "0x42a501903afaa1086b5975773375c80e363f4063", + "name": "Cryptyk", + "symbol": "CTK", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/2729/thumb/th.jpg?1667122361" + }, + { + "chainId": 1, + "address": "0x1ab052db3216835182926a6d516762b0f1634661", + "name": "The Path Of Light", + "symbol": "YORI", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/27734/thumb/yori_icon200.png?1665563891" + }, + { + "chainId": 1, + "address": "0x356a5160f2b34bc8d88fb084745465ebbbed0174", + "name": "INVI", + "symbol": "INVI", + "decimals": 13, + "logoURI": "https://assets.coingecko.com/coins/images/17363/thumb/INVI-Ticker.png?1627374966" + }, + { + "chainId": 1, + "address": "0xa774ffb4af6b0a91331c084e1aebae6ad535e6f3", + "name": "flexUSD", + "symbol": "FLEXUSD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13323/thumb/flexUSD_2x.png?1607480702" + }, + { + "chainId": 1, + "address": "0x090fc4d5436d98e13473c4d6109de6a18bcfb0d4", + "name": "SkyToken", + "symbol": "SKY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28037/thumb/sky.png?1667129732" + }, + { + "chainId": 1, + "address": "0xea5edef1287afdf9eb8a46f9773abfc10820c61c", + "name": "EASE", + "symbol": "EASE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27228/thumb/ease_symbol-200x200.png?1664098304" + }, + { + "chainId": 1, + "address": "0x0335a7610d817aeca1bebbefbd392ecc2ed587b8", + "name": "Nitro League", + "symbol": "NITRO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21668/thumb/_X6vYBDM_400x400.jpg?1639705848" + }, + { + "chainId": 1, + "address": "0xba6b0dbb2ba8daa8f5d6817946393aef8d3a4487", + "name": "Hillstone Finance", + "symbol": "HSF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22335/thumb/logo_-_2022-01-07T094430.368.png?1641519883" + }, + { + "chainId": 1, + "address": "0x3136ef851592acf49ca4c825131e364170fa32b3", + "name": "CoinFi", + "symbol": "COFI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1709/thumb/coinfi.png?1547035969" + }, + { + "chainId": 1, + "address": "0x5892f5d533e81f9df91cd4a61886d555bae6b166", + "name": "ETHDOX", + "symbol": "ETHDOX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25352/thumb/ethdox.png?1651311929" + }, + { + "chainId": 1, + "address": "0x1c5db575e2ff833e46a2e9864c22f4b22e0b37c2", + "name": "renZEC", + "symbol": "RENZEC", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/11564/thumb/Zcash.jpg?1628072865" + }, + { + "chainId": 1, + "address": "0x120a3879da835a5af037bb2d1456bebd6b54d4ba", + "name": "Revest Finance", + "symbol": "RVST", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18622/thumb/Qma94n6waADECpde1ukBBS8iNiECcdVcxjfgubnWPE9ZT7.png?1632701737" + }, + { + "chainId": 1, + "address": "0x3918c42f14f2eb1168365f911f63e540e5a306b5", + "name": "Neural Protocol", + "symbol": "NRP", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/6313/thumb/neural-protocol.png?1548085897" + }, + { + "chainId": 1, + "address": "0x6fc2f1044a3b9bb3e43a43ec8f840843ed753061", + "name": "Robo", + "symbol": "ROBO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14611/thumb/rlogo200.jpg?1617247446" + }, + { + "chainId": 1, + "address": "0xb3ed706b564bba9cab64042f4e1b391be7bebce5", + "name": "Augmented Finance", + "symbol": "AGF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20077/thumb/200x200-agf.png?1636452467" + }, + { + "chainId": 1, + "address": "0x044727e50ff30db57fad06ff4f5846eab5ea52a2", + "name": "Kitty Inu", + "symbol": "KITTY", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/19385/thumb/2Hy412Bd_400x400.png?1635146893" + }, + { + "chainId": 1, + "address": "0x7af89c8a06719271a96e62e290ea9ed192e73fc1", + "name": "Gold Mining Members", + "symbol": "GMM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11660/thumb/gmm_logo_token.png?1592432359" + }, + { + "chainId": 1, + "address": "0x2223bf1d7c19ef7c06dab88938ec7b85952ccd89", + "name": "Kryxivia Game", + "symbol": "KXA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21225/thumb/kxa.png?1638742914" + }, + { + "chainId": 1, + "address": "0xded2583b3fbf4b381851f5031188a5a3562ab2cd", + "name": "IAB", + "symbol": "IAB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6549/thumb/iabchain.png?1547042763" + }, + { + "chainId": 1, + "address": "0x4a64515e5e1d1073e83f30cb97bed20400b66e10", + "name": "Wrapped Zcash", + "symbol": "WZEC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13239/thumb/WZEC.png?1623827266" + }, + { + "chainId": 1, + "address": "0x0407b4c4eaed35ce3c5b852bdfa1640b09eeedf4", + "name": "BlockWRK", + "symbol": "WRK", + "decimals": 4, + "logoURI": "https://assets.coingecko.com/coins/images/17282/thumb/blkwr.png?1635470283" + }, + { + "chainId": 1, + "address": "0xfd6c31bb6f05fc8db64f4b740ab758605c271fd8", + "name": "Contracoin", + "symbol": "CTCN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10801/thumb/Contracoin-symbol.png?1583881685" + }, + { + "chainId": 1, + "address": "0x20a68f9e34076b2dc15ce726d7eebb83b694702d", + "name": "DefiVille Island", + "symbol": "ISLA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14471/thumb/256.png?1616384288" + }, + { + "chainId": 1, + "address": "0x9aeb50f542050172359a0e1a25a9933bc8c01259", + "name": "OIN Finance", + "symbol": "OIN", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/12339/thumb/OIN_FInance_-_cLogo-01.png?1631796334" + }, + { + "chainId": 1, + "address": "0xc775c0c30840cb9f51e21061b054ebf1a00acc29", + "name": "Pastel", + "symbol": "PSL", + "decimals": 5, + "logoURI": "https://assets.coingecko.com/coins/images/14293/thumb/A4qGwEij_400x400.jpg?1615290394" + }, + { + "chainId": 1, + "address": "0x49d72e3973900a195a155a46441f0c08179fdb64", + "name": "Cream ETH 2", + "symbol": "CRETH2", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13568/thumb/creth2.png?1609837099" + }, + { + "chainId": 1, + "address": "0xe7094edf87a4e307590d011fb2db50219131d9ed", + "name": "World Cup Willie", + "symbol": "WILLIE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27948/thumb/YiFf3bWN_400x400.jpg?1666611450" + }, + { + "chainId": 1, + "address": "0x910dfc18d6ea3d6a7124a6f8b5458f281060fa4c", + "name": "X8X", + "symbol": "X8X", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1912/thumb/x8x.png?1547036213" + }, + { + "chainId": 1, + "address": "0x2991341d28eaea277785d20e1d878d478c7ba4c7", + "name": "FM Gallery", + "symbol": "FMG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14527/thumb/FR44th_I_400x400.jpg?1616742157" + }, + { + "chainId": 1, + "address": "0x43d4a3cd90ddd2f8f4f693170c9c8098163502ad", + "name": "Prime", + "symbol": "D2D", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21609/thumb/RJD82RrV_400x400.jpg?1639559164" + }, + { + "chainId": 1, + "address": "0xb892249939adbf6d7851864ca9a5c7d2d537af97", + "name": "Gambler Shiba", + "symbol": "GSHIBA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17130/thumb/RHzOHCyb_400x400.jpg?1626410775" + }, + { + "chainId": 1, + "address": "0x16f78145ad0b9af58747e9a97ebd99175378bd3d", + "name": "GroupDao", + "symbol": "GDO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22204/thumb/logo.png?1641194137" + }, + { + "chainId": 1, + "address": "0x249e38ea4102d0cf8264d3701f1a0e39c4f2dc3b", + "name": "UFO Gaming", + "symbol": "UFO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16801/thumb/ufo.png?1644048038" + }, + { + "chainId": 1, + "address": "0x8a6f3bf52a26a21531514e23016eeae8ba7e7018", + "name": "Multiplier", + "symbol": "MXX", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/12119/thumb/MXXlogo.png?1597306184" + }, + { + "chainId": 1, + "address": "0x00b7db6b4431e345eee5cc23d21e8dbc1d5cada3", + "name": "CyberTronchain", + "symbol": "CTC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13391/thumb/zNdoAnW.png?1608095358" + }, + { + "chainId": 1, + "address": "0xeeaa40b28a2d1b0b08f6f97bb1dd4b75316c6107", + "name": "CVI", + "symbol": "GOVI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13875/thumb/GOVI.png?1612451531" + }, + { + "chainId": 1, + "address": "0x0f71b8de197a1c84d31de0f1fa7926c365f052b3", + "name": "Arcona", + "symbol": "ARCONA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4312/thumb/icon_ARCONA_%281%29.png?1651823900" + }, + { + "chainId": 1, + "address": "0xe6716b29900a5776df4bae51338f78f102333a79", + "name": "BunnyRocket", + "symbol": "BUNNYROCKET", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/19140/thumb/OvhRGGx.png?1634527738" + }, + { + "chainId": 1, + "address": "0x135783b60cf5d71daff7a377f9eb7db8d2deab9e", + "name": "Ctrl X", + "symbol": "CUT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28068/thumb/logo.png?1667567710" + }, + { + "chainId": 1, + "address": "0x6f80310ca7f2c654691d1383149fa1a57d8ab1f8", + "name": "Silo Finance", + "symbol": "SILO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21454/thumb/y0iYKZOv_400x400.png?1639269432" + }, + { + "chainId": 1, + "address": "0x9af4f26941677c706cfecf6d3379ff01bb85d5ab", + "name": "DomRaider", + "symbol": "DRT", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/1030/thumb/domraider.png?1547223934" + }, + { + "chainId": 1, + "address": "0xc8d3dcb63c38607cb0c9d3f55e8ecce628a01c36", + "name": "Matrix Labs", + "symbol": "MATRIX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18297/thumb/matrixlabs.png?1643277367" + }, + { + "chainId": 1, + "address": "0xaaaf91d9b90df800df4f55c205fd6989c977e73a", + "name": "Monolith", + "symbol": "TKN", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/675/thumb/Monolith.png?1566296607" + }, + { + "chainId": 1, + "address": "0x70401dfd142a16dc7031c56e862fc88cb9537ce0", + "name": "Bird Money", + "symbol": "BIRD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13260/thumb/favicon-180x180.png?1611546646" + }, + { + "chainId": 1, + "address": "0xad32a8e6220741182940c5abf610bde99e737b2d", + "name": "PieDAO DOUGH v2", + "symbol": "DOUGH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12693/thumb/DOUGH2v.png?1602655308" + }, + { + "chainId": 1, + "address": "0xcbe771323587ea16dacb6016e269d7f08a7acc4e", + "name": "Spores Network", + "symbol": "SPO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17431/thumb/SPO_token.png?1627619762" + }, + { + "chainId": 1, + "address": "0xd7f0cc50ad69408ae58be033f4f85d2367c2e468", + "name": "Vera", + "symbol": "VERA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18519/thumb/JJXTVFOE_400x400.png?1632273174" + }, + { + "chainId": 1, + "address": "0xd567b5f02b9073ad3a982a099a23bf019ff11d1c", + "name": "Gamestarter", + "symbol": "GAME", + "decimals": 5, + "logoURI": "https://assets.coingecko.com/coins/images/17604/thumb/gpMi14-r_400x400.jpg?1628647205" + }, + { + "chainId": 1, + "address": "0xe796d6ca1ceb1b022ece5296226bf784110031cd", + "name": "Blind Boxes", + "symbol": "BLES", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14537/thumb/BLES-Logo-BW.png?1637158078" + }, + { + "chainId": 1, + "address": "0x634239cfa331df0291653139d1a6083b9cf705e3", + "name": "DeSpace Protocol", + "symbol": "DES", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18517/thumb/NQQu-EsT_400x400.jpg?1632267572" + }, + { + "chainId": 1, + "address": "0x300a902513815028e97fc79e92082ce6a98d3b74", + "name": "Ethersocks", + "symbol": "SOX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14943/thumb/LOGO-for-CMC-V1.png?1619429911" + }, + { + "chainId": 1, + "address": "0x6b9f031d718dded0d681c20cb754f97b3bb81b78", + "name": "GEEQ", + "symbol": "GEEQ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11953/thumb/GeeqLogoPNGTransparent-1.png?1596421769" + }, + { + "chainId": 1, + "address": "0xbc298dfaa2edda095b924f1390cc38fb7c5f6250", + "name": "Nezuko Inu", + "symbol": "NEZUKO", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/18652/thumb/O7TBGRA.png?1632759790" + }, + { + "chainId": 1, + "address": "0x2327590bb709f1505b64d1e4573d7c0dcea4350c", + "name": "Shibgeki", + "symbol": "SHIBGEKI", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/24032/thumb/Untitled-design-1.png?1646116490" + }, + { + "chainId": 1, + "address": "0xdcd85914b8ae28c1e62f1c488e1d968d5aaffe2b", + "name": "TOP Network", + "symbol": "TOP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7058/thumb/topnetwork-logo.png?1547043514" + }, + { + "chainId": 1, + "address": "0xbd4b60a138b3fce3584ea01f50c0908c18f9677a", + "name": "FinTab", + "symbol": "FNTB", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/3773/thumb/300x300_%281%29.png?1547038862" + }, + { + "chainId": 1, + "address": "0x23894dc9da6c94ecb439911caf7d337746575a72", + "name": "Geojam", + "symbol": "JAM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24648/thumb/200px_Transparent_Bubble_Token_Icon.png?1668597490" + }, + { + "chainId": 1, + "address": "0x4c19596f5aaff459fa38b0f7ed92f11ae6543784", + "name": "TrueFi", + "symbol": "TRU", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/13180/thumb/truefi_glyph_color.png?1617610941" + }, + { + "chainId": 1, + "address": "0x683239a4cab49642c6e025cf81d283f9c87bc07d", + "name": "Unicly MoonCats Collection", + "symbol": "UMOON", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15674/thumb/MoonCats.jpg?1621498102" + }, + { + "chainId": 1, + "address": "0xaecc217a749c2405b5ebc9857a16d58bdc1c367f", + "name": "Pawthereum", + "symbol": "PAWTH", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/19275/thumb/pawth.png?1635127429" + }, + { + "chainId": 1, + "address": "0xfc1cb4920dc1110fd61afab75cf085c1f871b8c6", + "name": "EdenLoop", + "symbol": "ELT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24746/thumb/voRjghoA_400x400.jpg?1648784263" + }, + { + "chainId": 1, + "address": "0x00059ae69c1622a7542edc15e8d17b060fe307b6", + "name": "AmonD", + "symbol": "AMON", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8952/thumb/AmonD_512x512.png?1563227436" + }, + { + "chainId": 1, + "address": "0x94e0bab2f6ab1f19f4750e42d7349f2740513ad5", + "name": "Unicly", + "symbol": "UNIC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14720/thumb/Unicly.png?1621132059" + }, + { + "chainId": 1, + "address": "0x1b957dc4aefeed3b4a2351a6a6d5cbfbba0cecfa", + "name": "HOQU", + "symbol": "HQX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1793/thumb/hqx.png?1547036096" + }, + { + "chainId": 1, + "address": "0xf5b5efc906513b4344ebabcf47a04901f99f09f3", + "name": "UBIX Network", + "symbol": "UBX", + "decimals": 0, + "logoURI": "https://assets.coingecko.com/coins/images/13000/thumb/UBIX.jpg?1626406542" + }, + { + "chainId": 1, + "address": "0x05d27cdd23e22ca63e7f9c7c6d1b79ede9c4fcf5", + "name": "Yearn Finance Passive Income", + "symbol": "YFPI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12640/thumb/200.png?1601369185" + }, + { + "chainId": 1, + "address": "0x14da7b27b2e0fedefe0a664118b0c9bc68e2e9af", + "name": "Blockchain Cuties Universe Governance", + "symbol": "BCUG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14425/thumb/bcug_logo.png?1616022820" + }, + { + "chainId": 1, + "address": "0xc690f7c7fcffa6a82b79fab7508c466fefdfc8c5", + "name": "Lympo", + "symbol": "LYM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2620/thumb/lympo_token.png?1547036775" + }, + { + "chainId": 1, + "address": "0x24c19f7101c1731b85f1127eaa0407732e36ecdd", + "name": "SharedStake Governance v2", + "symbol": "SGTV2", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13948/thumb/sgt-png.png?1615189100" + }, + { + "chainId": 1, + "address": "0x83e9f223e1edb3486f876ee888d76bfba26c475a", + "name": "BlockchainSpace", + "symbol": "GUILD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21271/thumb/BednjMw.png?1638857799" + }, + { + "chainId": 1, + "address": "0xf961a1fa7c781ecd23689fe1d0b7f3b6cbb2f972", + "name": "Wrapped Moon Cats", + "symbol": "MCAT20", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14387/thumb/MCAT20.png?1615803341" + }, + { + "chainId": 1, + "address": "0xa3ee21c306a700e682abcdfe9baa6a08f3820419", + "name": "Creditcoin", + "symbol": "CTC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10569/thumb/ctc.png?1644650695" + }, + { + "chainId": 1, + "address": "0x0a913bead80f321e7ac35285ee10d9d922659cb7", + "name": "DOS Network", + "symbol": "DOS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7991/thumb/DOS.png?1552900889" + }, + { + "chainId": 1, + "address": "0x995a6c0944322b7285d0712824acf0cf9bf3993a", + "name": "First Ever NFT", + "symbol": "FEN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24336/thumb/FEN_TOKEN_COIN_edited.png?1647361805" + }, + { + "chainId": 1, + "address": "0x7be00ed6796b21656732e8f739fc1b8f1c53da0d", + "name": "ACDX Exchange", + "symbol": "ACXT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13293/thumb/ACDX_Original_05.png?1607064933" + }, + { + "chainId": 1, + "address": "0x0affa06e7fbe5bc9a764c979aa66e8256a631f02", + "name": "Polybius", + "symbol": "PLBT", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/766/thumb/polybius.png?1547034516" + }, + { + "chainId": 1, + "address": "0x31ea0de8119307aa264bb4b38727aab4e36b074f", + "name": "Bit Store", + "symbol": "STORE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20463/thumb/bit_store.PNG?1637064215" + }, + { + "chainId": 1, + "address": "0x944eee930933be5e23b690c8589021ec8619a301", + "name": "Munch", + "symbol": "MUNCH", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/14804/thumb/logo_-_2021-04-16T082627.266.png?1618532828" + }, + { + "chainId": 1, + "address": "0x9c197c4b58527faaab67cb35e3145166b23d242e", + "name": "HashNet BitEco", + "symbol": "HNB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8126/thumb/GyEELaxS_400x400.jpg?1555226121" + }, + { + "chainId": 1, + "address": "0x3e5d9d8a63cc8a88748f229999cf59487e90721e", + "name": "MetalSwap", + "symbol": "XMT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22075/thumb/Logo_COIN_-_Gradiente.png?1670579810" + }, + { + "chainId": 1, + "address": "0xe8ff5c9c75deb346acac493c463c8950be03dfba", + "name": "VIBE", + "symbol": "VIBE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/948/thumb/vibe.png?1547034809" + }, + { + "chainId": 1, + "address": "0x89b69f2d1adffa9a253d40840b6baa7fc903d697", + "name": "Dione", + "symbol": "DIONE", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/26931/thumb/dione_200x200.png?1660886063" + }, + { + "chainId": 1, + "address": "0x6400b5522f8d448c0803e6245436dd1c81df09ce", + "name": "Conscious Value Network", + "symbol": "CVNT", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/5158/thumb/cvnt.png?1634711407" + }, + { + "chainId": 1, + "address": "0xe7f4c89032a2488d327323548ab0459676269331", + "name": "WAIFU Vault NFTX ", + "symbol": "WAIFU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17045/thumb/waifu.png?1626147639" + }, + { + "chainId": 1, + "address": "0x997507cc49fbf0cd6ce5e1ee543218556fafdebc", + "name": "Bitenium", + "symbol": "BT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14618/thumb/BT-token-logo-200.png?1617262055" + }, + { + "chainId": 1, + "address": "0x4fee21439f2b95b72da2f9f901b3956f27fe91d5", + "name": "FrogSwap", + "symbol": "FROG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21449/thumb/logo.54d7099f.png?1639174332" + }, + { + "chainId": 1, + "address": "0xa5e85cfb2c6db032dad992516a6f48529581cba3", + "name": "ONTPAY", + "symbol": "ONTP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27496/thumb/ezgif.com-gif-maker.jpg?1664271339" + }, + { + "chainId": 1, + "address": "0x02f2d4a04e6e01ace88bd2cd632875543b2ef577", + "name": "PKG", + "symbol": "PKG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5422/thumb/pkg-token.png?1548331357" + }, + { + "chainId": 1, + "address": "0x0af5855a348c58a8bbf65bcc7b9bbacd0e7e2238", + "name": "Ulanco", + "symbol": "UAC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20662/thumb/udacity_logo_icon_169367.png?1637545628" + }, + { + "chainId": 1, + "address": "0x066798d9ef0833ccc719076dab77199ecbd178b0", + "name": "SakeSwap", + "symbol": "SAKE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12428/thumb/sake.png?1599777402" + }, + { + "chainId": 1, + "address": "0x1beef31946fbbb40b877a72e4ae04a8d1a5cee06", + "name": "Parachute", + "symbol": "PAR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7590/thumb/Parachute_Logo.png?1560918207" + }, + { + "chainId": 1, + "address": "0x635d081fd8f6670135d8a3640e2cf78220787d56", + "name": "Add xyz NEW ", + "symbol": "ADD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14351/thumb/ADDBK.png?1622444542" + }, + { + "chainId": 1, + "address": "0xa26cbb76156090f4b40a1799a220fc4c946afb3c", + "name": "Young", + "symbol": "YNG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26390/thumb/YNG.png?1657752304" + }, + { + "chainId": 1, + "address": "0x9301466c40b94942af9ba63cbaea1c784ff219b2", + "name": "eCeltron", + "symbol": "ECTR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27511/thumb/vW1LS7PgPcq9R39knqB_zb9bsVoI8yknrUQ5yIA3mVQp9gJDjSP7C-CMjZeVhavUoPSI32aCLlIwtvlyIXOdk8oKppSqEQ6ZckU9DO4Z429LUJV2vfAnsknft6Gl8bkKjktX2nZXYRHagLRfCgvcVvjDbr-EcmNi3gqgBN2liRqHNmaXJ809xCnnzIxA1Yf2fKX-PlZqxShwMSL7VICFLYo61S23HvL5nK3f4kb-94IQ5cd.jpeg?1664350712" + }, + { + "chainId": 1, + "address": "0xcdeeeaaf2e96c25c679155e3854169c2f336b931", + "name": "MetaverseAir", + "symbol": "MVRS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21426/thumb/mvrs.jpg?1639117594" + }, + { + "chainId": 1, + "address": "0x2c9c19ce3b15ae77c6d80aec3c1194cfd6f7f3fa", + "name": "2crazyNFT", + "symbol": "2CRZ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16797/thumb/2crz.png?1635525909" + }, + { + "chainId": 1, + "address": "0x84119cb33e8f590d75c2d6ea4e6b0741a7494eda", + "name": "Giga Watt", + "symbol": "WTT", + "decimals": 0, + "logoURI": "https://assets.coingecko.com/coins/images/907/thumb/wtt.png?1547034739" + }, + { + "chainId": 1, + "address": "0x2e6539edc3b76f1e21b71d214527faba875f70f3", + "name": "Yearn Finance DOT", + "symbol": "YFDOT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12791/thumb/logo_%2815%29.png?1602580328" + }, + { + "chainId": 1, + "address": "0xb8f78ae3df5c541657161194ddbd0c5b44d1bee9", + "name": "Harmony Token", + "symbol": "HARM", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/27237/thumb/Untitled_design_%2815%29.png?1664068375" + }, + { + "chainId": 1, + "address": "0x744d70fdbe2ba4cf95131626614a1763df805b9e", + "name": "Status", + "symbol": "SNT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/779/thumb/status.png?1548610778" + }, + { + "chainId": 1, + "address": "0xf009f5531de69067435e32c4b9d36077f4c4a673", + "name": "Unvest", + "symbol": "UNV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18119/thumb/unvest.PNG?1630554868" + }, + { + "chainId": 1, + "address": "0x77777777772cf0455fb38ee0e75f38034dfa50de", + "name": "XY Finance", + "symbol": "XY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21541/thumb/xy.png?1639913622" + }, + { + "chainId": 1, + "address": "0x6c3f90f043a72fa612cbac8115ee7e52bde6e490", + "name": "LP 3pool Curve", + "symbol": "3CRV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12972/thumb/3pool_128.png?1603948039" + }, + { + "chainId": 1, + "address": "0x695106ad73f506f9d0a9650a78019a93149ae07c", + "name": "BNS Token OLD ", + "symbol": "BNS", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/11926/thumb/HS7eNJdt_400x400.jpg?1596170654" + }, + { + "chainId": 1, + "address": "0x9ee91f9f426fa633d227f7a9b000e28b9dfd8599", + "name": "Lido Staked Matic", + "symbol": "STMATIC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24185/thumb/stMATIC.png?1646789287" + }, + { + "chainId": 1, + "address": "0xfd957f21bd95e723645c07c48a2d8acb8ffb3794", + "name": "Ethereum Meta", + "symbol": "ETHM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6586/thumb/ethereum-meta.png?1548125409" + }, + { + "chainId": 1, + "address": "0x3b544e6fcf6c8dce9d8b45a4fdf21c9b02f9fda9", + "name": "Giftedhands", + "symbol": "GHD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12540/thumb/K-8uHktJ.png?1600644856" + }, + { + "chainId": 1, + "address": "0x8c3ee4f778e282b59d42d693a97b80b1ed80f4ee", + "name": "SatoPay", + "symbol": "STOP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12220/thumb/stop.png?1598241582" + }, + { + "chainId": 1, + "address": "0x464ebe77c293e473b48cfe96ddcf88fcf7bfdac0", + "name": "KRYLL", + "symbol": "KRL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2807/thumb/krl.png?1547036979" + }, + { + "chainId": 1, + "address": "0xd4fa1460f537bb9085d22c7bccb5dd450ef28e3a", + "name": "Populous", + "symbol": "PPT", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/753/thumb/populous.png?1548331905" + }, + { + "chainId": 1, + "address": "0xde2f7766c8bf14ca67193128535e5c7454f8387c", + "name": "Metadium", + "symbol": "META", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5247/thumb/META_Logo_black.png?1548833790" + }, + { + "chainId": 1, + "address": "0x888888435fde8e7d4c54cab67f206e4199454c60", + "name": "DFX Finance", + "symbol": "DFX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14091/thumb/DFX.png?1614320944" + }, + { + "chainId": 1, + "address": "0xc2dd7a72f16cfa5dd8f9f5b49d251b2fd2163ff6", + "name": "SocialxClub", + "symbol": "SXC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27819/thumb/coingesxc.png?1665977868" + }, + { + "chainId": 1, + "address": "0x606ce698aea1dca5a2627a4583da13a340667f09", + "name": "SaveBritney", + "symbol": "SBRT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17140/thumb/4NqipCv__400x400_%281%29.jpg?1626589552" + }, + { + "chainId": 1, + "address": "0xd487892bb4c57edbe7ab401d9fe801c8fe6473f5", + "name": "Uhive", + "symbol": "HVE2", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3811/thumb/hve2.png?1639045485" + }, + { + "chainId": 1, + "address": "0x16980b3b4a3f9d89e33311b5aa8f80303e5ca4f8", + "name": "KIRA Network", + "symbol": "KEX", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/13232/thumb/avatar.png?1622601779" + }, + { + "chainId": 1, + "address": "0xb19189fb36c816f3e0f16065057b07b790998fdc", + "name": "Serum SER", + "symbol": "SER", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27757/thumb/Untitled_design_%2810%29.png?1665824038" + }, + { + "chainId": 1, + "address": "0x309627af60f0926daa6041b8279484312f2bf060", + "name": "USD Bancor", + "symbol": "USDB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10619/thumb/busd.png?1581026228" + }, + { + "chainId": 1, + "address": "0x04a020325024f130988782bd5276e53595e8d16e", + "name": "Herbalist", + "symbol": "HERB", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/6892/thumb/herbalist-token-twitter.png?1547043247" + }, + { + "chainId": 1, + "address": "0x20cd2e7ec8f5d8b337fe46a4f565ccef1561b9a9", + "name": "ESG", + "symbol": "ESG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24932/thumb/esg.png?1649397514" + }, + { + "chainId": 1, + "address": "0x7c81542ed859a2061538fee22b6544a235b9557d", + "name": "Combo", + "symbol": "COMB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13053/thumb/7zYe50X.png?1604703767" + }, + { + "chainId": 1, + "address": "0x5845cd0205b5d43af695412a79cf7c1aeddb060f", + "name": "ShardingDAO", + "symbol": "SHD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14700/thumb/I1QLkPTq_400x400.png?1617836174" + }, + { + "chainId": 1, + "address": "0x4b4701f3f827e1331fb22ff8e2beac24b17eb055", + "name": "DistX", + "symbol": "DISTX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12291/thumb/DISTX-icon.png?1598885812" + }, + { + "chainId": 1, + "address": "0x58aab16f5ba19827505bb4fe0a867fa0b7977e72", + "name": "Icel Idman Yurdu", + "symbol": "MIY", + "decimals": 2, + "logoURI": "https://assets.coingecko.com/coins/images/25981/thumb/20570.png?1655113476" + }, + { + "chainId": 1, + "address": "0xcccd1ba9f7acd6117834e0d28f25645decb1736a", + "name": "ECOx", + "symbol": "ECOX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27962/thumb/_ECOx.png?1666751574" + }, + { + "chainId": 1, + "address": "0x9064c91e51d7021a85ad96817e1432abf6624470", + "name": "ShineChain", + "symbol": "SHE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6035/thumb/shinechain.png?1547041982" + }, + { + "chainId": 1, + "address": "0x00166a5b93fd4f87eca1c267d31d82df3f133a7f", + "name": "Incube Chain", + "symbol": "ICB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26323/thumb/photo_2022-07-06_16-58-56.jpg?1657248479" + }, + { + "chainId": 1, + "address": "0xb2617246d0c6c0087f18703d576831899ca94f01", + "name": "Zignaly", + "symbol": "ZIG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14796/thumb/zignaly.jpg?1618496339" + }, + { + "chainId": 1, + "address": "0x5e92624ff08194ad65c982861f69889b07c3d3e8", + "name": "LuxTTO", + "symbol": "LXTO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26001/thumb/luxtto_logo%28200x200%29.png?1655277426" + }, + { + "chainId": 1, + "address": "0xcbfef8fdd706cde6f208460f2bf39aa9c785f05d", + "name": "Kine Protocol", + "symbol": "KINE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14339/thumb/kine.jpg?1615474456" + }, + { + "chainId": 1, + "address": "0x1c65c261cb89178b02cf2aee20058b992787d770", + "name": "TORQ Coin", + "symbol": "TORQ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3486/thumb/torq-coin.png?1547038229" + }, + { + "chainId": 1, + "address": "0x442bc47357919446eabc18c7211e57a13d983469", + "name": "BeeChat", + "symbol": "CHAT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14386/thumb/ezgif-6-b78b8423d870.png?1615803294" + }, + { + "chainId": 1, + "address": "0x8811e4dd5ec5eb8764b97cc814b1339089717ada", + "name": "Bithachi", + "symbol": "BITH", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/11765/thumb/bith3.png?1593656342" + }, + { + "chainId": 1, + "address": "0xca75c43f8c9afd356c585ce7aa4490b48a95c466", + "name": "Inari", + "symbol": "INARI", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/16795/thumb/token_logo_%281%29.png?1625036828" + }, + { + "chainId": 1, + "address": "0xbb340a2eaf55c5e67a5a05fe5ceed9b9702d76f4", + "name": "BolttCoin", + "symbol": "BOLTT", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/3928/thumb/Ticker.jpeg?1551231549" + }, + { + "chainId": 1, + "address": "0xf1290473e210b2108a85237fbcd7b6eb42cc654f", + "name": "HedgeTrade", + "symbol": "HEDG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7196/thumb/to3Vj4EZ_400x400.jpg?1547043758" + }, + { + "chainId": 1, + "address": "0x6b4fc67b7866121036b7e36ba202b0c6bab8cd82", + "name": "VendettaDAO", + "symbol": "V", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27029/thumb/Vendetta-DAO-200x200.png?1661493958" + }, + { + "chainId": 1, + "address": "0x4730fb1463a6f1f44aeb45f6c5c422427f37f4d0", + "name": "4thpillar technologies", + "symbol": "FOUR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3434/thumb/four-ticker-2021-256x256.png?1617702287" + }, + { + "chainId": 1, + "address": "0x1559fa1b8f28238fd5d76d9f434ad86fd20d1559", + "name": "EDEN", + "symbol": "EDEN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17470/thumb/Iyc0XM5-_400x400.jpg?1628254655" + }, + { + "chainId": 1, + "address": "0x83d4cf08be796a08041a71152b653c828211c866", + "name": "LilFlokiCeo", + "symbol": "LILFLOKICEO", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/19860/thumb/ceo.jpeg?1636076347" + }, + { + "chainId": 1, + "address": "0x2c4e8f2d746113d0696ce89b35f0d8bf88e0aeca", + "name": "OST", + "symbol": "OST", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1367/thumb/ost.jpg?1547035393" + }, + { + "chainId": 1, + "address": "0x6e5970dbd6fc7eb1f29c6d2edf2bc4c36124c0c1", + "name": "Polytrade", + "symbol": "TRADE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16416/thumb/Logo_colored_200.png?1623979654" + }, + { + "chainId": 1, + "address": "0x93dfaf57d986b9ca77df9376c50878e013d9c7c8", + "name": "Unique One", + "symbol": "RARE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13458/thumb/Logo_Unique.png?1612757355" + }, + { + "chainId": 1, + "address": "0x06677dc4fe12d3ba3c7ccfd0df8cd45e4d4095bf", + "name": "Work Quest", + "symbol": "WQT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14662/thumb/WQT-1_%281%29.png?1627652762" + }, + { + "chainId": 1, + "address": "0xdd690d8824c00c84d64606ffb12640e932c1af56", + "name": "Tavittcoin", + "symbol": "TAVITT", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/5155/thumb/tavitt-logo.png?1547040566" + }, + { + "chainId": 1, + "address": "0xd31a9d28d66a1f7e62b5565416ea14607690f788", + "name": "HealthChainUS", + "symbol": "HCUT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11868/thumb/60633927_588600498303961_3291974703035449344_n.png?1595496238" + }, + { + "chainId": 1, + "address": "0xfc3718cd921549a2cb67636b82a01d067726c428", + "name": "Its Not Art", + "symbol": "NA", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/27039/thumb/NA.png?1661501367" + }, + { + "chainId": 1, + "address": "0x4c38d0e726b6c86f64c1b281348e725973542043", + "name": "Stand Share", + "symbol": "SAS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13543/thumb/sac.jpg?1609648278" + }, + { + "chainId": 1, + "address": "0xdc732972811d25de61808b3d6e0d2ac44a7f036f", + "name": "GOSH Realm", + "symbol": "GOSH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24768/thumb/Untitled.png?1648817598" + }, + { + "chainId": 1, + "address": "0xb6ed7644c69416d67b522e20bc294a9a9b405b31", + "name": "0xBitcoin", + "symbol": "0XBTC", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/4454/thumb/0xbtc.png?1561603765" + }, + { + "chainId": 1, + "address": "0x9ad37205d608b8b219e6a2573f922094cec5c200", + "name": "Izumi Finance", + "symbol": "IZI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21791/thumb/izumi-logo-symbol.png?1640053924" + }, + { + "chainId": 1, + "address": "0x115ec79f1de567ec68b7ae7eda501b406626478e", + "name": "Carry", + "symbol": "CRE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3994/thumb/Carry.png?1592402610" + }, + { + "chainId": 1, + "address": "0xeca82185adce47f39c684352b0439f030f860318", + "name": "PERL eco", + "symbol": "PERL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4682/thumb/PERL.eco-Icon-green_6x.png?1624365340" + }, + { + "chainId": 1, + "address": "0x70bef3bb2f001da2fddb207dae696cd9faff3f5d", + "name": "Ninja Squad", + "symbol": "NST", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22248/thumb/unnamed.jpg?1641277417" + }, + { + "chainId": 1, + "address": "0x9b6db7597a74602a5a806e33408e7e2dafa58193", + "name": "Spice DAO", + "symbol": "SPICE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21086/thumb/KfMQkToD_400x400.jpg?1638312662" + }, + { + "chainId": 1, + "address": "0x2ed2cc2c858a8a8219fd2f2d9e170285dbd02756", + "name": "Sports Bet", + "symbol": "SBET", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25312/thumb/sbet_logo_256.png?1651214220" + }, + { + "chainId": 1, + "address": "0x0eb3032bcac2be1fa95e296442f225edb80fc3cd", + "name": "Aster", + "symbol": "ATC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17325/thumb/atc.png?1627311439" + }, + { + "chainId": 1, + "address": "0x20bc832ca081b91433ff6c17f85701b6e92486c5", + "name": "rETH2", + "symbol": "RETH2", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16570/thumb/red256.png?1624495231" + }, + { + "chainId": 1, + "address": "0x12aef5c60c2c86c8ecd3079f22f285f326371340", + "name": "hiSAND33", + "symbol": "HISAND33", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27006/thumb/logo.ab86781.png?1661337838" + }, + { + "chainId": 1, + "address": "0x75b02aa1084a12b8729f5acbe1078bd450abe552", + "name": "ASEC Frontier", + "symbol": "ASEC", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/15939/thumb/58947b_49a936ef42ab4b7da4d2beb95852d49a_mv2.png?1622459327" + }, + { + "chainId": 1, + "address": "0x91a5de30e57831529a3c1af636a78a7e4e83f3aa", + "name": "Hulk Inu", + "symbol": "HULK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26358/thumb/HULKINU_LOGO.png?1657593698" + }, + { + "chainId": 1, + "address": "0xabe9b2e4bbd5a8c718752c41254ed81aae7d98bf", + "name": "P2P", + "symbol": "P2P", + "decimals": 10, + "logoURI": "https://assets.coingecko.com/coins/images/12486/thumb/p2p.png?1600207324" + }, + { + "chainId": 1, + "address": "0xf7e40af830a2ecbfe72c5210c1ca272e3aa7ca1b", + "name": "Cultiplan", + "symbol": "CTPL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15798/thumb/Cultiplan_200x200_logo.png?1621927264" + }, + { + "chainId": 1, + "address": "0xf2354f740f31704820f6fcfba70b9da065459b62", + "name": "Istardust", + "symbol": "ISDT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12568/thumb/istardust.png?1600840530" + }, + { + "chainId": 1, + "address": "0x77f9cf0bd8c500cffdf420e72343893aecc2ec0b", + "name": "Laika", + "symbol": "LAIKA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26717/thumb/Laikacmcfinal.png?1659857807" + }, + { + "chainId": 1, + "address": "0x6c862f803ff42a97d4a483ab761256ad8c90f4f8", + "name": "ELIS", + "symbol": "XLS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13613/thumb/Elis-Symbol-Green.png?1610285892" + }, + { + "chainId": 1, + "address": "0x78223d31298107f3e310b09797b07967832046a6", + "name": "ROYAL SMART FUTURE TOKEN", + "symbol": "RSFT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26630/thumb/RSF200x200.png?1659325435" + }, + { + "chainId": 1, + "address": "0x2da719db753dfa10a62e140f436e1d67f2ddb0d6", + "name": "Cere Network", + "symbol": "CERE", + "decimals": 10, + "logoURI": "https://assets.coingecko.com/coins/images/20008/thumb/cere.png?1636366576" + }, + { + "chainId": 1, + "address": "0x65d9bc970aa9b2413027fa339f7f179b3f3f2604", + "name": "Chemix Ecology Governance", + "symbol": "KUN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13177/thumb/kun_logo.png?1605923919" + }, + { + "chainId": 1, + "address": "0x3e8ffc8c3cb0db3081df85dec91b63abbbe99f71", + "name": "Mixsome", + "symbol": "SOME", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15005/thumb/mixsome.PNG?1619412351" + }, + { + "chainId": 1, + "address": "0x190fb342aa6a15eb82903323ae78066ff8616746", + "name": "Umbrella Coin", + "symbol": "UMC", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/1700/thumb/umbrellacoin.jpg?1547035958" + }, + { + "chainId": 1, + "address": "0xb5588c411ba0bb7d38865fdc51d082d004e519f7", + "name": "WAIT", + "symbol": "WAIT", + "decimals": 0, + "logoURI": "https://assets.coingecko.com/coins/images/26860/thumb/wait_etherscan_logo.png?1660529678" + }, + { + "chainId": 1, + "address": "0x4290563c2d7c255b5eec87f2d3bd10389f991d68", + "name": "UnlimitedIP", + "symbol": "UIP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2642/thumb/unlimitedip.png?1547036818" + }, + { + "chainId": 1, + "address": "0xe84d9e32dc8ce819b8d6c83e50edafd46c6354db", + "name": "Koi Network", + "symbol": "KOI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26221/thumb/KXc9agT1_400x400.jpeg?1656641746" + }, + { + "chainId": 1, + "address": "0x865377367054516e17014ccded1e7d814edc9ce4", + "name": "Dola", + "symbol": "DOLA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14287/thumb/dola.png?1667738374" + }, + { + "chainId": 1, + "address": "0xc528c28fec0a90c083328bc45f587ee215760a0f", + "name": "Endor Protocol", + "symbol": "EDR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3683/thumb/0b805574-ef0d-41dc-b518-8d6148bf4716.png?1547038680" + }, + { + "chainId": 1, + "address": "0x155040625d7ae3e9cada9a73e3e44f76d3ed1409", + "name": "Revomon", + "symbol": "REVO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14759/thumb/revomon.jpeg?1618243538" + }, + { + "chainId": 1, + "address": "0xc0ae17eb994fa828540ffa53776b3830233a1b02", + "name": "Element Black", + "symbol": "ELT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25160/thumb/4TCtUKHs_400x400.jpg?1650464346" + }, + { + "chainId": 1, + "address": "0x601a0ee18e9dcdc70658d8b87a748e11344d3a45", + "name": "APEX Protocol", + "symbol": "APXP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21542/thumb/APXP-logo_200x200.png?1639448329" + }, + { + "chainId": 1, + "address": "0xdd2a36ae937bc134ea694d77fc7e2e36f5d86de0", + "name": "WELD", + "symbol": "WELD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18544/thumb/weld.png?1661497968" + }, + { + "chainId": 1, + "address": "0xe44aa0354341f02d51c14fe2248b005b2e3372d4", + "name": "Dejitaru Kaida", + "symbol": "KAIDA", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/27867/thumb/Dejitaru_Kaida.jpeg?1666153265" + }, + { + "chainId": 1, + "address": "0xb12494c8824fc069757f47d177e666c571cd49ae", + "name": "ImpactXP", + "symbol": "IMPACTXP", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/21118/thumb/TJpEKVBW_400x400.jpg?1638340573" + }, + { + "chainId": 1, + "address": "0x33f391f4c4fe802b70b77ae37670037a92114a7c", + "name": "Burp", + "symbol": "BURP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17317/thumb/Big_Town_Chef_-__BURP_-_Avatar_3x.png?1646202255" + }, + { + "chainId": 1, + "address": "0xd38bb40815d2b0c2d2c866e0c72c5728ffc76dd9", + "name": "Symbiosis Finance", + "symbol": "SIS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20805/thumb/SymbiosisFinance_logo-150x150.jpeg?1637707064" + }, + { + "chainId": 1, + "address": "0x55d1d16fb42fce47b899010c996a3a31f6db8fd6", + "name": "Bully Inu", + "symbol": "BINU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22155/thumb/gM-mFn7L_400x400.jpg?1640941304" + }, + { + "chainId": 1, + "address": "0x6c22b815904165f3599f0a4a092d458966bd8024", + "name": "Bit Public Talent Network", + "symbol": "BPTN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8412/thumb/7f346702db390a289f5770f008563173.png?1558077057" + }, + { + "chainId": 1, + "address": "0x01597e397605bf280674bf292623460b4204c375", + "name": "Bent Finance", + "symbol": "BENT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21274/thumb/bent-logo-200x200.png?1638861325" + }, + { + "chainId": 1, + "address": "0x8dbf9a4c99580fc7fd4024ee08f3994420035727", + "name": "ECO", + "symbol": "ECO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27961/thumb/_ECO.png?1666751247" + }, + { + "chainId": 1, + "address": "0x07d9e49ea402194bf48a8276dafb16e4ed633317", + "name": "Dalecoin", + "symbol": "DALC", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/932/thumb/dalecoin.png?1547791491" + }, + { + "chainId": 1, + "address": "0x1bc9f31c327ce04b6fa9d56fd84c14cc0b0a4f47", + "name": "Hygenercoin", + "symbol": "HG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8817/thumb/60762471_431874227611586_5376521021266329600_n.png?1561551785" + }, + { + "chainId": 1, + "address": "0x9bf02cf6b0435a0523e6f6e0d2f35a920144f5fa", + "name": "DeFi11", + "symbol": "D11", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18174/thumb/wjuVH0sC_400x400.jpg?1631267074" + }, + { + "chainId": 1, + "address": "0x785c34312dfa6b74f6f1829f79ade39042222168", + "name": "Bumper", + "symbol": "BUMP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17822/thumb/Bumper-Icon-Inverse-200.png?1629344025" + }, + { + "chainId": 1, + "address": "0xfa99a87b14b02e2240c79240c5a20f945ca5ef76", + "name": "GG", + "symbol": "GGTK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13666/thumb/ggtk.png?1629348879" + }, + { + "chainId": 1, + "address": "0x6fe355c62c6faf6946ce888ffaba9fd12355ae27", + "name": "HashBX", + "symbol": "HBX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7091/thumb/46489646-905693182887642-8012727636373536768-n.png?1550724892" + }, + { + "chainId": 1, + "address": "0x7f3edcdd180dbe4819bd98fee8929b5cedb3adeb", + "name": "xToken", + "symbol": "XTK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14089/thumb/xtk.png?1659278233" + }, + { + "chainId": 1, + "address": "0x9afb950948c2370975fb91a441f36fdc02737cd4", + "name": "Huobi Fil", + "symbol": "HFIL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14109/thumb/HFIL.png?1614334127" + }, + { + "chainId": 1, + "address": "0x016396044709eb3edc69c44f4d5fa6996917e4e8", + "name": "KingXChain", + "symbol": "KXC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5690/thumb/kingxchain.png?1547975313" + }, + { + "chainId": 1, + "address": "0x40986a85b4cfcdb054a6cbfb1210194fee51af88", + "name": "UniFarm", + "symbol": "UFARM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15247/thumb/ufarm.jpeg?1620218765" + }, + { + "chainId": 1, + "address": "0xf98e38c3f287304a1f2d4879e741d2bf55474e84", + "name": "Shaman King Inu OLD ", + "symbol": "SHAMAN", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/20189/thumb/shamna.png?1636611907" + }, + { + "chainId": 1, + "address": "0xcfe4f03c3afbb9857b29fc706180bf0044900d59", + "name": "Golden Ratio Coin", + "symbol": "GOLDR", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/10363/thumb/original_GRO-768x768.png?1578612119" + }, + { + "chainId": 1, + "address": "0xa6422e3e219ee6d4c1b18895275fe43556fd50ed", + "name": "Stobox", + "symbol": "STBU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12637/thumb/exchange.png?1623764906" + }, + { + "chainId": 1, + "address": "0xe8e06a5613dc86d459bc8fb989e173bb8b256072", + "name": "Feyorra", + "symbol": "FEY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13689/thumb/1_XiKKk5_400x400.jpg?1610953208" + }, + { + "chainId": 1, + "address": "0x68037790a0229e9ce6eaa8a99ea92964106c4703", + "name": "Parallel", + "symbol": "PAR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14153/thumb/par_round_200.png?1614670422" + }, + { + "chainId": 1, + "address": "0x47110d43175f7f2c2425e7d15792acc5817eb44f", + "name": "Bankless DeFi Innovation Index", + "symbol": "GMI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22238/thumb/GMI_LOGO-07.png?1641266293" + }, + { + "chainId": 1, + "address": "0x92cfbec26c206c90aee3b7c66a9ae673754fab7e", + "name": "OpenLeverage", + "symbol": "OLE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26098/thumb/256x256_OLE_Token_Logo.png?1655859035" + }, + { + "chainId": 1, + "address": "0x419d0d8bdd9af5e606ae2232ed285aff190e711b", + "name": "FUN Token", + "symbol": "FUN", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/761/thumb/funfair.png?1592404368" + }, + { + "chainId": 1, + "address": "0x9a96e767bfcce8e80370be00821ed5ba283d4a17", + "name": "GOGO Finance", + "symbol": "GOGO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13857/thumb/gogofinance.png?1612404853" + }, + { + "chainId": 1, + "address": "0xa12d7e5319f5b43476ef19d1569e10097cacdfe2", + "name": "Myth", + "symbol": "MYTH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17593/thumb/GT_Logo-01.png?1628581478" + }, + { + "chainId": 1, + "address": "0xc7283b66eb1eb5fb86327f08e1b5816b0720212b", + "name": "Tribe", + "symbol": "TRIBE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14575/thumb/tribe.PNG?1617487954" + }, + { + "chainId": 1, + "address": "0x92e52a1a235d9a103d970901066ce910aacefd37", + "name": "U CASH", + "symbol": "UCASH", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/2901/thumb/ucash.png?1547037074" + }, + { + "chainId": 1, + "address": "0x018fb5af9d015af25592a014c4266a84143de7a0", + "name": "MP3", + "symbol": "MP3", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13897/thumb/1_sq13-ssNvv2APEFcy8dWJg.png?1612690862" + }, + { + "chainId": 1, + "address": "0x9cb2f26a23b8d89973f08c957c4d7cdf75cd341c", + "name": "Digital Rand", + "symbol": "DZAR", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/9841/thumb/logo200_%281%29.png?1572577311" + }, + { + "chainId": 1, + "address": "0xb17548c7b510427baac4e267bea62e800b247173", + "name": "Swarm Markets", + "symbol": "SMT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17488/thumb/swarm-SMT-token-symbol_200x200.png?1655373659" + }, + { + "chainId": 1, + "address": "0xe5597f0723eeaba1b26948e06f008bf0fc1e37e6", + "name": "GM", + "symbol": "GM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20066/thumb/PQ29R4D.png?1636768949" + }, + { + "chainId": 1, + "address": "0x86ed939b500e121c0c5f493f399084db596dad20", + "name": "SpaceChain ERC 20 ", + "symbol": "SPC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6659/thumb/Spacechain.jpg?1547042861" + }, + { + "chainId": 1, + "address": "0xddf7fd345d54ff4b40079579d4c4670415dbfd0a", + "name": "SocialGood", + "symbol": "SG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3948/thumb/logo_200.png?1596589686" + }, + { + "chainId": 1, + "address": "0x549020a9cb845220d66d3e9c6d9f9ef61c981102", + "name": "Sidus", + "symbol": "SIDUS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21401/thumb/SIDUS_coin_logo.png?1639405031" + }, + { + "chainId": 1, + "address": "0xca1308e38340c69e848061aa2c3880daeb958187", + "name": "Hackerlabs DAO", + "symbol": "HLD", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/24670/thumb/YFYHhGlJ_400x400.jpg?1648540176" + }, + { + "chainId": 1, + "address": "0xb827f14c95c32ae2375618ea5e505b65b5e3914d", + "name": "Webpay", + "symbol": "PAY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26429/thumb/logo.jpg?1657930482" + }, + { + "chainId": 1, + "address": "0xba41ddf06b7ffd89d1267b5a93bfef2424eb2003", + "name": "Mythos", + "symbol": "MYTH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28045/thumb/Mythos_Logos_200x200.png?1667269609" + }, + { + "chainId": 1, + "address": "0xdae6f68da3bab6866742a7f4050366f6ac48760d", + "name": "GUSS ONE", + "symbol": "GUSS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8509/thumb/gussone_mid.png?1559030931" + }, + { + "chainId": 1, + "address": "0x687bfc3e73f6af55f0ccca8450114d107e781a0e", + "name": "QChi", + "symbol": "QCH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5392/thumb/qchi.png?1548607478" + }, + { + "chainId": 1, + "address": "0x9ffc3bcde7b68c46a6dc34f0718009925c1867cb", + "name": "Huobi Polkadot", + "symbol": "HDOT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14107/thumb/hdot.png?1614333466" + }, + { + "chainId": 1, + "address": "0xc9fe6e1c76210be83dc1b5b20ec7fd010b0b1d15", + "name": "Fringe Finance", + "symbol": "FRIN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13222/thumb/frin.png?1642932787" + }, + { + "chainId": 1, + "address": "0x10633216e7e8281e33c86f02bf8e565a635d9770", + "name": "Dvision Network", + "symbol": "DVI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13020/thumb/WGAhHOLv_400x400.png?1604396086" + }, + { + "chainId": 1, + "address": "0x6e8908cfa881c9f6f2c64d3436e7b80b1bf0093f", + "name": "Bistroo", + "symbol": "BIST", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15645/thumb/bistroo.png?1659342030" + }, + { + "chainId": 1, + "address": "0x47d920a911cb9a0ad4618698ba3fef800abc868d", + "name": "The Golden Dog", + "symbol": "DOG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26542/thumb/DOG-200x200.png?1658733855" + }, + { + "chainId": 1, + "address": "0xdc8af07a7861bedd104b8093ae3e9376fc8596d2", + "name": "RocketX exchange", + "symbol": "RVF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14728/thumb/avatar-correct-size-official.png?1668391022" + }, + { + "chainId": 1, + "address": "0x5a9bf6badcd24fe0d58e1087290c2fe2c728736a", + "name": "Block 18", + "symbol": "18C", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7605/thumb/block_18.jpg?1548828772" + }, + { + "chainId": 1, + "address": "0x04a5198063e45d84b1999516d3228167146417a6", + "name": "ShiraINU", + "symbol": "SHR", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/20244/thumb/3234bad559608.png?1638363295" + }, + { + "chainId": 1, + "address": "0xc6bdb96e29c38dc43f014eed44de4106a6a8eb5f", + "name": "Inu Inu", + "symbol": "INUINU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26391/thumb/logo_square_200.png?1657752596" + }, + { + "chainId": 1, + "address": "0x009c43b42aefac590c719e971020575974122803", + "name": "Bibox", + "symbol": "BIX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1441/thumb/bibox-token.png?1547035519" + }, + { + "chainId": 1, + "address": "0x69e58172575de6ff336adb116a820b2d9a347a32", + "name": "Kongtama", + "symbol": "KONGTAMA", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/24313/thumb/Nl7zwYj.jpeg?1647353276" + }, + { + "chainId": 1, + "address": "0x0000000000095413afc295d19edeb1ad7b71c952", + "name": "Tokenlon", + "symbol": "LON", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13454/thumb/lon_logo.png?1608701720" + }, + { + "chainId": 1, + "address": "0x8d3e855f3f55109d473735ab76f753218400fe96", + "name": "Bundles", + "symbol": "BUND", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13219/thumb/Bundles_Bet_-_Master-_plain_green_jpeg-01.jpg?1651131621" + }, + { + "chainId": 1, + "address": "0x286bda1413a2df81731d4930ce2f862a35a609fe", + "name": "Wabi", + "symbol": "WABI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1338/thumb/Tael.png?1547035364" + }, + { + "chainId": 1, + "address": "0x19e98c4921aab7e3f5fd2adca36cfb669c63e926", + "name": "Cola", + "symbol": "COLA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18806/thumb/colawork_logo_200x200.png?1633479503" + }, + { + "chainId": 1, + "address": "0xa823e6722006afe99e91c30ff5295052fe6b8e32", + "name": "Neumark", + "symbol": "NEU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2218/thumb/neumark.png?1547036501" + }, + { + "chainId": 1, + "address": "0x9b83f827928abdf18cf1f7e67053572b9bceff3a", + "name": "Artem", + "symbol": "ARTEM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21998/thumb/ARTM_Logo_MAIN_%281%29.png?1644469331" + }, + { + "chainId": 1, + "address": "0x305de070488c8469dfac957226c9c900c4bfba22", + "name": "More", + "symbol": "MORE", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/742/thumb/1722.png?1620080666" + }, + { + "chainId": 1, + "address": "0xf65b5c5104c4fafd4b709d9d60a185eae063276c", + "name": "Truebit Protocol", + "symbol": "TRU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15053/thumb/Truebit.png?1623296246" + }, + { + "chainId": 1, + "address": "0x8a9c4dfe8b9d8962b31e4e16f8321c44d48e246e", + "name": "Name Change", + "symbol": "NCT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13826/thumb/hashmasks-nct.png?1612879286" + }, + { + "chainId": 1, + "address": "0x6988a804c74fd04f37da1ea4781cea68c9c00f86", + "name": "Tribal Token", + "symbol": "TRIBL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27774/thumb/TRIBL_Logo_200x200.png?1665724961" + }, + { + "chainId": 1, + "address": "0x7ca4408137eb639570f8e647d9bd7b7e8717514a", + "name": "Alpaca City", + "symbol": "ALPA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13070/thumb/alpaca_logo.png?1604895862" + }, + { + "chainId": 1, + "address": "0x8d2fab1ff34f1c545673a816f1438b02d0a2e32d", + "name": "AISF", + "symbol": "AGT", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/12859/thumb/AISF_token.jpg?1603095207" + }, + { + "chainId": 1, + "address": "0x1b6c5864375b34af3ff5bd2e5f40bc425b4a8d79", + "name": "TopChain", + "symbol": "TOPC", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/2547/thumb/topchain.png?1516372992" + }, + { + "chainId": 1, + "address": "0xeea9ae787f3a620072d13b2cdc8cabffb9c0ab96", + "name": "Yearn Secure", + "symbol": "YSEC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12993/thumb/ysec.png?1604212852" + }, + { + "chainId": 1, + "address": "0x16987c021c14ca1045cd0afebb33c124a58bf16c", + "name": "Voyager", + "symbol": "VGR", + "decimals": 2, + "logoURI": "https://assets.coingecko.com/coins/images/7381/thumb/PKQbxUtP_400x400.jpg?1547044079" + }, + { + "chainId": 1, + "address": "0x6731827cb6879a2091ce3ab3423f7bf20539b579", + "name": "Empower", + "symbol": "MPWR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25456/thumb/MPWR_200x200.png?1651815610" + }, + { + "chainId": 1, + "address": "0xa3e53fe692eeda3502cf5ccfd8a535e1f93d23dd", + "name": "Celeb", + "symbol": "CELEB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16402/thumb/celeb.PNG?1623914565" + }, + { + "chainId": 1, + "address": "0x8810c63470d38639954c6b41aac545848c46484a", + "name": "Aditus", + "symbol": "ADI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1867/thumb/adi.png?1514446309" + }, + { + "chainId": 1, + "address": "0x7abc60b3290f68c85f495fd2e0c3bd278837a313", + "name": "Cyber Movie Chain", + "symbol": "CMCT", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/6497/thumb/cyber-movie-chain.png?1547791095" + }, + { + "chainId": 1, + "address": "0x250050acd30e382a39b00f2d172058160050a9e4", + "name": "The k0de", + "symbol": "K0DE", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/26788/thumb/logo200x200.png?1660103280" + }, + { + "chainId": 1, + "address": "0xf256f3ac4176126f55af7c6e25fa5f3cdf518b38", + "name": "CEDARS", + "symbol": "CEDS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12255/thumb/cedars.png?1598522772" + }, + { + "chainId": 1, + "address": "0x5ef227f7ce4e96c9ce90e32d4850545a6c5d099b", + "name": "BLUECHIPS", + "symbol": "BCHIP", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/7119/thumb/xIh2PBdp_400x400.jpg?1547043616" + }, + { + "chainId": 1, + "address": "0xb1f1f47061a7be15c69f378cb3f69423bd58f2f8", + "name": "Flashstake", + "symbol": "FLASH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13533/thumb/FLASH.png?1615182275" + }, + { + "chainId": 1, + "address": "0x0000000de40dfa9b17854cbc7869d80f9f98d823", + "name": "delta theta", + "symbol": "DLTA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15697/thumb/logo-DT-square.png?1621570627" + }, + { + "chainId": 1, + "address": "0x6226e00bcac68b0fe55583b90a1d727c14fab77f", + "name": "MultiVAC", + "symbol": "MTV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4937/thumb/MultiVAC.png?1558598585" + }, + { + "chainId": 1, + "address": "0xc631120155621ee625835ec810b9885cdd764cd6", + "name": "Goldex", + "symbol": "GLDX", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/17814/thumb/gldx-logo-200x200.png?1629337485" + }, + { + "chainId": 1, + "address": "0x0e1fe60bc4ac0e3102343752ae7e49d01d444c0b", + "name": "Havens Nook", + "symbol": "HXN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14876/thumb/havennook.PNG?1618881827" + }, + { + "chainId": 1, + "address": "0x32ea3dc70e2962334864a9665254d2433e4ddbfd", + "name": "Sportzchain", + "symbol": "SPN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24915/thumb/Sportzchain_logo_195_195.png?1650240200" + }, + { + "chainId": 1, + "address": "0xa4f779074850d320b5553c9db5fc6a8ab15bd34a", + "name": "YFIX finance", + "symbol": "YFIX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12554/thumb/yfix-icon-200.png?1600739144" + }, + { + "chainId": 1, + "address": "0x3f09400313e83d53366147e3ea0e4e2279d80850", + "name": "Kush Finance", + "symbol": "KSEED", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12545/thumb/kush.finance-512.png?1600844515" + }, + { + "chainId": 1, + "address": "0xb48e0f69e6a3064f5498d495f77ad83e0874ab28", + "name": "CXN Network", + "symbol": "CXN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12622/thumb/Webp.net-resizeimage.png?1601282522" + }, + { + "chainId": 1, + "address": "0xeed9e4f2450035d6426276a8aa2084966ee3b1bb", + "name": "Steaks Finance", + "symbol": "STEAK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12672/thumb/MtZuJ_Gq6mqy4BaGacnKNMKmviA1xeDWg2wUiPMqZ-1MzfSiTiAbEzfclWWsU4FF3QxYJcrs5ia_DSWAvdwNYbROJEkm-UK9mZRBPK_z61JciH4XhqMEDpYParjxnkEDqIoobaGaW9bOzPPN_YYHYcv0A1LxjnzdPZF47ZigVuAoOa46YZNFJ_IkM-e-Cuf_-XCpbS2EtbMYvCEhbSuzrI.jpg?1601518956" + }, + { + "chainId": 1, + "address": "0x750c83707112e9acc452692c190cb55e30f42510", + "name": "WenMoon", + "symbol": "WM", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/20263/thumb/Wen-Moon200x200.png?1636704100" + }, + { + "chainId": 1, + "address": "0x26c8afbbfe1ebaca03c2bb082e69d0476bffe099", + "name": "Cellframe", + "symbol": "CELL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14465/thumb/cellframe-coingecko.png?1644483414" + }, + { + "chainId": 1, + "address": "0xe541504417670fb76b612b41b4392d967a1956c7", + "name": "Bitsonic", + "symbol": "BSC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9238/thumb/image.png?1604295837" + }, + { + "chainId": 1, + "address": "0xc3c221fe28c33814c28c822b631fd76047ef1a63", + "name": "Millimeter", + "symbol": "MM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12941/thumb/mm%EB%A1%9C%EA%B3%A0-2.png?1603765868" + }, + { + "chainId": 1, + "address": "0xe7eaec9bca79d537539c00c58ae93117fb7280b9", + "name": "Doge Protocol", + "symbol": "DOGEP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23689/thumb/LjhKBldd_400x400.png?1645079751" + }, + { + "chainId": 1, + "address": "0xe5a3229ccb22b6484594973a03a3851dcd948756", + "name": "Receive Access Ecosystem", + "symbol": "RAE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9428/thumb/Copy_of_raetoken.png?1567290545" + }, + { + "chainId": 1, + "address": "0xa6f7645ed967faf708a614a2fca8d4790138586f", + "name": "MoonieNFT", + "symbol": "MNY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18226/thumb/sq8oK6mX_400x400.png?1631026813" + }, + { + "chainId": 1, + "address": "0x96e61422b6a9ba0e068b6c5add4ffabc6a4aae27", + "name": "Iron Bank EURO", + "symbol": "IBEUR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17285/thumb/Iron_Bank_Euro.png?1627900506" + }, + { + "chainId": 1, + "address": "0x09ce2b746c32528b7d864a1e3979bd97d2f095ab", + "name": "DeFIL", + "symbol": "DFL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17708/thumb/defillogo200200.png?1629080381" + }, + { + "chainId": 1, + "address": "0x2be5e8c109e2197d077d13a82daead6a9b3433c5", + "name": "Tokamak Network", + "symbol": "TON", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12260/thumb/D919x5-s_400x400.png?1598568068" + }, + { + "chainId": 1, + "address": "0x48c3399719b582dd63eb5aadf12a40b4c3f52fa2", + "name": "StakeWise", + "symbol": "SWISE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15044/thumb/stakewise200.png?1619520721" + }, + { + "chainId": 1, + "address": "0x98e0438d3ee1404fea48e38e92853bb08cfa68bd", + "name": "TVT", + "symbol": "TVT", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/8388/thumb/g8hXw4QX_400x400.jpg?1557973343" + }, + { + "chainId": 1, + "address": "0x2a03a891add2dc6d0f7b94419086630ba5cb65b6", + "name": "Dreamverse", + "symbol": "DV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21554/thumb/dv.png?1639464955" + }, + { + "chainId": 1, + "address": "0x15bda08c3afbf5955d6e9b235fd55a1fd0dbc829", + "name": "Alpha Coin", + "symbol": "APC", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/6725/thumb/alpha-coin.png?1547042955" + }, + { + "chainId": 1, + "address": "0x05079687d35b93538cbd59fe5596380cae9054a9", + "name": "BitSong", + "symbol": "BTSG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5041/thumb/logo_-_2021-01-10T210801.390.png?1610284134" + }, + { + "chainId": 1, + "address": "0x6e109e9dd7fa1a58bc3eff667e8e41fc3cc07aef", + "name": "CNH Tether", + "symbol": "CNHT", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/5251/thumb/cny-tether-logo.png?1547040741" + }, + { + "chainId": 1, + "address": "0x0c93b616933b0cd03b201b29cd8a22681dd9e0d9", + "name": "HollyGold", + "symbol": "HGOLD", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/13652/thumb/QnfGCea3aO_Qb-Gd9n6MSFE_eBVAr87WPoxAzf0gKdcGOEL4K5J6A5cpGinzLvHclj_UHkCnw9XTlGoNYd0H8T_Ebe8voLS49MAZO2NIknCxytaYFtt5_u12RQg-kpmWHcETzAFlDgk9iNXAL-88fB_l-DRi8WEsgSJzXXjztKzQlpXuET6d4_98pykED6uyq1-4PMVg05P7tUN.jpg?1610574345" + }, + { + "chainId": 1, + "address": "0x275f5ad03be0fa221b4c6649b8aee09a42d9412a", + "name": "Monavale", + "symbol": "MONA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13298/thumb/monavale_logo.jpg?1607232721" + }, + { + "chainId": 1, + "address": "0x2730d6fdc86c95a74253beffaa8306b40fedecbb", + "name": "UNICORN", + "symbol": "UNI", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/9383/thumb/54231438.png?1566777314" + }, + { + "chainId": 1, + "address": "0x21f54372c07b930b79c5c2d9bb0eaaca86c3b298", + "name": "Banana Finance", + "symbol": "BANANA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13419/thumb/bananacoin.png?1608446599" + }, + { + "chainId": 1, + "address": "0x37f74e99794853777a10ea1dc08a64c86958f06a", + "name": "D Community", + "symbol": "DILI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9485/thumb/BYf_d6kekNWOY34VLGPvf7RcVj8SeRi7P65Nk0W7ji1jir_qSLfssffnNW0ZzQSWzhhsNRkMCL7qcX4CCaMTbgKb0D7b5yNeStKVMm2deZd9cONMuItgoKUXxIYkHElfk1PW2uiNZbg6a2K0OHtZTvkt1xo8YVKuthskXaryOkM6Ax-MXQlHOfbjwCcnQQjHxAucufrCZJfDgrY.jpg?1571685571" + }, + { + "chainId": 1, + "address": "0x8503a7b00b4b52692cc6c14e5b96f142e30547b7", + "name": "Meeds DAO", + "symbol": "MEED", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24281/thumb/s-YfFWYu_400x400.png?1647218173" + }, + { + "chainId": 1, + "address": "0x22bb7d3f4dcf074b979021ca4e214361e14c6b26", + "name": "JoinBlocks", + "symbol": "BLOCKS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26320/thumb/BLOCKS-DISCORD.png?1657245114" + }, + { + "chainId": 1, + "address": "0xd55236d48606c295adebf129dad04fc74bfaa708", + "name": "CardWallet", + "symbol": "CW", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17820/thumb/cardwallet%28circle%29.png?1629341892" + }, + { + "chainId": 1, + "address": "0xa2881f7f441267042f9778ffa0d4f834693426be", + "name": "The HUSL", + "symbol": "HUSL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18619/thumb/W8ZIHKU.png?1650437671" + }, + { + "chainId": 1, + "address": "0x9f300b4ac0bf94cad77e7e2d3f850352b8bb264c", + "name": "Talent Coin", + "symbol": "TLNT", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/13771/thumb/TLNT.png?1611698474" + }, + { + "chainId": 1, + "address": "0x3c8d2fce49906e11e71cb16fa0ffeb2b16c29638", + "name": "Nifty League", + "symbol": "NFTL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19224/thumb/NFTL-256x256.png?1634713638" + }, + { + "chainId": 1, + "address": "0xdc4c9bfbb37c7cdeebc53c0ba5c7474fea5e106d", + "name": "Frank Inu", + "symbol": "FRANK", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/24474/thumb/frank.png?1647771278" + }, + { + "chainId": 1, + "address": "0x0563dce613d559a47877ffd1593549fb9d3510d6", + "name": "SuperBid", + "symbol": "SUPERBID", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14179/thumb/sign_super_bid.png?1617964829" + }, + { + "chainId": 1, + "address": "0xa93d5cfaa41193b13321c035b4bdd2b534172762", + "name": "Dream Swap", + "symbol": "DREAM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13033/thumb/dream_32.png?1604503082" + }, + { + "chainId": 1, + "address": "0xa8b61cff52564758a204f841e636265bebc8db9b", + "name": "Yield Protocol", + "symbol": "YIELD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14220/thumb/yield.png?1615030969" + }, + { + "chainId": 1, + "address": "0x4f14cdbd815b79e9624121f564f24685c6b1211b", + "name": "Angry Doge", + "symbol": "ANFD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25921/thumb/angry-doge-anfd.png?1654653373" + }, + { + "chainId": 1, + "address": "0x4bdcb66b968060d9390c1d12bd29734496205581", + "name": "Acquire Fi", + "symbol": "ACQ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27199/thumb/ACQisotypeSept2022_1000x1000px.png?1662566695" + }, + { + "chainId": 1, + "address": "0xa44e5137293e855b1b7bc7e2c6f8cd796ffcb037", + "name": "Sentinel OLD ", + "symbol": "DVPN", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/3625/thumb/Sentinel_512X512.png?1622174555" + }, + { + "chainId": 1, + "address": "0x73b708e84837ffccde2933e3a1531fe61d5e80ef", + "name": "Betero", + "symbol": "BTE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25153/thumb/B_green200.png?1650461529" + }, + { + "chainId": 1, + "address": "0x1a3496c18d558bd9c6c8f609e1b129f67ab08163", + "name": "DEAPCOIN", + "symbol": "DEP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10970/thumb/DEAPcoin_01.png?1586741677" + }, + { + "chainId": 1, + "address": "0xcd1faff6e578fa5cac469d2418c95671ba1a62fe", + "name": "Torum", + "symbol": "XTM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18393/thumb/torum-transparent-cmc.png?1631760805" + }, + { + "chainId": 1, + "address": "0xdf2c7238198ad8b389666574f2d8bc411a4b7428", + "name": "Hifi Finance", + "symbol": "MFT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3293/thumb/hifi_logo.png?1613102742" + }, + { + "chainId": 1, + "address": "0xfbe878ced08132bd8396988671b450793c44bc12", + "name": "Fox Trading", + "symbol": "FOXT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5182/thumb/foxtrading-logo.png?1547040619" + }, + { + "chainId": 1, + "address": "0x18b52f500e6d9c8b0455ec3483846d9f8edd7e1b", + "name": "Monopoly Meta", + "symbol": "MPM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26965/thumb/TkA1Iou8_400x400.jpeg?1661081008" + }, + { + "chainId": 1, + "address": "0x5ca381bbfb58f0092df149bd3d243b08b9a8386e", + "name": "MXC", + "symbol": "MXC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4604/thumb/mxc.png?1655534336" + }, + { + "chainId": 1, + "address": "0x83e2be8d114f9661221384b3a50d24b96a5653f5", + "name": "0xcert", + "symbol": "ZXC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4552/thumb/0xcert.png?1547039841" + }, + { + "chainId": 1, + "address": "0xe9f84d418b008888a992ff8c6d22389c2c3504e0", + "name": "Maximus BASE", + "symbol": "BASE", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/27683/thumb/IMG_1131.PNG?1665214262" + }, + { + "chainId": 1, + "address": "0x8daebade922df735c38c80c7ebd708af50815faa", + "name": "tBTC", + "symbol": "TBTC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11224/thumb/tBTC.png?1589620754" + }, + { + "chainId": 1, + "address": "0x4297394c20800e8a38a619a243e9bbe7681ff24e", + "name": "Hot Cross", + "symbol": "HOTCROSS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15706/thumb/Hotcross.png?1632197570" + }, + { + "chainId": 1, + "address": "0x7240ac91f01233baaf8b064248e80feaa5912ba3", + "name": "OctoFi", + "symbol": "OCTO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12594/thumb/octofi-256x256-radius-22percent.png?1610679969" + }, + { + "chainId": 1, + "address": "0x1045f5ccb01daea4f8eab055f5fcbb7c0e7c89f0", + "name": "DeFiato", + "symbol": "DFIAT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13386/thumb/Defiato.png?1608085873" + }, + { + "chainId": 1, + "address": "0x5eaa69b29f99c84fe5de8200340b4e9b4ab38eac", + "name": "Raze Network", + "symbol": "RAZE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14767/thumb/logo-2.png?1623867120" + }, + { + "chainId": 1, + "address": "0x4daeb4a06f70f4b1a5c329115731fe4b89c0b227", + "name": "Quasacoin", + "symbol": "QUA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21965/thumb/coin_200.png?1643454438" + }, + { + "chainId": 1, + "address": "0x34be5b8c30ee4fde069dc878989686abe9884470", + "name": "SENATE", + "symbol": "SENATE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21272/thumb/siIBOmcs.png?1638857898" + }, + { + "chainId": 1, + "address": "0xcb84d72e61e383767c4dfeb2d8ff7f4fb89abc6e", + "name": "Vega Protocol", + "symbol": "VEGA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15870/thumb/vega.PNG?1622178218" + }, + { + "chainId": 1, + "address": "0x12f649a9e821f90bb143089a6e56846945892ffb", + "name": "Hyprr", + "symbol": "UDOO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3078/thumb/HYPRR-WIDGET-CIRCLE-ONBLACK-1.jpg?1646752306" + }, + { + "chainId": 1, + "address": "0x8530b66ca3ddf50e0447eae8ad7ea7d5e62762ed", + "name": "Meta Doge", + "symbol": "METADOGE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19656/thumb/metadoge.png?1636333901" + }, + { + "chainId": 1, + "address": "0x0cec1a9154ff802e7934fc916ed7ca50bde6844e", + "name": "PoolTogether", + "symbol": "POOL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14003/thumb/PoolTogether.png?1613585632" + }, + { + "chainId": 1, + "address": "0xcafe001067cdef266afb7eb5a286dcfd277f3de5", + "name": "ParaSwap", + "symbol": "PSP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20403/thumb/ep7GqM19_400x400.jpg?1636979120" + }, + { + "chainId": 1, + "address": "0xd4c435f5b09f855c3317c8524cb1f586e42795fa", + "name": "Cindicator", + "symbol": "CND", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1006/thumb/cindicator.png?1547034913" + }, + { + "chainId": 1, + "address": "0x6bba316c48b49bd1eac44573c5c871ff02958469", + "name": "Gas DAO", + "symbol": "GAS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22086/thumb/SjrgK6sf_400x400.jpg?1640763291" + }, + { + "chainId": 1, + "address": "0xaac679720204aaa68b6c5000aa87d789a3ca0aa5", + "name": "Huobi Bitcoin Cash", + "symbol": "HBCH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14105/thumb/HBCh.png?1614330789" + }, + { + "chainId": 1, + "address": "0x374cb8c27130e2c9e04f44303f3c8351b9de61c1", + "name": "Bao Finance", + "symbol": "BAO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13547/thumb/BaoLogo.png?1615342483" + }, + { + "chainId": 1, + "address": "0x353e41e66f58ce91d07d778520685473f38a7125", + "name": "Metaverse DAO", + "symbol": "MDAO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23242/thumb/ezgif.com-gif-maker_%281%29.jpg?1664937350" + }, + { + "chainId": 1, + "address": "0x3d0293f06daf4311b482564330d57c8db6c10893", + "name": "Y Coin", + "symbol": "YCO", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/14128/thumb/BIG-POTAT-200x200-removebg-preview.png?1614576159" + }, + { + "chainId": 1, + "address": "0x307d45afbb7e84f82ef3d251a6bb0f00edf632e4", + "name": "PLANET", + "symbol": "PLA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9279/thumb/LOGO_BLACK.png?1565731302" + }, + { + "chainId": 1, + "address": "0x7b35ce522cb72e4077baeb96cb923a5529764a00", + "name": "Impermax OLD ", + "symbol": "IMX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15126/thumb/Copy_of_200px.png?1619761475" + }, + { + "chainId": 1, + "address": "0x68257309fcdfe1e6edb592da97ac8215fe583908", + "name": "Gorilla Inu", + "symbol": "GORILLAINU", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/19426/thumb/gorilla_logo.png?1635216321" + }, + { + "chainId": 1, + "address": "0xff56cc6b1e6ded347aa0b7676c85ab0b3d08b0fa", + "name": "Orbs", + "symbol": "ORBS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4630/thumb/Orbs.jpg?1547039896" + }, + { + "chainId": 1, + "address": "0xb8d313068891137952e7dff19d8afaa64dbc6fcb", + "name": "RedPill", + "symbol": "RPILL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27879/thumb/3177f501-401e-418d-a4bc-f72fdf9fe5d7.png?1666230108" + }, + { + "chainId": 1, + "address": "0xa71d0588eaf47f12b13cf8ec750430d21df04974", + "name": "Shiba Predator", + "symbol": "QOM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24430/thumb/l1KzMcL.png?1647660619" + }, + { + "chainId": 1, + "address": "0x4a527d8fc13c5203ab24ba0944f4cb14658d1db6", + "name": "Morpheus Labs", + "symbol": "MITX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3164/thumb/mitx.png?1604888269" + }, + { + "chainId": 1, + "address": "0xe50006781f435ae43096288334afd9ae5ba50065", + "name": "Corgi Inu", + "symbol": "CORGI", + "decimals": 10, + "logoURI": "https://assets.coingecko.com/coins/images/15646/thumb/mWum355Y_400x400.jpg?1621422930" + }, + { + "chainId": 1, + "address": "0x7cc97bf17c5adabe25f9d19d15a1ec8a1ad65f14", + "name": "Wolverinu", + "symbol": "WOLVERINU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27872/thumb/LOGO3232.jpg?1666166703" + }, + { + "chainId": 1, + "address": "0x23352036e911a22cfc692b5e2e196692658aded9", + "name": "Friendz", + "symbol": "FDZ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3685/thumb/download_%2812%29.png?1547038682" + }, + { + "chainId": 1, + "address": "0x1cc30e2eac975416060ec6fe682041408420d414", + "name": "Kollect", + "symbol": "KOL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18664/thumb/kol.png?1632827164" + }, + { + "chainId": 1, + "address": "0xb5f1457d6fba1956fb8d31b0b7caca14bde0be4b", + "name": "Stilton", + "symbol": "STILT", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/26132/thumb/2vfQHbe9_400x400.png?1655969754" + }, + { + "chainId": 1, + "address": "0xc229c69eb3bb51828d0caa3509a05a51083898dd", + "name": "Pintu", + "symbol": "PTU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20281/thumb/image_1_8dd79a68aa.png?1636733599" + }, + { + "chainId": 1, + "address": "0xf59257e961883636290411c11ec5ae622d19455e", + "name": "FloorDAO", + "symbol": "FLOOR", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/24026/thumb/icon-floor_2x.png?1646102857" + }, + { + "chainId": 1, + "address": "0x956f47f50a910163d8bf957cf5846d573e7f87ca", + "name": "Fei USD", + "symbol": "FEI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14570/thumb/ZqsF51Re_400x400.png?1617082206" + }, + { + "chainId": 1, + "address": "0x33d63ba1e57e54779f7ddaeaa7109349344cf5f1", + "name": "Data Economy Index", + "symbol": "DATA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18500/thumb/data_32.png?1632209427" + }, + { + "chainId": 1, + "address": "0xeef9f339514298c6a857efcfc1a762af84438dee", + "name": "Hermez Network", + "symbol": "HEZ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12826/thumb/hermez_logo.png?1602826556" + }, + { + "chainId": 1, + "address": "0x37fe0f067fa808ffbdd12891c0858532cfe7361d", + "name": "Civilization", + "symbol": "CIV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17626/thumb/civ-200x200.png?1628674350" + }, + { + "chainId": 1, + "address": "0xc834fa996fa3bec7aad3693af486ae53d8aa8b50", + "name": "Convergence", + "symbol": "CONV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14519/thumb/Convergence_Logo_%28Final%29.png?1616667041" + }, + { + "chainId": 1, + "address": "0xa0246c9032bc3a600820415ae600c6388619a14d", + "name": "Harvest Finance", + "symbol": "FARM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12304/thumb/Harvest.png?1613016180" + }, + { + "chainId": 1, + "address": "0xbc46d9961a3932f7d6b64abfdec80c1816c4b835", + "name": "LITEX", + "symbol": "LXT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5133/thumb/litex-logo.png?1547040525" + }, + { + "chainId": 1, + "address": "0x6123b0049f904d730db3c36a31167d9d4121fa6b", + "name": "Ribbon Finance", + "symbol": "RBN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15823/thumb/RBN_64x64.png?1633529723" + }, + { + "chainId": 1, + "address": "0x9008064e6cf73e27a3aba4b10e69f855a4f8efcc", + "name": "Gemie", + "symbol": "GEM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27745/thumb/icon-transparent.png?1665632270" + }, + { + "chainId": 1, + "address": "0x5d21ef5f25a985380b65c8e943a0082feda0db84", + "name": "Ethereum Cash", + "symbol": "ECASH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1010/thumb/ethereumcash.png?1510040235" + }, + { + "chainId": 1, + "address": "0xcae72a7a0fd9046cf6b165ca54c9e3a3872109e0", + "name": "AnRKey X", + "symbol": "ANRX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13415/thumb/anrkey.jpg?1608311301" + }, + { + "chainId": 1, + "address": "0x0b452278223d3954f4ac050949d7998e373e7e43", + "name": "Shita kiri Suzume", + "symbol": "SUZUME", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26813/thumb/shitakiri_cmc.png?1660275049" + }, + { + "chainId": 1, + "address": "0xa487bf43cf3b10dffc97a9a744cbb7036965d3b9", + "name": "Deri Protocol", + "symbol": "DERI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13931/thumb/200vs200.jpg?1627649443" + }, + { + "chainId": 1, + "address": "0x60eb57d085c59932d5faa6c6026268a4386927d0", + "name": "LOCGame", + "symbol": "LOCG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15175/thumb/LOC_GAME.png?1620025060" + }, + { + "chainId": 1, + "address": "0xd0d7a9f2021958e51d60d6966b7bbed9d1cb22b5", + "name": "ENEX", + "symbol": "ENX", + "decimals": 10, + "logoURI": "https://assets.coingecko.com/coins/images/15070/thumb/ENEXpng200.png?1619621442" + }, + { + "chainId": 1, + "address": "0x03be5c903c727ee2c8c4e9bc0acc860cca4715e2", + "name": "Ternoa", + "symbol": "CAPS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15921/thumb/e55393fa-7b4d-40f5-9f36-9a8a6bdcb570.png?1622430581" + }, + { + "chainId": 1, + "address": "0xa849eaae994fb86afa73382e9bd88c2b6b18dc71", + "name": "MVL", + "symbol": "MVL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3476/thumb/mass-vehicle-ledger.png?1547978299" + }, + { + "chainId": 1, + "address": "0xfb378115726a9ab2e0dccebbe2d53dc625ae201b", + "name": "Kitsune Inu", + "symbol": "KITSUNE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27661/thumb/200pxtranparent.png?1665102751" + }, + { + "chainId": 1, + "address": "0x081f67afa0ccf8c7b17540767bbe95df2ba8d97f", + "name": "CoinEx", + "symbol": "CET", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4817/thumb/coinex-token.png?1547040183" + }, + { + "chainId": 1, + "address": "0xb9d7dddca9a4ac480991865efef82e01273f79c3", + "name": "Boosted LUSD", + "symbol": "BLUSD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27681/thumb/bLUSD_logo.png?1665213755" + }, + { + "chainId": 1, + "address": "0xdb25f211ab05b1c97d595516f45794528a807ad8", + "name": "STASIS EURO", + "symbol": "EURS", + "decimals": 2, + "logoURI": "https://assets.coingecko.com/coins/images/5164/thumb/EURS_300x300.png?1550571779" + }, + { + "chainId": 1, + "address": "0xaeb813653bb20d5fa4798dc4fc63af9cad4f3f67", + "name": "The Commission", + "symbol": "CMSN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24993/thumb/pGaXc6eB_400x400.jpg?1649719689" + }, + { + "chainId": 1, + "address": "0x71eeba415a523f5c952cc2f06361d5443545ad28", + "name": "XDAO", + "symbol": "XDAO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27363/thumb/XDAO_Token_img.png?1665738325" + }, + { + "chainId": 1, + "address": "0x808507121b80c02388fad14726482e061b8da827", + "name": "Pendle", + "symbol": "PENDLE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15069/thumb/Pendle_Logo_Normal-03.png?1634196276" + }, + { + "chainId": 1, + "address": "0x177d39ac676ed1c67a2b268ad7f1e58826e5b0af", + "name": "Blox", + "symbol": "CDT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1231/thumb/Blox_Staking_Logo_2.png?1609117544" + }, + { + "chainId": 1, + "address": "0x04abeda201850ac0124161f037efd70c74ddc74c", + "name": "Nest Protocol", + "symbol": "NEST", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11284/thumb/52954052.png?1589868539" + }, + { + "chainId": 1, + "address": "0xc3cab0d0918c39e29088c495a077ecd022758798", + "name": "Kitsune Mask", + "symbol": "KMASK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27866/thumb/kitsun.png?1666152169" + }, + { + "chainId": 1, + "address": "0x6c936d4ae98e6d2172db18c16c4b601c99918ee6", + "name": "Life Crypto", + "symbol": "LIFE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18245/thumb/communityIcon_t3kzc5skazh81.png?1666058038" + }, + { + "chainId": 1, + "address": "0x0c7d5ae016f806603cb1782bea29ac69471cab9c", + "name": "Bifrost", + "symbol": "BFC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4639/thumb/bifrost_32.png?1608520677" + }, + { + "chainId": 1, + "address": "0xc28e27870558cf22add83540d2126da2e4b464c2", + "name": "Sashimi", + "symbol": "SASHIMI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12427/thumb/SashimiSwap-200x200.png?1601347413" + }, + { + "chainId": 1, + "address": "0xbbab3bdb291b0f22bc9881895ff488a5db67bec8", + "name": "CUBE", + "symbol": "ITAMCUBE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22396/thumb/CoinGecko_Logo_%281%29.jpg?1648792005" + }, + { + "chainId": 1, + "address": "0x8806926ab68eb5a7b909dcaf6fdbe5d93271d6e2", + "name": "Uquid Coin", + "symbol": "UQC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1341/thumb/uquid-coin.png?1548759712" + }, + { + "chainId": 1, + "address": "0x2ba8349123de45e931a8c8264c332e6e9cf593f9", + "name": "Blockchain Monster Hunt", + "symbol": "BCMC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19045/thumb/bcmc-coin-200x200.png?1641398990" + }, + { + "chainId": 1, + "address": "0x34950ff2b487d9e5282c5ab342d08a2f712eb79f", + "name": "Efforce", + "symbol": "WOZX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13310/thumb/rZ6Oe3dm_400x400.jpg?1607331889" + }, + { + "chainId": 1, + "address": "0xdf574c24545e5ffecb9a659c229253d4111d87e1", + "name": "HUSD", + "symbol": "HUSD", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/9567/thumb/HUSD.jpg?1568889385" + }, + { + "chainId": 1, + "address": "0xde7d85157d9714eadf595045cc12ca4a5f3e2adb", + "name": "STP", + "symbol": "STPT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8713/thumb/STP.png?1560262664" + }, + { + "chainId": 1, + "address": "0x466a756e9a7401b5e2444a3fcb3c2c12fbea0a54", + "name": "PUSd", + "symbol": "PUSD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25858/thumb/PUSd.png?1654161232" + }, + { + "chainId": 1, + "address": "0x7884f51dc1410387371ce61747cb6264e1daee0b", + "name": "Binance Wrapped DOT", + "symbol": "BDOT", + "decimals": 10, + "logoURI": "https://assets.coingecko.com/coins/images/23268/thumb/binance-dot_32.png?1643414783" + }, + { + "chainId": 1, + "address": "0xccc8cb5229b0ac8069c51fd58367fd1e622afd97", + "name": "Gods Unchained", + "symbol": "GODS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17139/thumb/10631.png?1635718182" + }, + { + "chainId": 1, + "address": "0xc4c7ea4fab34bd9fb9a5e1b1a98df76e26e6407c", + "name": "COCOS BCX", + "symbol": "COCOS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4932/thumb/_QPpjoUi_400x400.jpg?1566430520" + }, + { + "chainId": 1, + "address": "0xeef37d7bd4ae03fd8ee1c44491987e422b53ed25", + "name": "KryptoPets", + "symbol": "KPETS", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/23337/thumb/kyTyD2Fi_400x400.jpg?1643882890" + }, + { + "chainId": 1, + "address": "0x226bb599a12c826476e3a771454697ea52e9e220", + "name": "Propy", + "symbol": "PRO", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/869/thumb/propy.png?1548332100" + }, + { + "chainId": 1, + "address": "0xe0bceef36f3a6efdd5eebfacd591423f8549b9d5", + "name": "Defactor", + "symbol": "FACTR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19201/thumb/jFLSu4U9_400x400.png?1650437050" + }, + { + "chainId": 1, + "address": "0xb49fa25978abf9a248b8212ab4b87277682301c0", + "name": "RAI Finance", + "symbol": "SOFI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14686/thumb/sofi.png?1640249595" + }, + { + "chainId": 1, + "address": "0x3aada3e213abf8529606924d8d1c55cbdc70bf74", + "name": "XMON", + "symbol": "XMON", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14008/thumb/xmon_logo.png?1613615094" + }, + { + "chainId": 1, + "address": "0x27c70cd1946795b66be9d954418546998b546634", + "name": "Doge Killer", + "symbol": "LEASH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15802/thumb/Leash.png?1621931543" + }, + { + "chainId": 1, + "address": "0x73968b9a57c6e53d41345fd57a6e6ae27d6cdb2f", + "name": "Stake DAO", + "symbol": "SDT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13724/thumb/stakedao_logo.jpg?1611195011" + }, + { + "chainId": 1, + "address": "0x727f064a78dc734d33eec18d5370aef32ffd46e4", + "name": "Orion Money", + "symbol": "ORION", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18630/thumb/YtrqPIWc.png?1632710781" + }, + { + "chainId": 1, + "address": "0xdc6104b7993e997ca5f08acab7d3ae86e13d20a6", + "name": "ParaState", + "symbol": "STATE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23707/thumb/vertical.png?1645082931" + }, + { + "chainId": 1, + "address": "0x9355372396e3f6daf13359b7b607a3374cc638e0", + "name": "WHALE", + "symbol": "WHALE", + "decimals": 4, + "logoURI": "https://assets.coingecko.com/coins/images/11797/thumb/WHALE.png?1595004706" + }, + { + "chainId": 1, + "address": "0x8c088775e4139af116ac1fa6f281bbf71e8c1c73", + "name": "PUMLx", + "symbol": "PUMLX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27253/thumb/pumlx.png?1665154140" + }, + { + "chainId": 1, + "address": "0xbd1848e1491d4308ad18287a745dd4db2a4bd55b", + "name": "Mochi Market", + "symbol": "MOMA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14993/thumb/mochi.PNG?1619390399" + }, + { + "chainId": 1, + "address": "0xf5581dfefd8fb0e4aec526be659cfab1f8c781da", + "name": "HOPR", + "symbol": "HOPR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14061/thumb/Shared_HOPR_logo_512px.png?1614073468" + }, + { + "chainId": 1, + "address": "0xa806b3fed6891136940cf81c4085661500aa2709", + "name": "Sport and Leisure", + "symbol": "SNL", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/7762/thumb/745ba052-73b7-4735-a0bf-e75474def055.png?1550456328" + }, + { + "chainId": 1, + "address": "0x3d6f0dea3ac3c607b3998e6ce14b6350721752d9", + "name": "Cardstarter", + "symbol": "CARDS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14612/thumb/CARDSx200.png?1617252006" + }, + { + "chainId": 1, + "address": "0xe4815ae53b124e7263f08dcdbbb757d41ed658c6", + "name": "ZKSpace", + "symbol": "ZKS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13585/thumb/zkspace_logo.png?1644486208" + }, + { + "chainId": 1, + "address": "0xf418588522d5dd018b425e472991e52ebbeeeeee", + "name": "Push Protocol", + "symbol": "PUSH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14769/thumb/aiOxYOJI_400x400.jpeg?1664499790" + }, + { + "chainId": 1, + "address": "0xfb130d93e49dca13264344966a611dc79a456bc5", + "name": "DogeGF", + "symbol": "DOGEGF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18651/thumb/dogf.png?1632758659" + }, + { + "chainId": 1, + "address": "0x41d5d79431a913c4ae7d69a668ecdfe5ff9dfb68", + "name": "Inverse Finance", + "symbol": "INV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14205/thumb/inverse_finance.jpg?1614921871" + }, + { + "chainId": 1, + "address": "0x5e3346444010135322268a4630d2ed5f8d09446c", + "name": "LockTrip", + "symbol": "LOC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1357/thumb/LOC_Transparent_New.png?1579491094" + }, + { + "chainId": 1, + "address": "0xf34b1db61aca1a371fe97bad2606c9f534fb9d7d", + "name": "ArbiSmart", + "symbol": "RBIS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21906/thumb/imgonline-com-ua-Resize-cMjOYOwg12bLazt.png?1640235509" + }, + { + "chainId": 1, + "address": "0xc4c2614e694cf534d407ee49f8e44d125e4681c4", + "name": "Chain Games", + "symbol": "CHAIN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12257/thumb/chain-logo-centered-500x500.png?1599617244" + }, + { + "chainId": 1, + "address": "0xd084b83c305dafd76ae3e1b4e1f1fe2ecccb3988", + "name": "The Virtua Kolect", + "symbol": "TVK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13330/thumb/virtua_original.png?1656043619" + }, + { + "chainId": 1, + "address": "0x8fac8031e079f409135766c7d5de29cf22ef897c", + "name": "Humans ai", + "symbol": "HEART", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21273/thumb/h_logo_1x.png?1638858402" + }, + { + "chainId": 1, + "address": "0x675bbc7514013e2073db7a919f6e4cbef576de37", + "name": "Coldstack", + "symbol": "CLS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15499/thumb/logo_200x200.png?1621072403" + }, + { + "chainId": 1, + "address": "0x5ba19d656b65f1684cfea4af428c23b9f3628f97", + "name": "AAG", + "symbol": "AAG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21382/thumb/aag-token-icon.png?1661849633" + }, + { + "chainId": 1, + "address": "0x3a8cccb969a61532d1e6005e2ce12c200caece87", + "name": "TitanSwap", + "symbol": "TITAN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12606/thumb/nqGlQzdz_400x400.png?1601019805" + }, + { + "chainId": 1, + "address": "0x450e7f6e3a2f247a51b98c39297a9a5bfbdb3170", + "name": "Elon GOAT", + "symbol": "EGT", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/22301/thumb/ElonGoat.jpg?1641438513" + }, + { + "chainId": 1, + "address": "0x27054b13b1b798b345b591a4d22e6562d47ea75a", + "name": "AirSwap", + "symbol": "AST", + "decimals": 4, + "logoURI": "https://assets.coingecko.com/coins/images/1019/thumb/Airswap.png?1630903484" + }, + { + "chainId": 1, + "address": "0xba5bde662c17e2adff1075610382b9b691296350", + "name": "SuperRare", + "symbol": "RARE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17753/thumb/RARE.jpg?1629220534" + }, + { + "chainId": 1, + "address": "0xf293d23bf2cdc05411ca0eddd588eb1977e8dcd4", + "name": "Sylo", + "symbol": "SYLO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6430/thumb/SYLO.svg?1589527756" + }, + { + "chainId": 1, + "address": "0x9c2dc0c3cc2badde84b0025cf4df1c5af288d835", + "name": "Coreto", + "symbol": "COR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12856/thumb/COR.png?1620210966" + }, + { + "chainId": 1, + "address": "0x5c8c8d560048f34e5f7f8ad71f2f81a89dbd273e", + "name": "CryptoArt Ai", + "symbol": "CART", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17583/thumb/logo-64.png?1629277823" + }, + { + "chainId": 1, + "address": "0xb17c88bda07d28b3838e0c1de6a30eafbcf52d85", + "name": "Shyft Network", + "symbol": "SHFT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14534/thumb/TOKEN-Gradient.png?1616768352" + }, + { + "chainId": 1, + "address": "0xd13cfd3133239a3c73a9e535a5c4dadee36b395c", + "name": "Vaiot", + "symbol": "VAI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13981/thumb/VAIOT_logo.png?1613456546" + }, + { + "chainId": 1, + "address": "0x5ca9a71b1d01849c0a95490cc00559717fcf0d1d", + "name": "Aeternity", + "symbol": "AE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1091/thumb/aeternity.png?1547035060" + }, + { + "chainId": 1, + "address": "0xae1eaae3f627aaca434127644371b67b18444051", + "name": "Yield Optimization Platform Protocol", + "symbol": "YOP", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/13678/thumb/J7zykPx.jpg?1610802162" + }, + { + "chainId": 1, + "address": "0x7eaf9c89037e4814dc0d9952ac7f888c784548db", + "name": "Royale", + "symbol": "ROYA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13602/thumb/roya.png?1636031771" + }, + { + "chainId": 1, + "address": "0xeb953eda0dc65e3246f43dc8fa13f35623bdd5ed", + "name": "Rainicorn", + "symbol": "RAINI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14491/thumb/logo-200x200.png?1633314246" + }, + { + "chainId": 1, + "address": "0x89a64014d429509cffda1aebc7eb36b9435794bd", + "name": "LULZ", + "symbol": "LULZ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17439/thumb/qHQiwr1I_400x400.jpg?1629882056" + }, + { + "chainId": 1, + "address": "0xfc979087305a826c2b2a0056cfaba50aad3e6439", + "name": "Dafi Protocol", + "symbol": "DAFI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14428/thumb/Dafi_Black_Icon.png?1616040406" + }, + { + "chainId": 1, + "address": "0x725c263e32c72ddc3a19bea12c5a0479a81ee688", + "name": "Bridge Mutual", + "symbol": "BMI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13808/thumb/bmi_logo.png?1612009598" + }, + { + "chainId": 1, + "address": "0xe6fd75ff38adca4b97fbcd938c86b98772431867", + "name": "Elastos", + "symbol": "ELA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2780/thumb/Elastos.png?1597048112" + }, + { + "chainId": 1, + "address": "0x91dfbee3965baaee32784c2d546b7a0c62f268c9", + "name": "Forj", + "symbol": "BONDLY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13322/thumb/FORJ_twitter_twitter-linked_in_profile_%281%29.png?1653026729" + }, + { + "chainId": 1, + "address": "0xd291e7a03283640fdc51b121ac401383a46cc623", + "name": "Rari Governance", + "symbol": "RGT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12900/thumb/Rari_Logo_Transparent.png?1613978014" + }, + { + "chainId": 1, + "address": "0x618e75ac90b12c6049ba3b27f5d5f8651b0037f6", + "name": "QASH", + "symbol": "QASH", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/1220/thumb/qash.jpeg?1547035247" + }, + { + "chainId": 1, + "address": "0x5f474906637bdcda05f29c74653f6962bb0f8eda", + "name": "DeFinity", + "symbol": "DEFX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15875/thumb/definity-listing-logo.png?1622414896" + }, + { + "chainId": 1, + "address": "0x8a3d77e9d6968b780564936d15b09805827c21fa", + "name": "Archethic", + "symbol": "UCO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12330/thumb/Archethic_logo.png?1665916980" + }, + { + "chainId": 1, + "address": "0x1337def16f9b486faed0293eb623dc8395dfe46a", + "name": "ARMOR", + "symbol": "ARMOR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13748/thumb/armor.png?1611425846" + }, + { + "chainId": 1, + "address": "0x221657776846890989a759ba2973e427dff5c9bb", + "name": "Augur", + "symbol": "REP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/309/thumb/REP.png?1596339859" + }, + { + "chainId": 1, + "address": "0x52662717e448be36cb54588499d5a8328bd95292", + "name": "Tenshi", + "symbol": "TENSHI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17170/thumb/TENSHI.png?1628739569" + }, + { + "chainId": 1, + "address": "0x3f382dbd960e3a9bbceae22651e88158d2791550", + "name": "Aavegotchi", + "symbol": "GHST", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12467/thumb/ghst_200.png?1600750321" + }, + { + "chainId": 1, + "address": "0xcc4304a31d09258b0029ea7fe63d032f52e44efe", + "name": "Trustswap", + "symbol": "SWAP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11795/thumb/Untitled_design-removebg-preview.png?1626926355" + }, + { + "chainId": 1, + "address": "0x3a880652f47bfaa771908c07dd8673a787daed3a", + "name": "DerivaDAO", + "symbol": "DDX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13453/thumb/ddx_logo.png?1608741641" + }, + { + "chainId": 1, + "address": "0x536381a8628dbcc8c70ac9a30a7258442eab4c92", + "name": "Pantos", + "symbol": "PAN", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/9639/thumb/Pantos-logo-compact.png?1619079883" + }, + { + "chainId": 1, + "address": "0xaa7fb1c8ce6f18d4fd4aabb61a2193d4d441c54f", + "name": "ShitCoin", + "symbol": "SHIT", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/9472/thumb/ShitCoin_200x200.png?1567723695" + }, + { + "chainId": 1, + "address": "0xe529b502fec3ff0ea86fe63da505ec62fdf4f387", + "name": "Three Kingdoms", + "symbol": "RTK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25987/thumb/un_8XpAR_400x400.jpg?1655178518" + }, + { + "chainId": 1, + "address": "0x49bf0220c9ce17e52dcca3d217231746d676085b", + "name": "Vixco", + "symbol": "VIX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15405/thumb/vixco.png?1620811916" + }, + { + "chainId": 1, + "address": "0x445d711c8974d80643745a4666803d255a589390", + "name": "BoredMemes", + "symbol": "BOREDM", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/27934/thumb/pIhAX2u-_400x400.png?1666509284" + }, + { + "chainId": 1, + "address": "0x0de05f6447ab4d22c8827449ee4ba2d5c288379b", + "name": "Ooki", + "symbol": "OOKI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21719/thumb/Ooki_Token.png?1669772543" + }, + { + "chainId": 1, + "address": "0x30f271c9e86d2b7d00a6376cd96a1cfbd5f0b9b3", + "name": "Decentr", + "symbol": "DEC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11816/thumb/Decentr.png?1594637985" + }, + { + "chainId": 1, + "address": "0xc55c2175e90a46602fd42e931f62b3acc1a013ca", + "name": "Mogul Productions", + "symbol": "STARS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14975/thumb/STARS_LOGO_PNG.png?1619214520" + }, + { + "chainId": 1, + "address": "0x1614f18fc94f47967a3fbe5ffcd46d4e7da3d787", + "name": "PAID Network", + "symbol": "PAID", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13761/thumb/512.png?1648630881" + }, + { + "chainId": 1, + "address": "0xd433138d12beb9929ff6fd583dc83663eea6aaa5", + "name": "Bitrue Coin", + "symbol": "BTR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8873/thumb/Bittrue_logo.png?1637142758" + }, + { + "chainId": 1, + "address": "0x4e0df4560cedfda5d793f607cefa30383bda7327", + "name": "Qatar Inu Token", + "symbol": "QATAR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27894/thumb/2022-10-18_20.39.03.jpg?1666254735" + }, + { + "chainId": 1, + "address": "0x446c9033e7516d820cc9a2ce2d0b7328b579406f", + "name": "SOLVE", + "symbol": "SOLVE", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/1768/thumb/Solve.Token_logo_200_200_wiyhout_BG.png?1575869846" + }, + { + "chainId": 1, + "address": "0xebf2096e01455108badcbaf86ce30b6e5a72aa52", + "name": "XIDR", + "symbol": "XIDR", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/21126/thumb/XIDR_Logo_256_X_256.png?1638343133" + }, + { + "chainId": 1, + "address": "0x9eb6be354d88fd88795a04de899a57a77c545590", + "name": "GameStop Finance", + "symbol": "GME", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13820/thumb/gamestop_logo.jpg?1612070725" + }, + { + "chainId": 1, + "address": "0xaa2ce7ae64066175e0b90497ce7d9c190c315db4", + "name": "Suterusu", + "symbol": "SUTER", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9830/thumb/p-NFlBlw_400x400.jpg?1572472860" + }, + { + "chainId": 1, + "address": "0x85f6eb2bd5a062f5f8560be93fb7147e16c81472", + "name": "Franklin", + "symbol": "FLY", + "decimals": 4, + "logoURI": "https://assets.coingecko.com/coins/images/14810/thumb/fly_logo_sq_bArtboard_4.png?1626420796" + }, + { + "chainId": 1, + "address": "0x6dca182ac5e3f99985bc4ee0f726d6472ab1ec55", + "name": "Ushi", + "symbol": "USHI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27865/thumb/photo_2022-10-17_22-21-01.jpg?1666151494" + }, + { + "chainId": 1, + "address": "0xb705268213d593b8fd88d3fdeff93aff5cbdcfae", + "name": "IDEX", + "symbol": "IDEX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2565/thumb/logomark-purple-286x286.png?1638362736" + }, + { + "chainId": 1, + "address": "0x32353a6c91143bfd6c7d363b546e62a9a2489a20", + "name": "Adventure Gold", + "symbol": "AGLD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18125/thumb/lpgblc4h_400x400.jpg?1630570955" + }, + { + "chainId": 1, + "address": "0xbf2179859fc6d5bee9bf9158632dc51678a4100e", + "name": "aelf", + "symbol": "ELF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1371/thumb/aelf-logo.png?1547035397" + }, + { + "chainId": 1, + "address": "0x7c84e62859d0715eb77d1b1c4154ecd6abb21bec", + "name": "Shping", + "symbol": "SHPING", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2588/thumb/000103_Shping_Logos_Shping_Secondary_Logo.png?1661141481" + }, + { + "chainId": 1, + "address": "0x09a3ecafa817268f77be1283176b946c4ff2e608", + "name": "Mirror Protocol", + "symbol": "MIR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13295/thumb/mirror_logo_transparent.png?1611554658" + }, + { + "chainId": 1, + "address": "0x236d53148f83706c3d670064809577385f923a75", + "name": "Siberian Husky", + "symbol": "SHUSKY", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/16711/thumb/shusky.png?1624782891" + }, + { + "chainId": 1, + "address": "0x40a11f82a8469c8dc015ba74438536584978d63c", + "name": "Galileo", + "symbol": "GALI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28007/thumb/gali.jpg?1666939897" + }, + { + "chainId": 1, + "address": "0x7f969c4d388ca0ae39a4fddb1a6f89878ca2fbf8", + "name": "Global Game Coin", + "symbol": "GGC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10301/thumb/ggcoin_200.png?1577690908" + }, + { + "chainId": 1, + "address": "0x557b933a7c2c45672b610f8954a3deb39a51a8ca", + "name": "REVV", + "symbol": "REVV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12373/thumb/REVV_TOKEN_Refined_2021_%281%29.png?1627652390" + }, + { + "chainId": 1, + "address": "0x72dd4b6bd852a3aa172be4d6c5a6dbec588cf131", + "name": "NAGA", + "symbol": "NGC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1439/thumb/naga.jpg?1547035515" + }, + { + "chainId": 1, + "address": "0x3c03b4ec9477809072ff9cc9292c9b25d4a8e6c6", + "name": "CoverCompared", + "symbol": "CVR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13720/thumb/cvr.png?1635416411" + }, + { + "chainId": 1, + "address": "0xf433089366899d83a9f26a773d59ec7ecf30355e", + "name": "Metal DAO", + "symbol": "MTL", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/763/thumb/Metal.png?1592195010" + }, + { + "chainId": 1, + "address": "0x77fba179c79de5b7653f68b5039af940ada60ce0", + "name": "Ampleforth Governance", + "symbol": "FORTH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14917/thumb/photo_2021-04-22_00.00.03.jpeg?1619020835" + }, + { + "chainId": 1, + "address": "0x64df3aab3b21cc275bb76c4a581cf8b726478ee0", + "name": "Cramer Coin", + "symbol": "CRAMER", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27463/thumb/cramercoin.jpg?1664176668" + }, + { + "chainId": 1, + "address": "0x20a8cec5fffea65be7122bcab2ffe32ed4ebf03a", + "name": "DinoX", + "symbol": "DNXC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17321/thumb/asset_icon_dnxc_200.png?1627292452" + }, + { + "chainId": 1, + "address": "0x1c48f86ae57291f7686349f12601910bd8d470bb", + "name": "USDK", + "symbol": "USDK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8824/thumb/usdk.png?1563418517" + }, + { + "chainId": 1, + "address": "0xec5483804e637d45cde22fa0869656b64b5ab1ab", + "name": "Acent", + "symbol": "ACE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15211/thumb/acent-logo.png?1620108963" + }, + { + "chainId": 1, + "address": "0x2e9d63788249371f1dfc918a52f8d799f4a38c94", + "name": "Tokemak", + "symbol": "TOKE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17495/thumb/tokemak-avatar-200px-black.png?1628131614" + }, + { + "chainId": 1, + "address": "0x27702a26126e0b3702af63ee09ac4d1a084ef628", + "name": "Aleph im", + "symbol": "ALEPH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11676/thumb/Monochram-aleph.png?1608483725" + }, + { + "chainId": 1, + "address": "0x88a9a52f944315d5b4e917b9689e65445c401e83", + "name": "FEAR", + "symbol": "FEAR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15825/thumb/fear-logo-400-400.png?1625552865" + }, + { + "chainId": 1, + "address": "0x3d3d35bb9bec23b06ca00fe472b50e7a4c692c30", + "name": "Vidya", + "symbol": "VIDYA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12219/thumb/VIDYA_TOKEN.png?1598240425" + }, + { + "chainId": 1, + "address": "0x8f693ca8d21b157107184d29d398a8d082b38b76", + "name": "Streamr", + "symbol": "DATA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17869/thumb/DATA_new_symbol_3x.png?1629692324" + }, + { + "chainId": 1, + "address": "0x70d2b7c19352bb76e4409858ff5746e500f2b67c", + "name": "Pawtocol", + "symbol": "UPI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12186/thumb/pawtocol.jpg?1597962008" + }, + { + "chainId": 1, + "address": "0xaaca86b876ca011844b5798eca7a67591a9743c8", + "name": "0x nodes", + "symbol": "BIOS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15600/thumb/BIOS_01.png?1621737736" + }, + { + "chainId": 1, + "address": "0x8f8221afbb33998d8584a2b05749ba73c37a938a", + "name": "Request", + "symbol": "REQ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1031/thumb/Request_icon_green.png?1643250951" + }, + { + "chainId": 1, + "address": "0xdbdd6f355a37b94e6c7d32fef548e98a280b8df5", + "name": "UniWhales", + "symbol": "UWL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13166/thumb/uniwhale.png?1611967645" + }, + { + "chainId": 1, + "address": "0x083dfb3566bde80380446718eeda55b800464636", + "name": "AllStars", + "symbol": "ASX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27492/thumb/asx.png?1667044777" + }, + { + "chainId": 1, + "address": "0x269616d549d7e8eaa82dfb17028d0b212d11232a", + "name": "Punk Vault NFTX ", + "symbol": "PUNK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17018/thumb/Punk.png?1626086346" + }, + { + "chainId": 1, + "address": "0x87d73e916d7057945c9bcd8cdd94e42a6f47f776", + "name": "NFTX", + "symbol": "NFTX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13574/thumb/NFTX_%28Real%29.jpg?1613449530" + }, + { + "chainId": 1, + "address": "0xc7a8b45e184138114e6085c82936a8db93dd156a", + "name": "MASK Vault NFTX ", + "symbol": "MASK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17046/thumb/Hashie.png?1626147674" + }, + { + "chainId": 1, + "address": "0x4bd70556ae3f8a6ec6c4080a0c327b24325438f3", + "name": "Hxro", + "symbol": "HXRO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7805/thumb/Hxro_Profile_Transparent.png?1622443308" + }, + { + "chainId": 1, + "address": "0xdd974d5c2e2928dea5f71b9825b8b646686bd200", + "name": "Kyber Network Crystal Legacy", + "symbol": "KNCL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/947/thumb/logo-kncl.png?1618984814" + }, + { + "chainId": 1, + "address": "0x2f141ce366a2462f02cea3d12cf93e4dca49e4fd", + "name": "FREEdom coin", + "symbol": "FREE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5585/thumb/free.png?1639547764" + }, + { + "chainId": 1, + "address": "0x0391d2021f89dc339f60fff84546ea23e337750f", + "name": "BarnBridge", + "symbol": "BOND", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12811/thumb/barnbridge.jpg?1602728853" + }, + { + "chainId": 1, + "address": "0xfa5047c9c78b8877af97bdcb85db743fd7313d4a", + "name": "Rook", + "symbol": "ROOK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13005/thumb/keeper_dao_logo.jpg?1604316506" + }, + { + "chainId": 1, + "address": "0xdf96bde075d59e9143b325c75af38e208c986e6f", + "name": "YetiCoin", + "symbol": "YETIC", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/20493/thumb/yetic.png?1647695460" + }, + { + "chainId": 1, + "address": "0x67b6d479c7bb412c54e03dca8e1bc6740ce6b99c", + "name": "Kylin Network", + "symbol": "KYL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14164/thumb/kyl_logo.jpg?1647507720" + }, + { + "chainId": 1, + "address": "0x0acc0fee1d86d2cd5af372615bf59b298d50cd69", + "name": "Invest Like Stakeborg Index", + "symbol": "ILSI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21788/thumb/16292.png?1640048590" + }, + { + "chainId": 1, + "address": "0xa1d6df714f91debf4e0802a542e13067f31b8262", + "name": "RFOX", + "symbol": "RFOX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12956/thumb/rfox.png?1642926902" + }, + { + "chainId": 1, + "address": "0x1494ca1f11d487c2bbe4543e90080aeba4ba3c2b", + "name": "DeFi Pulse Index", + "symbol": "DPI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12465/thumb/defi_pulse_index_set.png?1600051053" + }, + { + "chainId": 1, + "address": "0x71fc1f555a39e0b698653ab0b475488ec3c34d57", + "name": "Rainmaker Games", + "symbol": "RAIN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21485/thumb/Final-Flip-Rain-Makers-44-1.png?1639362827" + }, + { + "chainId": 1, + "address": "0xa52bffad02b1fe3f86a543a4e81962d3b3bb01a7", + "name": "Duckereum", + "symbol": "DUCKER", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26325/thumb/coin.png?1669981187" + }, + { + "chainId": 1, + "address": "0xbc6e06778708177a18210181b073da747c88490a", + "name": "MOBLAND", + "symbol": "SYNR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22868/thumb/FullML_Yellow_200px.png?1648031600" + }, + { + "chainId": 1, + "address": "0x88df592f8eb5d7bd38bfef7deb0fbc02cf3778a0", + "name": "Tellor", + "symbol": "TRB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9644/thumb/Blk_icon_current.png?1584980686" + }, + { + "chainId": 1, + "address": "0x76c5449f4950f6338a393f53cda8b53b0cd3ca3a", + "name": "BT Finance", + "symbol": "BT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13824/thumb/BT-logo.324f553c.png?1612152632" + }, + { + "chainId": 1, + "address": "0x3cbb7f5d7499af626026e96a2f05df806f2200dc", + "name": "PandaDAO", + "symbol": "PANDA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24926/thumb/PandaDAO_logo_512.png?1649388983" + }, + { + "chainId": 1, + "address": "0xeeeeeeeee2af8d0e1940679860398308e0ef24d6", + "name": "Ethverse", + "symbol": "ETHV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12076/thumb/logo_%2888%29.png?1596751504" + }, + { + "chainId": 1, + "address": "0xc25a3a3b969415c80451098fa907ec722572917f", + "name": "LP sCurve", + "symbol": "SCURVE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11899/thumb/Curvefi_sCrv_32.png?1595931870" + }, + { + "chainId": 1, + "address": "0x362bc847a3a9637d3af6624eec853618a43ed7d2", + "name": "PARSIQ", + "symbol": "PRQ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11973/thumb/DsNgK0O.png?1596590280" + }, + { + "chainId": 1, + "address": "0x11eef04c884e24d9b7b4760e7476d06ddf797f36", + "name": "MX", + "symbol": "MX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8545/thumb/MEXC_GLOBAL_LOGO.jpeg?1670213280" + }, + { + "chainId": 1, + "address": "0x2b89bf8ba858cd2fcee1fada378d5cd6936968be", + "name": "Secret ERC20 ", + "symbol": "WSCRT", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/13767/thumb/Secret_S_Black_Coingecko.png?1611667298" + }, + { + "chainId": 1, + "address": "0xb1cd6e4153b2a390cf00a6556b0fc1458c4a5533", + "name": "ETHBNT Relay", + "symbol": "ETHBNT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10664/thumb/ETHBNT_Relay.png?1581486882" + }, + { + "chainId": 1, + "address": "0x47252a63c723889814aebcac0683e615624cec64", + "name": "Nil DAO", + "symbol": "NIL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19667/thumb/_AoPtxGt_400x400.jpg?1635737598" + }, + { + "chainId": 1, + "address": "0x418d75f65a02b3d53b2418fb8e1fe493759c7605", + "name": "Binance Coin Wormhole ", + "symbol": "BNB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22884/thumb/BNB_wh_small.png?1644224553" + }, + { + "chainId": 1, + "address": "0x0000000000085d4780b73119b644ae5ecd22b376", + "name": "TrueUSD", + "symbol": "TUSD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3449/thumb/tusd.png?1618395665" + }, + { + "chainId": 1, + "address": "0x40a9d39aa50871df092538c5999b107f34409061", + "name": "Instadapp DAI", + "symbol": "IDAI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25821/thumb/iDAI_100x100.png?1654055549" + }, + { + "chainId": 1, + "address": "0x734c90044a0ba31b3f2e640c10dc5d3540499bfd", + "name": "TradeStars", + "symbol": "TSX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15229/thumb/WsO9siKG_400x400.png?1620167669" + }, + { + "chainId": 1, + "address": "0x909e34d3f6124c324ac83dcca84b74398a6fa173", + "name": "Panther Protocol", + "symbol": "ZKP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18611/thumb/panther.jpg?1670986454" + }, + { + "chainId": 1, + "address": "0x1abaea1f7c830bd89acc67ec4af516284b1bc33c", + "name": "Euro Coin", + "symbol": "EUROC", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/26045/thumb/euro-coin.png?1655394420" + }, + { + "chainId": 1, + "address": "0xd71ecff9342a5ced620049e616c5035f1db98620", + "name": "sEUR", + "symbol": "SEUR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13637/thumb/sEUR.png?1610609277" + }, + { + "chainId": 1, + "address": "0x5eeaa2dcb23056f4e8654a349e57ebe5e76b5e6e", + "name": "Virtue Poker Points", + "symbol": "VPP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3386/thumb/vp-logo-200x200.png?1622068750" + }, + { + "chainId": 1, + "address": "0xc4f6e93aeddc11dc22268488465babcaf09399ac", + "name": "hi Dollar", + "symbol": "HI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17618/thumb/unnamed_%281%29.png?1628665739" + }, + { + "chainId": 1, + "address": "0xd9fcd98c322942075a5c3860693e9f4f03aae07b", + "name": "Euler", + "symbol": "EUL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26149/thumb/YCvKDfl8_400x400.jpeg?1656041509" + }, + { + "chainId": 1, + "address": "0x7cca2e1c9b0519f52029467914a15e782bf66971", + "name": "Captain Inu", + "symbol": "CPTINU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21600/thumb/200x200-transparent-logo.png?1639548692" + }, + { + "chainId": 1, + "address": "0x431ad2ff6a9c365805ebad47ee021148d6f7dbe0", + "name": "dForce", + "symbol": "DF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9709/thumb/xlGxxIjI_400x400.jpg?1571006794" + }, + { + "chainId": 1, + "address": "0x2620638eda99f9e7e902ea24a285456ee9438861", + "name": "Crust Shadow", + "symbol": "CSM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16037/thumb/2_mnCYZfHmLg2bFrjM3vKtPw.png?1622680217" + }, + { + "chainId": 1, + "address": "0x3301ee63fb29f863f2333bd4466acb46cd8323e6", + "name": "Akita Inu", + "symbol": "AKITA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14115/thumb/akita.png?1661666578" + }, + { + "chainId": 1, + "address": "0x7e794ed35788b698ae60cefc98ee48015c4876da", + "name": "Shintama", + "symbol": "SHINTAMA", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/23405/thumb/shintama.png?1644145782" + }, + { + "chainId": 1, + "address": "0xd4c64f0fe38ecdaf0baefd7859e18185a73b9aa3", + "name": "Uzumaki Inu", + "symbol": "UZUMAKI", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/18585/thumb/XjTLLU9c_400x400.jpg?1637157360" + }, + { + "chainId": 1, + "address": "0xee6b9cf11d968e0bac7bfff547577b8ae35b8065", + "name": "Meme Kong", + "symbol": "MKONG", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/23448/thumb/ssynFLdjk2SIPSop_i8_8tCRn4rnV9hILMl8AnIFx3DtMIHRVoQ48QHOoqYwGuW9DSbZSJWoaPM0NEypRmrU3ZSXf_ZC16p3YBdT7mbP5vhnGyZMDvVoYm8GwKMYgvEeS9kzqlrNZ3bPWFasbdZD3TKh37BvLgUQiDchz5NiAVpUtrew5Frmox4CoEu_TOSvAV_OvG6A2RYeudy0bY0LUCfuU2.jpg?1644213902" + }, + { + "chainId": 1, + "address": "0x7a58c0be72be218b41c608b7fe7c5bb630736c71", + "name": "ConstitutionDAO", + "symbol": "PEOPLE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20612/thumb/GN_UVm3d_400x400.jpg?1637294355" + }, + { + "chainId": 1, + "address": "0x8db1d28ee0d822367af8d220c0dc7cb6fe9dc442", + "name": "ETHPad", + "symbol": "ETHPAD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17520/thumb/tHAbIBQK_400x400.jpg?1628075612" + }, + { + "chainId": 1, + "address": "0x1a2933fba0c6e959c9a2d2c933f3f8ad4aa9f06e", + "name": "PARMA", + "symbol": "PARMA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23847/thumb/200_%281%29.png?1645519586" + }, + { + "chainId": 1, + "address": "0xd478161c952357f05f0292b56012cd8457f1cfbf", + "name": "Polkamarkets", + "symbol": "POLK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14084/thumb/polkamarkets.jpg?1614179979" + }, + { + "chainId": 1, + "address": "0x08d32b0da63e2c3bcf8019c9c5d849d7a9d791e6", + "name": "Dentacoin", + "symbol": "DCN", + "decimals": 0, + "logoURI": "https://assets.coingecko.com/coins/images/850/thumb/dentacoin.png?1547034647" + }, + { + "chainId": 1, + "address": "0x64a60493d888728cf42616e034a0dfeae38efcf0", + "name": "OneLedger", + "symbol": "OLT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3422/thumb/One_Ledger.jpeg?1547038108" + }, + { + "chainId": 1, + "address": "0x295b42684f90c77da7ea46336001010f2791ec8c", + "name": "Xi", + "symbol": "XI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18640/thumb/v5NMxPo.png?1632751046" + }, + { + "chainId": 1, + "address": "0xb3ad645db386d7f6d753b2b9c3f4b853da6890b8", + "name": "Concentrator", + "symbol": "CTR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26364/thumb/%E6%9C%AA%E5%91%BD%E5%90%8D%E7%9A%84%E8%AE%BE%E8%AE%A1.jpg?1657596066" + }, + { + "chainId": 1, + "address": "0x16cda4028e9e872a38acb903176719299beaed87", + "name": "MARS4", + "symbol": "MARS4", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18709/thumb/mars4_logo.jpg?1633070237" + }, + { + "chainId": 1, + "address": "0x1796ae0b0fa4862485106a0de9b654efe301d0b2", + "name": "Polychain Monsters", + "symbol": "PMON", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14604/thumb/polkamon.png?1617238350" + }, + { + "chainId": 1, + "address": "0xe0ad1806fd3e7edf6ff52fdb822432e847411033", + "name": "OnX Finance", + "symbol": "ONX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13445/thumb/onxlogo-1.png?1608629659" + }, + { + "chainId": 1, + "address": "0x1fe24f25b1cf609b9c4e7e12d802e3640dfa5e43", + "name": "Chain Guardians", + "symbol": "CGG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14326/thumb/cgg_logo.png?1615429976" + }, + { + "chainId": 1, + "address": "0xa3c56427683a19f7574b9fc219cfd27d5d6e87fa", + "name": "Saitoki Inu", + "symbol": "SAITOKI", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/23586/thumb/saitoki_200.png?1667467076" + }, + { + "chainId": 1, + "address": "0x005d1123878fc55fbd56b54c73963b234a64af3c", + "name": "Kiba Inu", + "symbol": "KIBA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19525/thumb/kiba.png?1648549322" + }, + { + "chainId": 1, + "address": "0x3218a02f8f8b5c3894ce30eb255f10bcba13e654", + "name": "MegaCryptoPolis", + "symbol": "MEGA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12971/thumb/mcp_icon_200.png?1603943441" + }, + { + "chainId": 1, + "address": "0xead482da0793b00bbae0e34c8cfae6daf29a44b2", + "name": "Versailles Heroes", + "symbol": "VRH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27860/thumb/VRH___200-200.png?1667467208" + }, + { + "chainId": 1, + "address": "0xa59e341e8047498700ed244814b01b34547fb21b", + "name": "Medal of Honour", + "symbol": "MOH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27861/thumb/MOH___200-200.png?1667467198" + }, + { + "chainId": 1, + "address": "0x88acdd2a6425c3faae4bc9650fd7e27e0bebb7ab", + "name": "Alchemist", + "symbol": "MIST", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14655/thumb/79158662.png?1617589045" + }, + { + "chainId": 1, + "address": "0xe1747a23c44f445062078e3c528c9f4c28c50a51", + "name": "Eterna Hybrid Exchange", + "symbol": "EHX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24825/thumb/_0VJF4cs_400x400.jpg?1649042250" + }, + { + "chainId": 1, + "address": "0xf001937650bb4f62b57521824b2c20f5b91bea05", + "name": "Taraxa", + "symbol": "TARA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4372/thumb/CPuCDZX.jpg?1616391360" + }, + { + "chainId": 1, + "address": "0x72e364f2abdc788b7e918bc238b21f109cd634d7", + "name": "Metaverse Index", + "symbol": "MVI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14684/thumb/MVI_logo.png?1617776444" + }, + { + "chainId": 1, + "address": "0x84cffa78b2fbbeec8c37391d2b12a04d2030845e", + "name": "Digital Fitness", + "symbol": "DEFIT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14699/thumb/Defit.png?1623738365" + }, + { + "chainId": 1, + "address": "0xcd7492db29e2ab436e819b249452ee1bbdf52214", + "name": "SafeMoon Inu", + "symbol": "SMI", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/16091/thumb/SMI.png?1622801787" + }, + { + "chainId": 1, + "address": "0x75858677e27c930fb622759feaffee2b754af07f", + "name": "Phantasma", + "symbol": "SOUL", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/4130/thumb/phantasma.png?1548331035" + }, + { + "chainId": 1, + "address": "0x9695e0114e12c0d3a3636fab5a18e6b737529023", + "name": "Dfyn Network", + "symbol": "DFYN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15368/thumb/SgqhfWz4_400x400_%281%29.jpg?1620666919" + }, + { + "chainId": 1, + "address": "0xd6929179d752d5d25c5efe2d9729eb77d7138a80", + "name": "Goons of Balatroon", + "symbol": "GOB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27104/thumb/q1_hZykF_400x400.jpeg?1662006909" + }, + { + "chainId": 1, + "address": "0xa1b26b9918b350e9657d9ab43a45088805d65e4e", + "name": "Kings Coin", + "symbol": "KINGS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27643/thumb/photo_2022-10-05_10.01.29.jpeg?1665019588" + }, + { + "chainId": 1, + "address": "0x5a666c7d92e5fa7edcb6390e4efd6d0cdd69cf37", + "name": "Unmarshal", + "symbol": "MARSH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14554/thumb/img_circle_256x256.png?1616997706" + }, + { + "chainId": 1, + "address": "0x4575f41308ec1483f3d399aa9a2826d74da13deb", + "name": "Orchid Protocol", + "symbol": "OXT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3916/thumb/download_%285%29.png?1576624060" + }, + { + "chainId": 1, + "address": "0x2e85ae1c47602f7927bcabc2ff99c40aa222ae15", + "name": "Katana Inu", + "symbol": "KATA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21872/thumb/Katana_Inu512.png?1640236880" + }, + { + "chainId": 1, + "address": "0x6368e1e18c4c419ddfc608a0bed1ccb87b9250fc", + "name": "Tap", + "symbol": "XTP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10291/thumb/0_3SJYkk_400x400.jpg?1577229220" + }, + { + "chainId": 1, + "address": "0xefab7248d36585e2340e5d25f8a8d243e6e3193f", + "name": "Dacxi", + "symbol": "DACXI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4466/thumb/dacxi.png?1639042471" + }, + { + "chainId": 1, + "address": "0x30d20208d987713f46dfd34ef128bb16c404d10f", + "name": "Stader", + "symbol": "SD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20658/thumb/sd.png?1642927667" + }, + { + "chainId": 1, + "address": "0x84d821f7fbdd595c4c4a50842913e6b1e07d7a53", + "name": "BNPL Pay", + "symbol": "BNPL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18543/thumb/Untitled_%28200_%C3%97_200_px%29_%281%29.png?1667541672" + }, + { + "chainId": 1, + "address": "0xffbf315f70e458e49229654dea4ce192d26f9b25", + "name": "Voltage", + "symbol": "VOLT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18515/thumb/volt.png?1632219924" + }, + { + "chainId": 1, + "address": "0xaa9d866666c2a3748d6b23ff69e63e52f08d9ab4", + "name": "Fundamenta", + "symbol": "FMTA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12983/thumb/fundamenta.png?1604065939" + }, + { + "chainId": 1, + "address": "0x0000000000004946c0e9f43f4dee607b0ef1fa1c", + "name": "Chi Gas", + "symbol": "CHI", + "decimals": 0, + "logoURI": "https://assets.coingecko.com/coins/images/11583/thumb/chi.png?1591331659" + }, + { + "chainId": 1, + "address": "0xe95a203b1a91a908f9b9ce46459d101078c2c3cb", + "name": "Ankr Reward Bearing Staked ETH", + "symbol": "AETHC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13403/thumb/aETHc.png?1625756490" + }, + { + "chainId": 1, + "address": "0x06fcbf38e823efc1e609b9491aab546334c6ee69", + "name": "Stilton Musk OLD ", + "symbol": "STILTON", + "decimals": 0, + "logoURI": "https://assets.coingecko.com/coins/images/23572/thumb/2022-02-09_11.32.27-removebg-preview.png?1644475684" + }, + { + "chainId": 1, + "address": "0x44e2dec86b9f0e0266e9aa66e10323a2bd69cf9a", + "name": "Attrace", + "symbol": "ATTR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4395/thumb/attrace.png?1624466360" + }, + { + "chainId": 1, + "address": "0x4e352cf164e64adcbad318c3a1e222e9eba4ce42", + "name": "MUX Protocol", + "symbol": "MCB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11796/thumb/mux.jpg?1660125796" + }, + { + "chainId": 1, + "address": "0xedf6568618a00c6f0908bf7758a16f76b6e04af9", + "name": "Arianee", + "symbol": "ARIA20", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5054/thumb/Aria_Logo_256.png?1610097866" + }, + { + "chainId": 1, + "address": "0x8052327f1baf94a9dc8b26b9100f211ee3774f54", + "name": "A2DAO", + "symbol": "ATD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14509/thumb/8926.png?1645686353" + }, + { + "chainId": 1, + "address": "0x26a604dffe3ddab3bee816097f81d3c4a2a4cf97", + "name": "CorionX", + "symbol": "CORX", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/13129/thumb/x_log.png?1605515405" + }, + { + "chainId": 1, + "address": "0x14da230d6726c50f759bc1838717f8ce6373509c", + "name": "Kambria", + "symbol": "KAT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4784/thumb/kambria.png?1547040127" + }, + { + "chainId": 1, + "address": "0xd502f487e1841fdc805130e13eae80c61186bc98", + "name": "Integral", + "symbol": "ITGR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18381/thumb/icon.png?1650331643" + }, + { + "chainId": 1, + "address": "0x9c4a4204b79dd291d6b6571c5be8bbcd0622f050", + "name": "Tracer DAO", + "symbol": "TCR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18271/thumb/tracer_logo.png?1631176676" + }, + { + "chainId": 1, + "address": "0x95aa5d2dbd3c16ee3fdea82d5c6ec3e38ce3314f", + "name": "PointPay", + "symbol": "PXP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8950/thumb/6f9823ed-464a-4413-8940-72aa61d30b43.png?1645271610" + }, + { + "chainId": 1, + "address": "0x3a4f40631a4f906c2bad353ed06de7a5d3fcb430", + "name": "PlayDapp", + "symbol": "PLA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14316/thumb/54023228.png?1615366911" + }, + { + "chainId": 1, + "address": "0xc770eefad204b5180df6a14ee197d99d808ee52d", + "name": "ShapeShift FOX", + "symbol": "FOX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9988/thumb/FOX.png?1574330622" + }, + { + "chainId": 1, + "address": "0x6e605c269e0c92e70beeb85486f1fc550f9380bd", + "name": "Catex", + "symbol": "CATT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6353/thumb/catex.png?1548733307" + }, + { + "chainId": 1, + "address": "0x0cba60ca5ef4d42f92a5070a8fedd13be93e2861", + "name": "The Protocol", + "symbol": "THE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27849/thumb/cSar5sDM_400x400.jpg?1666085191" + }, + { + "chainId": 1, + "address": "0xd52aae39a2b5cc7812f7b9450ebb61dfef702b15", + "name": "MetaBrands", + "symbol": "MAGE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21244/thumb/MAGE-CG.png?1638766340" + }, + { + "chainId": 1, + "address": "0xc538143202f3b11382d8606aae90a96b042a19db", + "name": "Coinsbit Token", + "symbol": "CNB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10340/thumb/cbicon.png?1578637386" + }, + { + "chainId": 1, + "address": "0xc666081073e8dff8d3d1c2292a29ae1a2153ec09", + "name": "Digitex", + "symbol": "DGTX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2188/thumb/DGTX.png?1616385887" + }, + { + "chainId": 1, + "address": "0xbd3de9a069648c84d27d74d701c9fa3253098b15", + "name": "EQIFi", + "symbol": "EQX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17490/thumb/EQIFI_Logo_Color.png?1627968404" + }, + { + "chainId": 1, + "address": "0x037a54aab062628c9bbae1fdb1583c195585fe41", + "name": "LCX", + "symbol": "LCX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9985/thumb/zRPSu_0o_400x400.jpg?1574327008" + }, + { + "chainId": 1, + "address": "0x1776e1f26f98b1a5df9cd347953a26dd3cb46671", + "name": "Numeraire", + "symbol": "NMR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/752/thumb/numeraire.png?1592538976" + }, + { + "chainId": 1, + "address": "0x722f97a435278b7383a1e3c47f41773bebf3232c", + "name": "UCROWDME", + "symbol": "UCM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12079/thumb/UKm2qXh.png?1605346168" + }, + { + "chainId": 1, + "address": "0x0c9c7712c83b3c70e7c5e11100d33d9401bdf9dd", + "name": "Wombat", + "symbol": "WOMBAT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26430/thumb/Project_Page_Icon.png?1657930951" + }, + { + "chainId": 1, + "address": "0x1e4ede388cbc9f4b5c79681b7f94d36a11abebc9", + "name": "X2Y2", + "symbol": "X2Y2", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23633/thumb/logo-60b81ff87b40b11739105acf5ad1e075.png?1644903256" + }, + { + "chainId": 1, + "address": "0x81f8f0bb1cb2a06649e51913a151f0e7ef6fa321", + "name": "VitaDAO", + "symbol": "VITA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16580/thumb/QmRjwywiAfpzSfQTuWM3zCTghSHN7G6ohQaar7Ht6WANUp.png?1624506420" + }, + { + "chainId": 1, + "address": "0x33349b282065b0284d756f0577fb39c158f935e6", + "name": "Maple", + "symbol": "MPL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14097/thumb/Maple_Logo_Mark_Maple_Orange.png?1653381382" + }, + { + "chainId": 1, + "address": "0x2602278ee1882889b946eb11dc0e810075650983", + "name": "Vader Protocol", + "symbol": "VADER", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20497/thumb/AcF08Jk1_400x400.jpg?1637131991" + }, + { + "chainId": 1, + "address": "0x3b484b82567a09e2588a13d54d032153f0c0aee0", + "name": "OpenDAO", + "symbol": "SOS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21956/thumb/fo42wXI6_400x400.jpg?1640373810" + }, + { + "chainId": 1, + "address": "0x1df7aa5551e801e280007dc0fc0454e2d06c1a89", + "name": "BKEX Chain", + "symbol": "BKK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7734/thumb/b8a9c996583ee19c2a98dca34b92a26.png?1646290715" + }, + { + "chainId": 1, + "address": "0xf4b5470523ccd314c6b9da041076e7d79e0df267", + "name": "blockbank", + "symbol": "BBANK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15081/thumb/blockbank.jpg?1667183379" + }, + { + "chainId": 1, + "address": "0xc8871267e07408b89aa5aecc58adca5e574557f8", + "name": "Instadapp USDC", + "symbol": "IUSDC", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/25820/thumb/iUSDC_100x100.png?1654055475" + }, + { + "chainId": 1, + "address": "0xd528cf2e081f72908e086f8800977df826b5a483", + "name": "Paribus", + "symbol": "PBX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18410/thumb/paribus.PNG?1631828570" + }, + { + "chainId": 1, + "address": "0x1a7e4e63778b4f12a199c062f3efdd288afcbce8", + "name": "agEUR", + "symbol": "AGEUR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19479/thumb/agEUR.png?1635283566" + }, + { + "chainId": 1, + "address": "0xf9fbe825bfb2bf3e387af0dc18cac8d87f29dea8", + "name": "Radar", + "symbol": "RADAR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13909/thumb/RADAR.png?1634183461" + }, + { + "chainId": 1, + "address": "0xbb1ee07d6c7baeb702949904080eb61f5d5e7732", + "name": "Dogey Inu", + "symbol": "DINU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16374/thumb/512x512_dinu_logo.jpg?1623919813" + }, + { + "chainId": 1, + "address": "0xdddddd4301a082e62e84e43f474f044423921918", + "name": "Rhino fi", + "symbol": "DVF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16414/thumb/rhinofii.jpg?1657812510" + }, + { + "chainId": 1, + "address": "0x99ea4db9ee77acd40b119bd1dc4e33e1c070b80d", + "name": "Quantstamp", + "symbol": "QSP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1219/thumb/0_E0kZjb4dG4hUnoDD_.png?1604815917" + }, + { + "chainId": 1, + "address": "0x40955d77f87123b71b145098358a60573ac7be96", + "name": "Daisy Protocol", + "symbol": "DAISY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17844/thumb/daisy.PNG?1629497116" + }, + { + "chainId": 1, + "address": "0x2ab6bb8408ca3199b8fa6c92d5b455f820af03c4", + "name": "TE FOOD", + "symbol": "TONE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2325/thumb/tec.png?1547036538" + }, + { + "chainId": 1, + "address": "0xc146b7cdbaff065090077151d391f4c96aa09e0c", + "name": "Multi Chain Capital", + "symbol": "MCC", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/21621/thumb/mcc.png?1639622572" + }, + { + "chainId": 1, + "address": "0x01ba67aac7f75f647d94220cc98fb30fcc5105bf", + "name": "Lyra Finance", + "symbol": "LYRA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21490/thumb/Add-a-heading-26.png?1639364177" + }, + { + "chainId": 1, + "address": "0xff75ced57419bcaebe5f05254983b013b0646ef5", + "name": "Cook", + "symbol": "COOK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14603/thumb/logo-200x200.jpg?1622448330" + }, + { + "chainId": 1, + "address": "0x4674a4f24c5f63d53f22490fb3a08eaaad739ff8", + "name": "Brokoli", + "symbol": "BRKL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18763/thumb/brkl.png?1633356263" + }, + { + "chainId": 1, + "address": "0x347a96a5bd06d2e15199b032f46fb724d6c73047", + "name": "ASIC Token", + "symbol": "ASIC", + "decimals": 12, + "logoURI": "https://assets.coingecko.com/coins/images/27952/thumb/ASIC_Token_Logo.png?1666668286" + }, + { + "chainId": 1, + "address": "0xc22b30e4cce6b78aaaadae91e44e73593929a3e9", + "name": "RAC", + "symbol": "RAC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12675/thumb/rac_logo_%281%29.jpg?1601526417" + }, + { + "chainId": 1, + "address": "0xa68dd8cb83097765263adad881af6eed479c4a33", + "name": "Fees wtf", + "symbol": "WTF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22581/thumb/feeswtf.jpg?1642120508" + }, + { + "chainId": 1, + "address": "0x5274891bec421b39d23760c04a6755ecb444797c", + "name": "IdleUSDC Yield ", + "symbol": "IDLEUSDCYIELD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11932/thumb/idleusdcv3_32.png?1596263673" + }, + { + "chainId": 1, + "address": "0x821144518dfe9e7b44fcf4d0824e15e8390d4637", + "name": "Atlantis ATIS", + "symbol": "ATIS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12112/thumb/atis_token_logo.png?1600097654" + }, + { + "chainId": 1, + "address": "0x39ea10e507720783c27edd5f96bf2d6e199579b8", + "name": "DeltaFlare", + "symbol": "HONR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28059/thumb/DF_Logo_200x200.png?1667298738" + }, + { + "chainId": 1, + "address": "0xf34842d05a1c888ca02769a633df37177415c2f8", + "name": "IdleUSDT Yield ", + "symbol": "IDLEUSDTYIELD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11933/thumb/idleusdtv3maxyield_32.png?1596263688" + }, + { + "chainId": 1, + "address": "0xface851a4921ce59e912d19329929ce6da6eb0c7", + "name": "cLINK", + "symbol": "CLINK", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/23943/thumb/iShot2022-02-25_14.35.54.png?1645770966" + }, + { + "chainId": 1, + "address": "0xffc97d72e13e01096502cb8eb52dee56f74dad7b", + "name": "Aave AAVE", + "symbol": "AAAVE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17248/thumb/amAAVE_2x.png?1626941140" + }, + { + "chainId": 1, + "address": "0x616e8bfa43f920657b3497dbf40d6b1a02d4608d", + "name": "Aura BAL", + "symbol": "AURABAL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26538/thumb/auraBAL.png?1658721102" + }, + { + "chainId": 1, + "address": "0xae78736cd615f374d3085123a210448e74fc6393", + "name": "Rocket Pool ETH", + "symbol": "RETH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20764/thumb/reth.png?1637652366" + }, + { + "chainId": 1, + "address": "0x10bc518c32fbae5e38ecb50a612160571bd81e44", + "name": "VeraOne", + "symbol": "VRO", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/11112/thumb/wsBaVF.png?1588639964" + }, + { + "chainId": 1, + "address": "0x501ace9c35e60f03a2af4d484f49f9b1efde9f40", + "name": "SOLACE", + "symbol": "SOLACE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21277/thumb/IMG_6599.png?1638862378" + }, + { + "chainId": 1, + "address": "0x9d38f670d15c14716be1f109a4f453e966a2b6d4", + "name": "Quid Ika", + "symbol": "QUID", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/18995/thumb/PcJP5nK.png?1634126273" + }, + { + "chainId": 1, + "address": "0x26607ac599266b21d13c7acf7942c7701a8b699c", + "name": "Power Index Pool", + "symbol": "PIPT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13281/thumb/pipt_logo.jpg?1606910642" + }, + { + "chainId": 1, + "address": "0x3ab6ed69ef663bd986ee59205ccad8a20f98b4c2", + "name": "Drep", + "symbol": "DREP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14578/thumb/KotgsCgS_400x400.jpg?1617094445" + }, + { + "chainId": 1, + "address": "0x841fb148863454a3b3570f515414759be9091465", + "name": "Shih Tzu", + "symbol": "SHIH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15309/thumb/shit.PNG?1620374274" + }, + { + "chainId": 1, + "address": "0xabd4dc8fde9848cbc4ff2c0ee81d4a49f4803da4", + "name": "Squeeze", + "symbol": "SQUEEZE", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/18554/thumb/squeeze.png?1632377096" + }, + { + "chainId": 1, + "address": "0x56a86d648c435dc707c8405b78e2ae8eb4e60ba4", + "name": "StackOS", + "symbol": "STACK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14989/thumb/stackos.jpg?1661420187" + }, + { + "chainId": 1, + "address": "0x1b073382e63411e3bcffe90ac1b9a43fefa1ec6f", + "name": "Bitpanda Ecosystem", + "symbol": "BEST", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/8738/thumb/BEST-Coin-Logo.png?1619079782" + }, + { + "chainId": 1, + "address": "0x4cff49d0a19ed6ff845a9122fa912abcfb1f68a6", + "name": "WadzPay", + "symbol": "WTK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13083/thumb/200xWadzToken.png?1604984329" + }, + { + "chainId": 1, + "address": "0x1fcdce58959f536621d76f5b7ffb955baa5a672f", + "name": "ForTube", + "symbol": "FOR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8242/thumb/for.png?1606195375" + }, + { + "chainId": 1, + "address": "0x3f9bec82c776c47405bcb38070d2395fd18f89d3", + "name": "Phantom Protocol", + "symbol": "PHM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18253/thumb/phm.PNG?1631137732" + }, + { + "chainId": 1, + "address": "0x4a621d9f1b19296d1c0f87637b3a8d4978e9bf82", + "name": "CyberFM", + "symbol": "CYFM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5476/thumb/cyberfm.png?1547041216" + }, + { + "chainId": 1, + "address": "0x5c6ff62552a25d68d453277dd3693f94c7e8c964", + "name": "Fit Beat", + "symbol": "FTB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18871/thumb/ftb.png?1638183072" + }, + { + "chainId": 1, + "address": "0x4da0c48376c277cdbd7fc6fdc6936dee3e4adf75", + "name": "Epik Prime", + "symbol": "EPIK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17907/thumb/EPIK_Prime_LOGO.jpg?1630738458" + }, + { + "chainId": 1, + "address": "0x0ec9f76202a7061eb9b3a7d6b59d36215a7e37da", + "name": "BlackPool", + "symbol": "BPT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15887/thumb/uyO7dQzR_400x400.jpg?1622199432" + }, + { + "chainId": 1, + "address": "0xf8ad7dfe656188a23e89da09506adf7ad9290d5d", + "name": "Blocery", + "symbol": "BLY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12095/thumb/Blocery_logo_200x200_.png?1597046107" + }, + { + "chainId": 1, + "address": "0x9196e18bc349b1f64bc08784eae259525329a1ad", + "name": "Pussy Financial", + "symbol": "PUSSY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15213/thumb/pussytoken.png?1620110339" + }, + { + "chainId": 1, + "address": "0x19062190b1925b5b6689d7073fdfc8c2976ef8cb", + "name": "Swarm", + "symbol": "BZZ", + "decimals": 16, + "logoURI": "https://assets.coingecko.com/coins/images/16509/thumb/Swarm_Logo_1_%E2%97%8B_1_200px.png?1628508564" + }, + { + "chainId": 1, + "address": "0xf8483e2d6560585c02d46bf7b3186bf154a96166", + "name": "IdeaChain", + "symbol": "ICH", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/11053/thumb/4fJlFzca_400x400.jpg?1587609361" + }, + { + "chainId": 1, + "address": "0xb1abd7aba7d99bbefb33d1dfc66b0dd522335350", + "name": "Euro Stable Token", + "symbol": "EURST", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20988/thumb/AF3E1D9F-4817-4FC4-BC80-FFF30A3E1B91.PNG?1638169603" + }, + { + "chainId": 1, + "address": "0x5d30ad9c6374bf925d0a75454fa327aacf778492", + "name": "PERI Finance", + "symbol": "PERI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15313/thumb/6xVEMS1.png?1620375905" + }, + { + "chainId": 1, + "address": "0xfc0d6cf33e38bce7ca7d89c0e292274031b7157a", + "name": "Netvrk", + "symbol": "NTVRK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15721/thumb/netvrk_icon.png?1627536091" + }, + { + "chainId": 1, + "address": "0x940a2db1b7008b6c776d4faaca729d6d4a4aa551", + "name": "DUSK Network", + "symbol": "DUSK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5217/thumb/D_ticker_purple_on_circle_%282%29.png?1563781659" + }, + { + "chainId": 1, + "address": "0xb7cb1c96db6b22b0d3d9536e0108d062bd488f74", + "name": "Waltonchain", + "symbol": "WTC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1093/thumb/ggx6nnW.png?1604815811" + }, + { + "chainId": 1, + "address": "0xe7f58a92476056627f9fdb92286778abd83b285f", + "name": "DecentraWeb", + "symbol": "DWEB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18971/thumb/dweb-logo-transparent.png?1634082358" + }, + { + "chainId": 1, + "address": "0x1ea48b9965bb5086f3b468e50ed93888a661fc17", + "name": "Defi Franc Moneta", + "symbol": "MON", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27493/thumb/logo-moneta.png?1664268389" + }, + { + "chainId": 1, + "address": "0xd794dd1cada4cf79c9eebaab8327a1b0507ef7d4", + "name": "Hyve", + "symbol": "HYVE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13072/thumb/bAe1G-lD_400x400.png?1654056255" + }, + { + "chainId": 1, + "address": "0x83249c6794bca5a77eb8c0af9f1a86e055459cea", + "name": "GigaSwap", + "symbol": "GIGA", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/26919/thumb/final_62fcaacdbcc9640975d3fb7c_822256.png?1660815521" + }, + { + "chainId": 1, + "address": "0x3f3cd642e81d030d7b514a2ab5e3a5536beb90ec", + "name": "Rho", + "symbol": "RHO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25540/thumb/Rho-icon-03.png?1652265700" + }, + { + "chainId": 1, + "address": "0x48c276e8d03813224bb1e55f953adb6d02fd3e02", + "name": "Kuma Inu", + "symbol": "KUMA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15526/thumb/kuma_inu.PNG?1621128824" + }, + { + "chainId": 1, + "address": "0xa8b919680258d369114910511cc87595aec0be6d", + "name": "LUKSO", + "symbol": "LYXE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11423/thumb/1_QAHTciwVhD7SqVmfRW70Pw.png?1590110612" + }, + { + "chainId": 1, + "address": "0xc50ef449171a51fbeafd7c562b064b6471c36caa", + "name": "Zombie Inu", + "symbol": "ZINU", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/19516/thumb/zinu.jpeg?1635321575" + }, + { + "chainId": 1, + "address": "0xc9f1016d336ef77aee75fc11ad64c5ecf9121332", + "name": "SoMee Advertising", + "symbol": "SAT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16040/thumb/SoMee.png?1622683511" + }, + { + "chainId": 1, + "address": "0xa67e9f021b9d208f7e3365b2a155e3c55b27de71", + "name": "KleeKai", + "symbol": "KLEE", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/15548/thumb/Klee-Kai-Logo.png?1628258448" + }, + { + "chainId": 1, + "address": "0x35f67c1d929e106fdff8d1a55226afe15c34dbe2", + "name": "Beta", + "symbol": "BETA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25539/thumb/Beta-47.png?1652265414" + }, + { + "chainId": 1, + "address": "0xffffffff2ba8f66d4e51811c5190992176930278", + "name": "Furucombo", + "symbol": "COMBO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13629/thumb/COMBO_token_ol.png?1610701537" + }, + { + "chainId": 1, + "address": "0xbd0a4bf098261673d5e6e600fd87ddcd756e6764", + "name": "Hina Inu", + "symbol": "HINA", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/15993/thumb/download.png?1622549919" + }, + { + "chainId": 1, + "address": "0x3f5dd1a1538a4f9f82e543098f01f22480b0a3a8", + "name": "KumaDex Token", + "symbol": "DKUMA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26693/thumb/dkumaOG02_CoinGecko.png?1660618296" + }, + { + "chainId": 1, + "address": "0xf4dc48d260c93ad6a96c5ce563e70ca578987c74", + "name": "Babylon Finance", + "symbol": "BABL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20049/thumb/favicon-260x260.png?1636426809" + }, + { + "chainId": 1, + "address": "0xd5525d397898e5502075ea5e830d8914f6f0affe", + "name": "Meme", + "symbol": "MEME", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/12140/thumb/meme-coin.jpeg?1619249191" + }, + { + "chainId": 1, + "address": "0x990f341946a3fdb507ae7e52d17851b87168017c", + "name": "Strong", + "symbol": "STRONG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12092/thumb/STRONG-Token-256x256.png?1597823573" + }, + { + "chainId": 1, + "address": "0xc477d038d5420c6a9e0b031712f61c5120090de9", + "name": "Boson Protocol", + "symbol": "BOSON", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14710/thumb/boson_logo.png?1617882472" + }, + { + "chainId": 1, + "address": "0x6b4c7a5e3f0b99fcd83e9c089bddd6c7fce5c611", + "name": "Million", + "symbol": "MM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16825/thumb/logo200x200.png?1625834139" + }, + { + "chainId": 1, + "address": "0xaa8330fb2b4d5d07abfe7a72262752a8505c6b37", + "name": "Polkacity", + "symbol": "POLC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14066/thumb/vykih1Nq_400x400.png?1614130959" + }, + { + "chainId": 1, + "address": "0x9b39a0b97319a9bd5fed217c1db7b030453bac91", + "name": "TigerCash", + "symbol": "TCH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4956/thumb/tigercash-logo.png?1547040378" + }, + { + "chainId": 1, + "address": "0x875773784af8135ea0ef43b5a374aad105c5d39e", + "name": "IDLE", + "symbol": "IDLE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13286/thumb/image.png?1655284075" + }, + { + "chainId": 1, + "address": "0xca0e7269600d353f70b14ad118a49575455c0f2f", + "name": "AMLT Network", + "symbol": "AMLT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2703/thumb/amlt.png?1563794756" + }, + { + "chainId": 1, + "address": "0xba8a621b4a54e61c442f5ec623687e2a942225ef", + "name": "Sandclock", + "symbol": "QUARTZ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19368/thumb/sandclock.jpg?1635132501" + }, + { + "chainId": 1, + "address": "0x21bfbda47a0b4b5b1248c767ee49f7caa9b23697", + "name": "Ovr", + "symbol": "OVR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13429/thumb/ovr_logo.png?1608518911" + }, + { + "chainId": 1, + "address": "0x6bb61215298f296c55b19ad842d3df69021da2ef", + "name": "Drops Ownership Power", + "symbol": "DOP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15696/thumb/dop.png?1640325078" + }, + { + "chainId": 1, + "address": "0xdf347911910b6c9a4286ba8e2ee5ea4a39eb2134", + "name": "Bob s Repair", + "symbol": "BOB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3550/thumb/PNG_BOB_Token_Large.png?1547038375" + }, + { + "chainId": 1, + "address": "0xa36fdbbae3c9d55a1d67ee5821d53b50b63a1ab9", + "name": "Tempus", + "symbol": "TEMP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20547/thumb/Tempus_CoinGecko_200x200.png?1657674634" + }, + { + "chainId": 1, + "address": "0x056354f3ff20743aa4c0da365603871c7000b081", + "name": "TriumphX", + "symbol": "TRIX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12270/thumb/TRIX_Logo_transparent.png?1598619314" + }, + { + "chainId": 1, + "address": "0x6810e776880c02933d47db1b9fc05908e5386b96", + "name": "Gnosis", + "symbol": "GNO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/662/thumb/logo_square_simple_300px.png?1609402668" + }, + { + "chainId": 1, + "address": "0xa4eed63db85311e22df4473f87ccfc3dadcfa3e3", + "name": "Rubic", + "symbol": "RBC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12629/thumb/200x200.png?1607952509" + }, + { + "chainId": 1, + "address": "0x8037b1b69d6fa63a9cc053c25f7e168e6e6d857a", + "name": "Parts of Four Coin", + "symbol": "P4C", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20774/thumb/Artboard_1_copy_2x.png?1637660521" + }, + { + "chainId": 1, + "address": "0x74b988156925937bd4e082f0ed7429da8eaea8db", + "name": "Meme Inu", + "symbol": "MEME", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20755/thumb/photo_2021-11-20_13-39-45.jpg?1637638928" + }, + { + "chainId": 1, + "address": "0x584bc13c7d411c00c01a62e8019472de68768430", + "name": "Hegic", + "symbol": "HEGIC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12454/thumb/new.png?1628668523" + }, + { + "chainId": 1, + "address": "0xbaac2b4491727d78d2b78815144570b9f2fe8899", + "name": "The Doge NFT", + "symbol": "DOG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18111/thumb/Doge.png?1630696110" + }, + { + "chainId": 1, + "address": "0xd01409314acb3b245cea9500ece3f6fd4d70ea30", + "name": "LTO Network", + "symbol": "LTO", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/6068/thumb/lto.png?1638855565" + }, + { + "chainId": 1, + "address": "0x1d2d542e6d9d85a712deb4d1a7d96a16ce00b8ce", + "name": "Proof Of Apes", + "symbol": "POA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27896/thumb/POA.png?1666318268" + }, + { + "chainId": 1, + "address": "0x8971f9fd7196e5cee2c1032b50f656855af7dd26", + "name": "Lambda", + "symbol": "LAMB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4703/thumb/lambda_200.png?1666431649" + }, + { + "chainId": 1, + "address": "0xfeeb4d0f5463b1b04351823c246bdb84c4320cc2", + "name": "Gold Retriever", + "symbol": "GLDN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27529/thumb/33406C30-2F50-45D8-9F75-5B7EAEB23038.jpeg?1664371749" + }, + { + "chainId": 1, + "address": "0x15b543e986b8c34074dfc9901136d9355a537e7e", + "name": "Student Coin", + "symbol": "STC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6260/thumb/logo_in_circle_%281%29.png?1667725082" + }, + { + "chainId": 1, + "address": "0x131157c6760f78f7ddf877c0019eba175ba4b6f6", + "name": "BigShortBets", + "symbol": "BIGSB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18235/thumb/bigsb-token-logo.png?1631065645" + }, + { + "chainId": 1, + "address": "0x471d113059324321749e097705197a2b44a070fc", + "name": "Kanga Exchange", + "symbol": "KNG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21188/thumb/kanga.PNG?1638514737" + }, + { + "chainId": 1, + "address": "0x8ab7404063ec4dbcfd4598215992dc3f8ec853d7", + "name": "Akropolis", + "symbol": "AKRO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3328/thumb/Akropolis.png?1547037929" + }, + { + "chainId": 1, + "address": "0x5732046a883704404f284ce41ffadd5b007fd668", + "name": "Bluzelle", + "symbol": "BLZ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2848/thumb/ColorIcon_3x.png?1622516510" + }, + { + "chainId": 1, + "address": "0x949d48eca67b17269629c7194f4b727d4ef9e5d6", + "name": "Merit Circle", + "symbol": "MC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19304/thumb/Db4XqML.png?1634972154" + }, + { + "chainId": 1, + "address": "0xa01199c61841fce3b3dafb83fefc1899715c8756", + "name": "Cirus", + "symbol": "CIRUS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17798/thumb/8p0Bvi90_400x400.jpg?1629281912" + }, + { + "chainId": 1, + "address": "0x83c141ee88c502cb9654de93598e9f16555082a8", + "name": "The Genesis Block", + "symbol": "GENBLOK", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/27471/thumb/6313c6043c13ed270ede4600_aaaa-p-500.jpg?1664195154" + }, + { + "chainId": 1, + "address": "0x970b9bb2c0444f5e81e9d0efb84c8ccdcdcaf84d", + "name": "Fuse", + "symbol": "FUSE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10347/thumb/vUXKHEe.png?1601523640" + }, + { + "chainId": 1, + "address": "0x38d9eb07a7b8df7d86f440a4a5c4a4c1a27e1a08", + "name": "bloXmove", + "symbol": "BLXM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19310/thumb/blxm_200x200.png?1635238192" + }, + { + "chainId": 1, + "address": "0xd5d86fc8d5c0ea1ac1ac5dfab6e529c9967a45e9", + "name": "NFT Worlds", + "symbol": "WRLD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22112/thumb/ZyBrRgfO.jpg?1640842284" + }, + { + "chainId": 1, + "address": "0x77777feddddffc19ff86db637967013e6c6a116c", + "name": "Tornado Cash", + "symbol": "TORN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13496/thumb/ZINt8NSB_400x400.jpg?1609193407" + }, + { + "chainId": 1, + "address": "0x00a8b738e453ffd858a7edf03bccfe20412f0eb0", + "name": "AllianceBlock", + "symbol": "ALBT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12392/thumb/alliance_block_logo.jpg?1599546617" + }, + { + "chainId": 1, + "address": "0x1c9922314ed1415c95b9fd453c3818fd41867d0b", + "name": "Tower", + "symbol": "TOWER", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14134/thumb/tower-circular-1000.png?1632195469" + }, + { + "chainId": 1, + "address": "0x3b1a3c5d9d5c60651d4841c7814aa0fbb45a863d", + "name": "Laeeb Inu ERC", + "symbol": "LAEEB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27905/thumb/LaeebLogo200x200.png?1666335729" + }, + { + "chainId": 1, + "address": "0x49849c98ae39fff122806c06791fa73784fb3675", + "name": "LP renBTC Curve", + "symbol": "RENBTCCURVE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11957/thumb/Curvefi_renCrv_32.png?1596435739" + }, + { + "chainId": 1, + "address": "0x814e0908b12a99fecf5bc101bb5d0b8b5cdf7d26", + "name": "Measurable Data", + "symbol": "MDT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2441/thumb/mdt_logo.png?1569813574" + }, + { + "chainId": 1, + "address": "0x03d1e72765545729a035e909edd9371a405f77fb", + "name": "Nabox", + "symbol": "NABOX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16445/thumb/NyemjVRA_400x400.png?1624235013" + }, + { + "chainId": 1, + "address": "0xf406f7a9046793267bc276908778b29563323996", + "name": "APY vision", + "symbol": "VISION", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13288/thumb/apyvisionlogo200circle.png?1607059042" + }, + { + "chainId": 1, + "address": "0x3ec8798b81485a254928b70cda1cf0a2bb0b74d7", + "name": "Gro DAO", + "symbol": "GRO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18673/thumb/613f171979749061aaa1edf9_Icon-GRO-256x256-Square.png?1632876204" + }, + { + "chainId": 1, + "address": "0xa15c7ebe1f07caf6bff097d8a589fb8ac49ae5b3", + "name": "Pundi X OLD ", + "symbol": "NPXS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2170/thumb/pundi-x.png?1548386366" + }, + { + "chainId": 1, + "address": "0x0488401c3f535193fa8df029d9ffe615a06e74e6", + "name": "SparkPoint", + "symbol": "SRK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8371/thumb/SRK.png?1614675526" + }, + { + "chainId": 1, + "address": "0xb6c4267c4877bb0d6b1685cfd85b0fbe82f105ec", + "name": "Relevant", + "symbol": "REL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11586/thumb/Relevant.png?1591390081" + }, + { + "chainId": 1, + "address": "0x6a445e9f40e0b97c92d0b8a3366cef1d67f700bf", + "name": "Fidu", + "symbol": "FIDU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25944/thumb/GFI-asset-icon.png?1654827482" + }, + { + "chainId": 1, + "address": "0x37f04d2c3ae075fad5483bb918491f656b12bdb6", + "name": "VestChain", + "symbol": "VEST", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/6700/thumb/logo_200x200_%281%29.png?1547042908" + }, + { + "chainId": 1, + "address": "0xe5d2e173b120341face9e9970889c9fe64081ffd", + "name": "Bluejay", + "symbol": "BLU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28085/thumb/Bluejay.png?1667444163" + }, + { + "chainId": 1, + "address": "0x48af7b1c9dac8871c064f62fcec0d9d6f7c269f5", + "name": " Alpha", + "symbol": "ALPHA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24340/thumb/alpha_icon.png?1647395407" + }, + { + "chainId": 1, + "address": "0xc62def1701309bb76e6b39b6ab8b5fac910a3c87", + "name": "MetaRare", + "symbol": "MTRA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24276/thumb/Logo_200x200_PNG.png?1647180519" + }, + { + "chainId": 1, + "address": "0x45804880de22913dafe09f4980848ece6ecbaf78", + "name": "PAX Gold", + "symbol": "PAXG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9519/thumb/paxg.PNG?1568542565" + }, + { + "chainId": 1, + "address": "0xf0d33beda4d734c72684b5f9abbebf715d0a7935", + "name": "NuNet", + "symbol": "NTX", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/20950/thumb/8Zb2W2Wi_400x400.png?1638137477" + }, + { + "chainId": 1, + "address": "0x9565c2036963697786705120fc59310f747bcfd0", + "name": "PoorPleb", + "symbol": "PP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28063/thumb/PP_TOKEN_LOGO.png?1669366801" + }, + { + "chainId": 1, + "address": "0xba9d4199fab4f26efe3551d490e3821486f135ba", + "name": "SwissBorg", + "symbol": "CHSB", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/2117/thumb/YJUrRy7r_400x400.png?1589794215" + }, + { + "chainId": 1, + "address": "0x626e8036deb333b408be468f951bdb42433cbf18", + "name": "AIOZ Network", + "symbol": "AIOZ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14631/thumb/aioz-logo-200.png?1649237507" + }, + { + "chainId": 1, + "address": "0x55296f69f40ea6d20e478533c15a6b08b654e758", + "name": "XYO Network", + "symbol": "XYO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4519/thumb/XYO_Network-logo.png?1547039819" + }, + { + "chainId": 1, + "address": "0x51fe2e572e97bfeb1d719809d743ec2675924edc", + "name": "VLaunch", + "symbol": "VPAD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20838/thumb/vlaunch_22.png?1637738535" + }, + { + "chainId": 1, + "address": "0xee586e7eaad39207f0549bc65f19e336942c992f", + "name": "Celo Euro Wormhole ", + "symbol": "CEUR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27870/thumb/5ETdHxeE_400x400.jpeg?1666164533" + }, + { + "chainId": 1, + "address": "0x9f009d03e1b7f02065017c90e8e0d5cb378eb015", + "name": "Fortune", + "symbol": "FORTUNE", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/20374/thumb/TZcfq5b_%281%29.png?1636949601" + }, + { + "chainId": 1, + "address": "0xfe3e6a25e6b192a42a44ecddcd13796471735acf", + "name": "Reef", + "symbol": "REEF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13504/thumb/Group_10572.png?1610534130" + }, + { + "chainId": 1, + "address": "0x84342e932797fc62814189f01f0fb05f52519708", + "name": "Neighbourhoods", + "symbol": "NHT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22055/thumb/social_media_logo_black_bg.png?1640682530" + }, + { + "chainId": 1, + "address": "0xe66747a101bff2dba3697199dcce5b743b454759", + "name": "Gate", + "symbol": "GT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8183/thumb/gt.png?1556085624" + }, + { + "chainId": 1, + "address": "0xaf9f549774ecedbd0966c52f250acc548d3f36e5", + "name": "RioDeFi", + "symbol": "RFUEL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12623/thumb/RFUEL_SQR.png?1602481093" + }, + { + "chainId": 1, + "address": "0xfad45e47083e4607302aa43c65fb3106f1cd7607", + "name": "Hoge Finance", + "symbol": "HOGE", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/14360/thumb/hoge.jpg?1615641604" + }, + { + "chainId": 1, + "address": "0xf7920b0768ecb20a123fac32311d07d193381d6f", + "name": "Time New Bank", + "symbol": "TNB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1265/thumb/time-new-bank.png?1547035290" + }, + { + "chainId": 1, + "address": "0xdacd69347de42babfaecd09dc88958378780fb62", + "name": "Atari", + "symbol": "ATRI", + "decimals": 0, + "logoURI": "https://assets.coingecko.com/coins/images/12992/thumb/AtariLogoPS_200x200_%281%29.png?1643189483" + }, + { + "chainId": 1, + "address": "0xbbc2ae13b23d715c30720f079fcd9b4a74093505", + "name": "Ethernity Chain", + "symbol": "ERN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14238/thumb/LOGO_HIGH_QUALITY.png?1647831402" + }, + { + "chainId": 1, + "address": "0x1c4853ec0d55e420002c5efabc7ed8e0ba7a4121", + "name": "Kanagawa Nami", + "symbol": "OKINAMI", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/26629/thumb/KANAGAWA_%284%29.png?1659324703" + }, + { + "chainId": 1, + "address": "0x79a06acb8bdd138beeecce0f1605971f3ac7c09b", + "name": "Lasrever", + "symbol": "LSVR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26681/thumb/E312D296-5EB2-4CF1-B98C-A2E47736BA37.jpeg?1659538133" + }, + { + "chainId": 1, + "address": "0xad996a45fd2373ed0b10efa4a8ecb9de445a4302", + "name": "Shirtum", + "symbol": "SHI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16955/thumb/4fWlpC0.png?1625794164" + }, + { + "chainId": 1, + "address": "0x2de509bf0014ddf697b220be628213034d320ece", + "name": "Don t Buy Inu", + "symbol": "DBI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28058/thumb/1Artboard_1_%282%29.png?1667298091" + }, + { + "chainId": 1, + "address": "0xe76c6c83af64e4c60245d8c7de953df673a7a33d", + "name": "Railgun", + "symbol": "RAIL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16840/thumb/railgun.jpeg?1625322775" + }, + { + "chainId": 1, + "address": "0xbe1a001fe942f96eea22ba08783140b9dcc09d28", + "name": "Beta Finance", + "symbol": "BETA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18715/thumb/beta_finance.jpg?1633087053" + }, + { + "chainId": 1, + "address": "0x6dea81c8171d0ba574754ef6f8b412f2ed88c54d", + "name": "Liquity", + "symbol": "LQTY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14665/thumb/200-lqty-icon.png?1617631180" + }, + { + "chainId": 1, + "address": "0x892a6f9df0147e5f079b0993f486f9aca3c87881", + "name": "xFUND", + "symbol": "XFUND", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/13770/thumb/xfund.png?1611697744" + }, + { + "chainId": 1, + "address": "0xe4cfe9eaa8cdb0942a80b7bc68fd8ab0f6d44903", + "name": "Xend Finance", + "symbol": "XEND", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14496/thumb/WeChat_Image_20210325163206.png?1616661216" + }, + { + "chainId": 1, + "address": "0xf59ae934f6fe444afc309586cc60a84a0f89aaea", + "name": "Polkadex", + "symbol": "PDEX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14833/thumb/dIze5Ztl_400x400.jpg?1618610724" + }, + { + "chainId": 1, + "address": "0x6cacdb97e3fc8136805a9e7c342d866ab77d0957", + "name": "Swapr", + "symbol": "SWPR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18740/thumb/swapr.jpg?1633516501" + }, + { + "chainId": 1, + "address": "0xee573a945b01b788b9287ce062a0cfc15be9fd86", + "name": "Exeedme", + "symbol": "XED", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13518/thumb/exeedme.png?1610669597" + }, + { + "chainId": 1, + "address": "0xe80c0cd204d654cebe8dd64a4857cab6be8345a3", + "name": "JPEG d", + "symbol": "JPEG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24025/thumb/et_43CNi_400x400.jpg?1646100264" + }, + { + "chainId": 1, + "address": "0xf16e81dce15b08f326220742020379b855b87df9", + "name": "Popsicle Finance", + "symbol": "ICE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14586/thumb/ice.png?1617188825" + }, + { + "chainId": 1, + "address": "0x04fa0d235c4abf4bcf4787af4cf447de572ef828", + "name": "UMA", + "symbol": "UMA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10951/thumb/UMA.png?1586307916" + }, + { + "chainId": 1, + "address": "0x5dd57da40e6866c9fcc34f4b6ddc89f1ba740dfe", + "name": "BrightID", + "symbol": "BRIGHT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18415/thumb/bright.PNG?1631841211" + }, + { + "chainId": 1, + "address": "0x525a8f6f3ba4752868cde25164382bfbae3990e1", + "name": "Nym", + "symbol": "NYM", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/24488/thumb/NYM_Token.png?1649926353" + }, + { + "chainId": 1, + "address": "0x4521c9ad6a3d4230803ab752ed238be11f8b342f", + "name": "Sanin Inu", + "symbol": "SANI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25222/thumb/B7r0ocfQ_400x400.jpg?1650892157" + }, + { + "chainId": 1, + "address": "0x788b6d2b37aa51d916f2837ae25b05f0e61339d1", + "name": "Metavault DAO", + "symbol": "MVD", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/23899/thumb/mvd.png?1660680251" + }, + { + "chainId": 1, + "address": "0xa91ac63d040deb1b7a5e4d4134ad23eb0ba07e14", + "name": "Bella Protocol", + "symbol": "BEL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12478/thumb/Bella.png?1602230054" + }, + { + "chainId": 1, + "address": "0x431d5dff03120afa4bdf332c61a6e1766ef37bdb", + "name": "JPY Coin", + "symbol": "JPYC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25971/thumb/JPYC_logo_3D_cmyk_0-1_%282%29.jpg?1667467959" + }, + { + "chainId": 1, + "address": "0x20945ca1df56d237fd40036d47e866c7dccd2114", + "name": "Nsure Network", + "symbol": "NSURE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12948/thumb/Nsure_token.png?1603778876" + }, + { + "chainId": 1, + "address": "0x8770b7dd89e5f759ee3b226e0c45e890f87ddc48", + "name": "Made In Real Life", + "symbol": "MIRL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28021/thumb/mirl.png?1667028324" + }, + { + "chainId": 1, + "address": "0x4b13006980acb09645131b91d259eaa111eaf5ba", + "name": "Mycelium", + "symbol": "MYC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26874/thumb/MYC_Token.png?1665971552" + }, + { + "chainId": 1, + "address": "0xc13f4f0f865bac08f62654b57e38669ebc4747a3", + "name": "Creds", + "symbol": "CREDS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22122/thumb/creds.png?1640848447" + }, + { + "chainId": 1, + "address": "0x3f17cfad23c2014c5a32722557df87dff46819da", + "name": "Amplify", + "symbol": "AMPT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23695/thumb/ampt_pictogram_color_1920px_2.png?1645080512" + }, + { + "chainId": 1, + "address": "0x3adb04e127b9c0a5d36094125669d4603ac52a0c", + "name": "Gro Vault", + "symbol": "GVT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18628/thumb/613f170fa75cd0ec6fd17f50_Icon-Vault-256x256-Square.png?1632980198" + }, + { + "chainId": 1, + "address": "0x469eda64aed3a3ad6f868c44564291aa415cb1d9", + "name": "Datamine FLUX", + "symbol": "FLUX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11756/thumb/fluxres.png?1593748917" + }, + { + "chainId": 1, + "address": "0x1f8a626883d7724dbd59ef51cbd4bf1cf2016d13", + "name": "Jigstack", + "symbol": "STAK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14978/thumb/jigstack.PNG?1619216498" + }, + { + "chainId": 1, + "address": "0x39fa206c1648944f92e8f7b626e1cbdf78d7e9db", + "name": "DXY Finance", + "symbol": "DXY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12839/thumb/dxy_finance.png?1602903489" + }, + { + "chainId": 1, + "address": "0x80d55c03180349fff4a229102f62328220a96444", + "name": "Opulous", + "symbol": "OPUL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16548/thumb/opulous.PNG?1624418744" + }, + { + "chainId": 1, + "address": "0xd0d42005e7b3c0812b1268f0e5faf97ff2423651", + "name": "KOROMARU", + "symbol": "KOROMARU", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/19884/thumb/koromaru.png?1642838436" + }, + { + "chainId": 1, + "address": "0xe9b076b476d8865cdf79d1cf7df420ee397a7f75", + "name": "Unification", + "symbol": "FUND", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/7845/thumb/DV80FOp.png?1554953278" + }, + { + "chainId": 1, + "address": "0x632806bf5c8f062932dd121244c9fbe7becb8b48", + "name": "Phuture DeFi Index", + "symbol": "PDI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25772/thumb/2.PDI_logo_solid_blue_-_Circle_3x.png?1665022360" + }, + { + "chainId": 1, + "address": "0x08389495d7456e1951ddf7c3a1314a4bfb646d8b", + "name": "Crypterium", + "symbol": "CRPT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1901/thumb/crypt.png?1547036205" + }, + { + "chainId": 1, + "address": "0x37e1160184f7dd29f00b78c050bf13224780b0b0", + "name": "Yuan Chain Coin", + "symbol": "YCC", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/5328/thumb/G5gCEo-J_400x400.jpg?1547040897" + }, + { + "chainId": 1, + "address": "0x519c1001d550c0a1dae7d1fc220f7d14c2a521bb", + "name": "Polkaswap", + "symbol": "PSWAP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15475/thumb/pswap-token-logomark-ticker-icon-200px-transparent-optimized.png?1622447028" + }, + { + "chainId": 1, + "address": "0x000000007a58f5f58e697e51ab0357bc9e260a04", + "name": "Concave", + "symbol": "CNV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24492/thumb/concave.jpg?1648795376" + }, + { + "chainId": 1, + "address": "0x1f3f9d3068568f8040775be2e8c03c103c61f3af", + "name": "Archer DAO Governance", + "symbol": "ARCH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13188/thumb/archer_logo.png?1606097487" + }, + { + "chainId": 1, + "address": "0x52f4d5ee6c91e01be67ca1f64b11ed0ee370817d", + "name": "CIA", + "symbol": "CIA", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/21569/thumb/Untitled-design-24.png?1641975750" + }, + { + "chainId": 1, + "address": "0x14a32f050facf226ec60882398a9bf36d91dbac2", + "name": "Kyoko", + "symbol": "KYOKO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24454/thumb/kyoko.png?1649576935" + }, + { + "chainId": 1, + "address": "0x4f640f2529ee0cf119a2881485845fa8e61a782a", + "name": "ORE Network", + "symbol": "ORE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18917/thumb/ORE_FullColor.png?1633921977" + }, + { + "chainId": 1, + "address": "0xe52e8876fbe83d6091df4ac3e9adc13be6533849", + "name": "ArtCoin", + "symbol": "AC", + "decimals": 3, + "logoURI": "https://assets.coingecko.com/coins/images/26127/thumb/ngiBSUT7_400x400.png?1655954442" + }, + { + "chainId": 1, + "address": "0xb6ca7399b4f9ca56fc27cbff44f4d2e4eef1fc81", + "name": "Muse DAO", + "symbol": "MUSE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13230/thumb/muse_logo.png?1606460453" + }, + { + "chainId": 1, + "address": "0x881ba05de1e78f549cc63a8f6cabb1d4ad32250d", + "name": "00 Token", + "symbol": "00", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27742/thumb/200x200.png?1665623317" + }, + { + "chainId": 1, + "address": "0x7d4b1d793239707445305d8d2456d2c735f6b25b", + "name": "BlockSwap Network OLD ", + "symbol": "CBSN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14781/thumb/bsn_dp_high.png?1618865566" + }, + { + "chainId": 1, + "address": "0x67b66c99d3eb37fa76aa3ed1ff33e8e39f0b9c7a", + "name": "Interest Bearing ETH", + "symbol": "IBETH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13131/thumb/7675.png?1605535879" + }, + { + "chainId": 1, + "address": "0xaaaaaa20d9e0e2461697782ef11675f668207961", + "name": "Aurora", + "symbol": "AURORA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20582/thumb/aurora.jpeg?1637250883" + }, + { + "chainId": 1, + "address": "0xa393473d64d2f9f026b60b6df7859a689715d092", + "name": "Lattice", + "symbol": "LTX", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/13050/thumb/Lattice.jpg?1613976295" + }, + { + "chainId": 1, + "address": "0x0944d5848bd9f60a34ba92aea300d4286696eb76", + "name": "Palette", + "symbol": "PLT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22153/thumb/262aoVTp_400x400.jpg?1640940192" + }, + { + "chainId": 1, + "address": "0xa20f77b7ad5a88badc48800c56507b7274c06fdc", + "name": "Cherry Network", + "symbol": "CHER", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21855/thumb/cherry.PNG?1640144127" + }, + { + "chainId": 1, + "address": "0x1117ac6ad6cdf1a3bc543bad3b133724620522d5", + "name": "MODA DAO", + "symbol": "MODA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20870/thumb/ModaDAO__logomark-primary_3x.png?1637809145" + }, + { + "chainId": 1, + "address": "0xaaef88cea01475125522e117bfe45cf32044e238", + "name": "GuildFi", + "symbol": "GF", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20933/thumb/guildfi-logo-200.png?1638003537" + }, + { + "chainId": 1, + "address": "0x99fe3b1391503a1bc1788051347a1324bff41452", + "name": "SX Network", + "symbol": "SX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13779/thumb/sx.png?1636034699" + }, + { + "chainId": 1, + "address": "0x45080a6531d671ddff20db42f93792a489685e32", + "name": "Finance Vote", + "symbol": "FVT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13181/thumb/finance.png?1606015010" + }, + { + "chainId": 1, + "address": "0x95b3497bbcccc46a8f45f5cf54b0878b39f8d96c", + "name": "UniDex", + "symbol": "UNIDX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13178/thumb/unidx.png?1634888975" + }, + { + "chainId": 1, + "address": "0x4ddc2d193948926d02f9b1fe9e1daa0718270ed5", + "name": "cETH", + "symbol": "CETH", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/10643/thumb/ceth2.JPG?1581389598" + }, + { + "chainId": 1, + "address": "0x42dbbd5ae373fea2fc320f62d44c058522bb3758", + "name": "Memecoin", + "symbol": "MEM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16370/thumb/mem_gold_200x200_copy.png?1623821100" + }, + { + "chainId": 1, + "address": "0xc383a3833a87009fd9597f8184979af5edfad019", + "name": "Instadapp ETH", + "symbol": "IETH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25822/thumb/iETH_100x100.png?1654055637" + }, + { + "chainId": 1, + "address": "0xf650c3d88d12db855b8bf7d11be6c55a4e07dcc9", + "name": "cUSDT", + "symbol": "CUSDT", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/11621/thumb/cUSDT.png?1592113270" + }, + { + "chainId": 1, + "address": "0x62b9c7356a2dc64a1969e19c23e4f579f9810aa7", + "name": "Convex CRV", + "symbol": "CVXCRV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15586/thumb/convex-crv.png?1621255952" + }, + { + "chainId": 1, + "address": "0xff742d05420b6aca4481f635ad8341f81a6300c2", + "name": "AscendEx", + "symbol": "ASD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5003/thumb/bitmax.png?1621310871" + }, + { + "chainId": 1, + "address": "0xf203ca1769ca8e9e8fe1da9d147db68b6c919817", + "name": "Wrapped NCG", + "symbol": "WNCG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17747/thumb/WNCG.png?1629167703" + }, + { + "chainId": 1, + "address": "0x678e840c640f619e17848045d23072844224dd37", + "name": "Cratos", + "symbol": "CRTS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17322/thumb/cratos.png?1627301460" + }, + { + "chainId": 1, + "address": "0x16cc8367055ae7e9157dbcb9d86fd6ce82522b31", + "name": "Voxel X Network", + "symbol": "VXL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21419/thumb/Voxel-Logo-200x200-Transparent.png?1639093664" + }, + { + "chainId": 1, + "address": "0xe1c7e30c42c24582888c758984f6e382096786bd", + "name": "Curate", + "symbol": "XCUR", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/13327/thumb/400x400_%281%29_%283%29_%282%29.png?1613998208" + }, + { + "chainId": 1, + "address": "0x4123a133ae3c521fd134d7b13a2dec35b56c2463", + "name": "Qredo", + "symbol": "QRDO", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/17541/thumb/qrdo.png?1630637735" + }, + { + "chainId": 1, + "address": "0x10010078a54396f62c96df8532dc2b4847d47ed3", + "name": "Hundred Finance", + "symbol": "HND", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18445/thumb/hnd.PNG?1632054703" + }, + { + "chainId": 1, + "address": "0xb53ecf1345cabee6ea1a65100ebb153cebcac40f", + "name": "Childhoods End", + "symbol": "O", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25670/thumb/photo_2022-05-27_12-45-29.jpg?1653626809" + }, + { + "chainId": 1, + "address": "0x9f284e1337a815fe77d2ff4ae46544645b20c5ff", + "name": "Darwinia Commitment", + "symbol": "KTON", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11895/thumb/KTON.png?1615271813" + }, + { + "chainId": 1, + "address": "0xdc5864ede28bd4405aa04d93e05a0531797d9d59", + "name": "Falcon Project", + "symbol": "FNT", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/11579/thumb/falcon_ava_black.png?1591317863" + }, + { + "chainId": 1, + "address": "0x126c121f99e1e211df2e5f8de2d96fa36647c855", + "name": "DEGEN Index", + "symbol": "DEGEN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14143/thumb/alpha_logo.png?1614651244" + }, + { + "chainId": 1, + "address": "0xcf3c8be2e2c42331da80ef210e9b1b307c03d36a", + "name": "BEPRO Network", + "symbol": "BEPRO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/10251/thumb/logo.png?1610592699" + }, + { + "chainId": 1, + "address": "0xdc349913d53b446485e98b76800b6254f43df695", + "name": "Bezoge Earth", + "symbol": "BEZOGE", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/15639/thumb/token-logo.png?1621408212" + }, + { + "chainId": 1, + "address": "0x474021845c4643113458ea4414bdb7fb74a01a77", + "name": "Uno Re", + "symbol": "UNO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15073/thumb/c0vbqVE.png?1632814516" + }, + { + "chainId": 1, + "address": "0x7ae0d42f23c33338de15bfa89c7405c068d9dc0a", + "name": "Shibaverse", + "symbol": "VERSE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18407/thumb/logo_200.png?1631795328" + }, + { + "chainId": 1, + "address": "0x3212b29e33587a00fb1c83346f5dbfa69a458923", + "name": "The Tokenized Bitcoin", + "symbol": "IMBTC", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/10702/thumb/imbtc.png?1585124381" + }, + { + "chainId": 1, + "address": "0xf0f9d895aca5c8678f706fb8216fa22957685a13", + "name": "Cult DAO", + "symbol": "CULT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23331/thumb/quxZPrbC_400x400.jpg?1643880172" + }, + { + "chainId": 1, + "address": "0xd8912c10681d8b21fd3742244f44658dba12264e", + "name": "Pluton", + "symbol": "PLU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1241/thumb/pluton.png?1548331624" + }, + { + "chainId": 1, + "address": "0xc5102fe9359fd9a28f877a67e36b0f050d81a3cc", + "name": "Hop Protocol", + "symbol": "HOP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25445/thumb/hop.png?1665541677" + }, + { + "chainId": 1, + "address": "0x44017598f2af1bd733f9d87b5017b4e7c1b28dde", + "name": "pSTAKE Staked ATOM", + "symbol": "STKATOM", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/18484/thumb/stkATOM_-_128px.png?1634978065" + }, + { + "chainId": 1, + "address": "0xa8c8cfb141a3bb59fea1e2ea6b79b5ecbcd7b6ca", + "name": "Syntropy", + "symbol": "NOIA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3269/thumb/Component_1.png?1608275724" + }, + { + "chainId": 1, + "address": "0xa3c22370de5f9544f0c4de126b1e46ceadf0a51b", + "name": "Stratis", + "symbol": "STRAX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/531/thumb/stratis.png?1547034209" + }, + { + "chainId": 1, + "address": "0xd084944d3c05cd115c09d072b9f44ba3e0e45921", + "name": "Manifold Finance", + "symbol": "FOLD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15928/thumb/Manifold.png?1622439811" + }, + { + "chainId": 1, + "address": "0x58b6a8a3302369daec383334672404ee733ab239", + "name": "Livepeer", + "symbol": "LPT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7137/thumb/logo-circle-green.png?1619593365" + }, + { + "chainId": 1, + "address": "0xddac9c604ba6bc4acec0fbb485b83f390ecf2f31", + "name": "CyOp Protocol", + "symbol": "CYOP", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/20672/thumb/cyop.png?1637549090" + }, + { + "chainId": 1, + "address": "0x40615b82999b8aa46803f11493bedab0314eb5e7", + "name": "Honey Deluxe", + "symbol": "HONEYD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21164/thumb/honeyd.png?1638530042" + }, + { + "chainId": 1, + "address": "0xfe18be6b3bd88a2d2a7f928d00292e7a9963cfc6", + "name": "sBTC", + "symbol": "SBTC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8838/thumb/sBTC.png?1616149734" + }, + { + "chainId": 1, + "address": "0x56694577564fdd577a0abb20fe95c1e2756c2a11", + "name": "AdaSwap", + "symbol": "ASW", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24453/thumb/rA5cmPtX_400x400.jpg?1647677878" + }, + { + "chainId": 1, + "address": "0x16eccfdbb4ee1a85a33f3a9b21175cd7ae753db4", + "name": "Router Protocol", + "symbol": "ROUTE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13709/thumb/route_token_200x200-19.png?1611057698" + }, + { + "chainId": 1, + "address": "0xcbc1aa6961b28cccb11e1cddd84ad8b42ec920b1", + "name": "ZEUS10000", + "symbol": "ZEUS10000", + "decimals": 4, + "logoURI": "https://assets.coingecko.com/coins/images/22559/thumb/2022-01-11_22.10.11.jpg?1642056602" + }, + { + "chainId": 1, + "address": "0x58fad9e3c3ae54c9ba98c3f0e4bf88ab3e8cf3c5", + "name": "SpaceY 2025", + "symbol": "SPAY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20499/thumb/spacey2025.PNG?1637132488" + }, + { + "chainId": 1, + "address": "0x038a68ff68c393373ec894015816e33ad41bd564", + "name": "Glitch Protocol", + "symbol": "GLCH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13712/thumb/glitch_logo.jpeg?1611100011" + }, + { + "chainId": 1, + "address": "0x32a7c02e79c4ea1008dd6564b35f131428673c41", + "name": "Crust Network", + "symbol": "CRU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12549/thumb/sAB3KVzD_400x400.jpg?1600680411" + }, + { + "chainId": 1, + "address": "0x3832d2f059e55934220881f831be501d180671a7", + "name": "renDOGE", + "symbol": "RENDOGE", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/13796/thumb/Dogecoin.jpg?1628072827" + }, + { + "chainId": 1, + "address": "0x64aa3364f17a4d01c6f1751fd97c2bd3d7e7f1d5", + "name": "Olympus", + "symbol": "OHM", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/14483/thumb/token_OHM_%281%29.png?1628311611" + }, + { + "chainId": 1, + "address": "0xcd17fa52528f37facb3028688e62ec82d9417581", + "name": "Materium", + "symbol": "MTRM", + "decimals": 0, + "logoURI": "https://assets.coingecko.com/coins/images/24613/thumb/mtrm.png?1648373908" + }, + { + "chainId": 1, + "address": "0x44709a920fccf795fbc57baa433cc3dd53c44dbe", + "name": "DappRadar", + "symbol": "RADAR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20894/thumb/radar.png?1640306268" + }, + { + "chainId": 1, + "address": "0xec363faa5c4dd0e51f3d9b5d0101263760e7cdeb", + "name": "Instadapp WBTC", + "symbol": "IWBTC", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/25784/thumb/iWBTC-100x100.png?1654055142" + }, + { + "chainId": 1, + "address": "0xb3319f5d18bc0d84dd1b4825dcde5d5f7266d407", + "name": "c0x", + "symbol": "CZRX", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/10644/thumb/czrx1.JPG?1581390510" + }, + { + "chainId": 1, + "address": "0x13b2f6928d7204328b0e8e4bcd0379aa06ea21fa", + "name": "Aave AMM WBTC", + "symbol": "AAMMWBTC", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/17215/thumb/aAMMWBTC_2x.png?1626879028" + }, + { + "chainId": 1, + "address": "0x0100546f2cd4c9d97f798ffc9755e47865ff7ee6", + "name": "Alchemix ETH", + "symbol": "ALETH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16271/thumb/uS04dyYy_400x400.jpeg?1663051098" + }, + { + "chainId": 1, + "address": "0x4d4f3715050571a447fffa2cd4cf091c7014ca5c", + "name": "Summer", + "symbol": "SUMMER", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25365/thumb/summer.png?1651317403" + }, + { + "chainId": 1, + "address": "0x4f81c790581b240a5c948afd173620ecc8c71c8d", + "name": "Decentral Games Governance", + "symbol": "XDG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21176/thumb/xDG_Logo.png?1638508706" + }, + { + "chainId": 1, + "address": "0x73a83269b9bbafc427e76be0a2c1a1db2a26f4c2", + "name": "Civfund Stone", + "symbol": "0NE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25156/thumb/stone.png?1650462014" + }, + { + "chainId": 1, + "address": "0xbe9895146f7af43049ca1c1ae358b0541ea49704", + "name": "Coinbase Wrapped Staked ETH", + "symbol": "CBETH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27008/thumb/cbeth.png?1661390066" + }, + { + "chainId": 1, + "address": "0x94e496474f1725f1c1824cb5bdb92d7691a4f03a", + "name": "Banana", + "symbol": "BANANA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17521/thumb/banana-token-cg.png?1646285527" + }, + { + "chainId": 1, + "address": "0x1982b2f5814301d4e9a8b0201555376e62f82428", + "name": "Aave Interest Bearing STETH", + "symbol": "ASTETH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24163/thumb/steth.jpg?1646634315" + }, + { + "chainId": 1, + "address": "0x075b1bb99792c9e1041ba13afef80c91a1e70fb3", + "name": "Curve fi renBTC wBTC sBTC", + "symbol": "CRVRENWSBTC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11958/thumb/Curvefi_sbtcCrv_32.png?1596436054" + }, + { + "chainId": 1, + "address": "0xd2877702675e6ceb975b4a1dff9fb7baf4c91ea9", + "name": "Wrapped Terra Classic", + "symbol": "LUNC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13628/thumb/wluna.png?1610448334" + }, + { + "chainId": 1, + "address": "0x8798249c2e607446efb7ad49ec89dd1865ff4272", + "name": "xSUSHI", + "symbol": "XSUSHI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13725/thumb/xsushi.png?1612538526" + }, + { + "chainId": 1, + "address": "0x3155ba85d5f96b2d030a4966af206230e46849cb", + "name": "THORChain ERC20 ", + "symbol": "RUNE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13677/thumb/IMG_20210123_132049_458.png?1612179252" + }, + { + "chainId": 1, + "address": "0xa4bbe66f151b22b167127c770016b15ff97dd35c", + "name": "Umbria Network", + "symbol": "UMBR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14712/thumb/RX7VJg6.png?1617891954" + }, + { + "chainId": 1, + "address": "0x0d438f3b5175bebc262bf23753c1e53d03432bde", + "name": "Wrapped NXM", + "symbol": "WNXM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11890/thumb/wrapped-nexus-mutual.jpg?1595811559" + }, + { + "chainId": 1, + "address": "0x5198625a8abf34a0d2a1f262861ff3b3079302bf", + "name": "DeFi Forge", + "symbol": "FORGE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28047/thumb/ForgeLogo200x200.jpg?1667274359" + }, + { + "chainId": 1, + "address": "0x21381e026ad6d8266244f2a583b35f9e4413fa2a", + "name": "Formation FI", + "symbol": "FORM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16145/thumb/FORM.png?1623119824" + }, + { + "chainId": 1, + "address": "0xfeb6d5238ed8f1d59dcab2db381aa948e625966d", + "name": "Doge TV", + "symbol": "DGTV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28050/thumb/532a5b9e-8294-4be1-be18-f04a2cf5f0a9.png?1667280533" + }, + { + "chainId": 1, + "address": "0xe7f72bc0252ca7b16dbb72eeee1afcdb2429f2dd", + "name": "NFTLaunch", + "symbol": "NFTL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18140/thumb/nftl.PNG?1630652662" + }, + { + "chainId": 1, + "address": "0xc6d1f1d5a46de07e73091f1c8793293b203f01a1", + "name": "Mission Helios", + "symbol": "HELIOS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18295/thumb/helios.png?1644049696" + }, + { + "chainId": 1, + "address": "0x31c8eacbffdd875c74b94b077895bd78cf1e64a3", + "name": "Radicle", + "symbol": "RAD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14013/thumb/radicle.png?1614402918" + }, + { + "chainId": 1, + "address": "0xce3f08e664693ca792cace4af1364d5e220827b2", + "name": "Saitama", + "symbol": "SAITAMA", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/16353/thumb/SOIKDUWf_400x400.jpeg?1661170022" + }, + { + "chainId": 1, + "address": "0x97872eafd79940c7b24f7bcc1eadb1457347adc9", + "name": "Strips Finance", + "symbol": "STRP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18327/thumb/Logo-Strips-200-x-200px---without-words.png?1631543556" + }, + { + "chainId": 1, + "address": "0x3893b9422cd5d70a81edeffe3d5a1c6a978310bb", + "name": "Mithril", + "symbol": "MITH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3484/thumb/mithril.png?1548085086" + }, + { + "chainId": 1, + "address": "0xfb559ce67ff522ec0b9ba7f5dc9dc7ef6c139803", + "name": "Probit", + "symbol": "PROB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6765/thumb/ProBit-Exchange-logo.png?1547043029" + }, + { + "chainId": 1, + "address": "0x7d29a64504629172a429e64183d6673b9dacbfce", + "name": "Vectorspace AI", + "symbol": "VXV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2063/thumb/vectorspace-ai-logo.jpeg?1547036362" + }, + { + "chainId": 1, + "address": "0x888e88e71378133b7ada5a90c08bc97d772a0a28", + "name": "SheBollETH Commerce", + "symbol": "SBECOM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18186/thumb/sbe.PNG?1630905841" + }, + { + "chainId": 1, + "address": "0xf94b5c5651c888d928439ab6514b93944eee6f48", + "name": "Yield App", + "symbol": "YLD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13365/thumb/Google_Play_Store_Icon.png?1657012535" + }, + { + "chainId": 1, + "address": "0xfa372ff1547fa1a283b5112a4685f1358ce5574d", + "name": "Bonded dAMM", + "symbol": "BDAMM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27646/thumb/t9rbdwlR_400x400.jpg?1665022129" + }, + { + "chainId": 1, + "address": "0x2a9bdcff37ab68b95a53435adfd8892e86084f93", + "name": "Alpha Quark", + "symbol": "AQT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12872/thumb/alpha_quark_logo.png?1605169527" + }, + { + "chainId": 1, + "address": "0xb056c38f6b7dc4064367403e26424cd2c60655e1", + "name": "CEEK Smart VR", + "symbol": "CEEK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2581/thumb/ceek-smart-vr-token-logo.png?1547036714" + }, + { + "chainId": 1, + "address": "0xf5cfbc74057c610c8ef151a439252680ac68c6dc", + "name": "Octopus Network", + "symbol": "OCT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18025/thumb/octopus_network.png?1630290273" + }, + { + "chainId": 1, + "address": "0xd13c7342e1ef687c5ad21b27c2b65d772cab5c8c", + "name": "Ultra", + "symbol": "UOS", + "decimals": 4, + "logoURI": "https://assets.coingecko.com/coins/images/4480/thumb/Ultra.png?1563356418" + }, + { + "chainId": 1, + "address": "0xcb8d1260f9c92a3a545d409466280ffdd7af7042", + "name": "NFT Protocol", + "symbol": "NFT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12174/thumb/nftprotocol_32.png?1597818115" + }, + { + "chainId": 1, + "address": "0x7d5121505149065b562c789a0145ed750e6e8cdd", + "name": "Victoria VR", + "symbol": "VR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21178/thumb/vr.png?1638496975" + }, + { + "chainId": 1, + "address": "0x6b0b3a982b4634ac68dd83a4dbf02311ce324181", + "name": "Artificial Liquid Intelligence", + "symbol": "ALI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22062/thumb/alethea-logo-transparent-colored.png?1642748848" + }, + { + "chainId": 1, + "address": "0x71ab77b7dbb4fa7e017bc15090b2163221420282", + "name": "Highstreet", + "symbol": "HIGH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18973/thumb/logosq200200Coingecko.png?1634090470" + }, + { + "chainId": 1, + "address": "0x1e2f15302b90edde696593607b6bd444b64e8f02", + "name": "Shiryo", + "symbol": "SHIRYO-INU", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/19652/thumb/shiryo_inu.png?1648267828" + }, + { + "chainId": 1, + "address": "0xfc82bb4ba86045af6f327323a46e80412b91b27d", + "name": "Prom", + "symbol": "PROM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8825/thumb/Ticker.png?1657632943" + }, + { + "chainId": 1, + "address": "0x056fd409e1d7a124bd7017459dfea2f387b6d5cd", + "name": "Gemini Dollar", + "symbol": "GUSD", + "decimals": 2, + "logoURI": "https://assets.coingecko.com/coins/images/5992/thumb/gemini-dollar-gusd.png?1536745278" + }, + { + "chainId": 1, + "address": "0x723cbfc05e2cfcc71d3d89e770d32801a5eef5ab", + "name": "Bitcoin Pro", + "symbol": "BTCP", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/3545/thumb/DSiD9ZhWsAE_8cS.png?1547038353" + }, + { + "chainId": 1, + "address": "0x2f0f622a93c85c43fd47f4ab119360f5846026c4", + "name": "MatsuSwap", + "symbol": "MATSUSWAP", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/28041/thumb/200x200-1.png?1667202469" + }, + { + "chainId": 1, + "address": "0x6adb2e268de2aa1abf6578e4a8119b960e02928f", + "name": "ShibaDoge", + "symbol": "SHIBDOGE", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/22018/thumb/5HMWoFW0_400x400.jpg?1640596392" + }, + { + "chainId": 1, + "address": "0x85eee30c52b0b379b046fb0f85f4f3dc3009afec", + "name": "Keep Network", + "symbol": "KEEP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3373/thumb/IuNzUb5b_400x400.jpg?1589526336" + }, + { + "chainId": 1, + "address": "0x7c07f7abe10ce8e33dc6c5ad68fe033085256a84", + "name": "Interest Compounding ETH Index", + "symbol": "ICETH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24483/thumb/icETH-token-logo.png?1647826356" + }, + { + "chainId": 1, + "address": "0xc581b735a1688071a1746c968e0798d642ede491", + "name": "Euro Tether", + "symbol": "EURT", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/17385/thumb/Tether_full_logo_dm.png?1627537298" + }, + { + "chainId": 1, + "address": "0x37941b3fdb2bd332e667d452a58be01bcacb923e", + "name": "FREN", + "symbol": "FREN", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/20259/thumb/5oR6DSf.png?1636702537" + }, + { + "chainId": 1, + "address": "0x2596825a84888e8f24b747df29e11b5dd03c81d7", + "name": "Faith Tribe", + "symbol": "FTRB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23939/thumb/ym1Hf4x2_400x400.jpg?1645766940" + }, + { + "chainId": 1, + "address": "0x42bbfa2e77757c645eeaad1655e0911a7553efbc", + "name": "Boba Network", + "symbol": "BOBA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20285/thumb/BOBA.png?1636811576" + }, + { + "chainId": 1, + "address": "0x3472a5a71965499acd81997a54bba8d852c6e53d", + "name": "Badger DAO", + "symbol": "BADGER", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13287/thumb/badger_dao_logo.jpg?1607054976" + }, + { + "chainId": 1, + "address": "0x4cc19356f2d37338b9802aa8e8fc58b0373296e7", + "name": "SelfKey", + "symbol": "KEY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2034/thumb/selfkey.png?1548608934" + }, + { + "chainId": 1, + "address": "0x6c28aef8977c9b773996d0e8376d2ee379446f2f", + "name": "Quickswap OLD ", + "symbol": "QUICK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13970/thumb/1_pOU6pBMEmiL-ZJVb0CYRjQ.png?1613386659" + }, + { + "chainId": 1, + "address": "0x20e7125677311fca903a8897042b9983f22ea295", + "name": "Freeway", + "symbol": "FWT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13012/thumb/S5h7MHR.png?1652862323" + }, + { + "chainId": 1, + "address": "0xed04915c23f00a313a544955524eb7dbd823143d", + "name": "Alchemy Pay", + "symbol": "ACH", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/12390/thumb/ACH_%281%29.png?1599691266" + }, + { + "chainId": 1, + "address": "0xdf801468a808a32656d2ed2d2d80b72a129739f4", + "name": "Somnium Space CUBEs", + "symbol": "CUBE", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/10687/thumb/CUBE_icon.png?1617026861" + }, + { + "chainId": 1, + "address": "0x217ddead61a42369a266f1fb754eb5d3ebadc88a", + "name": "Don key", + "symbol": "DON", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15482/thumb/donkey_logo.jpg?1621012824" + }, + { + "chainId": 1, + "address": "0xec213f83defb583af3a000b1c0ada660b1902a0f", + "name": "Presearch", + "symbol": "PRE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1299/thumb/presearch.png?1548331942" + }, + { + "chainId": 1, + "address": "0xcb8fb2438a805664cd8c3e640b85ac473da5be87", + "name": "ClinTex CTi", + "symbol": "CTI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13266/thumb/CTI.png?1606817542" + }, + { + "chainId": 1, + "address": "0xee06a81a695750e71a662b51066f2c74cf4478a0", + "name": "Decentral Games Old ", + "symbol": "DG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13267/thumb/%28Old%29_DG.png?1639209538" + }, + { + "chainId": 1, + "address": "0xda007777d86ac6d989cc9f79a73261b3fc5e0da0", + "name": "DAppNode", + "symbol": "NODE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17187/thumb/36789279.png?1626828678" + }, + { + "chainId": 1, + "address": "0x6fb3e0a217407efff7ca062d46c26e5d60a14d69", + "name": "IoTeX", + "symbol": "IOTX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/3334/thumb/iotex-logo.png?1547037941" + }, + { + "chainId": 1, + "address": "0x9fa69536d1cda4a04cfb50688294de75b505a9ae", + "name": "DeRace", + "symbol": "DERC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17438/thumb/DERC_logo_coingecko.png?1665714278" + }, + { + "chainId": 1, + "address": "0xf57e7e7c23978c3caec3c3548e3d615c346e79ff", + "name": "ImmutableX", + "symbol": "IMX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17233/thumb/immutableX-symbol-BLK-RGB.png?1665110648" + }, + { + "chainId": 1, + "address": "0xc64500dd7b0f1794807e67802f8abbf5f8ffb054", + "name": "Locus Chain", + "symbol": "LOCUS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6903/thumb/32169759_2050428658545017_7287666225423843328_n.jpg?1547043264" + }, + { + "chainId": 1, + "address": "0x2565ae0385659badcada1031db704442e1b69982", + "name": "Assemble Protocol", + "symbol": "ASM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11605/thumb/gpvrlkSq_400x400_%281%29.jpg?1591775789" + }, + { + "chainId": 1, + "address": "0x8e30ea2329d95802fd804f4291220b0e2f579812", + "name": "Decentralized Vulnerability Platform", + "symbol": "DVP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9424/thumb/4520.png?1568598223" + }, + { + "chainId": 1, + "address": "0x5aa158404fed6b4730c13f49d3a7f820e14a636f", + "name": "ULTRON", + "symbol": "ULX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26977/thumb/ULX.png?1661168951" + }, + { + "chainId": 1, + "address": "0xf0939011a9bb95c3b791f0cb546377ed2693a574", + "name": "0 exchange", + "symbol": "ZERO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13706/thumb/0.exchange_%28logo%29.jpg?1617070530" + }, + { + "chainId": 1, + "address": "0xfaba6f8e4a5e8ab82f62fe7c39859fa577269be3", + "name": "Ondo Finance", + "symbol": "ONDO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26580/thumb/YUBxfjcj_400x400.jpg?1658888594" + }, + { + "chainId": 1, + "address": "0xf941d3aabf2ee0f5589e68ba6047b8329592b366", + "name": "Good Dog", + "symbol": "HEEL", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/27138/thumb/Heel_Circle.png?1662029905" + }, + { + "chainId": 1, + "address": "0x188e817b02e635d482ae4d81e25dda98a97c4a42", + "name": "Lithium Finance", + "symbol": "LITH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17278/thumb/Lithium_Logo-03200x200.png?1627018557" + }, + { + "chainId": 1, + "address": "0x08d967bb0134f2d07f7cfb6e246680c53927dd30", + "name": "MATH", + "symbol": "MATH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11335/thumb/2020-05-19-token-200.png?1589940590" + }, + { + "chainId": 1, + "address": "0xba50933c268f567bdc86e1ac131be072c6b0b71a", + "name": "ARPA", + "symbol": "ARPA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8506/thumb/9u0a23XY_400x400.jpg?1559027357" + }, + { + "chainId": 1, + "address": "0x6399c842dd2be3de30bf99bc7d1bbf6fa3650e70", + "name": "Premia", + "symbol": "PREMIA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13962/thumb/apple-touch-icon.png?1623679482" + }, + { + "chainId": 1, + "address": "0x6ef6610d24593805144d73b13d4405e00a4e4ac7", + "name": "Die Protocol", + "symbol": "DIE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27903/thumb/newlogo.jpg?1666334549" + }, + { + "chainId": 1, + "address": "0x993864e43caa7f7f12953ad6feb1d1ca635b875f", + "name": "SingularityDAO", + "symbol": "SDAO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15385/thumb/200x200_logo.png?1665743635" + }, + { + "chainId": 1, + "address": "0x001a8ffcb0f03e99141652ebcdecdb0384e3bd6c", + "name": "Polker", + "symbol": "PKR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16803/thumb/200x200-PKR_Chip.png?1625589565" + }, + { + "chainId": 1, + "address": "0x72a66e54b66892ae3bbe54df7bb7dd5ae927a6f9", + "name": "Crypto Village Accelerator CVAG", + "symbol": "CVAG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17124/thumb/cvag.PNG?1626401266" + }, + { + "chainId": 1, + "address": "0xadd5e881984783dd432f80381fb52f45b53f3e70", + "name": "Vite", + "symbol": "VITE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4513/thumb/Vite.png?1558014583" + }, + { + "chainId": 1, + "address": "0x7815bda662050d84718b988735218cffd32f75ea", + "name": "Yel Finance", + "symbol": "YEL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17429/thumb/Logo200.png?1627613989" + }, + { + "chainId": 1, + "address": "0xee9e7bb7e55bbc86414047b61d65c9c0d91ffbd0", + "name": "Fracton Protocol", + "symbol": "FT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26809/thumb/CtH9UlRl_400x400.jpeg?1660227771" + }, + { + "chainId": 1, + "address": "0xf1ca9cb74685755965c7458528a36934df52a3ef", + "name": "AVINOC", + "symbol": "AVINOC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4659/thumb/qX7fh69Q_400x400-1.jpg?1636680685" + }, + { + "chainId": 1, + "address": "0xc8807f0f5ba3fa45ffbdc66928d71c5289249014", + "name": "Ispolink", + "symbol": "ISP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15283/thumb/isolink.PNG?1620352267" + }, + { + "chainId": 1, + "address": "0xde5ed76e7c05ec5e4572cfc88d1acea165109e44", + "name": "DEUS Finance", + "symbol": "DEUS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18778/thumb/DEUS-logo-200x200.png?1646318385" + }, + { + "chainId": 1, + "address": "0xdbdb4d16eda451d0503b854cf79d55697f90c8df", + "name": "Alchemix", + "symbol": "ALCX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14113/thumb/Alchemix.png?1614409874" + }, + { + "chainId": 1, + "address": "0x84ca8bc7997272c7cfb4d0cd3d55cd942b3c9419", + "name": "DIA", + "symbol": "DIA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11955/thumb/Token_Logo.png?1669981526" + }, + { + "chainId": 1, + "address": "0x464fdb8affc9bac185a7393fd4298137866dcfb8", + "name": "Realm", + "symbol": "REALM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18366/thumb/realm.PNG?1631665838" + }, + { + "chainId": 1, + "address": "0x00aba6fe5557de1a1d565658cbddddf7c710a1eb", + "name": "EasyFi V2", + "symbol": "EZ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12742/thumb/Logo_Icon.png?1624471467" + }, + { + "chainId": 1, + "address": "0x00c83aecc790e8a4453e5dd3b0b4b3680501a7a7", + "name": "SKALE", + "symbol": "SKL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13245/thumb/SKALE_token_300x300.png?1606789574" + }, + { + "chainId": 1, + "address": "0x4ae2cd1f5b8806a973953b76f9ce6d5fab9cdcfd", + "name": "eHive", + "symbol": "EHIVE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27239/thumb/ehive_200x200.png?1662714434" + }, + { + "chainId": 1, + "address": "0x0d88ed6e74bbfd96b831231638b66c05571e824f", + "name": "Aventus", + "symbol": "AVT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/901/thumb/Aventus.png?1625122968" + }, + { + "chainId": 1, + "address": "0xc5a9bc46a7dbe1c6de493e84a18f02e70e2c5a32", + "name": "WORLD CUP INU", + "symbol": "WCI", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/27489/thumb/2022-09-26_20.55.02-removebg-preview.png?1664253723" + }, + { + "chainId": 1, + "address": "0x8e6cd950ad6ba651f6dd608dc70e5886b1aa6b24", + "name": "StarLink", + "symbol": "STARL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16824/thumb/ZxJbRWJ.png?1625177900" + }, + { + "chainId": 1, + "address": "0x1571ed0bed4d987fe2b498ddbae7dfa19519f651", + "name": "iFARM", + "symbol": "IFARM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14472/thumb/ifarm.png?1616389133" + }, + { + "chainId": 1, + "address": "0x5b1d655c93185b06b00f7925791106132cb3ad75", + "name": "DarkMatter", + "symbol": "DMT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23989/thumb/dmt.png?1645948367" + }, + { + "chainId": 1, + "address": "0x50bc2ecc0bfdf5666640048038c1aba7b7525683", + "name": "carVertical", + "symbol": "CV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2098/thumb/carvertical.png?1547738903" + }, + { + "chainId": 1, + "address": "0x607f4c5bb672230e8672085532f7e901544a7375", + "name": "iExec RLC", + "symbol": "RLC", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/646/thumb/pL1VuXm.png?1604543202" + }, + { + "chainId": 1, + "address": "0xccba0b2bc4babe4cbfb6bd2f1edc2a9e86b7845f", + "name": "Winter", + "symbol": "WINTER", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25367/thumb/winter.png?1651317666" + }, + { + "chainId": 1, + "address": "0x505b5eda5e25a67e1c24a2bf1a527ed9eb88bf04", + "name": "Coinweb", + "symbol": "CWEB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21607/thumb/Logo_200x200.png?1641566717" + }, + { + "chainId": 1, + "address": "0x4c3bae16c79c30eeb1004fb03c878d89695e3a99", + "name": "Autumn", + "symbol": "AUTUMN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25366/thumb/autumn.png?1651317533" + }, + { + "chainId": 1, + "address": "0xc55126051b22ebb829d00368f4b12bde432de5da", + "name": "Redacted", + "symbol": "BTRFLY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26745/thumb/redacted_v2.jpg?1660011507" + }, + { + "chainId": 1, + "address": "0xf04af3f4e4929f7cd25a751e6149a3318373d4fe", + "name": "Spring", + "symbol": "SPRING", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25364/thumb/spring.png?1651317225" + }, + { + "chainId": 1, + "address": "0xf17e65822b568b3903685a7c9f496cf7656cc6c2", + "name": "Biconomy", + "symbol": "BICO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21061/thumb/biconomy_logo.jpg?1638269749" + }, + { + "chainId": 1, + "address": "0x6468e79a80c0eab0f9a2b574c8d5bc374af59414", + "name": "e Radix", + "symbol": "EXRD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13145/thumb/exrd_logo.png?1605662677" + }, + { + "chainId": 1, + "address": "0x4b520c812e8430659fc9f12f6d0c39026c83588d", + "name": "Decentral Games", + "symbol": "DG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21173/thumb/Decentral_Games_Logo-1.png?1638441275" + }, + { + "chainId": 1, + "address": "0xf05e58fcea29ab4da01a495140b349f8410ba904", + "name": "CLever CVX", + "symbol": "CLEVCVX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27902/thumb/%E6%88%AA%E5%B1%8F2022-10-21_%E4%B8%8A%E5%8D%8812.43.46.png?1666334411" + }, + { + "chainId": 1, + "address": "0xfe2e637202056d30016725477c5da089ab0a043a", + "name": "sETH2", + "symbol": "SETH2", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16569/thumb/emerald256.png?1624494960" + }, + { + "chainId": 1, + "address": "0xe2f2a5c287993345a840db3b0845fbc70f5935a5", + "name": "mStable USD", + "symbol": "MUSD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11576/thumb/mStable_USD.png?1595591803" + }, + { + "chainId": 1, + "address": "0x3dd98c8a089dbcff7e8fc8d4f532bd493501ab7f", + "name": "Town Star", + "symbol": "TOWN", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/19581/thumb/town.png?1635840875" + }, + { + "chainId": 1, + "address": "0x888888848b652b3e3a0f34c96e00eec0f3a23f72", + "name": "Alien Worlds", + "symbol": "TLM", + "decimals": 4, + "logoURI": "https://assets.coingecko.com/coins/images/14676/thumb/kY-C4o7RThfWrDQsLCAG4q4clZhBDDfJQVhWUEKxXAzyQYMj4Jmq1zmFwpRqxhAJFPOa0AsW_PTSshoPuMnXNwq3rU7Imp15QimXTjlXMx0nC088mt1rIwRs75GnLLugWjSllxgzvQ9YrP4tBgclK4_rb17hjnusGj_c0u2fx0AvVokjSNB-v2poTj0xT9BZRCbzRE3-lF1.jpg?1617700061" + }, + { + "chainId": 1, + "address": "0x5218e472cfcfe0b64a064f055b43b4cdc9efd3a6", + "name": "unFederalReserve", + "symbol": "ERSDL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12975/thumb/logo_eRSDL.png?1625755665" + }, + { + "chainId": 1, + "address": "0x5f98805a4e8be255a32880fdec7f6728c6568ba0", + "name": "Liquity USD", + "symbol": "LUSD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14666/thumb/Group_3.png?1617631327" + }, + { + "chainId": 1, + "address": "0xc0c293ce456ff0ed870add98a0828dd4d2903dbf", + "name": "Aura Finance", + "symbol": "AURA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25942/thumb/logo.png?1654784187" + }, + { + "chainId": 1, + "address": "0x66c0dded8433c9ea86c8cf91237b14e10b4d70b7", + "name": "Mars", + "symbol": "MARS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13654/thumb/MARS.png?1610575403" + }, + { + "chainId": 1, + "address": "0x298d492e8c1d909d3f63bc4a36c66c64acb3d695", + "name": "PolkaBridge", + "symbol": "PBR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13744/thumb/symbol-whitebg200x200.png?1611377553" + }, + { + "chainId": 1, + "address": "0x80c62fe4487e1351b47ba49809ebd60ed085bf52", + "name": "Clover Finance", + "symbol": "CLV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15278/thumb/photo_2022-03-24_10-22-33.jpg?1648531786" + }, + { + "chainId": 1, + "address": "0x5165d24277cd063f5ac44efd447b27025e888f37", + "name": "Aave YFI", + "symbol": "AYFI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17257/thumb/aYFI_2x.png?1626957974" + }, + { + "chainId": 1, + "address": "0xa685a61171bb30d4072b338c80cb7b2c865c873e", + "name": "Aave MANA", + "symbol": "AMANA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14267/thumb/aMANA.f89a1098.png?1615528680" + }, + { + "chainId": 1, + "address": "0x6fce4a401b6b80ace52baaefe4421bd188e76f6f", + "name": "Aave MANA v1", + "symbol": "AMANA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11730/thumb/aMANA.png?1593084474" + }, + { + "chainId": 1, + "address": "0xd417144312dbf50465b1c641d016962017ef6240", + "name": "Covalent", + "symbol": "CQT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14168/thumb/covalent-cqt.png?1624545218" + }, + { + "chainId": 1, + "address": "0x6c5024cd4f8a59110119c56f8933403a539555eb", + "name": "Aave SUSD", + "symbol": "ASUSD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14266/thumb/aSUSD.9b00ffc6.png?1615528241" + }, + { + "chainId": 1, + "address": "0xfb5c6815ca3ac72ce9f5006869ae67f18bf77006", + "name": "pSTAKE Finance", + "symbol": "PSTAKE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23931/thumb/PSTAKE_Dark.png?1645709930" + }, + { + "chainId": 1, + "address": "0x8686525d6627a25c68de82c228448f43c97999f2", + "name": "Lilly Token", + "symbol": "LY", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/23787/thumb/jQlMieu.png?1645437427" + }, + { + "chainId": 1, + "address": "0x06a00715e6f92210af9d7680b584931faf71a833", + "name": "Chronicle", + "symbol": "XNL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18413/thumb/xnl_logo.png?1633517024" + }, + { + "chainId": 1, + "address": "0xa62cc35625b0c8dc1faea39d33625bb4c15bd71c", + "name": "StormX", + "symbol": "STMX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1369/thumb/StormX.png?1603113002" + }, + { + "chainId": 1, + "address": "0xed0d5747a9ab03a75fbfec3228cd55848245b75d", + "name": "e Money", + "symbol": "NGM", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/13722/thumb/logo-200x200.jpg?1626095888" + }, + { + "chainId": 1, + "address": "0xd26114cd6ee289accf82350c8d8487fedb8a0c07", + "name": "OMG Network", + "symbol": "OMG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/776/thumb/OMG_Network.jpg?1591167168" + }, + { + "chainId": 1, + "address": "0xf1f955016ecbcd7321c7266bccfb96c68ea5e49b", + "name": "Rally", + "symbol": "RLY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12843/thumb/image.png?1611212077" + }, + { + "chainId": 1, + "address": "0x7865af71cf0b288b4e7f654f4f7851eb46a2b7f8", + "name": "Sentivate", + "symbol": "SNTVT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7383/thumb/2x9veCp.png?1598409975" + }, + { + "chainId": 1, + "address": "0x429d83bb0dcb8cdd5311e34680adc8b12070a07f", + "name": "PlatonCoin", + "symbol": "PLTC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7178/thumb/PLTC.png?1616126045" + }, + { + "chainId": 1, + "address": "0xe13879194578c6f1a591a96c45b65022c43cec07", + "name": "The meme finance", + "symbol": "MEFI", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/27837/thumb/57678426-EC89-4BA2-87AB-301B7D915F1B.jpeg?1666056561" + }, + { + "chainId": 1, + "address": "0x0b38210ea11411557c13457d4da7dc6ea731b88a", + "name": "API3", + "symbol": "API3", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13256/thumb/api3.jpg?1606751424" + }, + { + "chainId": 1, + "address": "0xae7ab96520de3a18e5e111b5eaab095312d7fe84", + "name": "Lido Staked Ether", + "symbol": "STETH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/13442/thumb/steth_logo.png?1608607546" + }, + { + "chainId": 1, + "address": "0xa1faa113cbe53436df28ff0aee54275c13b40975", + "name": "Alpha Venture DAO", + "symbol": "ALPHA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12738/thumb/AlphaToken_256x256.png?1617160876" + }, + { + "chainId": 1, + "address": "0x3085154623f51b00dedfc6ceeb5197277a66b17b", + "name": "NFTY DeFi Protocol", + "symbol": "NFTY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18584/thumb/nfty_logo.png?1632551145" + }, + { + "chainId": 1, + "address": "0xf1b99e3e573a1a9c5e6b2ce818b617f0e664e86b", + "name": "Opyn Squeeth", + "symbol": "OSQTH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22806/thumb/DyVT5XPV_400x400.jpg?1642656239" + }, + { + "chainId": 1, + "address": "0x7dd9c5cba05e151c895fde1cf355c9a1d5da6429", + "name": "Golem", + "symbol": "GLM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/542/thumb/Golem_Submark_Positive_RGB.png?1606392013" + }, + { + "chainId": 1, + "address": "0x92868a5255c628da08f550a858a802f5351c5223", + "name": "Cross Chain Bridge", + "symbol": "BRIDGE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20223/thumb/0x92868A5255C628dA08F550a858A802f5351C5223.png?1636684446" + }, + { + "chainId": 1, + "address": "0x66d28cb58487a7609877550e1a34691810a6b9fc", + "name": "Koinos", + "symbol": "KOIN", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/13116/thumb/koinos-mark-circle-250px.png?1614870541" + }, + { + "chainId": 1, + "address": "0xfa05a73ffe78ef8f1a739473e462c54bae6567d9", + "name": "Lunyr", + "symbol": "LUN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/735/thumb/lunyr.png?1547976492" + }, + { + "chainId": 1, + "address": "0xb64ef51c888972c908cfacf59b47c1afbc0ab8ac", + "name": "Storj", + "symbol": "STORJ", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/949/thumb/storj.png?1547034811" + }, + { + "chainId": 1, + "address": "0xa2120b9e674d3fc3875f415a7df52e382f141225", + "name": "Automata", + "symbol": "ATA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15985/thumb/ATA.jpg?1622535745" + }, + { + "chainId": 1, + "address": "0x9813037ee2218799597d83d4a5b6f3b6778218d9", + "name": "Bone ShibaSwap", + "symbol": "BONE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16916/thumb/bone_icon.png?1625625505" + }, + { + "chainId": 1, + "address": "0xf2cee90309418353a57717eca26c4f8754f0d84e", + "name": "BitcoinBrand", + "symbol": "BTCB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6607/thumb/y76xcDSr_400x400.jpg?1547042811" + }, + { + "chainId": 1, + "address": "0x51cb253744189f11241becb29bedd3f1b5384fdb", + "name": "Dimitra", + "symbol": "DMTR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18530/thumb/HqEiru32_400x400.jpg?1632293527" + }, + { + "chainId": 1, + "address": "0xaaa7a10a8ee237ea61e8ac46c50a8db8bcc1baaa", + "name": "QANplatform", + "symbol": "QANX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15977/thumb/qanx.png?1637574290" + }, + { + "chainId": 1, + "address": "0xa117000000f279d81a1d3cc75430faa017fa5a2e", + "name": "Aragon", + "symbol": "ANT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/681/thumb/JelZ58cv_400x400.png?1601449653" + }, + { + "chainId": 1, + "address": "0xec67005c4e498ec7f55e092bd1d35cbc47c91892", + "name": "Enzyme", + "symbol": "MLN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/605/thumb/Enzyme_Icon_Secondary.png?1611576629" + }, + { + "chainId": 1, + "address": "0x1ceb5cb57c4d4e2b2433641b95dd330a33185a44", + "name": "Keep3rV1", + "symbol": "KP3R", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12966/thumb/kp3r_logo.jpg?1607057458" + }, + { + "chainId": 1, + "address": "0xc52c326331e9ce41f04484d3b5e5648158028804", + "name": "Unizen", + "symbol": "ZCX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14830/thumb/7xjpHaG.png?1618564961" + }, + { + "chainId": 1, + "address": "0x2a8e1e676ec238d8a992307b495b45b3feaa5e86", + "name": "Origin Dollar", + "symbol": "OUSD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12589/thumb/ousd-logo-200x200.png?1600943287" + }, + { + "chainId": 1, + "address": "0x38e4adb44ef08f22f5b5b76a8f0c2d0dcbe7dca1", + "name": "PowerPool Concentrated Voting Power", + "symbol": "CVP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12266/thumb/Powerpool.jpg?1598621373" + }, + { + "chainId": 1, + "address": "0x83e6f1e41cdd28eaceb20cb649155049fac3d5aa", + "name": "Polkastarter", + "symbol": "POLS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12648/thumb/polkastarter.png?1609813702" + }, + { + "chainId": 1, + "address": "0xdc9ac3c20d1ed0b540df9b1fedc10039df13f99c", + "name": "Utrust", + "symbol": "UTK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1824/thumb/300x300_logo.png?1570520533" + }, + { + "chainId": 1, + "address": "0x0202be363b8a4820f3f4de7faf5224ff05943ab1", + "name": "UniLend Finance", + "symbol": "UFT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12819/thumb/UniLend_Finance_logo_PNG.png?1602748658" + }, + { + "chainId": 1, + "address": "0xe1d7c7a4596b038ced2a84bf65b8647271c53208", + "name": "NFTY Labs", + "symbol": "NFTY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18741/thumb/logo_%281%29.png?1643188469" + }, + { + "chainId": 1, + "address": "0xbc396689893d065f41bc2c6ecbee5e0085233447", + "name": "Perpetual Protocol", + "symbol": "PERP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12381/thumb/60d18e06844a844ad75901a9_mark_only_03.png?1628674771" + }, + { + "chainId": 1, + "address": "0xa2b4c0af19cc16a6cfacce81f192b024d625817d", + "name": "Kishu Inu", + "symbol": "KISHU", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/14890/thumb/uVLzCoP.png?1622445866" + }, + { + "chainId": 1, + "address": "0xd7c302fc3ac829c7e896a32c4bd126f3e8bd0a1f", + "name": "Bit2Me", + "symbol": "B2M", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19848/thumb/b2m-circle-solid-default.png?1636036332" + }, + { + "chainId": 1, + "address": "0x490e3f4af13e1616ec97a8c6600c1061a8d0253e", + "name": "Terran Coin", + "symbol": "TRR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15351/thumb/TERRAN-500px.png?1620626066" + }, + { + "chainId": 1, + "address": "0x849a226f327b89e3133d9930d927f9eb9346f8c9", + "name": "Crypto Global United", + "symbol": "CGU", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/20751/thumb/2022_CGU-MG_RGB.png?1666606977" + }, + { + "chainId": 1, + "address": "0xa670d7237398238de01267472c6f13e5b8010fd1", + "name": "Sommelier", + "symbol": "SOMM", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/23308/thumb/somm_new.png?1650884424" + }, + { + "chainId": 1, + "address": "0xd9063a24630f24cd4dc99a9c7abe73f82fc6b722", + "name": "Arenum", + "symbol": "ARNM", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/24393/thumb/6253dcf123d4f40001e9c793_CryptoCoin_1024.png?1649733527" + }, + { + "chainId": 1, + "address": "0xf68d4d917592f3a62417ace42592f15296cc33a0", + "name": "COINHUB", + "symbol": "CHB", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/26818/thumb/4DBF1DAE-0930-4925-BD70-1A446F267546.jpeg?1660278721" + }, + { + "chainId": 1, + "address": "0xe4174143f0d6b1ebc0e25e1acd975c8f9fd06539", + "name": "Wrapped aRIA Currency", + "symbol": "WRIA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27066/thumb/wRIA-logo-200x200-1.png?1661673526" + }, + { + "chainId": 1, + "address": "0x772722b55cdc2a086abd064267a17855eb15e8b3", + "name": "MintMe com Coin", + "symbol": "MINTME", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/5127/thumb/MINTME_logo.png?1666845801" + }, + { + "chainId": 1, + "address": "0xe20b9e246db5a0d21bf9209e4858bc9a3ff7a034", + "name": "Banano", + "symbol": "BAN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/6226/thumb/banano-transparent.png?1619589798" + }, + { + "chainId": 1, + "address": "0x5fab9761d60419c9eeebe3915a8fa1ed7e8d2e1b", + "name": "DIMO", + "symbol": "DIMO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28383/thumb/Token_Logo.png?1670052785" + }, + { + "chainId": 1, + "address": "0x37613d64258c0fe09d5e53eecb091da5b8fa8707", + "name": "Pi Protocol", + "symbol": "PIP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27476/thumb/LOGO_%281%29.png?1664197877" + }, + { + "chainId": 1, + "address": "0xd3ac016b1b8c80eeadde4d186a9138c9324e4189", + "name": "Okcash", + "symbol": "OK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/274/thumb/ok-logo-200px.png?1665792994" + }, + { + "chainId": 1, + "address": "0xdd13dedecebda566322195bc4451d672a148752c", + "name": "PRIMAL", + "symbol": "PRIMAL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28435/thumb/PRIMAL_ICON_200px.jpg?1670567426" + }, + { + "chainId": 1, + "address": "0xc7026a20a640bc71b9074f7aed52a00cd9147091", + "name": "Tegro", + "symbol": "TGR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26564/thumb/200x200.png?1658800017" + }, + { + "chainId": 1, + "address": "0xb990d93c308a31c737aa91839e8ba8eaf4017d7a", + "name": "PirateCash", + "symbol": "PIRATE", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/7155/thumb/logo_%281%29.png?1637683371" + }, + { + "chainId": 1, + "address": "0x5f1f11a3dd7a0c39da1baa3c7b8585b52a77f435", + "name": "ASAN VERSE", + "symbol": "ASAN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28189/thumb/200200_copy.png?1668324848" + }, + { + "chainId": 1, + "address": "0x5bdc32663ec75e85ff4abc2cae7ae8b606a2cfca", + "name": "Cookies Protocol", + "symbol": "CP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/28432/thumb/IMG_20221207_200805_897.jpg?1670556204" + }, + { + "chainId": 1, + "address": "0x703d8574e19428d662a73c301d106dc236aa9bfc", + "name": "Teaswap Art", + "symbol": "TSA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17826/thumb/tsa.PNG?1629358290" + }, + { + "chainId": 1, + "address": "0x9348e94a447bf8b2ec11f374d3f055fd47d936df", + "name": "For Loot And Glory", + "symbol": "FLAG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20726/thumb/token_logo.ico?1637595445" + }, + { + "chainId": 1, + "address": "0xc3589f56b6869824804a5ea29f2c9886af1b0fce", + "name": "Honey", + "symbol": "HNY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12895/thumb/hnys.png?1614100588" + }, + { + "chainId": 1, + "address": "0x377d552914e7a104bc22b4f3b6268ddc69615be7", + "name": "NEXT", + "symbol": "NEXT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/7014/thumb/NEXT.exchange_Logo.png?1569212613" + }, + { + "chainId": 1, + "address": "0xe2dc070524a6e305ddb64d8513dc444b6a1ec845", + "name": "Nash", + "symbol": "NEX", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/3246/thumb/nash.png?1653656442" + }, + { + "chainId": 1, + "address": "0x0f3adc247e91c3c50bc08721355a41037e89bc20", + "name": "Anchor Protocol", + "symbol": "ANC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14420/thumb/anchor_protocol_logo.jpg?1615965420" + }, + { + "chainId": 1, + "address": "0x499568c250ab2a42292261d6121525d70691894b", + "name": "KROWN", + "symbol": "KRW", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16530/thumb/KRW_token_logo_200x200.png?1624343058" + }, + { + "chainId": 1, + "address": "0x36b679bd64ed73dbfd88909cdcb892cb66bd4cbb", + "name": "xMARK", + "symbol": "XMARK", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/14188/thumb/omPQ9-nF_400x400.jpg?1614830988" + }, + { + "chainId": 1, + "address": "0x1350fbe8ce27762ec19134bf8fc405a427fe9bf1", + "name": "Trips Community", + "symbol": "TRIPS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14648/thumb/trips_32.png?1617491133" + }, + { + "chainId": 1, + "address": "0xfeea0bdd3d07eb6fe305938878c0cadbfa169042", + "name": "8Pay", + "symbol": "8PAY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14667/thumb/8pay.jpeg?1617639682" + }, + { + "chainId": 1, + "address": "0x6dc02164d75651758ac74435806093e421b64605", + "name": "XAYA", + "symbol": "WCHI", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/2091/thumb/xaya200x200.png?1656561479" + }, + { + "chainId": 1, + "address": "0x71ba91dc68c6a206db0a6a92b4b1de3f9271432d", + "name": "MobieCoin", + "symbol": "MBX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12874/thumb/MBX_token.jpg?1603186697" + }, + { + "chainId": 1, + "address": "0x5a4623f305a8d7904ed68638af3b4328678eddbf", + "name": "dART Insurance", + "symbol": "DART", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14834/thumb/dart.PNG?1618611161" + }, + { + "chainId": 1, + "address": "0xfb62ae373aca027177d1c18ee0862817f9080d08", + "name": "My DeFi Pet", + "symbol": "DPET", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15321/thumb/mydefi.PNG?1620512455" + }, + { + "chainId": 1, + "address": "0x92a42db88ed0f02c71d439e55962ca7cab0168b5", + "name": "TRDGtoken", + "symbol": "TRDG", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/14371/thumb/trdg.png?1635830350" + }, + { + "chainId": 1, + "address": "0x3079f61704e9efa2bcf1db412f735d8d4cfa26f4", + "name": "HappyFans", + "symbol": "HAPPY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19027/thumb/O1pUoR8G_400x400.jpeg?1654248996" + }, + { + "chainId": 1, + "address": "0xee1cea7665ba7aa97e982edeaecb26b59a04d035", + "name": "ORAO Network", + "symbol": "ORAO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15189/thumb/orao.PNG?1620078596" + }, + { + "chainId": 1, + "address": "0x7b4328c127b85369d9f82ca0503b000d09cf9180", + "name": "Dogechain", + "symbol": "DC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26828/thumb/dogechain.jpeg?1660292741" + }, + { + "chainId": 1, + "address": "0x05fb86775fd5c16290f1e838f5caaa7342bd9a63", + "name": "Hacken HAI", + "symbol": "HAI", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/11081/thumb/logo_haken_vector.png?1593511379" + }, + { + "chainId": 1, + "address": "0xa771b49064da011df051052848477f18dba1d2ac", + "name": "Handshake", + "symbol": "HNS", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/10562/thumb/circle-handshakeLogo.png?1613668983" + }, + { + "chainId": 1, + "address": "0x5f6c5c2fb289db2228d159c69621215e354218d7", + "name": "Demodyfi", + "symbol": "DMOD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16262/thumb/Logo_coingecko_%281%29.png?1631796477" + }, + { + "chainId": 1, + "address": "0xc944273b805debd35c63011943abc5ab9eddb8e3", + "name": "Crypto Shield", + "symbol": "SHIELD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21614/thumb/14834.png?1639610437" + }, + { + "chainId": 1, + "address": "0x9d918ee39a356be8ef99734599c7e70160db4db6", + "name": "RealT 12405 Santa Rosa Dr Detroit M", + "symbol": "REALT-S-12405-SANTA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16671/thumb/12405-Santa-Rosa-hero-1.jpg?1624627801" + }, + { + "chainId": 1, + "address": "0xdd833d0eef6d5d7cec781b03c19f3b425f3039df", + "name": "RealT 11957 Olga St Detroit MI 4821", + "symbol": "REALT-S-11957-OLGA-", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16672/thumb/11957-Olga-hero-1.jpg?1624628071" + }, + { + "chainId": 1, + "address": "0xf4657ab08681214bcb1893aa8e9c7613459250ec", + "name": "RealT 1617 S Avers Ave Chicago IL 6", + "symbol": "REALT-S-1617-SAVERS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16675/thumb/1617-S-Avers-hero-1.jpg?1624628860" + }, + { + "chainId": 1, + "address": "0xe7b6de709ffc3bd237c2f2c800e1002f97a760f3", + "name": "RealT 4852 4854 W Cortez St Chicago ", + "symbol": "REALT-S-4852-4854-W", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16670/thumb/Cortez-facade-1.jpg?1624627398" + }, + { + "chainId": 1, + "address": "0x8fcb39a25e639c8fbd28e8a018227d6570e02352", + "name": "RealT 1815 S Avers Ave Chicago IL 6", + "symbol": "REALT-S-1815-SAVERS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16674/thumb/1815-S-Avers-hero-1.5.jpg?1624628519" + }, + { + "chainId": 1, + "address": "0xe887dc4fcb5240c0c080aeab8870421d3ebd0b28", + "name": "RealT 14066 Santa Rosa Dr Detroit M", + "symbol": "REALT-S-14066-SANTA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16677/thumb/14066-Santa-Rosa-hero-1.5.jpg?1624629250" + }, + { + "chainId": 1, + "address": "0x45fdb1b92a649fb6a64ef1511d3ba5bf60044838", + "name": "SpiceUSD", + "symbol": "USDS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25697/thumb/USDS.png?1653440948" + }, + { + "chainId": 1, + "address": "0x8bcd06492416a749c9369009b3429861b7f27f6e", + "name": "BlackHat Coin", + "symbol": "BLKC", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/15987/thumb/logo_light.png?1622537905" + }, + { + "chainId": 1, + "address": "0x7778360f035c589fce2f4ea5786cbd8b36e5396b", + "name": "OpenOcean", + "symbol": "OOE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17014/thumb/ooe_log.png?1626074195" + }, + { + "chainId": 1, + "address": "0x4e9a46ea6a22f3894abee2302ad42fd3b69e21e2", + "name": "Binance Smart Chain Girl", + "symbol": "BSCGIRL", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/17271/thumb/icon_200px_16bit.png?1627005622" + }, + { + "chainId": 1, + "address": "0xae12c5930881c53715b369cec7606b70d8eb229f", + "name": "Coin98", + "symbol": "C98", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17117/thumb/logo.png?1626412904" + }, + { + "chainId": 1, + "address": "0xb8981acbbf7da95a8ff6df79aab935ce63434fc8", + "name": "Cfoforum", + "symbol": "CFO", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/17592/thumb/CFO_logo_200_200px.png?1628580306" + }, + { + "chainId": 1, + "address": "0x396ec402b42066864c406d1ac3bc86b575003ed8", + "name": "Buying com", + "symbol": "BUY", + "decimals": 2, + "logoURI": "https://assets.coingecko.com/coins/images/5290/thumb/buying_200x200.png?1628587856" + }, + { + "chainId": 1, + "address": "0x180dae91d6d56235453a892d2e56a3e40ba81df8", + "name": "DOJO", + "symbol": "DOJO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16396/thumb/074606deafab3872.png?1623910120" + }, + { + "chainId": 1, + "address": "0x8287c7b963b405b7b8d467db9d79eec40625b13a", + "name": "Swingby", + "symbol": "SWINGBY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/11861/thumb/swingby.png?1595822302" + }, + { + "chainId": 1, + "address": "0x1d7ca62f6af49ec66f6680b8606e634e55ef22c1", + "name": "Starter xyz", + "symbol": "START", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14301/thumb/logo_poly_sym.png?1624893386" + }, + { + "chainId": 1, + "address": "0x6c7b97c7e09e790d161769a52f155125fac6d5a1", + "name": "Polylauncher", + "symbol": "ANGEL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17739/thumb/Polylauncher_-_200_x_200.png?1629121147" + }, + { + "chainId": 1, + "address": "0x31f69de127c8a0ff10819c0955490a4ae46fcc2a", + "name": "Obyte", + "symbol": "GBYTE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/561/thumb/byteball.png?1547564361" + }, + { + "chainId": 1, + "address": "0x8848812bd31aeee33313c10a840ffc3169078c5b", + "name": "CrossFi", + "symbol": "CRFI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15162/thumb/11901619752967_.pic_hd.png?1620006681" + }, + { + "chainId": 1, + "address": "0x667fd83e24ca1d935d36717d305d54fa0cac991c", + "name": "Collector Coin", + "symbol": "AGS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16918/thumb/AGS.png?1625626120" + }, + { + "chainId": 1, + "address": "0x9393fdc77090f31c7db989390d43f454b1a6e7f3", + "name": "Dark Energy Crystals", + "symbol": "DEC", + "decimals": 3, + "logoURI": "https://assets.coingecko.com/coins/images/12923/thumb/DEC_token.png?1603683753" + }, + { + "chainId": 1, + "address": "0x1951ab088141e69a3713a351b0d55ba3acda192c", + "name": "Night Life Crypto", + "symbol": "NLIFE", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/16277/thumb/F6jp9eh.png?1623634100" + }, + { + "chainId": 1, + "address": "0x2aad9dbc82611485a52325923e1187734e951b78", + "name": "BYTZ", + "symbol": "BYTZ", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/4017/thumb/bytz.png?1584519997" + }, + { + "chainId": 1, + "address": "0x8861cff2366c1128fd699b68304ad99a0764ef9a", + "name": "Cyclone Protocol", + "symbol": "CYC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14065/thumb/b3_DFjFp_400x400.jpg?1614128740" + }, + { + "chainId": 1, + "address": "0x026e62dded1a6ad07d93d39f96b9eabd59665e0d", + "name": "Birdchain", + "symbol": "BIRD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/1994/thumb/MLSILOZA_400x400.png?1564971298" + }, + { + "chainId": 1, + "address": "0xdb726152680ece3c9291f1016f1d36f3995f6941", + "name": "Media Network", + "symbol": "MEDIA", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/15142/thumb/media50x50.png?1620122020" + }, + { + "chainId": 1, + "address": "0x34965f73cfa05bf8d8af37cb4af64fa950605ea8", + "name": "CoinWind", + "symbol": "COW", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15766/thumb/logo.c3d2c062.png?1621827743" + }, + { + "chainId": 1, + "address": "0x9ac07635ddbde5db18648c360defb00f5f22537e", + "name": "Museum of Crypto Art", + "symbol": "MOCA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15829/thumb/photo_2021-06-04_09.36.16.jpeg?1622770606" + }, + { + "chainId": 1, + "address": "0xf9c2b386ff5df088ac717ab0010587bad3bc1ab1", + "name": "Inflation Adjusted USDS", + "symbol": "IUSDS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25698/thumb/iUSDS2.png?1653441251" + }, + { + "chainId": 1, + "address": "0x7645ddfeeceda57e41f92679c4acd83c56a81d14", + "name": "Flux Protocol", + "symbol": "FLUX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15002/thumb/logo.dabc411c.png?1619402947" + }, + { + "chainId": 1, + "address": "0xf99d58e463a2e07e5692127302c20a191861b4d6", + "name": "Anyswap", + "symbol": "ANY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12242/thumb/anyswap.jpg?1598443880" + }, + { + "chainId": 1, + "address": "0x9fda7ceec4c18008096c2fe2b85f05dc300f94d0", + "name": "Gaj Finance", + "symbol": "GAJ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15257/thumb/logo200x200.png?1629887093" + }, + { + "chainId": 1, + "address": "0xe0b0c16038845bed3fcf70304d3e167df81ce225", + "name": "CrossSwap", + "symbol": "CSWAP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18002/thumb/cross.png?1630078540" + }, + { + "chainId": 1, + "address": "0x939b462ee3311f8926c047d2b576c389092b1649", + "name": "LiquidApps", + "symbol": "DAPP", + "decimals": 4, + "logoURI": "https://assets.coingecko.com/coins/images/8116/thumb/dapp-logo.jpg?1554996565" + }, + { + "chainId": 1, + "address": "0xef3a930e1ffffacd2fc13434ac81bd278b0ecc8d", + "name": "Stafi", + "symbol": "FIS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/12423/thumb/stafi_logo.jpg?1599730991" + }, + { + "chainId": 1, + "address": "0x154e35c2b0024b3e079c5c5e4fc31c979c189ccb", + "name": "Raid", + "symbol": "RAID", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18133/thumb/raid_200_oswlvz.png?1630631876" + }, + { + "chainId": 1, + "address": "0x9d79d5b61de59d882ce90125b18f74af650acb93", + "name": "Neutrino System Base", + "symbol": "NSBT", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/13268/thumb/83005f7ab1.png?1606877707" + }, + { + "chainId": 1, + "address": "0x62d693fe5c13b5a5b24c9ec3f423e51c35f5624f", + "name": "SafeBitcoin", + "symbol": "SAFEBTC", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/14635/thumb/Logo_Black_200x200.png?1631160793" + }, + { + "chainId": 1, + "address": "0xdb0170e2d0c1cc1b2e7a90313d9b9afa4f250289", + "name": "ADAPad", + "symbol": "ADAPAD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18273/thumb/EhSqPTtG_400x400.jpg?1631181091" + }, + { + "chainId": 1, + "address": "0xc2708a3a4ba7f64bddc1a49f92f941bc77cad23a", + "name": "Waves Ducks", + "symbol": "EGG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17298/thumb/200x200_pixel.png?1627288546" + }, + { + "chainId": 1, + "address": "0x8bbf1dccbedd5c70d8e793d432fb56b848dd1698", + "name": "Ape In", + "symbol": "APEIN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18262/thumb/apein.PNG?1631158082" + }, + { + "chainId": 1, + "address": "0xb8e3bb633f7276cc17735d86154e0ad5ec9928c0", + "name": "VelasPad", + "symbol": "VLXPAD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18535/thumb/11654.png?1632297834" + }, + { + "chainId": 1, + "address": "0x9798df2f5d213a872c787bd03b2b91f54d0d04a1", + "name": "TeraBlock", + "symbol": "TBC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15622/thumb/tbc.png?1621345335" + }, + { + "chainId": 1, + "address": "0x3405a1bd46b85c5c029483fbecf2f3e611026e45", + "name": "WOWswap", + "symbol": "WOW", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14101/thumb/Group-423.png?1614317472" + }, + { + "chainId": 1, + "address": "0x893700a1a86ee68b92536bf6fd4d3200d7369f7d", + "name": "Emanate", + "symbol": "EMT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4152/thumb/emanate.png?1558422824" + }, + { + "chainId": 1, + "address": "0x12bb890508c125661e03b09ec06e404bc9289040", + "name": "Radio Caca", + "symbol": "RACA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17841/thumb/ez44_BSs_400x400.jpg?1629464170" + }, + { + "chainId": 1, + "address": "0xca1262e77fb25c0a4112cfc9bad3ff54f617f2e6", + "name": "Jax Network", + "symbol": "WJXN", + "decimals": 0, + "logoURI": "https://assets.coingecko.com/coins/images/18737/thumb/photo.jpg?1633360887" + }, + { + "chainId": 1, + "address": "0x968f6f898a6df937fc1859b323ac2f14643e3fed", + "name": "Newscrypto Coin", + "symbol": "NWC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9805/thumb/Tu1_NI3s_%281%29.png?1614745476" + }, + { + "chainId": 1, + "address": "0x39ae6d231d831756079ec23589d2d37a739f2e89", + "name": "Zeptacoin", + "symbol": "ZPTC", + "decimals": 4, + "logoURI": "https://assets.coingecko.com/coins/images/19109/thumb/2000x2000zptc_square3_%281%29.png?1639667686" + }, + { + "chainId": 1, + "address": "0x5dbb9f64cd96e2dbbca58d14863d615b67b42f2e", + "name": "ok lets go ", + "symbol": "OKLG", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/20377/thumb/Screenshot-2021-11-14-at-23-45-11.png?1636950187" + }, + { + "chainId": 1, + "address": "0x8a65b987d9813f0a97446eda0de918b2573ae406", + "name": "FomoETH", + "symbol": "FOMOETH", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/21934/thumb/qSCAqd6m_400x400.jpg?1640301488" + }, + { + "chainId": 1, + "address": "0xfbc4f3f645c4003a2e4f4e9b51077d2daa9a9341", + "name": "Zedxion", + "symbol": "ZEDXION", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18841/thumb/ZEDXION.png?1633585913" + }, + { + "chainId": 1, + "address": "0xdb85f6685950e285b1e611037bebe5b34e2b7d78", + "name": "Zano", + "symbol": "ZANO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/8370/thumb/zano.png?1638343828" + }, + { + "chainId": 1, + "address": "0x1da4858ad385cc377165a298cc2ce3fce0c5fd31", + "name": "CloutContracts", + "symbol": "CCS", + "decimals": 0, + "logoURI": "https://assets.coingecko.com/coins/images/19072/thumb/200.png?1634829111" + }, + { + "chainId": 1, + "address": "0xf32122561d51e891b823dec2b42f644884c1cd91", + "name": "DeFido", + "symbol": "DEFIDO", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/18861/thumb/defido.png?1635638445" + }, + { + "chainId": 1, + "address": "0xf268fe3d6909508dda90dccf2bf69050d19f4cdd", + "name": "Grow", + "symbol": "GROW", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16049/thumb/grow-logo-200x200.png?1622691274" + }, + { + "chainId": 1, + "address": "0xf6719e1a8fcbb1b9c290019e37e004966a8916c9", + "name": "Polygen", + "symbol": "PGEN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21476/thumb/polygen-logo_1.jpeg?1639350369" + }, + { + "chainId": 1, + "address": "0x2fd8bc03d9e827f77fac20b5130ee98b7f80149d", + "name": "CRB Coin", + "symbol": "CRB", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/19399/thumb/crb.png?1635158925" + }, + { + "chainId": 1, + "address": "0x16ba8efe847ebdfef99d399902ec29397d403c30", + "name": "Oh Finance", + "symbol": "OH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19493/thumb/oh-token-logo-200.png?1635303795" + }, + { + "chainId": 1, + "address": "0xd373576a9e738f37dc6882328358ff69c4caf4c6", + "name": "Zam io", + "symbol": "ZAM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19522/thumb/zam.png?1635324134" + }, + { + "chainId": 1, + "address": "0x0106a1122fe94a9cf151097c1fe17229ec78ffad", + "name": "Eco DeFi", + "symbol": "ECOP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19535/thumb/eco_global.PNG?1635374624" + }, + { + "chainId": 1, + "address": "0x773258b03c730f84af10dfcb1bfaa7487558b8ac", + "name": "Secret Finance", + "symbol": "SEFI", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/14601/thumb/_Icon___SVG__Primary_-_Metallic_Gold_in_Circle_%282%29.png?1635066611" + }, + { + "chainId": 1, + "address": "0x5f0366c9962193fa774cdce9602195593b49f23c", + "name": "Flash Loans", + "symbol": "FLASH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19827/thumb/flash.PNG?1635979476" + }, + { + "chainId": 1, + "address": "0x65e6b60ea01668634d68d0513fe814679f925bad", + "name": "PixelVerse", + "symbol": "PIXEL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19934/thumb/pixelverse.PNG?1636325521" + }, + { + "chainId": 1, + "address": "0x081131434f93063751813c619ecca9c4dc7862a3", + "name": "Mines of Dalarnia", + "symbol": "DAR", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/19837/thumb/dar.png?1636014223" + }, + { + "chainId": 1, + "address": "0x0c75dd36af9a59ba1d248a98fe91b2384cfea9be", + "name": "OmniWhirl", + "symbol": "WHIRL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17165/thumb/logo-200x.png?1626683241" + }, + { + "chainId": 1, + "address": "0xac57de9c1a09fec648e93eb98875b212db0d460b", + "name": "Baby Doge Coin", + "symbol": "BABYDOGE", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/16125/thumb/Baby_Doge.png?1623044048" + }, + { + "chainId": 1, + "address": "0x55af5865807b196bd0197e0902746f31fbccfa58", + "name": "Spookyswap", + "symbol": "BOO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15223/thumb/logo_200x200.png?1621992076" + }, + { + "chainId": 1, + "address": "0x9a257c90fa239fba07771ef7da2d554d148c2e89", + "name": "MEDIA EYE", + "symbol": "EYE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20643/thumb/eye.png?1656052464" + }, + { + "chainId": 1, + "address": "0x9fb83c0635de2e815fd1c21b3a292277540c2e8d", + "name": "RealFevr", + "symbol": "FEVR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17136/thumb/Fevr-Token.png?1626869849" + }, + { + "chainId": 1, + "address": "0xe0bcd056b6a8c7fd4983cb56c162799e498e85d3", + "name": "Toshinori Inu", + "symbol": "TOSHINORI", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/21068/thumb/2Dp0LWna_400x400.jpg?1638279103" + }, + { + "chainId": 1, + "address": "0x0343131c0257ac21ea5a8dc83841f071efd9285c", + "name": "Zenith Chain", + "symbol": "ZENITH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21266/thumb/Jqtp-OVG_400x400.png?1638837643" + }, + { + "chainId": 1, + "address": "0xd8c1232fcd219286e341271385bd70601503b3d7", + "name": "Dogira", + "symbol": "DOGIRA", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/14634/thumb/IQgaRw0.png?1622439620" + }, + { + "chainId": 1, + "address": "0x747c4ce9622ea750ea8048423b38a746b096c8e8", + "name": "Baby Floki Doge", + "symbol": "BABYFD", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/19543/thumb/babyfd.png?1635641884" + }, + { + "chainId": 1, + "address": "0xb6dd77fd132dcaa10f1858734e838a0fa7431580", + "name": "Filipcoin", + "symbol": "FCP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21354/thumb/filip.PNG?1639000706" + }, + { + "chainId": 1, + "address": "0x81c159f7abaa9139227aff62959b86b4141f6eb2", + "name": "Elon s Marvin", + "symbol": "MARVIN", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/20886/thumb/marvin.png?1637832213" + }, + { + "chainId": 1, + "address": "0x93e32efafd24973d45f363a76d73ccb9edf59986", + "name": "Bitlocus", + "symbol": "BTL", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/20913/thumb/btl.png?1637922710" + }, + { + "chainId": 1, + "address": "0x42baf1f659d765c65ade5bb7e08eb2c680360d9d", + "name": "Cornucopias", + "symbol": "COPI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21452/thumb/g56WwJDA_400x400.jpg?1639174968" + }, + { + "chainId": 1, + "address": "0xe1590a6fa0cff9c960181cb77d8a873601772f64", + "name": "WallStreetBets DApp", + "symbol": "WSB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15093/thumb/Pe1mrDu.png?1629882480" + }, + { + "chainId": 1, + "address": "0xdf09a216fac5adc3e640db418c0b956076509503", + "name": "Poken", + "symbol": "PKN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21574/thumb/G10VNBAR_400x400.jpg?1639490463" + }, + { + "chainId": 1, + "address": "0x45c2f8c9b4c0bdc76200448cc26c48ab6ffef83f", + "name": "Domi", + "symbol": "DOMI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21633/thumb/Transparent_Circle_Logo_2.png?1639627183" + }, + { + "chainId": 1, + "address": "0xa87135285ae208e22068acdbff64b11ec73eaa5a", + "name": "Lunr", + "symbol": "LUNR", + "decimals": 4, + "logoURI": "https://assets.coingecko.com/coins/images/19256/thumb/lunr.png?1639975807" + }, + { + "chainId": 1, + "address": "0x965b85d4674f64422c4898c8f8083187f02b32c0", + "name": "Filecoin Standard Full Hashrate", + "symbol": "SFIL", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/21669/thumb/_70BfuBY_400x400.jpg?1639706531" + }, + { + "chainId": 1, + "address": "0xa47c8bf37f92abed4a126bda807a7b7498661acd", + "name": "Wrapped USTC", + "symbol": "USTC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15462/thumb/ust.png?1620910058" + }, + { + "chainId": 1, + "address": "0x57cd5a91c18d21dedd72d3bcf255b60aef290f53", + "name": "SnapEx", + "symbol": "SNAP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21458/thumb/snap.png?1639291894" + }, + { + "chainId": 1, + "address": "0x2f25d402829ca4085b8ea4d3bc68bf203f5a9fab", + "name": "EagonSwap", + "symbol": "EAGON", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20431/thumb/IMG-20210912-WA0003.jpg?1637035180" + }, + { + "chainId": 1, + "address": "0xaad483f97f13c6a20b9d05d07c397ce85c42c393", + "name": "Woonkly Power", + "symbol": "WOOP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14494/thumb/Icono_Infinito_Circular_Blanco_Fondo_Azul_2x.png?1658830979" + }, + { + "chainId": 1, + "address": "0xaf9db9e362e306688af48c4acb9618c06db38ac3", + "name": "ACY Finance", + "symbol": "ACY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21883/thumb/ubfPhcEK_400x400.jpg?1640214613" + }, + { + "chainId": 1, + "address": "0xbd100d061e120b2c67a24453cf6368e63f1be056", + "name": "iDeFiYieldProtocol", + "symbol": "IDYP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/21976/thumb/iDYP-200x200px.png?1671016252" + }, + { + "chainId": 1, + "address": "0x77a1f4e744d810239f465043e35d067ca33de259", + "name": "Voice Street", + "symbol": "VST", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23147/thumb/LbMUkaD9_400x400.jpg?1643348841" + }, + { + "chainId": 1, + "address": "0x507bde03a87a6aa134d16634545e3d79c11c137d", + "name": "UniArts", + "symbol": "UART", + "decimals": 12, + "logoURI": "https://assets.coingecko.com/coins/images/22092/thumb/3Rx82r_w_400x400.png?1640823145" + }, + { + "chainId": 1, + "address": "0x7118057ff0f4fd0994fb9d2d94de8231d5cca79e", + "name": "ReSource Protocol", + "symbol": "SOURCE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20740/thumb/source.png?1637749215" + }, + { + "chainId": 1, + "address": "0x9ab70e92319f0b9127df78868fd3655fb9f1e322", + "name": "WeWay", + "symbol": "WWY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22418/thumb/wwy.png?1661499324" + }, + { + "chainId": 1, + "address": "0x86d49fbd3b6f989d641e700a15599d3b165002ab", + "name": "HUH", + "symbol": "HUH", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/21549/thumb/huh.png?1639462106" + }, + { + "chainId": 1, + "address": "0x25b24b3c47918b7962b3e49c4f468367f73cc0e0", + "name": "AXL INU", + "symbol": "AXL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22191/thumb/Original_Logo-01.png?1641188792" + }, + { + "chainId": 1, + "address": "0xbba6c7c7d673c48d90069ad2e9d2fe587fcb6bc3", + "name": "Lepasa", + "symbol": "LEPA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22745/thumb/lepasa.PNG?1642550975" + }, + { + "chainId": 1, + "address": "0xac8cc32fab2368a1a095722aaf760c45f578e17b", + "name": "CHEEMS INU", + "symbol": "CINU", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/20924/thumb/Screenshot-2021-11-23-at-00-45-30.png?1637932412" + }, + { + "chainId": 1, + "address": "0xa693b19d2931d498c5b318df961919bb4aee87a5", + "name": "TerraUSD Wormhole ", + "symbol": "UST", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/21150/thumb/UST_wh_small.png?1644223065" + }, + { + "chainId": 1, + "address": "0x845e2e8b42dced7dedcdba9bde32c9e338224f97", + "name": "Satozhi", + "symbol": "SATOZ", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/14786/thumb/0GeSrIaQ_400x400.jpg?1618416420" + }, + { + "chainId": 1, + "address": "0x2f75113b13d136f861d212fa9b572f2c79ac81c4", + "name": "Ekta", + "symbol": "EKTA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22350/thumb/token.jpg?1641882684" + }, + { + "chainId": 1, + "address": "0xc669928185dbce49d2230cc9b0979be6dc797957", + "name": "BitTorrent", + "symbol": "BTT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22457/thumb/btt_logo.png?1643857231" + }, + { + "chainId": 1, + "address": "0x4734baf528766ec4c420a6c13f8dba7bb1920181", + "name": "Elvantis", + "symbol": "ELV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23393/thumb/elvantis.PNG?1644116336" + }, + { + "chainId": 1, + "address": "0xcc8fa225d80b9c7d42f96e9570156c65d6caaa25", + "name": "Smooth Love Potion", + "symbol": "SLP", + "decimals": 0, + "logoURI": "https://assets.coingecko.com/coins/images/10366/thumb/SLP.png?1578640057" + }, + { + "chainId": 1, + "address": "0xc4bb7277a74678f053259cb1f96140347efbfd46", + "name": "Coin of the champions", + "symbol": "COC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18478/thumb/COC-Yellow-Transparent-1.png?1632148454" + }, + { + "chainId": 1, + "address": "0x9b17baadf0f21f03e35249e0e59723f34994f806", + "name": "NFTmall", + "symbol": "GEM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16217/thumb/Icon-1000x1000.png?1623316471" + }, + { + "chainId": 1, + "address": "0xee9801669c6138e84bd50deb500827b776777d28", + "name": "O3 Swap", + "symbol": "O3", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15460/thumb/o3.png?1620904316" + }, + { + "chainId": 1, + "address": "0x7825e833d495f3d1c28872415a4aee339d26ac88", + "name": "Wrapped Telos", + "symbol": "WTLOS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23952/thumb/tL4cEmvt_400x400.png?1645772510" + }, + { + "chainId": 1, + "address": "0x2217e5921b7edfb4bb193a6228459974010d2198", + "name": "Qmall", + "symbol": "QMALL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23630/thumb/tjVN6bQ5_400x400.jpg?1644891636" + }, + { + "chainId": 1, + "address": "0xd3c51de3e6dd9b53d7f37699afb3ee3bf9b9b3f4", + "name": "MContent", + "symbol": "MCONTENT", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/16781/thumb/Image_mcontent.jpeg?1653476766" + }, + { + "chainId": 1, + "address": "0x1f36fb2d91d9951cf58ae4c1956c0b77e224f1e9", + "name": "VCGamers", + "symbol": "VCG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22371/thumb/VCG-Token-Logo-PNG.png?1643187590" + }, + { + "chainId": 1, + "address": "0xe580074a10360404af3abfe2d524d5806d993ea3", + "name": "PayBolt", + "symbol": "PAY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24175/thumb/logo.png?1646748269" + }, + { + "chainId": 1, + "address": "0x723bd1f87a327e94ceabf68d8f022e0f54b9cc1a", + "name": "Philcoin", + "symbol": "PHL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24178/thumb/2ZFyoMSk.png?1646901982" + }, + { + "chainId": 1, + "address": "0xc17fbe1d709ddf6c0b6665dd0591046815ac7554", + "name": "Polars", + "symbol": "POL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24220/thumb/alpha_logo_polars.png?1646919342" + }, + { + "chainId": 1, + "address": "0x22c5543d1a35178cb03b33f929a959145e538532", + "name": "The Wasted Lands", + "symbol": "WAL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24273/thumb/Coin_WAL_%281%29.png?1647178350" + }, + { + "chainId": 1, + "address": "0x20d60c6eb195868d4643f2c9b0809e4de6cc003d", + "name": "PlayNity", + "symbol": "PLY", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/21479/thumb/ply.png?1639651574" + }, + { + "chainId": 1, + "address": "0x809e130e10e787139c54e1d12d3d1971b7a675bf", + "name": "Minted", + "symbol": "MTD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26893/thumb/MTD_Token_%282%29.png?1660708482" + }, + { + "chainId": 1, + "address": "0xae1107fc7cef1294f09185ac475c9886527dcd8a", + "name": "Adalend", + "symbol": "ADAL", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24554/thumb/19012.png?1648134755" + }, + { + "chainId": 1, + "address": "0x1ab43204a195a0fd37edec621482afd3792ef90b", + "name": "Aurigami", + "symbol": "PLY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24074/thumb/EbB5N8IN_400x400.jpg?1646230298" + }, + { + "chainId": 1, + "address": "0x525ef76138bf76118d786dbedeae5f87aabf4a81", + "name": "Scalara NFT Index", + "symbol": "NFTI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23647/thumb/NFTI-logo-white-bg.png?1644910969" + }, + { + "chainId": 1, + "address": "0xf655c8567e0f213e6c634cd2a68d992152161dc6", + "name": "Impermax", + "symbol": "IBEX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27606/thumb/IqwOmX-c_400x400.jpeg?1664846656" + }, + { + "chainId": 1, + "address": "0x19193f450086d0442157b852081976d41657ad56", + "name": "Nunu Spirits", + "symbol": "NNT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24378/thumb/NNT_99cc33.png?1649120059" + }, + { + "chainId": 1, + "address": "0xc17c30e98541188614df99239cabd40280810ca3", + "name": "EverRise", + "symbol": "RISE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/16367/thumb/Logo_EverRise_Icon_logo.png?1642576670" + }, + { + "chainId": 1, + "address": "0x32462ba310e447ef34ff0d15bce8613aa8c4a244", + "name": "Dohrnii", + "symbol": "DHN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24966/thumb/dhn.png?1649586405" + }, + { + "chainId": 1, + "address": "0x198d14f2ad9ce69e76ea330b374de4957c3f850a", + "name": "APENFT", + "symbol": "NFT", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/15687/thumb/apenft.jpg?1621562368" + }, + { + "chainId": 1, + "address": "0x16b3e050e9e2f0ac4f1bea1b3e4fdc43d7f062dd", + "name": "Sombra", + "symbol": "SMBR", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/17884/thumb/sombra-200.png?1629710204" + }, + { + "chainId": 1, + "address": "0xb14784b2a56945aed7b8cd41661d68f8b6ccec8b", + "name": "Musk Melon", + "symbol": "MELON", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25089/thumb/MepNVeU.png?1650269351" + }, + { + "chainId": 1, + "address": "0x446f2a8a39cc730ef378be759a3c57f1a3fe824c", + "name": "NanoByte", + "symbol": "NBT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23698/thumb/WpcmdLW.png?1645080885" + }, + { + "chainId": 1, + "address": "0xc84d8d03aa41ef941721a4d77b24bb44d7c7ac55", + "name": "Empire Capital", + "symbol": "ECC", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/21221/thumb/2022-07-13_18.49.44.jpg?1657709418" + }, + { + "chainId": 1, + "address": "0x420a24c9c65bd44c48bfb1cc8d6cd1ea8b1ac840", + "name": "JumpToken", + "symbol": "JMPT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22603/thumb/200x200.png?1642162597" + }, + { + "chainId": 1, + "address": "0x4550003152f12014558e5ce025707e4dd841100f", + "name": "Kaizen", + "symbol": "KZEN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24396/thumb/PKl5OVRv_400x400.png?1647522756" + }, + { + "chainId": 1, + "address": "0x0c10bf8fcb7bf5412187a595ab97a3609160b5c6", + "name": "USDD", + "symbol": "USDD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25380/thumb/UUSD.jpg?1651823371" + }, + { + "chainId": 1, + "address": "0xfceb206e1a80527908521121358b5e26caabaa75", + "name": "Main", + "symbol": "MAIN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25258/thumb/logo_circle.png?1651042603" + }, + { + "chainId": 1, + "address": "0x614d7f40701132e25fe6fc17801fbd34212d2eda", + "name": "SafeBlast", + "symbol": "BLAST", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/15686/thumb/safeblast.png?1621561206" + }, + { + "chainId": 1, + "address": "0x8fc8f8269ebca376d046ce292dc7eac40c8d358a", + "name": "DeFiChain", + "symbol": "DFI", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/11757/thumb/symbol-defi-blockchain_200.png?1597306538" + }, + { + "chainId": 1, + "address": "0xf6e06b54855eff198a2d9a8686113665499a6134", + "name": "Celestial", + "symbol": "CELT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18683/thumb/celt.png?1632966755" + }, + { + "chainId": 1, + "address": "0x9767203e89dcd34851240b3919d4900d3e5069f1", + "name": "A4 Finance", + "symbol": "A4", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/21992/thumb/ba384ad07217a4be75cb85314f5760f7.jpg?1640582786" + }, + { + "chainId": 1, + "address": "0xd35c06a2781f648c75290976ecf71e71582188b7", + "name": "Quarashi", + "symbol": "QUA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25589/thumb/Lk2A7ta.png?1652769197" + }, + { + "chainId": 1, + "address": "0x7a5d3a9dcd33cb8d527f7b5f96eb4fef43d55636", + "name": "RadioShack", + "symbol": "RADIO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25307/thumb/ZVoPiysPJq6dPIZm_Se-6vjmsBepwhHlTQfdYZRILbHyVVTRUYCO-wmJJ4zT10HXCGv1j-ZyWr2u2sBaVlap5Y-ILqeXZuIquWdBDxxG0E0qDpgH7omLqYdgWWLSM_TUK9d1PiiYdu6bERdCDaucgFjlqwmhVQK4uV4jyUiXzchVUnu8Qt6SnxlNxz88G0mQ_tfiwkFv_vKqtgb1CcPycVZVz9.jpg?1651211260" + }, + { + "chainId": 1, + "address": "0x26dcfbfa8bc267b250432c01c982eaf81cc5480c", + "name": "Ankr Reward Earning MATIC", + "symbol": "AMATICC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25742/thumb/a-matic-c-da4ec10dc9723e695700e25dbf8c8edf.png?1653462321" + }, + { + "chainId": 1, + "address": "0x9631be8566fc71d91970b10acfdee29f21da6c27", + "name": "Intelligent Monsters", + "symbol": "IMON", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26077/thumb/imonToken.png?1655690407" + }, + { + "chainId": 1, + "address": "0xafcdd4f666c84fed1d8bd825aa762e3714f652c9", + "name": "Vita Inu", + "symbol": "VINU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20594/thumb/vita-inu-head-wallet-icon-transparent.png?1637286122" + }, + { + "chainId": 1, + "address": "0x9e6b19874e97fe8e8cad77f2c0ab5e7a693e5dbf", + "name": "StrongHands Finance", + "symbol": "ISHND", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20158/thumb/ISHND_512x512px.png?1647512898" + }, + { + "chainId": 1, + "address": "0x2b95a1dcc3d405535f9ed33c219ab38e8d7e0884", + "name": "Aladdin cvxCRV", + "symbol": "ACRV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25395/thumb/Sv06cFHS_400x400.jpg?1651707422" + }, + { + "chainId": 1, + "address": "0x5f018e73c185ab23647c82bd039e762813877f0e", + "name": "Shack", + "symbol": "SHACK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25699/thumb/shack_no_bg_no_pad3.png?1653441433" + }, + { + "chainId": 1, + "address": "0x40fed5691e547885cabd7a2990de719dcc8497fc", + "name": "Safe Haven", + "symbol": "SHA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2584/thumb/safehaven.png?1620037471" + }, + { + "chainId": 1, + "address": "0x18a1ea69a50a85752b7bc204a2c45a95ce6e429d", + "name": "Spice Trade", + "symbol": "SPICE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25770/thumb/SPICE.png?1653607602" + }, + { + "chainId": 1, + "address": "0xcafe34bae6f1b23a6b575303edcc0578d2188131", + "name": "Minter Network", + "symbol": "BIP", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9982/thumb/Nvoj_6Mu_400x400.jpg?1587968303" + }, + { + "chainId": 1, + "address": "0x57d579f483854c62fef850b8a5332b0d8424b7e2", + "name": "OpenSwap One", + "symbol": "OPENX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/19274/thumb/X_color.png?1654833718" + }, + { + "chainId": 1, + "address": "0x80cd73badb406ea36b9a7cdeb8df06aefa7e12d9", + "name": "SleepFuture", + "symbol": "SLEEPEE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25469/thumb/sleepee.png?1651916574" + }, + { + "chainId": 1, + "address": "0x64875aaa68d1d5521666c67d692ee0b926b08b2f", + "name": "CelsiusX Wrapped ADA", + "symbol": "CXADA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23536/thumb/cxADA_128x128.png?1644388456" + }, + { + "chainId": 1, + "address": "0xf9e293d5d793ddc1ae4f778761e0b3e4aa7cf2dd", + "name": "CelsiusX Wrapped DOGE", + "symbol": "CXDOGE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/23683/thumb/R2747rb.png?1644997607" + }, + { + "chainId": 1, + "address": "0x84fa8f52e437ac04107ec1768764b2b39287cb3e", + "name": "Grove", + "symbol": "GVR", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/25549/thumb/200x200.png?1652335189" + }, + { + "chainId": 1, + "address": "0x471ea49dd8e60e697f4cac262b5fafcc307506e4", + "name": "RMRK", + "symbol": "RMRK", + "decimals": 10, + "logoURI": "https://assets.coingecko.com/coins/images/18656/thumb/download_%281%29_%281%29.png?1632865271" + }, + { + "chainId": 1, + "address": "0x93581991f68dbae1ea105233b67f7fa0d6bdee7b", + "name": "Evmos", + "symbol": "EVMOS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24023/thumb/evmos.png?1653958927" + }, + { + "chainId": 1, + "address": "0x4c3a8eceb656ec63eae80a4ebd565e4887db6160", + "name": "SokuSwap", + "symbol": "SOKU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/18378/thumb/VCIEHaG.png?1653547690" + }, + { + "chainId": 1, + "address": "0x88536c9b2c4701b8db824e6a16829d5b5eb84440", + "name": "Atlas USV", + "symbol": "USV", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/22066/thumb/7iUyjg5t.png?1640744823" + }, + { + "chainId": 1, + "address": "0xeeeeeb57642040be42185f49c52f7e9b38f8eeee", + "name": "Elk Finance", + "symbol": "ELK", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17813/thumb/elk.png?1629336971" + }, + { + "chainId": 1, + "address": "0x2e7b0d4f9b2eaf782ed3d160e3a0a4b1a7930ada", + "name": "Ceres", + "symbol": "CERES", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/17959/thumb/sQLDgqx.png?1648442923" + }, + { + "chainId": 1, + "address": "0x06ebc9c542357e2129d16717cd02c02fbc835d33", + "name": "Coinage Finance", + "symbol": "CAGE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22300/thumb/Coinage_v2_200x200_white.png?1653464214" + }, + { + "chainId": 1, + "address": "0x7162469321ae5880f077d250b626f3271b21b903", + "name": "KillSwitch", + "symbol": "KSW", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20215/thumb/logo_%2824%29.png?1636670633" + }, + { + "chainId": 1, + "address": "0x3e362283b86c1b45097cc3fb02213b79cf6211df", + "name": "CatCoin com", + "symbol": "CATCOIN", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/25279/thumb/logo_%281%29.png?1651126078" + }, + { + "chainId": 1, + "address": "0x22ad96acf613539d7900b5ec6e0e65dbcc668d2a", + "name": "Xerium", + "symbol": "XERM", + "decimals": 7, + "logoURI": "https://assets.coingecko.com/coins/images/26284/thumb/Xerium_Logo_200x200_PNG.png?1657077128" + }, + { + "chainId": 1, + "address": "0x92df60c51c710a1b1c20e42d85e221f3a1bfc7f2", + "name": "ApeSwap", + "symbol": "BANANA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/14870/thumb/banana.png?1648887183" + }, + { + "chainId": 1, + "address": "0x1cd2528522a17b6be63012fb63ae81f3e3e29d97", + "name": "Mind Music", + "symbol": "MND", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/19104/thumb/logo-main_%282%29.png?1634506312" + }, + { + "chainId": 1, + "address": "0x6cdda72fc9d1a8aa0750ac640c5d6a8922de3b72", + "name": "Good Doge", + "symbol": "TREAT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27349/thumb/88.png?1663655057" + }, + { + "chainId": 1, + "address": "0xc72633f995e98ac3bb8a89e6a9c4af335c3d6e44", + "name": "Omnisea", + "symbol": "OSEA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26475/thumb/293837892_407994084681555_3167689470652146992_n.png?1658195766" + }, + { + "chainId": 1, + "address": "0xeea509c221c5c6979e974f4501b4829be0ab2f8c", + "name": "ENO", + "symbol": "ENO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26501/thumb/Eno_logo.png?1658364451" + }, + { + "chainId": 1, + "address": "0x2b867efd2de4ad2b583ca0cb3df9c4040ef4d329", + "name": "Lucky Block", + "symbol": "LBLOCK", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/23126/thumb/logo-200x200-LB-09.png?1643268144" + }, + { + "chainId": 1, + "address": "0xe3c408bd53c31c085a1746af401a4042954ff740", + "name": "STEPN", + "symbol": "GMT", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/23597/thumb/gmt.png?1644658792" + }, + { + "chainId": 1, + "address": "0x35609dc59e15d03c5c865507e1348fa5abb319a8", + "name": "GhostMarket", + "symbol": "GM", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/22765/thumb/gm.png?1642574907" + }, + { + "chainId": 1, + "address": "0x34d31446a522252270b89b09016296ec4c98e23d", + "name": "SAUDI SHIBA INU", + "symbol": "SAUDISHIB", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/26708/thumb/FvmN7Wa.png?1659666550" + }, + { + "chainId": 1, + "address": "0x4e568ab95f029e8df1e39b30c9d6d076eaa15945", + "name": "Flycoin FLY", + "symbol": "FLY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26596/thumb/flatArtboard_20tfr.png?1658974032" + }, + { + "chainId": 1, + "address": "0x2c4f1df9c7de0c59778936c9b145ff56813f3295", + "name": "AssetMantle", + "symbol": "MNTL", + "decimals": 6, + "logoURI": "https://assets.coingecko.com/coins/images/25181/thumb/thumbnail.png?1658821784" + }, + { + "chainId": 1, + "address": "0x37129b96896891e56bc099540fe7d1841005a367", + "name": "SpiceEURO", + "symbol": "EUROS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26443/thumb/E4B6C93A-E2A1-4F53-BB26-15D0FE802812.png?1658110215" + }, + { + "chainId": 1, + "address": "0xc87f0a3f3671f7d01278625561dc6e284b62dae9", + "name": "Inflation Adjusted EURO", + "symbol": "IEUROS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26442/thumb/894CE468-A364-42BA-83B0-60A7CA859614.png?1658110157" + }, + { + "chainId": 1, + "address": "0x57b59f981730c6257df57cf6f0d98283749a9eeb", + "name": "BUILD", + "symbol": "BUILD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26533/thumb/BUILD.png?1658714842" + }, + { + "chainId": 1, + "address": "0xde16ce60804a881e9f8c4ebb3824646edecd478d", + "name": "MagicCraft", + "symbol": "MCRT", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/21318/thumb/mcrt.png?1638932009" + }, + { + "chainId": 1, + "address": "0x839e71613f9aa06e5701cf6de63e303616b0dde3", + "name": "VVS Finance", + "symbol": "VVS", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/20210/thumb/8glAYOTM_400x400.jpg?1636667919" + }, + { + "chainId": 1, + "address": "0xe25bcec5d3801ce3a794079bf94adf1b8ccd802d", + "name": "Matrix AI Network", + "symbol": "MAN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/2698/thumb/matrix-ai-network.png?1547978533" + }, + { + "chainId": 1, + "address": "0x8616e8ea83f048ab9a5ec513c9412dd2993bce3f", + "name": "handleUSD", + "symbol": "FXUSD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26954/thumb/fxUSDLogo_200px-200px.png?1660988882" + }, + { + "chainId": 1, + "address": "0xbfc43a35b3ae8f7463c5ac88a0c46107cfce6f67", + "name": "Octus Social Media Market", + "symbol": "OCTSMM", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27095/thumb/photo_2022-08-21_06.15.02.jpeg?1661998030" + }, + { + "chainId": 1, + "address": "0xb08ba4ad6bc291f4f1e79c4c7f9395141b8d5797", + "name": "INTDESTCOIN OLD ", + "symbol": "INTD", + "decimals": 17, + "logoURI": "https://assets.coingecko.com/coins/images/27134/thumb/INTD.png?1662025876" + }, + { + "chainId": 1, + "address": "0x256d1fce1b1221e8398f65f9b36033ce50b2d497", + "name": "Alvey Chain", + "symbol": "WALV", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26964/thumb/logo200x200.png?1661079637" + }, + { + "chainId": 1, + "address": "0xb28f803a8772e6584a65ab6dfc535ae6fef8a0b2", + "name": "Lunafi", + "symbol": "LFI", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24594/thumb/lfi.png?1648310927" + }, + { + "chainId": 1, + "address": "0x6cd13e1856286de773a435c8ba93a7c73a04f82d", + "name": "MIDA", + "symbol": "MIDA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27337/thumb/_MIDA_dark.png?1663499691" + }, + { + "chainId": 1, + "address": "0xc285b7e09a4584d027e5bc36571785b515898246", + "name": "Coin98 Dollar", + "symbol": "CUSD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26588/thumb/CUSD-01.png?1658909049" + }, + { + "chainId": 1, + "address": "0x2f32b39023da7d6a6486a85d12b346eb9c2a0d19", + "name": "Ferro", + "symbol": "FER", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26111/thumb/FER_Token.png?1655887206" + }, + { + "chainId": 1, + "address": "0xaeeb517e65501bcd72399d639a5d993661efeb68", + "name": "INDESTCOIN", + "symbol": "INTD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27543/thumb/logoend.png?1668586274" + }, + { + "chainId": 1, + "address": "0xd6e460f70e1cf60e55b770f66e568b44bf3657d0", + "name": "Funex", + "symbol": "FUNEX", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26814/thumb/20220809_135138.png?1660276769" + }, + { + "chainId": 1, + "address": "0x8d6cebd76f18e1558d4db88138e2defb3909fad6", + "name": "MAI", + "symbol": "MIMATIC", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/15264/thumb/mimatic-red.png?1620281018" + }, + { + "chainId": 1, + "address": "0x7252d57ae4ec9af61db3b82a6eedab74eec5d1dc", + "name": "MondayClub", + "symbol": "MONDAY", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24767/thumb/token.png?1648817450" + }, + { + "chainId": 1, + "address": "0x97bbbc5d96875fb78d2f14b7ff8d7a3a74106f17", + "name": "Astrafer", + "symbol": "ASTRAFER", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/26246/thumb/ATSRA_Token.png?1657276411" + }, + { + "chainId": 1, + "address": "0xb0b195aefa3650a6908f15cdac7d92f8a5791b0b", + "name": "BOB", + "symbol": "BOB", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27266/thumb/Bob-logo.png?1663073030" + }, + { + "chainId": 1, + "address": "0x9a6469aac7cd70385bdca6fa9e9356acec9c5b16", + "name": "SNKRZ", + "symbol": "SKZ", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27657/thumb/skz_200_200.png?1665099924" + }, + { + "chainId": 1, + "address": "0xa719cb79af39a9c10eda2755e0938bce35e9de24", + "name": "Starfish Finance", + "symbol": "SEAN", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27533/thumb/SEAN_Token_icon.png?1664411041" + }, + { + "chainId": 1, + "address": "0x3b79a28264fc52c7b4cea90558aa0b162f7faf57", + "name": "Wonderful Memories", + "symbol": "WMEMO", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/22392/thumb/wMEMO.png?1665832927" + }, + { + "chainId": 1, + "address": "0x19b22dbadc298c359a1d1b59e35f352a2b40e33c", + "name": "tPLATINUM", + "symbol": "TXPT", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27830/thumb/tPLATINUM_token_2D.jpg?1666165908" + }, + { + "chainId": 1, + "address": "0xe4a6f23fb9e00fca037aa0ea0a6954de0a6c53bf", + "name": "tGOLD", + "symbol": "TXAU", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27828/thumb/tGOLD_token_2D.jpg?1666165789" + }, + { + "chainId": 1, + "address": "0x34abce75d2f8f33940c721dca0f562617787bff3", + "name": "tSILVER", + "symbol": "TXAG", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/27829/thumb/tSILVER_token_2D.jpg?1666165851" + }, + { + "chainId": 1, + "address": "0x967fb0d760ed3ce53afe2f0a071674cccae73550", + "name": "XANA", + "symbol": "XETA", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/24379/thumb/XANA_Logo_neon_pink.png?1658197388" + }, + { + "chainId": 1, + "address": "0x59a63e3bc9bc1ce9abfd7b928d13d02d98b818d6", + "name": "Golddoge Sachs", + "symbol": "GDS", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/27022/thumb/IMG_20220824_194242_889.jpg?1661484378" + }, + { + "chainId": 1, + "address": "0xcb3c5438dae9fe30b18ea53da3dab0e7dcaa0e4b", + "name": "Risu", + "symbol": "RISU", + "decimals": 9, + "logoURI": "https://assets.coingecko.com/coins/images/27229/thumb/logo_%288%29.png?1667725134" + } + ], + "version": { + "major": 1143, + "minor": 1, + "patch": 0 + } + } \ No newline at end of file diff --git a/src/chains/ethereum/erc20_tokens_ropsten.json b/src/chains/ethereum/erc20_tokens_ropsten.json new file mode 100644 index 0000000000..af0126645c --- /dev/null +++ b/src/chains/ethereum/erc20_tokens_ropsten.json @@ -0,0 +1,17 @@ +{ + "name": "ropsten", + "tokens": [ + { + "symbol": "WETH", + "chainId": 3, + "address": "0xc778417e063141139fce010982780140aa0cd5ab", + "decimals": 18 + }, + { + "symbol": "DAI", + "chainId": 3, + "address": "0xad6d458402f60fd3bd25163575031acdce07538d", + "decimals": 18 + } + ] +} diff --git a/src/chains/ethereum/ethereum.config.ts b/src/chains/ethereum/ethereum.config.ts new file mode 100644 index 0000000000..af7294f28f --- /dev/null +++ b/src/chains/ethereum/ethereum.config.ts @@ -0,0 +1,60 @@ +import { TokenListType } from '../../services/base'; +import { ConfigManagerV2 } from '../../services/config-manager-v2'; +export interface NetworkConfig { + name: string; + chainID: number; + nodeURL: string; + tokenListType: TokenListType; + tokenListSource: string; + gasPriceRefreshInterval: number | undefined; +} + +export interface EthereumGasStationConfig { + enabled: boolean; + gasStationURL: string; + APIKey: string; + gasLevel: string; +} + +export interface Config { + network: NetworkConfig; + nativeCurrencySymbol: string; + manualGasPrice: number; + gasLimitTransaction: number; +} + +export function getEthereumConfig( + chainName: string, + networkName: string +): Config { + const network = networkName; + return { + network: { + name: network, + chainID: ConfigManagerV2.getInstance().get( + chainName + '.networks.' + network + '.chainID' + ), + nodeURL: ConfigManagerV2.getInstance().get( + chainName + '.networks.' + network + '.nodeURL' + ), + tokenListType: ConfigManagerV2.getInstance().get( + chainName + '.networks.' + network + '.tokenListType' + ), + tokenListSource: ConfigManagerV2.getInstance().get( + chainName + '.networks.' + network + '.tokenListSource' + ), + gasPriceRefreshInterval: ConfigManagerV2.getInstance().get( + chainName + '.networks.' + network + '.gasPriceRefreshInterval' + ), + }, + nativeCurrencySymbol: ConfigManagerV2.getInstance().get( + chainName + '.networks.' + network + '.nativeCurrencySymbol' + ), + manualGasPrice: ConfigManagerV2.getInstance().get( + chainName + '.manualGasPrice' + ), + gasLimitTransaction: ConfigManagerV2.getInstance().get( + chainName + '.gasLimitTransaction' + ), + }; +} diff --git a/src/chains/ethereum/ethereum.controllers.ts b/src/chains/ethereum/ethereum.controllers.ts new file mode 100644 index 0000000000..5fb5767aff --- /dev/null +++ b/src/chains/ethereum/ethereum.controllers.ts @@ -0,0 +1,449 @@ +import ethers, { + constants, + Wallet, + utils, + BigNumber, + Transaction, +} from 'ethers'; +import { latency, bigNumberWithDecimalToStr } from '../../services/base'; +import { + HttpException, + OUT_OF_GAS_ERROR_CODE, + OUT_OF_GAS_ERROR_MESSAGE, + LOAD_WALLET_ERROR_CODE, + LOAD_WALLET_ERROR_MESSAGE, + TOKEN_NOT_SUPPORTED_ERROR_CODE, + TOKEN_NOT_SUPPORTED_ERROR_MESSAGE, +} from '../../services/error-handler'; +import { tokenValueToString } from '../../services/base'; +import { TokenInfo } from '../../services/ethereum-base'; +import { getConnector } from '../../services/connection-manager'; + +import { + CustomTransactionReceipt, + CustomTransaction, + CustomTransactionResponse, +} from './ethereum.requests'; +import { + Ethereumish, + UniswapLPish, + Uniswapish, +} from '../../services/common-interfaces'; +import { + NonceRequest, + NonceResponse, + AllowancesRequest, + AllowancesResponse, + ApproveRequest, + ApproveResponse, + CancelRequest, + CancelResponse, +} from '../../evm/evm.requests'; +import { + PollRequest, + PollResponse, + BalanceRequest, + BalanceResponse, +} from '../../network/network.requests'; +import { logger } from '../../services/logger'; + +export async function nonce( + ethereum: Ethereumish, + req: NonceRequest +): Promise { + // get the address via the public key since we generally use the public + // key to interact with gateway and the address is not part of the user config + const wallet = await ethereum.getWallet(req.address); + const nonce = await ethereum.nonceManager.getNonce(wallet.address); + return { nonce }; +} + +export async function nextNonce( + ethereum: Ethereumish, + req: NonceRequest +): Promise { + // get the address via the public key since we generally use the public + // key to interact with gateway and the address is not part of the user config + const wallet = await ethereum.getWallet(req.address); + const nonce = await ethereum.nonceManager.getNextNonce(wallet.address); + return { nonce }; +} + +export const getTokenSymbolsToTokens = ( + ethereum: Ethereumish, + tokenSymbols: Array +): Record => { + const tokens: Record = {}; + + for (let i = 0; i < tokenSymbols.length; i++) { + const symbol = tokenSymbols[i]; + const token = ethereum.getTokenBySymbol(symbol); + if (token) tokens[symbol] = token; + } + + return tokens; +}; + +export async function allowances( + ethereumish: Ethereumish, + req: AllowancesRequest +): Promise { + const initTime = Date.now(); + const wallet = await ethereumish.getWallet(req.address); + const tokens = getTokenSymbolsToTokens(ethereumish, req.tokenSymbols); + const spender = ethereumish.getSpender(req.spender); + + const approvals: Record = {}; + await Promise.all( + Object.keys(tokens).map(async (symbol) => { + // instantiate a contract and pass in provider for read-only access + const contract = ethereumish.getContract( + tokens[symbol].address, + ethereumish.provider + ); + approvals[symbol] = tokenValueToString( + await ethereumish.getERC20Allowance( + contract, + wallet, + spender, + tokens[symbol].decimals + ) + ); + }) + ); + + return { + network: ethereumish.chain, + timestamp: initTime, + latency: latency(initTime, Date.now()), + spender: spender, + approvals: approvals, + }; +} + +export async function balances( + ethereumish: Ethereumish, + req: BalanceRequest +): Promise { + const initTime = Date.now(); + + let wallet: Wallet; + try { + wallet = await ethereumish.getWallet(req.address); + } catch (err) { + throw new HttpException( + 500, + LOAD_WALLET_ERROR_MESSAGE + err, + LOAD_WALLET_ERROR_CODE + ); + } + const tokens = getTokenSymbolsToTokens(ethereumish, req.tokenSymbols); + const balances: Record = {}; + if (req.tokenSymbols.includes(ethereumish.nativeTokenSymbol)) { + balances[ethereumish.nativeTokenSymbol] = tokenValueToString( + await ethereumish.getNativeBalance(wallet) + ); + } + await Promise.all( + Object.keys(tokens).map(async (symbol) => { + if (tokens[symbol] !== undefined) { + const address = tokens[symbol].address; + const decimals = tokens[symbol].decimals; + // instantiate a contract and pass in provider for read-only access + const contract = ethereumish.getContract(address, ethereumish.provider); + const balance = await ethereumish.getERC20Balance( + contract, + wallet, + decimals + ); + balances[symbol] = tokenValueToString(balance); + } + }) + ); + + if (!Object.keys(balances).length) { + throw new HttpException( + 500, + TOKEN_NOT_SUPPORTED_ERROR_MESSAGE, + TOKEN_NOT_SUPPORTED_ERROR_CODE + ); + } + + return { + network: ethereumish.chain, + timestamp: initTime, + latency: latency(initTime, Date.now()), + balances: balances, + }; +} + +const toEthereumTransaction = (transaction: Transaction): CustomTransaction => { + let maxFeePerGas = null; + if (transaction.maxFeePerGas) { + maxFeePerGas = transaction.maxFeePerGas.toString(); + } + let maxPriorityFeePerGas = null; + if (transaction.maxPriorityFeePerGas) { + maxPriorityFeePerGas = transaction.maxPriorityFeePerGas.toString(); + } + let gasLimit = null; + if (transaction.gasLimit) { + gasLimit = transaction.gasLimit.toString(); + } + return { + ...transaction, + maxPriorityFeePerGas, + maxFeePerGas, + gasLimit, + value: transaction.value.toString(), + }; +}; + +export async function approve( + ethereumish: Ethereumish, + req: ApproveRequest +): Promise { + const { amount, nonce, address, token, maxFeePerGas, maxPriorityFeePerGas } = + req; + + const spender = ethereumish.getSpender(req.spender); + const initTime = Date.now(); + let wallet: Wallet; + try { + wallet = await ethereumish.getWallet(address); + } catch (err) { + throw new HttpException( + 500, + LOAD_WALLET_ERROR_MESSAGE + err, + LOAD_WALLET_ERROR_CODE + ); + } + const fullToken = ethereumish.getTokenBySymbol(token); + if (!fullToken) { + throw new HttpException( + 500, + TOKEN_NOT_SUPPORTED_ERROR_MESSAGE + token, + TOKEN_NOT_SUPPORTED_ERROR_CODE + ); + } + const amountBigNumber = amount + ? utils.parseUnits(amount, fullToken.decimals) + : constants.MaxUint256; + + let maxFeePerGasBigNumber; + if (maxFeePerGas) { + maxFeePerGasBigNumber = BigNumber.from(maxFeePerGas); + } + let maxPriorityFeePerGasBigNumber; + if (maxPriorityFeePerGas) { + maxPriorityFeePerGasBigNumber = BigNumber.from(maxPriorityFeePerGas); + } + // instantiate a contract and pass in wallet, which act on behalf of that signer + const contract = ethereumish.getContract(fullToken.address, wallet); + + // convert strings to BigNumber + // call approve function + const approval = await ethereumish.approveERC20( + contract, + wallet, + spender, + amountBigNumber, + nonce, + maxFeePerGasBigNumber, + maxPriorityFeePerGasBigNumber, + ethereumish.gasPrice + ); + + if (approval.hash) { + await ethereumish.txStorage.saveTx( + ethereumish.chain, + ethereumish.chainId, + approval.hash, + new Date(), + ethereumish.gasPrice + ); + } + + return { + network: ethereumish.chain, + timestamp: initTime, + latency: latency(initTime, Date.now()), + tokenAddress: fullToken.address, + spender: spender, + amount: bigNumberWithDecimalToStr(amountBigNumber, fullToken.decimals), + nonce: approval.nonce, + approval: toEthereumTransaction(approval), + }; +} + +// TransactionReceipt from ethers uses BigNumber which is not easy to interpret directly from JSON. +// Transform those BigNumbers to string and pass the rest of the data without changes. + +const toEthereumTransactionReceipt = ( + receipt: ethers.providers.TransactionReceipt | null +): CustomTransactionReceipt | null => { + if (receipt) { + let effectiveGasPrice = null; + if (receipt.effectiveGasPrice) { + effectiveGasPrice = receipt.effectiveGasPrice.toString(); + } + return { + ...receipt, + gasUsed: receipt.gasUsed.toString(), + cumulativeGasUsed: receipt.cumulativeGasUsed.toString(), + effectiveGasPrice, + }; + } + + return null; +}; + +const toEthereumTransactionResponse = ( + response: ethers.providers.TransactionResponse | null +): CustomTransactionResponse | null => { + if (response) { + let gasPrice = null; + if (response.gasPrice) { + gasPrice = response.gasPrice.toString(); + } + return { + ...response, + gasPrice, + gasLimit: response.gasLimit.toString(), + value: response.value.toString(), + }; + } + + return null; +}; + +export function willTxSucceed( + txDuration: number, + txDurationLimit: number, + txGasPrice: number, + currentGasPrice: number +): boolean { + if (txDuration > txDurationLimit && currentGasPrice > txGasPrice) { + return false; + } + return true; +} + +// txStatus +// -1: not in the mempool or failed +// 1: succeeded +// 2: in the mempool and likely to succeed +// 3: in the mempool and likely to fail +// 0: in the mempool but we dont have data to guess its status +export async function poll( + ethereumish: Ethereumish, + req: PollRequest +): Promise { + const initTime = Date.now(); + const currentBlock = await ethereumish.getCurrentBlockNumber(); + const txData = await ethereumish.getTransaction(req.txHash); + let txBlock, txReceipt, txStatus; + if (!txData) { + // tx not found, didn't reach the mempool or it never existed + txBlock = -1; + txReceipt = null; + txStatus = -1; + } else { + txReceipt = await ethereumish.getTransactionReceipt(req.txHash); + if (txReceipt === null) { + // tx is in the mempool + txBlock = -1; + txReceipt = null; + txStatus = 0; + + const transactions = await ethereumish.txStorage.getTxs( + ethereumish.chain, + ethereumish.chainId + ); + + if (transactions[txData.hash]) { + const data: [Date, number] = transactions[txData.hash]; + const now = new Date(); + const txDuration = Math.abs(now.getTime() - data[0].getTime()); + if ( + willTxSucceed(txDuration, 60000 * 3, data[1], ethereumish.gasPrice) + ) { + txStatus = 2; + } else { + txStatus = 3; + } + } + } else { + // tx has been processed + txBlock = txReceipt.blockNumber; + txStatus = typeof txReceipt.status === 'number' ? 1 : -1; + if (txReceipt.status === 0) { + const gasUsed = BigNumber.from(txReceipt.gasUsed).toNumber(); + const gasLimit = BigNumber.from(txData.gasLimit).toNumber(); + if (gasUsed / gasLimit > 0.9) { + throw new HttpException( + 503, + OUT_OF_GAS_ERROR_MESSAGE, + OUT_OF_GAS_ERROR_CODE + ); + } + } + // decode logs + if (req.connector) { + try { + const connector: Uniswapish | UniswapLPish = await getConnector< + Uniswapish | UniswapLPish + >(req.chain, req.network, req.connector); + txReceipt.logs = connector.abiDecoder?.decodeLogs(txReceipt.logs); + } catch (e) { + logger.error(e); + } + } + } + } + + logger.info( + `Poll ${ethereumish.chain}, txHash ${req.txHash}, status ${txStatus}.` + ); + return { + network: ethereumish.chain, + currentBlock, + timestamp: initTime, + txHash: req.txHash, + txBlock, + txStatus, + txData: toEthereumTransactionResponse(txData), + txReceipt: toEthereumTransactionReceipt(txReceipt), + }; +} + +export async function cancel( + ethereumish: Ethereumish, + req: CancelRequest +): Promise { + const initTime = Date.now(); + let wallet: Wallet; + try { + wallet = await ethereumish.getWallet(req.address); + } catch (err) { + throw new HttpException( + 500, + LOAD_WALLET_ERROR_MESSAGE + err, + LOAD_WALLET_ERROR_CODE + ); + } + + // call cancelTx function + const cancelTx = await ethereumish.cancelTx(wallet, req.nonce); + + logger.info( + `Cancelled transaction at nonce ${req.nonce}, cancel txHash ${cancelTx.hash}.` + ); + + return { + network: ethereumish.chain, + timestamp: initTime, + latency: latency(initTime, Date.now()), + txHash: cancelTx.hash, + }; +} diff --git a/src/chains/ethereum/ethereum.requests.ts b/src/chains/ethereum/ethereum.requests.ts new file mode 100644 index 0000000000..dbfa95a58f --- /dev/null +++ b/src/chains/ethereum/ethereum.requests.ts @@ -0,0 +1,117 @@ +import ethers, { Transaction } from 'ethers'; + +// gasUsed and cumulativeGasUsed are BigNumbers +// then need to be converted to strings before being +// passed to the client +export interface CustomTransactionReceipt + extends Omit< + ethers.providers.TransactionReceipt, + 'gasUsed' | 'cumulativeGasUsed' | 'effectiveGasPrice' + > { + gasUsed: string; + cumulativeGasUsed: string; + effectiveGasPrice: string | null; +} + +export interface CustomTransaction + extends Omit< + Transaction, + 'maxPriorityFeePerGas' | 'maxFeePerGas' | 'gasLimit' | 'value' + > { + maxPriorityFeePerGas: string | null; + maxFeePerGas: string | null; + gasLimit: string | null; + value: string; +} + +export interface CustomTransactionResponse + extends Omit< + ethers.providers.TransactionResponse, + 'gasPrice' | 'gasLimit' | 'value' + > { + gasPrice: string | null; + gasLimit: string; + value: string; +} + +export interface EthereumNonceRequest { + address: string; // the users public Ethereum key +} + +export interface EthereumNonceResponse { + nonce: number; // the user's nonce +} + +export interface EthereumAllowancesRequest { + address: string; // the users public Ethereum key + spender: string; // the spender address for whom approvals are checked + tokenSymbols: string[]; // a list of token symbol +} + +export interface EthereumAllowancesResponse { + network: string; + timestamp: number; + latency: number; + spender: string; + approvals: Record; +} + +export interface EthereumBalanceRequest { + address: string; // the users public Ethereum key + tokenSymbols: string[]; // a list of token symbol +} + +export interface EthereumBalanceResponse { + network: string; + timestamp: number; + latency: number; + balances: Record; // the balance should be a string encoded number +} + +export interface EthereumApproveRequest { + amount?: string; // the amount the spender will be approved to use + nonce?: number; // the address's next nonce + maxFeePerGas?: string; + maxPriorityFeePerGas?: string; + address: string; // the user's public Ethereum key + spender: string; // the address of the spend (or a pre-defined string like 'uniswap', 'balancer', etc.) + token: string; // the token symbol the spender will be approved for +} + +export interface EthereumApproveResponse { + network: string; + timestamp: number; + latency: number; + tokenAddress: string; + spender: string; + amount: string; + nonce: number; + approval: CustomTransaction; +} + +export interface PollRequest { + txHash: string; +} + +export interface PollResponse { + network: string; + timestamp: number; + currentBlock: number; + txHash: string; + txStatus: number; + txBlock: number; + txData: CustomTransactionResponse | null; + txReceipt: CustomTransactionReceipt | null; +} + +export interface EthereumCancelRequest { + nonce: number; // the nonce of the transaction to be canceled + address: string; // the user's public Ethereum key +} + +export interface EthereumCancelResponse { + network: string; + timestamp: number; + latency: number; + txHash: string | undefined; +} diff --git a/src/chains/ethereum/ethereum.ts b/src/chains/ethereum/ethereum.ts new file mode 100644 index 0000000000..a0e9903151 --- /dev/null +++ b/src/chains/ethereum/ethereum.ts @@ -0,0 +1,195 @@ +import abi from '../../services/ethereum.abi.json'; +import { logger } from '../../services/logger'; +import { BigNumber, Contract, Transaction, Wallet } from 'ethers'; +import { EthereumBase } from '../../services/ethereum-base'; +import { getEthereumConfig } from './ethereum.config'; +import { Provider } from '@ethersproject/abstract-provider'; +import { UniswapConfig } from '../../connectors/uniswap/uniswap.config'; +import { Perp } from '../../connectors/perp/perp'; +import { Ethereumish } from '../../services/common-interfaces'; +import { SushiswapConfig } from '../../connectors/sushiswap/sushiswap.config'; +import { ConfigManagerV2 } from '../../services/config-manager-v2'; + +// MKR does not match the ERC20 perfectly so we need to use a separate ABI. +const MKR_ADDRESS = '0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2'; + +export class Ethereum extends EthereumBase implements Ethereumish { + private static _instances: { [name: string]: Ethereum }; + private _gasPrice: number; + private _gasPriceRefreshInterval: number | null; + private _nativeTokenSymbol: string; + private _chain: string; + private _requestCount: number; + private _metricsLogInterval: number; + + private constructor(network: string) { + const config = getEthereumConfig('ethereum', network); + super( + 'ethereum', + config.network.chainID, + config.network.nodeURL, + config.network.tokenListSource, + config.network.tokenListType, + config.manualGasPrice, + config.gasLimitTransaction, + ConfigManagerV2.getInstance().get('database.nonceDbPath'), + ConfigManagerV2.getInstance().get('database.transactionDbPath') + ); + this._chain = network; + this._nativeTokenSymbol = config.nativeCurrencySymbol; + this._gasPrice = config.manualGasPrice; + this._gasPriceRefreshInterval = + config.network.gasPriceRefreshInterval !== undefined + ? config.network.gasPriceRefreshInterval + : null; + + this.updateGasPrice(); + + this._requestCount = 0; + this._metricsLogInterval = 300000; // 5 minutes + + this.onDebugMessage(this.requestCounter.bind(this)); + setInterval(this.metricLogger.bind(this), this.metricsLogInterval); + } + + public static getInstance(network: string): Ethereum { + if (Ethereum._instances === undefined) { + Ethereum._instances = {}; + } + if (!(network in Ethereum._instances)) { + Ethereum._instances[network] = new Ethereum(network); + } + + return Ethereum._instances[network]; + } + + public static getConnectedInstances(): { [name: string]: Ethereum } { + return Ethereum._instances; + } + + public requestCounter(msg: any): void { + if (msg.action === 'request') this._requestCount += 1; + } + + public metricLogger(): void { + logger.info( + this.requestCount + + ' request(s) sent in last ' + + this.metricsLogInterval / 1000 + + ' seconds.' + ); + this._requestCount = 0; // reset + } + + // getters + public get gasPrice(): number { + return this._gasPrice; + } + + public get chain(): string { + return this._chain; + } + + public get nativeTokenSymbol(): string { + return this._nativeTokenSymbol; + } + + public get requestCount(): number { + return this._requestCount; + } + + public get metricsLogInterval(): number { + return this._metricsLogInterval; + } + + /** + * Automatically update the prevailing gas price on the network. + * + * Otherwise, it'll obtain the prevailing gas price from the connected + * ETH node. + */ + async updateGasPrice(): Promise { + if (this._gasPriceRefreshInterval === null) { + return; + } + + const gasPrice = await this.getGasPriceFromEthereumNode(); + if (gasPrice !== null) { + this._gasPrice = gasPrice; + } else { + logger.info('gasPrice is unexpectedly null.'); + } + + setTimeout( + this.updateGasPrice.bind(this), + this._gasPriceRefreshInterval * 1000 + ); + } + + /** + * Get the base gas fee and the current max priority fee from the Ethereum + * node, and add them together. + */ + async getGasPriceFromEthereumNode(): Promise { + const baseFee: BigNumber = await this.provider.getGasPrice(); + let priorityFee: BigNumber = BigNumber.from('0'); + if (this._chain === 'mainnet') { + priorityFee = BigNumber.from( + await this.provider.send('eth_maxPriorityFeePerGas', []) + ); + } + return baseFee.add(priorityFee).toNumber() * 1e-9; + } + + getContract( + tokenAddress: string, + signerOrProvider?: Wallet | Provider + ): Contract { + return tokenAddress === MKR_ADDRESS + ? new Contract(tokenAddress, abi.MKRAbi, signerOrProvider) + : new Contract(tokenAddress, abi.ERC20Abi, signerOrProvider); + } + + // TODO Check the possibility to use something similar for CLOB/Solana/Serum + // Use the following link: https://hummingbot.org/developers/gateway/building-gateway-connectors/#6-add-connector-to-spender-list + getSpender(reqSpender: string): string { + let spender: string; + if (reqSpender === 'uniswap') { + spender = UniswapConfig.config.uniswapV3SmartOrderRouterAddress( + this._chain + ); + } else if (reqSpender === 'sushiswap') { + spender = SushiswapConfig.config.sushiswapRouterAddress( + this.chainName, + this._chain + ); + } else if (reqSpender === 'uniswapLP') { + spender = UniswapConfig.config.uniswapV3NftManagerAddress(this._chain); + } else if (reqSpender === 'perp') { + const perp = Perp.getInstance(this._chain, 'optimism'); + if (!perp.ready()) { + perp.init(); + throw Error('Perp curie not ready'); + } + spender = perp.perp.contracts.vault.address; + } else { + spender = reqSpender; + } + return spender; + } + + // cancel transaction + async cancelTx(wallet: Wallet, nonce: number): Promise { + logger.info( + 'Canceling any existing transaction(s) with nonce number ' + nonce + '.' + ); + return this.cancelTxWithGasPrice(wallet, nonce, this._gasPrice * 2); + } + + async close() { + await super.close(); + if (this._chain in Ethereum._instances) { + delete Ethereum._instances[this._chain]; + } + } +} diff --git a/src/chains/ethereum/ethereum.validators.ts b/src/chains/ethereum/ethereum.validators.ts new file mode 100644 index 0000000000..1f86c9a0f0 --- /dev/null +++ b/src/chains/ethereum/ethereum.validators.ts @@ -0,0 +1,133 @@ +import { + isNaturalNumberString, + validateTokenSymbols, + mkValidator, + mkRequestValidator, + RequestValidator, + Validator, + validateToken, + validateAmount, +} from '../../services/validators'; + +// invalid parameter errors + +export const invalidAddressError: string = + 'The address param is not a valid Ethereum private key (64 hexidecimal characters).'; + +export const invalidSpenderError: string = + 'The spender param is not a valid Ethereum address (0x followed by 40 hexidecimal characters).'; + +export const invalidNonceError: string = + 'If nonce is included it must be a non-negative integer.'; + +export const invalidMaxFeePerGasError: string = + 'If maxFeePerGas is included it must be a string of a non-negative integer.'; + +export const invalidMaxPriorityFeePerGasError: string = + 'If maxPriorityFeePerGas is included it must be a string of a non-negative integer.'; + +export const invalidChainError: string = 'The chain param is not a string.'; + +export const invalidNetworkError: string = 'The network param is not a string.'; + +// test if a string matches the shape of an Ethereum address +export const isAddress = (str: string): boolean => { + return /^0x[a-fA-F0-9]{40}$/.test(str); +}; + +// given a request, look for a key called address that is an Ethereum wallet +export const validateAddress: Validator = mkValidator( + 'address', + invalidAddressError, + (val) => typeof val === 'string' && isAddress(val) +); + +// given a request, look for a key called spender that is 'uniswap' or an Ethereum address +export const validateSpender: Validator = mkValidator( + 'spender', + invalidSpenderError, + (val) => + typeof val === 'string' && + (val === 'uniswap' || + val === 'perp' || + val === 'uniswapLP' || + val === 'pangolin' || + val === 'traderjoe' || + val === 'sushiswap' || + val === 'viperswap' || + val === 'openocean' || + val === 'quickswap' || + val === 'defikingdoms' || + val === 'defira' || + val === 'mad_meerkat' || + val === 'vvs' || + val === 'pancakeswap' || + isAddress(val)) +); + +export const validateNonce: Validator = mkValidator( + 'nonce', + invalidNonceError, + (val) => + typeof val === 'undefined' || + (typeof val === 'number' && val >= 0 && Number.isInteger(val)), + true +); + +export const validateMaxFeePerGas: Validator = mkValidator( + 'maxFeePerGas', + invalidMaxFeePerGasError, + (val) => typeof val === 'string' && isNaturalNumberString(val), + true +); + +export const validateMaxPriorityFeePerGas: Validator = mkValidator( + 'maxPriorityFeePerGas', + invalidMaxPriorityFeePerGasError, + (val) => typeof val === 'string' && isNaturalNumberString(val), + true +); + +export const validateChain: Validator = mkValidator( + 'chain', + invalidChainError, + (val) => typeof val === 'string' +); + +export const validateNetwork: Validator = mkValidator( + 'network', + invalidNetworkError, + (val) => typeof val === 'string' +); + +// request types and corresponding validators + +export const validateNonceRequest: RequestValidator = mkRequestValidator([ + validateAddress, +]); + +export const validateAllowancesRequest: RequestValidator = mkRequestValidator([ + validateAddress, + validateSpender, + validateTokenSymbols, +]); + +export const validateBalanceRequest: RequestValidator = mkRequestValidator([ + validateAddress, + validateTokenSymbols, +]); + +export const validateApproveRequest: RequestValidator = mkRequestValidator([ + validateAddress, + validateSpender, + validateToken, + validateAmount, + validateNonce, + validateMaxFeePerGas, + validateMaxPriorityFeePerGas, +]); + +export const validateCancelRequest: RequestValidator = mkRequestValidator([ + validateNonce, + validateAddress, +]); diff --git a/src/chains/ethereum/optimism_tokens.json b/src/chains/ethereum/optimism_tokens.json new file mode 100644 index 0000000000..699f047e75 --- /dev/null +++ b/src/chains/ethereum/optimism_tokens.json @@ -0,0 +1,3152 @@ +{ + "name": "Optimism", + "logoURI": "https://ethereum-optimism.github.io/optimism.svg", + "keywords": [ + "scaling", + "layer2", + "infrastructure" + ], + "timestamp": "2022-12-14T18:10:34.303Z", + "tokens": [ + { + "chainId": 1, + "address": "0xb6ed7644c69416d67b522e20bc294a9a9b405b31", + "name": "0xBitcoin", + "symbol": "0xBTC", + "decimals": 8, + "logoURI": "https://ethereum-optimism.github.io/data/0xBTC/logo.png", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0xe0BB0D3DE8c10976511e5030cA403dBf4c25165B", + "name": "0xBitcoin", + "symbol": "0xBTC", + "decimals": 8, + "logoURI": "https://ethereum-optimism.github.io/data/0xBTC/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 42, + "address": "0x24a19ee5a5c8757acdebe542a9436d9c796d1c9e", + "name": "0xBitcoin", + "symbol": "0xBTC", + "decimals": 8, + "logoURI": "https://ethereum-optimism.github.io/data/0xBTC/logo.png", + "extensions": { + "optimismBridgeAddress": "0x22F24361D548e5FaAfb36d1437839f080363982B" + } + }, + { + "chainId": 69, + "address": "0x56B4F5f44d348EC3F07Bf1f31A3B566E5304BedE", + "name": "0xBitcoin", + "symbol": "0xBTC", + "decimals": 8, + "logoURI": "https://ethereum-optimism.github.io/data/0xBTC/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9", + "name": "Aave Token", + "symbol": "AAVE", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/AAVE/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0x76FB31fb4af56892A25e32cFC43De717950c9278", + "name": "Aave Token", + "symbol": "AAVE", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/AAVE/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 42, + "address": "0x9BE876c6DC42215B00d7efe892E2691C3bc35d10", + "name": "Aave Token", + "symbol": "AAVE", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/AAVE/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x22F24361D548e5FaAfb36d1437839f080363982B" + } + }, + { + "chainId": 69, + "address": "0x76FB31fb4af56892A25e32cFC43De717950c9278", + "name": "Aave Token", + "symbol": "AAVE", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/AAVE/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0x2b95a1dcc3d405535f9ed33c219ab38e8d7e0884", + "name": "AladdinCRV", + "symbol": "aCRV", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/aCRV/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0x764ad60e1b81f6cacfec1a2926393d688d4493e6", + "name": "AladdinCRV", + "symbol": "aCRV", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/aCRV/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 42, + "address": "0x12b1326459d72f2ab081116bf27ca46cd97762a0", + "name": "AladdinCRV", + "symbol": "aCRV", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/aCRV/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x22F24361D548e5FaAfb36d1437839f080363982B" + } + }, + { + "chainId": 69, + "address": "0xf882ac9259a378e102f058f2fb093dffeca96437", + "name": "AladdinCRV", + "symbol": "aCRV", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/aCRV/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0x44108f0223A3C3028F5Fe7AEC7f9bb2E66beF82F", + "name": "Across Protocol Token", + "symbol": "ACX", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/ACX/logo.png", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0xff733b2a3557a7ed6697007ab5d11b79fdd1b76b", + "name": "Across Protocol Token", + "symbol": "ACX", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/ACX/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 10, + "address": "0x61BAADcF22d2565B0F471b291C475db5555e0b76", + "name": "Aelin Protocol", + "symbol": "AELIN", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/AELIN/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0x0100546f2cd4c9d97f798ffc9755e47865ff7ee6", + "name": "Alchemix ETH", + "symbol": "alETH", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/alETH/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0x3e29d3a9316dab217754d13b28646b76607c5f04", + "name": "Alchemix ETH", + "symbol": "alETH", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/alETH/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0xba100000625a3754423978a60c9317c58a424e3D", + "name": "Balancer", + "symbol": "BAL", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/BAL/logo.png", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0xFE8B128bA8C78aabC59d4c64cEE7fF28e9379921", + "name": "Balancer", + "symbol": "BAL", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/BAL/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 42, + "address": "0x41286Bb1D3E870f3F750eB7E1C25d7E48c8A1Ac7", + "name": "Balancer", + "symbol": "BAL", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/BAL/logo.png", + "extensions": { + "optimismBridgeAddress": "0x22F24361D548e5FaAfb36d1437839f080363982B" + } + }, + { + "chainId": 69, + "address": "0xc72751efd79B153D5bdC7E1a43b4b98aA2aA04C7", + "name": "Balancer", + "symbol": "BAL", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/BAL/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0x2d94aa3e47d9d5024503ca8491fce9a2fb4da198", + "name": "Bankless Token", + "symbol": "BANK", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/BANK/logo.png", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0x29FAF5905bfF9Cfcc7CF56a5ed91E0f091F8664B", + "name": "Bankless Token", + "symbol": "BANK", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/BANK/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0x91B08f4A7C1251dfCcF5440F8894F8DaA10c8De5", + "name": "BAXagent Coin", + "symbol": "BAXA", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/BAXA/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0xDb9888b842408B0b8eFa1f5477bD9F351754999E", + "name": "BAXagent Coin", + "symbol": "BAXA", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/BAXA/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 42, + "address": "0x0Fc18b0CB89611C03Fc1Ba6876bdfE22317924FE", + "name": "BAXagent Coin", + "symbol": "BAXA", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/BAXA/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x22F24361D548e5FaAfb36d1437839f080363982B" + } + }, + { + "chainId": 69, + "address": "0xD7eA82D19f1f59FF1aE95F1945Ee6E6d86A25B96", + "name": "BAXagent Coin", + "symbol": "BAXA", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/BAXA/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0x15Ee120fD69BEc86C1d38502299af7366a41D1a6", + "name": "BitANT", + "symbol": "BitANT", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/BitANT/logo.png", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0x5029C236320b8f15eF0a657054B84d90bfBEDED3", + "name": "BitANT", + "symbol": "BitANT", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/BitANT/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 42, + "address": "0x3Ef0aBa205134ba2f449Fa04A0A0673020c36270", + "name": "BitANT", + "symbol": "BitANT", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/BitANT/logo.png", + "extensions": { + "optimismBridgeAddress": "0x22F24361D548e5FaAfb36d1437839f080363982B" + } + }, + { + "chainId": 69, + "address": "0x1f748732AF4442Cf508DEf0882ad9fcB5E5205a2", + "name": "BitANT", + "symbol": "BitANT", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/BitANT/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0x3C513dB8Bdc3806e4489d62C3d549A5Aaf6A4e97", + "name": "BitBTC", + "symbol": "BitBTC", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/BitBTC/logo.png", + "extensions": { + "optimismBridgeAddress": "0xaBA2c5F108F7E820C049D5Af70B16ac266c8f128" + } + }, + { + "chainId": 10, + "address": "0xc98B98d17435AA00830c87eA02474C5007E1f272", + "name": "BitBTC", + "symbol": "BitBTC", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/BitBTC/logo.png", + "extensions": { + "optimismBridgeAddress": "0x158F513096923fF2d3aab2BcF4478536de6725e2" + } + }, + { + "chainId": 42, + "address": "0xF6DD2A9B840826D53c9842207628502B79E6B8c2", + "name": "BitBTC", + "symbol": "BitBTC", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/BitBTC/logo.png", + "extensions": { + "optimismBridgeAddress": "0x0b651A42F32069d62d5ECf4f2a7e5Bd3E9438746" + } + }, + { + "chainId": 69, + "address": "0x83643C9eF0c5707A7815124754d0828c9A38be3a", + "name": "BitBTC", + "symbol": "BitBTC", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/BitBTC/logo.png", + "extensions": { + "optimismBridgeAddress": "0x0CFb46528a7002a7D8877a5F7a69b9AaF1A9058e" + } + }, + { + "chainId": 1, + "address": "0xB0B195aEFA3650A6908f15CdaC7D92F8a5791B0B", + "name": "BOB Token", + "symbol": "BOB", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/BOB/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0xB0B195aEFA3650A6908f15CdaC7D92F8a5791B0B", + "name": "BOB Token", + "symbol": "BOB", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/BOB/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0x0391D2021f89DC339F60Fff84546EA23E337750f", + "name": "BarnBridge Governance Token", + "symbol": "BOND", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/BOND/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0x3e7eF8f50246f725885102E8238CBba33F276747", + "name": "BarnBridge Governance Token", + "symbol": "BOND", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/BOND/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 42, + "address": "0x521EE0CeDbed2a5A130B9218551fe492C5c402e4", + "name": "BarnBridge Governance Token", + "symbol": "BOND", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/BOND/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x22F24361D548e5FaAfb36d1437839f080363982B" + } + }, + { + "chainId": 69, + "address": "0x9e5AAC1Ba1a2e6aEd6b32689DFcF62A509Ca96f3", + "name": "BarnBridge Governance Token", + "symbol": "BOND", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/BOND/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0xD533a949740bb3306d119CC777fa900bA034cd52", + "name": "Curve DAO Token", + "symbol": "CRV", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/CRV/logo.png", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0x0994206dfe8de6ec6920ff4d779b0d950605fb53", + "name": "Curve DAO Token", + "symbol": "CRV", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/CRV/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0x491604c0FDF08347Dd1fa4Ee062a822A5DD06B5D", + "name": "Cartesi Token", + "symbol": "CTSI", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/CTSI/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0xEc6adef5E1006bb305bB1975333e8fc4071295bf", + "name": "Cartesi Token", + "symbol": "CTSI", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/CTSI/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 69, + "address": "0xEc6adef5E1006bb305bB1975333e8fc4071295bf", + "name": "Cartesi Token", + "symbol": "CTSI", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/CTSI/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0x6B175474E89094C44Da98b954EedeAC495271d0F", + "name": "Dai Stablecoin", + "symbol": "DAI", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/DAI/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x10E6593CDda8c58a1d0f14C5164B376352a55f2F" + } + }, + { + "chainId": 10, + "address": "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1", + "name": "Dai Stablecoin", + "symbol": "DAI", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/DAI/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x467194771dAe2967Aef3ECbEDD3Bf9a310C76C65" + } + }, + { + "chainId": 42, + "address": "0x4f96fe3b7a6cf9725f59d353f723c1bdb64ca6aa", + "name": "Dai Stablecoin", + "symbol": "DAI", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/DAI/logo.svg", + "extensions": { + "optimismBridgeAddress": "0xb415e822C4983ecD6B1c1596e8a5f976cf6CD9e3" + } + }, + { + "chainId": 69, + "address": "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1", + "name": "Dai Stablecoin", + "symbol": "DAI", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/DAI/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x467194771dAe2967Aef3ECbEDD3Bf9a310C76C65" + } + }, + { + "chainId": 5, + "address": "0x11fE4B6AE13d2a6055C8D9cF65c55bac32B5d844", + "name": "Dai Stablecoin", + "symbol": "DAI", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/DAI/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x05a388Db09C2D44ec0b00Ee188cD42365c42Df23" + } + }, + { + "chainId": 420, + "address": "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1", + "name": "Dai Stablecoin", + "symbol": "DAI", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/DAI/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x467194771dAe2967Aef3ECbEDD3Bf9a310C76C65" + } + }, + { + "chainId": 1, + "address": "0x08d32b0da63e2C3bcF8019c9c5d849d7a9d791e6", + "name": "Dentacoin", + "symbol": "DCN", + "decimals": 0, + "logoURI": "https://ethereum-optimism.github.io/data/DCN/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0x1da650c3b2daa8aa9ff6f661d4156ce24d08a062", + "name": "Dentacoin", + "symbol": "DCN", + "decimals": 0, + "logoURI": "https://ethereum-optimism.github.io/data/DCN/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 42, + "address": "0x001dedC8c67EF6D1f4BB66FB28581d466650Cd76", + "name": "Dentacoin", + "symbol": "DCN", + "decimals": 0, + "logoURI": "https://ethereum-optimism.github.io/data/DCN/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x22F24361D548e5FaAfb36d1437839f080363982B" + } + }, + { + "chainId": 69, + "address": "0xfd6ab60e0744e95c35fb17afda478eeae3835ddf", + "name": "Dentacoin", + "symbol": "DCN", + "decimals": 0, + "logoURI": "https://ethereum-optimism.github.io/data/DCN/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0x431ad2ff6a9C365805eBaD47Ee021148d6f7DBe0", + "name": "dForce", + "symbol": "DF", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/DF/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0x9e5AAC1Ba1a2e6aEd6b32689DFcF62A509Ca96f3", + "name": "dForce", + "symbol": "DF", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/DF/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 42, + "address": "0x79E40d67DA6eAE5eB4A93Fc6a56A7961625E15F3", + "name": "dForce", + "symbol": "DF", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/DF/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x22F24361D548e5FaAfb36d1437839f080363982B" + } + }, + { + "chainId": 69, + "address": "0x3e7eF8f50246f725885102E8238CBba33F276747", + "name": "dForce", + "symbol": "DF", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/DF/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0xca1207647Ff814039530D7d35df0e1Dd2e91Fa84", + "name": "dHEDGE DAO Token", + "symbol": "DHT", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/DHT/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0xAF9fE3B5cCDAe78188B1F8b9a49Da7ae9510F151", + "name": "dHEDGE DAO Token", + "symbol": "DHT", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/DHT/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0x865377367054516e17014CcdED1e7d814EDC9ce4", + "name": "Dola USD Stablecoin", + "symbol": "DOLA", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/DOLA/logo.png", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0x8aE125E8653821E851F12A49F7765db9a9ce7384", + "name": "Dola USD Stablecoin", + "symbol": "DOLA", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/DOLA/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 42, + "address": "0x39445DEc9Ba7Fb3776E8E5f9922864ddb9089304", + "name": "Dola USD Stablecoin", + "symbol": "DOLA", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/DOLA/logo.png", + "extensions": { + "optimismBridgeAddress": "0x22F24361D548e5FaAfb36d1437839f080363982B" + } + }, + { + "chainId": 69, + "address": "0x0D760ee479401Bb4C40BDB7604b329FfF411b3f2", + "name": "Dola USD Stablecoin", + "symbol": "DOLA", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/DOLA/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0x92E187a03B6CD19CB6AF293ba17F2745Fd2357D5", + "name": "Unit protocol", + "symbol": "DUCK", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/DUCK/logo.png", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0x0e49ca6ea763190084c846d3fc18f28bc2ac689a", + "name": "Unit protocol", + "symbol": "DUCK", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/DUCK/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0xc18360217d8f7ab5e7c516566761ea12ce7f9d72", + "name": "Ethereum Name Service", + "symbol": "ENS", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/ENS/logo.png", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0x65559aA14915a70190438eF90104769e5E890A00", + "name": "Ethereum Name Service", + "symbol": "ENS", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/ENS/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0x1da87b114f35e1dc91f72bf57fc07a768ad40bb0", + "name": "Equalizer", + "symbol": "EQZ", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/EQZ/logo.png", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0x81ab7e0d570b01411fcc4afd3d50ec8c241cb74b", + "name": "Equalizer", + "symbol": "EQZ", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/EQZ/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 42, + "address": "0xea281a04cf517aa0d4645bdda0353b0958e4b1b4", + "name": "Equalizer", + "symbol": "EQZ", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/EQZ/logo.png", + "extensions": { + "optimismBridgeAddress": "0x22F24361D548e5FaAfb36d1437839f080363982B" + } + }, + { + "chainId": 69, + "address": "0x8ee73c484a26e0a5df2ee2a4960b789967dd0415", + "name": "Equalizer", + "symbol": "EQZ", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/EQZ/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0x259ab9b9eab62b0fd98729b97be121073d5b3479", + "name": "Erica Social Token", + "symbol": "EST", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/EST/logo.png", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0x7b0bcC23851bBF7601efC9E9FE532Bf5284F65d3", + "name": "Erica Social Token", + "symbol": "EST", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/EST/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0x0000000000000000000000000000000000000000", + "name": "Ether", + "symbol": "ETH", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/ETH/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000", + "name": "Ether", + "symbol": "ETH", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/ETH/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 42, + "address": "0x0000000000000000000000000000000000000000", + "name": "Ether", + "symbol": "ETH", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/ETH/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x22F24361D548e5FaAfb36d1437839f080363982B" + } + }, + { + "chainId": 5, + "address": "0x0000000000000000000000000000000000000000", + "name": "Ether", + "symbol": "ETH", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/ETH/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x636Af16bf2f682dD3109e60102b8E1A089FedAa8" + } + }, + { + "chainId": 69, + "address": "0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000", + "name": "Ether", + "symbol": "ETH", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/ETH/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 420, + "address": "0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000", + "name": "Ether", + "symbol": "ETH", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/ETH/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 42, + "address": "0x50EB44e3a68f1963278b4c74c6c343508d31704C", + "name": "Tether EUR", + "symbol": "EURT", + "decimals": 6, + "logoURI": "https://ethereum-optimism.github.io/data/EURT/logo.png", + "extensions": { + "optimismBridgeAddress": "0x22F24361D548e5FaAfb36d1437839f080363982B" + } + }, + { + "chainId": 69, + "address": "0x65e44970ebFe42f98F83c4B67062DE94B9f3Da7D", + "name": "Tether EUR", + "symbol": "EURT", + "decimals": 6, + "logoURI": "https://ethereum-optimism.github.io/data/EURT/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0xB1f1F47061A7Be15C69f378CB3f69423bD58F2F8", + "name": "Flashstake", + "symbol": "FLASH", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/FLASH/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0x86bEA60374f220dE9769b2fEf2db725bc1cDd335", + "name": "Flashstake", + "symbol": "FLASH", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/FLASH/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0x853d955aCEf822Db058eb8505911ED77F175b99e", + "name": "FRAX", + "symbol": "FRAX", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/FRAX/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0x2E3D870790dC77A83DD1d18184Acc7439A53f475", + "name": "FRAX", + "symbol": "FRAX", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/FRAX/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0x3432B6A60D23Ca0dFCa7761B7ab56459D9C964D0", + "name": "FXS", + "symbol": "FXS", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/FXS/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0x67CCEA5bb16181E7b4109c9c2143c24a1c2205Be", + "name": "FXS", + "symbol": "FXS", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/FXS/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0x4FbB350052Bca5417566f188eB2EBCE5b19BC964", + "name": "Rigo Token", + "symbol": "GRG", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/GRG/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0xEcF46257ed31c329F204Eb43E254C609dee143B3", + "name": "Rigo Token", + "symbol": "GRG", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/GRG/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0xde30da39c46104798bb5aa3fe8b9e0e1f348163f", + "name": "Gitcoin", + "symbol": "GTC", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/GTC/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0x1eba7a6a72c894026cd654ac5cdcf83a46445b08", + "name": "Gitcoin", + "symbol": "GTC", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/GTC/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 42, + "address": "0xb7e230f904971724c600ad5217b88d219ddd1525", + "name": "Gitcoin", + "symbol": "GTC", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/GTC/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x22F24361D548e5FaAfb36d1437839f080363982B" + } + }, + { + "chainId": 69, + "address": "0xaf8ca653fa2772d58f4368b0a71980e9e3ceb888", + "name": "Gitcoin", + "symbol": "GTC", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/GTC/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0xbEa98c05eEAe2f3bC8c3565Db7551Eb738c8CCAb", + "name": "Geyser", + "symbol": "GYSR", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/GYSR/logo.png", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0x117cFd9060525452db4A34d51c0b3b7599087f05", + "name": "Geyser", + "symbol": "GYSR", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/GYSR/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 42, + "address": "0xDA9b55DE6e04404F6c77673D4B243142a4efC6B8", + "name": "Geyser", + "symbol": "GYSR", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/GYSR/logo.png", + "extensions": { + "optimismBridgeAddress": "0x22F24361D548e5FaAfb36d1437839f080363982B" + } + }, + { + "chainId": 69, + "address": "0x197D38DC562DfB2490eC1A1d5C4CC4319d178Bb4", + "name": "Geyser", + "symbol": "GYSR", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/GYSR/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0x0c90C57aaf95A3A87eadda6ec3974c99D786511F", + "name": "HanChain", + "symbol": "HAN", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/HAN/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0x50Bce64397C75488465253c0A034b8097FeA6578", + "name": "HanChain", + "symbol": "HAN", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/HAN/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 5, + "address": "0x0c90C57aaf95A3A87eadda6ec3974c99D786511F", + "name": "HanChain", + "symbol": "HAN", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/HAN/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x636Af16bf2f682dD3109e60102b8E1A089FedAa8" + } + }, + { + "chainId": 420, + "address": "0x9e1028f5f1d5ede59748ffcee5532509976840e0", + "name": "HanChain", + "symbol": "HAN", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/HAN/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0xF655C8567E0f213e6C634CD2A68d992152161dC6", + "name": "Impermax", + "symbol": "IBEX", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/IBEX/logo.png", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0xBB6BBaa0F6D839A00c82B10747aBc3b7E2eEcc82", + "name": "Impermax", + "symbol": "IBEX", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/IBEX/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 5, + "address": "0x0C4a63D472120d7859E2842b7C2Bafbd8eDe8f44", + "name": "InsureToken", + "symbol": "INSURE", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/INSURE/logo.png", + "extensions": { + "optimismBridgeAddress": "0x636Af16bf2f682dD3109e60102b8E1A089FedAa8" + } + }, + { + "chainId": 420, + "address": "0xeF26Ca2844b0b470AfC1b0aeF5F65e677dE6CD1f", + "name": "InsureToken", + "symbol": "INSURE", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/INSURE/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0xdeFA4e8a7bcBA345F687a2f1456F5Edd9CE97202", + "name": "Kyber Network Crystal v2", + "symbol": "KNC", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/KNC/logo.png", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0xa00E3A3511aAC35cA78530c85007AFCd31753819", + "name": "Kyber Network Crystal v2", + "symbol": "KNC", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/KNC/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 42, + "address": "0x4BC18Ae212F798FD7b0eae94dfCA18c0333157c4", + "name": "Kyber Network Crystal v2", + "symbol": "KNC", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/KNC/logo.png", + "extensions": { + "optimismBridgeAddress": "0x22F24361D548e5FaAfb36d1437839f080363982B" + } + }, + { + "chainId": 69, + "address": "0x83251BD7EbB55f9CED617030107cE32ef06F54f8", + "name": "Kyber Network Crystal v2", + "symbol": "KNC", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/KNC/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0x3af33bef05c2dcb3c7288b77fe1c8d2aeba4d789", + "name": "Kromatika", + "symbol": "KROM", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/KROM/logo.png", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0xf98dcd95217e15e05d8638da4c91125e59590b07", + "name": "Kromatika", + "symbol": "KROM", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/KROM/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 42, + "address": "0x0436F489525c47C1A4877a06bE0BEaba2A2E2e2d", + "name": "Kromatika", + "symbol": "KROM", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/KROM/logo.png", + "extensions": { + "optimismBridgeAddress": "0x22F24361D548e5FaAfb36d1437839f080363982B" + } + }, + { + "chainId": 69, + "address": "0x9e1028F5F1D5eDE59748FFceE5532509976840E0", + "name": "Kromatika", + "symbol": "KROM", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/KROM/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 42, + "address": "0xC13DD39606d4C2489ce5D9806d060FeD9a7d063d", + "name": "Land", + "symbol": "LAND", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/LAND/logo.png", + "extensions": { + "optimismBridgeAddress": "0x22F24361D548e5FaAfb36d1437839f080363982B" + } + }, + { + "chainId": 69, + "address": "0x2E2015aa4ac40B083189A03a75AD229dfB10172c", + "name": "Land", + "symbol": "LAND", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/LAND/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0x5A98FcBEA516Cf06857215779Fd812CA3beF1B32", + "name": "Lido DAO Token", + "symbol": "LDO", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/LDO/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0xFdb794692724153d1488CcdBE0C56c252596735F", + "name": "Lido DAO Token", + "symbol": "LDO", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/LDO/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 5, + "address": "0x56340274fB5a72af1A3C6609061c451De7961Bd4", + "name": "TEST Lido DAO Token", + "symbol": "TESTLDO", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/LDO/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x636Af16bf2f682dD3109e60102b8E1A089FedAa8" + } + }, + { + "chainId": 420, + "address": "0xE265FC71d45fd791c9ebf3EE0a53FBB220Eb8f75", + "name": "TEST Lido DAO Token", + "symbol": "TESTLDO", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/LDO/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0x514910771af9ca656af840dff83e8264ecf986ca", + "name": "Chainlink", + "symbol": "LINK", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/LINK/logo.png", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0x350a791bfc2c21f9ed5d10980dad2e2638ffa7f6", + "name": "Chainlink", + "symbol": "LINK", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/LINK/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 42, + "address": "0xa36085F69e2889c224210F603D836748e7dC0088", + "name": "Chainlink", + "symbol": "LINK", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/LINK/logo.png", + "extensions": { + "optimismBridgeAddress": "0x22F24361D548e5FaAfb36d1437839f080363982B" + } + }, + { + "chainId": 69, + "address": "0x4911b761993b9c8c0d14Ba2d86902AF6B0074F5B", + "name": "Chainlink", + "symbol": "LINK", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/LINK/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 5, + "address": "0x326C977E6efc84E512bB9C30f76E30c160eD06FB", + "name": "Chainlink", + "symbol": "LINK", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/LINK/logo.png", + "extensions": { + "optimismBridgeAddress": "0x636Af16bf2f682dD3109e60102b8E1A089FedAa8" + } + }, + { + "chainId": 420, + "address": "0xdc2CC710e42857672E7907CF474a69B63B93089f", + "name": "Chainlink", + "symbol": "LINK", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/LINK/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0x102e941b77bcaa7e35d368cafe51ef8f79c8d1ef", + "name": "Theranos Coin", + "symbol": "LIZ", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/LIZ/logo.png", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0x3bB4445D30AC020a84c1b5A8A2C6248ebC9779D0", + "name": "Theranos Coin", + "symbol": "LIZ", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/LIZ/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 42, + "address": "0x47Aa2a683b88E23c4d76f91Aa4181A59d0E4FBfb", + "name": "Theranos Coin", + "symbol": "LIZ", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/LIZ/logo.png", + "extensions": { + "optimismBridgeAddress": "0x22F24361D548e5FaAfb36d1437839f080363982B" + } + }, + { + "chainId": 69, + "address": "0x3bb4445d30ac020a84c1b5a8a2c6248ebc9779d0", + "name": "Theranos Coin", + "symbol": "LIZ", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/LIZ/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0x3650B69f86cB593f116e276C30666834336c0647", + "name": "Loopfi", + "symbol": "LPF", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/LPF/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0x0B3e851cf6508A16266BC68A651ea68b31ef673b", + "name": "Loopfi", + "symbol": "LPF", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/LPF/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0xBBbbCA6A901c926F240b89EacB641d8Aec7AEafD", + "name": "LoopringCoin V2", + "symbol": "LRC", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/LRC/logo.png", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0xFEaA9194F9F8c1B65429E31341a103071464907E", + "name": "LoopringCoin V2", + "symbol": "LRC", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/LRC/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0x5f98805a4e8be255a32880fdec7f6728c6568ba0", + "name": "LUSD Stablecoin", + "symbol": "LUSD", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/LUSD/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0xc40f949f8a4e094d1b49a23ea9241d289b7b2819", + "name": "LUSD Stablecoin", + "symbol": "LUSD", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/LUSD/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0x01ba67aac7f75f647d94220cc98fb30fcc5105bf", + "name": "Lyra", + "symbol": "LYRA", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/LYRA/logo.png", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb", + "name": "Lyra", + "symbol": "LYRA", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/LYRA/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0x69af81e73a73b40adf4f3d4223cd9b1ece623074", + "name": "Mask Network", + "symbol": "MASK", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/MASK/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0x3390108E913824B8eaD638444cc52B9aBdF63798", + "name": "Mask Network", + "symbol": "MASK", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/MASK/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2", + "name": "Maker", + "symbol": "MKR", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/MKR/logo.png", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0xab7badef82e9fe11f6f33f87bc9bc2aa27f2fcb5", + "name": "Maker", + "symbol": "MKR", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/MKR/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 5, + "address": "0x48B942C65a5991dD64360CdDE442792bD829Af80", + "name": "Mochi", + "symbol": "MOCHI", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/MOCHI/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x636Af16bf2f682dD3109e60102b8E1A089FedAa8" + } + }, + { + "chainId": 420, + "address": "0x7Af72aD5E8793023DC722d617fe3338ac6b5ccE9", + "name": "Mochi", + "symbol": "MOCHI", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/MOCHI/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0x1351986732367ff6B51784c6A75f63502dE13a9a", + "name": "Monetum", + "symbol": "MOM", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/MOM/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0x5e70AfFE232e2919792f77EB94e566db0320fa88", + "name": "Monetum", + "symbol": "MOM", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/MOM/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 5, + "address": "0xd3D1c79D8a5F8316D07c4A391805E5006c71648C", + "name": "Monetum", + "symbol": "MOM", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/MOM/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x636Af16bf2f682dD3109e60102b8E1A089FedAa8" + } + }, + { + "chainId": 420, + "address": "0x4621b7A9c75199271F773Ebd9A499dbd165c3191", + "name": "Monetum", + "symbol": "MOM", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/MOM/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 10, + "address": "0x4200000000000000000000000000000000000042", + "name": "Optimism", + "symbol": "OP", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/OP/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 69, + "address": "0x4200000000000000000000000000000000000042", + "name": "Optimism", + "symbol": "OP", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/OP/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 5, + "address": "0x32B3b2281717dA83463414af4E8CfB1970E56287", + "name": "OptimismUselessToken-Bridged", + "symbol": "OUTb", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/OUTb/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x636Af16bf2f682dD3109e60102b8E1A089FedAa8" + } + }, + { + "chainId": 420, + "address": "0x3e7eF8f50246f725885102E8238CBba33F276747", + "name": "OptimismUselessToken-Bridged", + "symbol": "OUTb", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/OUTb/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0x7ae1d57b58fa6411f32948314badd83583ee0e8c", + "name": "Paper", + "symbol": "PAPER", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/PAPER/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0x00F932F0FE257456b32dedA4758922E56A4F4b42", + "name": "Paper", + "symbol": "PAPER", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/PAPER/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0xbC396689893D065F41bc2C6EcbeE5e0085233447", + "name": "Perpetual", + "symbol": "PERP", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/PERP/logo.png", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0x9e1028F5F1D5eDE59748FFceE5532509976840E0", + "name": "Perpetual", + "symbol": "PERP", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/PERP/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 42, + "address": "0x002be8a5961e0f352092d6693133a6944b7846ba", + "name": "Perpetual", + "symbol": "PERP", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/PERP/logo.png", + "extensions": { + "optimismBridgeAddress": "0x22F24361D548e5FaAfb36d1437839f080363982B" + } + }, + { + "chainId": 69, + "address": "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb", + "name": "Perpetual", + "symbol": "PERP", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/PERP/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 5, + "address": "0x29DdacF754877123157e0eeed26770736B304d0C", + "name": "Perpetual", + "symbol": "PERP", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/PERP/logo.png", + "extensions": { + "optimismBridgeAddress": "0x636Af16bf2f682dD3109e60102b8E1A089FedAa8" + } + }, + { + "chainId": 420, + "address": "0x0994206dfE8De6Ec6920FF4D779B0d950605Fb53", + "name": "Perpetual", + "symbol": "PERP", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/PERP/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0x1FEE5588cb1De19c70B6aD5399152D8C643FAe7b", + "name": "PhunToken", + "symbol": "PHTK", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/PHTK/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0xFa956eB0c4b3E692aD5a6B2f08170aDE55999ACa", + "name": "PhunToken", + "symbol": "PHTK", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/PHTK/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0x0cec1a9154ff802e7934fc916ed7ca50bde6844e", + "name": "PoolTogether", + "symbol": "POOL", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/POOL/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0x395ae52bb17aef68c2888d941736a71dc6d4e125", + "name": "PoolTogether", + "symbol": "POOL", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/POOL/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0xd0cd466b34a24fcb2f87676278af2005ca8a78c4", + "name": "Popcorn", + "symbol": "POP", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/POP/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0x6F0fecBC276de8fC69257065fE47C5a03d986394", + "name": "Popcorn", + "symbol": "POP", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/POP/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0x6399c842dd2be3de30bf99bc7d1bbf6fa3650e70", + "name": "Premia", + "symbol": "PREMIA", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/PREMIA/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0x374Ad0f47F4ca39c78E5Cc54f1C9e426FF8f231A", + "name": "Premia", + "symbol": "PREMIA", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/PREMIA/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0x03ab458634910AaD20eF5f1C8ee96F1D6ac54919", + "name": "Rai Reflex Index", + "symbol": "RAI", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/RAI/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0x7FB688CCf682d58f86D7e38e03f9D22e7705448B", + "name": "Rai Reflex Index", + "symbol": "RAI", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/RAI/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 42, + "address": "0x76b06a2f6dF6f0514e7BEC52a9AfB3f603b477CD", + "name": "Rai Reflex Index", + "symbol": "RAI", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/RAI/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x22F24361D548e5FaAfb36d1437839f080363982B" + } + }, + { + "chainId": 69, + "address": "0x743224e4822710a3e40d754244f3e0f1db2e5d8f", + "name": "Rai Reflex Index", + "symbol": "RAI", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/RAI/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0xae78736cd615f374d3085123a210448e74fc6393", + "name": "Rocket Pool ETH", + "symbol": "rETH", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/rETH/logo.png", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0x9bcef72be871e61ed4fbbc7630889bee758eb81d", + "name": "Rocket Pool ETH", + "symbol": "rETH", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/rETH/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0x07FA101efde726E0956Edd2c4D5C8d3d1A5E9c53", + "name": "Respawn Finance Wrapped Staked Ethereum", + "symbol": "RFWSTETH", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/RFWSTETH/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0xeAeAdAC73baaF4cB8B024dE9D65B2eeFa722856C", + "name": "Respawn Finance Wrapped Staked Ethereum", + "symbol": "RFWSTETH", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/RFWSTETH/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 42, + "address": "0x891C46986708b3914A00883B72564AB76817799A", + "name": "Respawn Finance Wrapped Staked Ethereum", + "symbol": "RFWSTETH", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/RFWSTETH/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x22F24361D548e5FaAfb36d1437839f080363982B" + } + }, + { + "chainId": 69, + "address": "0x1696baFBe18EFB141823a041E22E43d12B144407", + "name": "Respawn Finance Wrapped Staked Ethereum", + "symbol": "RFWSTETH", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/RFWSTETH/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0xd291e7a03283640fdc51b121ac401383a46cc623", + "name": "Rari Governance Token", + "symbol": "RGT", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/RGT/logo.png", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0xb548f63d4405466b36c0c0ac3318a22fdcec711a", + "name": "Rari Governance Token", + "symbol": "RGT", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/RGT/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0x7697b462a7c4ff5f8b55bdbc2f4076c2af9cf51a", + "name": "Sarcophagus", + "symbol": "SARCO", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/SARCO/logo.png", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0x7c6b91d9be155a6db01f749217d76ff02a7227f2", + "name": "Sarcophagus", + "symbol": "SARCO", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/SARCO/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 10, + "address": "0x298B9B95708152ff6968aafd889c6586e9169f1D", + "name": "Synthetic Bitcoin", + "symbol": "sBTC", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/sBTC/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0xf1Dc500FdE233A4055e25e5BbF516372BC4F6871", + "name": "Saddle DAO", + "symbol": "SDL", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/SDL/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0xAe31207aC34423C41576Ff59BFB4E036150f9cF7", + "name": "Saddle DAO", + "symbol": "SDL", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/SDL/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 42, + "address": "0x2b7A5a5923ECa5C00c6572Cf3E8e08384F563F93", + "name": "Saddle DAO", + "symbol": "SDL", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/SDL/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x22F24361D548e5FaAfb36d1437839f080363982B" + } + }, + { + "chainId": 69, + "address": "0xc96f4F893286137aC17e07Ae7F217fFca5db3AB6", + "name": "Saddle DAO", + "symbol": "SDL", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/SDL/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 10, + "address": "0xE405de8F52ba7559f9df3C368500B6E6ae6Cee49", + "name": "Synthetic Ether", + "symbol": "sETH", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/sETH/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 10, + "address": "0xc5Db22719A06418028A40A9B5E9A7c02959D0d08", + "name": "Synthetic Chainlink", + "symbol": "sLINK", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/sLINK/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f", + "name": "Synthetix", + "symbol": "SNX", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/SNX/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x39Ea01a0298C315d149a490E34B59Dbf2EC7e48F" + } + }, + { + "chainId": 10, + "address": "0x8700daec35af8ff88c16bdf0418774cb3d7599b4", + "name": "Synthetix", + "symbol": "SNX", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/SNX/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x136b1EC699c62b0606854056f02dC7Bb80482d63" + } + }, + { + "chainId": 42, + "address": "0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f", + "name": "Synthetix", + "symbol": "SNX", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/SNX/logo.svg", + "extensions": { + "optimismBridgeAddress": "0xc00E7C2Bd7B0Fb95DbBF10d2d336399A939099ee" + } + }, + { + "chainId": 69, + "address": "0x0064A673267696049938AA47595dD0B3C2e705A1", + "name": "Synthetix", + "symbol": "SNX", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/SNX/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x5b643DFC67f9701929A0b55f23e0Af61df50E75D" + } + }, + { + "chainId": 5, + "address": "0x51f44ca59b867E005e48FA573Cb8df83FC7f7597", + "name": "Synthetix", + "symbol": "SNX", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/SNX/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x1427Bc44755d9Aa317535B1feE38922760Aa4e65" + } + }, + { + "chainId": 420, + "address": "0x2E5ED97596a8368EB9E44B1f3F25B2E813845303", + "name": "Synthetix", + "symbol": "SNX", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/SNX/logo.svg", + "extensions": { + "optimismBridgeAddress": "0xD2b3F0Ea40dB68088415412b0043F37B3088836D" + } + }, + { + "chainId": 1, + "address": "0x42d6622dece394b54999fbd73d108123806f6a18", + "name": "SPANK", + "symbol": "SPANK", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/SPANK/logo.png", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0xcfD1D50ce23C46D3Cf6407487B2F8934e96DC8f9", + "name": "SPANK", + "symbol": "SPANK", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/SPANK/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 42, + "address": "0x2eA8f9B29AC1d70e01AE9D23d0451D2242e8d609", + "name": "SPANK", + "symbol": "SPANK", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/SPANK/logo.png", + "extensions": { + "optimismBridgeAddress": "0x22F24361D548e5FaAfb36d1437839f080363982B" + } + }, + { + "chainId": 69, + "address": "0xcfD1D50ce23C46D3Cf6407487B2F8934e96DC8f9", + "name": "SPANK", + "symbol": "SPANK", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/SPANK/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0x0763fdccf1ae541a5961815c0872a8c5bc6de4d7", + "name": "SUKU", + "symbol": "SUKU", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/SUKU/logo.png", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0xef6301da234fc7b0545c6e877d3359fe0b9e50a4", + "name": "SUKU", + "symbol": "SUKU", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/SUKU/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 42, + "address": "0xd35f5965b4b84382ca27072ff3b6b42e7053e672", + "name": "SUKU", + "symbol": "SUKU", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/SUKU/logo.png", + "extensions": { + "optimismBridgeAddress": "0x22F24361D548e5FaAfb36d1437839f080363982B" + } + }, + { + "chainId": 69, + "address": "0x871f2f2ff935fd1ed867842ff2a7bfd051a5e527", + "name": "SUKU", + "symbol": "SUKU", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/SUKU/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 10, + "address": "0x8c6f28f2F1A3C87F0f938b96d27520d9751ec8d9", + "name": "Synthetix USD", + "symbol": "sUSD", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/sUSD/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 69, + "address": "0xaA5068dC2B3AADE533d3e52C6eeaadC6a8154c57", + "name": "Synthetix USD", + "symbol": "sUSD", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/sUSD/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 420, + "address": "0xeBaEAAD9236615542844adC5c149F86C36aD1136", + "name": "Synthetix USD", + "symbol": "sUSD", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/sUSD/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0x8947da500Eb47F82df21143D0C01A29862a8C3c5", + "name": "Optimistic Thales Token", + "symbol": "THALES", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/THALES/logo.png", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0x217D47011b23BB961eB6D93cA9945B7501a5BB11", + "name": "Optimistic Thales Token", + "symbol": "THALES", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/THALES/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0xbb9bc244d798123fde783fcc1c72d3bb8c189413", + "name": "TheDAO", + "symbol": "TheDAO", + "decimals": 16, + "logoURI": "https://ethereum-optimism.github.io/data/TheDAO/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0xd8f365c2c85648f9b89d9f1bf72c0ae4b1c36cfd", + "name": "TheDAO", + "symbol": "TheDAO", + "decimals": 16, + "logoURI": "https://ethereum-optimism.github.io/data/TheDAO/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 42, + "address": "0x8274ea38fe9bea66f8e7c6f3ef742b85d86aeb5d", + "name": "TheDAO", + "symbol": "TheDAO", + "decimals": 16, + "logoURI": "https://ethereum-optimism.github.io/data/TheDAO/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x22F24361D548e5FaAfb36d1437839f080363982B" + } + }, + { + "chainId": 69, + "address": "0x35597dC6f8fDc81d71b311A9E4e2710ef6accb68", + "name": "TheDAO", + "symbol": "TheDAO", + "decimals": 16, + "logoURI": "https://ethereum-optimism.github.io/data/TheDAO/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0x88df592f8eb5d7bd38bfef7deb0fbc02cf3778a0", + "name": "Tellor", + "symbol": "TRB", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/TRB/logo.png", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0xaf8ca653fa2772d58f4368b0a71980e9e3ceb888", + "name": "Tellor", + "symbol": "TRB", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/TRB/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 42, + "address": "0x7B8AC044ebce66aCdF14197E8De38C1Cc802dB4A", + "name": "Tellor", + "symbol": "TRB", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/TRB/logo.png", + "extensions": { + "optimismBridgeAddress": "0x22F24361D548e5FaAfb36d1437839f080363982B" + } + }, + { + "chainId": 69, + "address": "0x5e70affe232e2919792f77eb94e566db0320fa88", + "name": "Tellor", + "symbol": "TRB", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/TRB/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0x0000000000085d4780B73119b644AE5ecd22b376", + "name": "TrueUSD", + "symbol": "TUSD", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/TUSD/logo.png", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0xcB59a0A753fDB7491d5F3D794316F1adE197B21E", + "name": "TrueUSD", + "symbol": "TUSD", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/TUSD/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 42, + "address": "0x1794230aBe1995fcFe6B14865D4B6928121AB9d9", + "name": "TrueUSD", + "symbol": "TUSD", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/TUSD/logo.png", + "extensions": { + "optimismBridgeAddress": "0x22F24361D548e5FaAfb36d1437839f080363982B" + } + }, + { + "chainId": 69, + "address": "0xFa956eB0c4b3E692aD5a6B2f08170aDE55999ACa", + "name": "TrueUSD", + "symbol": "TUSD", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/TUSD/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0xDd1Ad9A21Ce722C151A836373baBe42c868cE9a4", + "name": "Universal Basic Income", + "symbol": "UBI", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/UBI/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0xbb586ed34974b15049a876fd5366a4c2d1203115", + "name": "Universal Basic Income", + "symbol": "UBI", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/UBI/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 42, + "address": "0x1ac5F168C220De2515Af6068c5A153aFe2c76d36", + "name": "Universal Basic Income", + "symbol": "UBI", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/UBI/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x22F24361D548e5FaAfb36d1437839f080363982B" + } + }, + { + "chainId": 69, + "address": "0xbb586ed34974b15049a876fd5366a4c2d1203115", + "name": "Universal Basic Income", + "symbol": "UBI", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/UBI/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0x04Fa0d235C4abf4BcF4787aF4CF447DE572eF828", + "name": "UMA Voting Token v1", + "symbol": "UMA", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/UMA/logo.png", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0xE7798f023fC62146e8Aa1b36Da45fb70855a77Ea", + "name": "UMA Voting Token v1", + "symbol": "UMA", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/UMA/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0x1f9840a85d5af5bf1d1762f925bdaddc4201f984", + "name": "Uniswap", + "symbol": "UNI", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/UNI/logo.png", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0x6fd9d7ad17242c41f7131d257212c54a0e816691", + "name": "Uniswap", + "symbol": "UNI", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/UNI/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 42, + "address": "0x1f9840a85d5af5bf1d1762f925bdaddc4201f984", + "name": "Uniswap", + "symbol": "UNI", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/UNI/logo.png", + "extensions": { + "optimismBridgeAddress": "0x22F24361D548e5FaAfb36d1437839f080363982B" + } + }, + { + "chainId": 69, + "address": "0x5e31B81eaFba4b9371e77F34d6f3DA8091C3F2a0", + "name": "Uniswap", + "symbol": "UNI", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/UNI/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "name": "USD Coin", + "symbol": "USDC", + "decimals": 6, + "logoURI": "https://ethereum-optimism.github.io/data/USDC/logo.png", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0x7F5c764cBc14f9669B88837ca1490cCa17c31607", + "name": "USD Coin", + "symbol": "USDC", + "decimals": 6, + "logoURI": "https://ethereum-optimism.github.io/data/USDC/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 42, + "address": "0x50dC5200082d37d5dd34B4b0691f36e3632fE1A8", + "name": "USD Coin", + "symbol": "USDC", + "decimals": 6, + "logoURI": "https://ethereum-optimism.github.io/data/USDC/logo.png", + "extensions": { + "optimismBridgeAddress": "0x22F24361D548e5FaAfb36d1437839f080363982B" + } + }, + { + "chainId": 69, + "address": "0x4e62882864fB8CE54AFfcAf8D899A286762B011B", + "name": "USD Coin", + "symbol": "USDC", + "decimals": 6, + "logoURI": "https://ethereum-optimism.github.io/data/USDC/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 5, + "address": "0x07865c6E87B9F70255377e024ace6630C1Eaa37F", + "name": "USD Coin", + "symbol": "USDC", + "decimals": 6, + "logoURI": "https://ethereum-optimism.github.io/data/USDC/logo.png", + "extensions": { + "optimismBridgeAddress": "0x636Af16bf2f682dD3109e60102b8E1A089FedAa8" + } + }, + { + "chainId": 420, + "address": "0x7E07E15D2a87A24492740D16f5bdF58c16db0c4E", + "name": "USD Coin", + "symbol": "USDC", + "decimals": 6, + "logoURI": "https://ethereum-optimism.github.io/data/USDC/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0x0C10bF8FcB7Bf5412187A595ab97a3609160b5c6", + "name": "Decentralized USD", + "symbol": "USDD", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/USDD/logo.png", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0x7113370218f31764C1B6353BDF6004d86fF6B9cc", + "name": "Decentralized USD", + "symbol": "USDD", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/USDD/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 42, + "address": "0xae73ddeafc00bc5ad03a96c2b268c3f5325c8d49", + "name": "Decentralized USD", + "symbol": "USDD", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/USDD/logo.png", + "extensions": { + "optimismBridgeAddress": "0x22F24361D548e5FaAfb36d1437839f080363982B" + } + }, + { + "chainId": 69, + "address": "0x1f9bd96ddb4bd07d6061f8933e9ba9ede9967550", + "name": "Decentralized USD", + "symbol": "USDD", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/USDD/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 10, + "address": "0x73cb180bf0521828d8849bc8CF2B920918e23032", + "name": "USD+", + "symbol": "USD+", + "decimals": 6, + "logoURI": "https://ethereum-optimism.github.io/data/USDplus/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "name": "Tether USD", + "symbol": "USDT", + "decimals": 6, + "logoURI": "https://ethereum-optimism.github.io/data/USDT/logo.png", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58", + "name": "Tether USD", + "symbol": "USDT", + "decimals": 6, + "logoURI": "https://ethereum-optimism.github.io/data/USDT/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 42, + "address": "0xe0BB0D3DE8c10976511e5030cA403dBf4c25165B", + "name": "Tether USD", + "symbol": "USDT", + "decimals": 6, + "logoURI": "https://ethereum-optimism.github.io/data/USDT/logo.png", + "extensions": { + "optimismBridgeAddress": "0x22F24361D548e5FaAfb36d1437839f080363982B" + } + }, + { + "chainId": 69, + "address": "0x7F5c764cBc14f9669B88837ca1490cCa17c31607", + "name": "Tether USD", + "symbol": "USDT", + "decimals": 6, + "logoURI": "https://ethereum-optimism.github.io/data/USDT/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 5, + "address": "0xC2C527C0CACF457746Bd31B2a698Fe89de2b6d49", + "name": "Tether USD", + "symbol": "USDT", + "decimals": 6, + "logoURI": "https://ethereum-optimism.github.io/data/USDT/logo.png", + "extensions": { + "optimismBridgeAddress": "0x636Af16bf2f682dD3109e60102b8E1A089FedAa8" + } + }, + { + "chainId": 420, + "address": "0x853eb4bA5D0Ba2B77a0A5329Fd2110d5CE149ECE", + "name": "Tether USD", + "symbol": "USDT", + "decimals": 6, + "logoURI": "https://ethereum-optimism.github.io/data/USDT/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0xa693b19d2931d498c5b318df961919bb4aee87a5", + "name": "UST (Wormhole)", + "symbol": "UST", + "decimals": 6, + "logoURI": "https://ethereum-optimism.github.io/data/UST/logo.png", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0xBA28feb4b6A6b81e3F26F08b83a19E715C4294fd", + "name": "UST (Wormhole)", + "symbol": "UST", + "decimals": 6, + "logoURI": "https://ethereum-optimism.github.io/data/UST/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0x0a5e677a6a24b2f1a2bf4f3bffc443231d2fdec8", + "name": "dForce USD", + "symbol": "USX", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/USX/logo.svg", + "extensions": { + "optimismBridgeAddress": "0xC5b1EC605738eF73a4EFc562274c1c0b6609cF59" + } + }, + { + "chainId": 10, + "address": "0xbfD291DA8A403DAAF7e5E9DC1ec0aCEaCd4848B9", + "name": "dForce USD", + "symbol": "USX", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/USX/logo.svg", + "extensions": { + "optimismBridgeAddress": "0xc76cbFbAfD41761279E3EDb23Fd831Ccb74D5D67" + } + }, + { + "chainId": 42, + "address": "0xf76ead4da04bbeb97d29f83e2ec3a621d0fb3c6e", + "name": "dForce USD", + "symbol": "USX", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/USX/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x40E862341b2416345F02c41Ac70df08525150dC7" + } + }, + { + "chainId": 69, + "address": "0xab7020476d814c52629ff2e4cebc7a8cdc04f18e", + "name": "dForce USD", + "symbol": "USX", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/USX/logo.svg", + "extensions": { + "optimismBridgeAddress": "0xB4d37826b14Cd3CB7257A2A5094507d701fe715f" + } + }, + { + "chainId": 1, + "address": "0x27C4af9A860c4caDc358005F8b48140b2E434A7B", + "name": "Validator", + "symbol": "VALX", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/VALX/logo.png", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0x0A9AAa1c7542b42233AC7FfdA364E97adE21f160", + "name": "Validator", + "symbol": "VALX", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/VALX/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0x6789D8a7a7871923Fc6430432A602879eCB6520a", + "name": "veKwenta", + "symbol": "veKWENTA", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/veKWENTA/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0x678d8f4Ba8DFE6bad51796351824DcCECeAefF2B", + "name": "veKwenta", + "symbol": "veKWENTA", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/veKWENTA/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 5, + "address": "0xf36c9a9E8333663F8CA3608C5582916628E79e3f", + "name": "veKwenta", + "symbol": "veKWENTA", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/veKWENTA/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x636Af16bf2f682dD3109e60102b8E1A089FedAa8" + } + }, + { + "chainId": 420, + "address": "0x3e52b5f840eafD79394c6359E93Bf3FfdAE89ee4", + "name": "veKwenta", + "symbol": "veKWENTA", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/veKWENTA/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 10, + "address": "0x3c8B650257cFb5f272f799F5e2b4e65093a11a05", + "name": "Velodrome", + "symbol": "VELO", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/VELO/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0x0B6F3c17e1626a7cBfA4302CE4E3c45522d23A83", + "name": "WardenSwap", + "symbol": "WAD", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/WAD/logo.png", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0x703D57164CA270b0B330A87FD159CfEF1490c0a5", + "name": "WardenSwap", + "symbol": "WAD", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/WAD/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 42, + "address": "0x2C7A8122A1b512AdC848024cE72e837001EcB586", + "name": "WardenSwap", + "symbol": "WAD", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/WAD/logo.png", + "extensions": { + "optimismBridgeAddress": "0x22F24361D548e5FaAfb36d1437839f080363982B" + } + }, + { + "chainId": 69, + "address": "0xD1917629B3E6A72E6772Aab5dBe58Eb7FA3C2F33", + "name": "WardenSwap", + "symbol": "WAD", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/WAD/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", + "name": "Wrapped BTC", + "symbol": "WBTC", + "decimals": 8, + "logoURI": "https://ethereum-optimism.github.io/data/WBTC/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0x68f180fcCe6836688e9084f035309E29Bf0A2095", + "name": "Wrapped BTC", + "symbol": "WBTC", + "decimals": 8, + "logoURI": "https://ethereum-optimism.github.io/data/WBTC/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 42, + "address": "0x68f180fcCe6836688e9084f035309E29Bf0A2095", + "name": "Wrapped BTC", + "symbol": "WBTC", + "decimals": 8, + "logoURI": "https://ethereum-optimism.github.io/data/WBTC/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x22F24361D548e5FaAfb36d1437839f080363982B" + } + }, + { + "chainId": 69, + "address": "0x2382a8f65b9120E554d1836a504808aC864E169d", + "name": "Wrapped BTC L2", + "symbol": "WBTC", + "decimals": 8, + "logoURI": "https://ethereum-optimism.github.io/data/WBTC/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 5, + "address": "0xC04B0d3107736C32e19F1c62b2aF67BE61d63a05", + "name": "Wrapped BTC", + "symbol": "WBTC", + "decimals": 8, + "logoURI": "https://ethereum-optimism.github.io/data/WBTC/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x636Af16bf2f682dD3109e60102b8E1A089FedAa8" + } + }, + { + "chainId": 420, + "address": "0xe0a592353e81a94Db6E3226fD4A99F881751776a", + "name": "Wrapped BTC L2", + "symbol": "WBTC", + "decimals": 8, + "logoURI": "https://ethereum-optimism.github.io/data/WBTC/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 10, + "address": "0x4200000000000000000000000000000000000006", + "name": "Wrapped Ether", + "symbol": "WETH", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/WETH/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 5, + "address": "0x753BD3E00B9585AC9a94Fdf287f41d8D51e5CF8b", + "name": "WAMP", + "symbol": "WMP", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/WMP/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x636Af16bf2f682dD3109e60102b8E1A089FedAa8" + } + }, + { + "chainId": 420, + "address": "0x35D48A789904E9b15705977192e5d95e2aF7f1D3", + "name": "WAMP", + "symbol": "WMP", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/WMP/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0x4691937a7508860F876c9c0a2a617E7d9E945D4B", + "name": "Wootrade Network", + "symbol": "WOO", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/WOO/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0x871f2F2ff935FD1eD867842FF2a7bfD051A5E527", + "name": "Wootrade Network", + "symbol": "WOO", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/WOO/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0", + "name": "Wrapped liquid staked Ether 2.0", + "symbol": "wstETH", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/wstETH/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x76943C0D61395d8F2edF9060e1533529cAe05dE6" + } + }, + { + "chainId": 10, + "address": "0x1F32b1c2345538c0c6f582fCB022739c4A194Ebb", + "name": "Wrapped liquid staked Ether 2.0", + "symbol": "wstETH", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/wstETH/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x8E01013243a96601a86eb3153F0d9Fa4fbFb6957" + } + }, + { + "chainId": 42, + "address": "0xa88751C0a08623E11ff38c6B70F2BbEe7865C17c", + "name": "Wrapped liquid staked Ether 2.0", + "symbol": "wstETH", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/wstETH/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x65321bf24210b81500230dCEce14Faa70a9f50a7" + } + }, + { + "chainId": 69, + "address": "0xF9C842dE4381a70eB265d10CF8D43DceFF5bA935", + "name": "Wrapped liquid staked Ether 2.0", + "symbol": "wstETH", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/wstETH/logo.svg", + "extensions": { + "optimismBridgeAddress": "0x2E34e7d705AfaC3C4665b6feF31Aa394A1c81c92" + } + }, + { + "chainId": 1, + "address": "0xB4272071eCAdd69d933AdcD19cA99fe80664fc08", + "name": "CryptoFranc", + "symbol": "XCHF", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/XCHF/logo.png", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0xE4F27b04cC7729901876B44f4EAA5102EC150265", + "name": "CryptoFranc", + "symbol": "XCHF", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/XCHF/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + }, + { + "chainId": 1, + "address": "0xE41d2489571d322189246DaFA5ebDe1F4699F498", + "name": "0x Protocol Token", + "symbol": "ZRX", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/ZRX/logo.png", + "extensions": { + "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + } + }, + { + "chainId": 10, + "address": "0xD1917629B3E6A72E6772Aab5dBe58Eb7FA3C2F33", + "name": "0x Protocol Token", + "symbol": "ZRX", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/ZRX/logo.png", + "extensions": { + "optimismBridgeAddress": "0x4200000000000000000000000000000000000010" + } + } + ], + "version": { + "major": 4, + "minor": 3, + "patch": 5 + } + } \ No newline at end of file diff --git a/src/chains/harmony/harmony.config.ts b/src/chains/harmony/harmony.config.ts new file mode 100644 index 0000000000..73804d8421 --- /dev/null +++ b/src/chains/harmony/harmony.config.ts @@ -0,0 +1,57 @@ +import { TokenListType } from '../../services/base'; +import { ConfigManagerV2 } from '../../services/config-manager-v2'; +interface NetworkConfig { + name: string; + chainID: number; + nodeURL: string; + tokenListType: TokenListType; + tokenListSource: string; +} + +interface Config { + network: NetworkConfig; + nativeCurrencySymbol: string; + autoGasPrice: boolean; + manualGasPrice: number; + gasPricerefreshTime: number; + gasLimitTransaction: number; +} + +export function getHarmonyConfig( + chainName: string, + networkName: string +): Config { + const network = networkName; + return { + network: { + name: network, + chainID: ConfigManagerV2.getInstance().get( + chainName + '.networks.' + network + '.chainID' + ), + nodeURL: ConfigManagerV2.getInstance().get( + chainName + '.networks.' + network + '.nodeURL' + ), + tokenListType: ConfigManagerV2.getInstance().get( + chainName + '.networks.' + network + '.tokenListType' + ), + tokenListSource: ConfigManagerV2.getInstance().get( + chainName + '.networks.' + network + '.tokenListSource' + ), + }, + nativeCurrencySymbol: ConfigManagerV2.getInstance().get( + chainName + '.networks.' + network + '.nativeCurrencySymbol' + ), + autoGasPrice: ConfigManagerV2.getInstance().get( + chainName + '.autoGasPrice' + ), + manualGasPrice: ConfigManagerV2.getInstance().get( + chainName + '.manualGasPrice' + ), + gasPricerefreshTime: ConfigManagerV2.getInstance().get( + chainName + '.gasPricerefreshTime' + ), + gasLimitTransaction: ConfigManagerV2.getInstance().get( + chainName + '.gasLimitTransaction' + ), + }; +} diff --git a/src/chains/harmony/harmony.ts b/src/chains/harmony/harmony.ts new file mode 100644 index 0000000000..df331d5dc1 --- /dev/null +++ b/src/chains/harmony/harmony.ts @@ -0,0 +1,169 @@ +import abi from '../../services/ethereum.abi.json'; +import axios, { AxiosRequestConfig } from 'axios'; +import { logger } from '../../services/logger'; +import { Contract, Transaction, Wallet } from 'ethers'; +import { EthereumBase } from '../../services/ethereum-base'; +import { getHarmonyConfig } from './harmony.config'; +import { Provider } from '@ethersproject/abstract-provider'; +import { Ethereumish } from '../../services/common-interfaces'; +import { ConfigManagerV2 } from '../../services/config-manager-v2'; + +export class Harmony extends EthereumBase implements Ethereumish { + private static _instances: { [name: string]: Harmony }; + private _gasPrice: number; + private _gasPriceLastUpdated: Date | null; + private _nativeTokenSymbol: string; + private _chain: string; + private _requestCount: number; + private _metricsLogInterval: number; + + private constructor(network: string) { + const config = getHarmonyConfig('harmony', network); + super( + 'harmony', + config.network.chainID, + config.network.nodeURL, + config.network.tokenListSource, + config.network.tokenListType, + config.manualGasPrice, + config.gasLimitTransaction, + ConfigManagerV2.getInstance().get('database.nonceDbPath'), + ConfigManagerV2.getInstance().get('database.transactionDbPath') + ); + this._chain = network; + this._nativeTokenSymbol = config.nativeCurrencySymbol; + this._gasPrice = config.manualGasPrice; + this._gasPriceLastUpdated = null; + + this.updateGasPrice(); + + this._requestCount = 0; + this._metricsLogInterval = 300000; // 5 minutes + + this.onDebugMessage(this.requestCounter.bind(this)); + setInterval(this.metricLogger.bind(this), this.metricsLogInterval); + } + + public static getInstance(network: string): Harmony { + if (Harmony._instances === undefined) { + Harmony._instances = {}; + } + if (!(network in Harmony._instances)) { + Harmony._instances[network] = new Harmony(network); + } + + return Harmony._instances[network]; + } + + public static getConnectedInstances(): { [name: string]: Harmony } { + return Harmony._instances; + } + + public requestCounter(msg: any): void { + if (msg.action === 'request') this._requestCount += 1; + } + + public metricLogger(): void { + logger.info( + this.requestCount + + ' request(s) sent in last ' + + this.metricsLogInterval / 1000 + + ' seconds.' + ); + this._requestCount = 0; // reset + } + + // getters + public get gasPrice(): number { + return this._gasPrice; + } + + public get chain(): string { + return this._chain; + } + + public get nativeTokenSymbol(): string { + return this._nativeTokenSymbol; + } + + public get gasPriceLastDated(): Date | null { + return this._gasPriceLastUpdated; + } + + public get requestCount(): number { + return this._requestCount; + } + + public get metricsLogInterval(): number { + return this._metricsLogInterval; + } + + async updateGasPrice(): Promise { + const harmonyConfig = getHarmonyConfig('harmony', this._chain); + + if (harmonyConfig.autoGasPrice) { + const jsonData = JSON.stringify({ + jsonrpc: '2.0', + id: 1, + method: 'hmyv2_gasPrice', + params: [], + }); + + const config: AxiosRequestConfig = { + method: 'post', + url: harmonyConfig.network.nodeURL, + headers: { + 'Content-Type': 'application/json', + }, + data: jsonData, + }; + + const { data } = await axios(config); + + // divide by 1e9 to convert it to Gwei + this._gasPrice = data['result'] / 1e9; + this._gasPriceLastUpdated = new Date(); + + setTimeout( + this.updateGasPrice.bind(this), + harmonyConfig.gasPricerefreshTime * 1000 + ); + } + } + + getContract(tokenAddress: string, signerOrProvider?: Wallet | Provider) { + return new Contract(tokenAddress, abi.ERC20Abi, signerOrProvider); + } + + getSpender(reqSpender: string): string { + // TODO: add SushiswapConfig and ViperswapConfig and Defira configs (or move `approve` to AMM) + let spender: string; + if (reqSpender === 'sushiswap') { + spender = '0x1b02da8cb0d097eb8d57a175b88c7d8b47997506'; + } else if (reqSpender === 'viperswap') { + spender = '0xf012702a5f0e54015362cbca26a26fc90aa832a3'; + } else if (reqSpender === 'defikingdoms') { + spender = '0x24ad62502d1C652Cc7684081169D04896aC20f30'; + } else if (reqSpender === 'defira') { + spender = '0x3C8BF7e25EbfAaFb863256A4380A8a93490d8065'; + } else { + spender = reqSpender; + } + return spender; + } + + // cancel transaction + async cancelTx(wallet: Wallet, nonce: number): Promise { + logger.info( + 'Canceling any existing transaction(s) with nonce number ' + nonce + '.' + ); + return this.cancelTxWithGasPrice(wallet, nonce, this._gasPrice * 2); + } + + async close() { + await super.close(); + if (this._chain in Harmony._instances) { + delete Harmony._instances[this._chain]; + } + } +} diff --git a/src/chains/harmony/harmony.validators.ts b/src/chains/harmony/harmony.validators.ts new file mode 100644 index 0000000000..57f42b981d --- /dev/null +++ b/src/chains/harmony/harmony.validators.ts @@ -0,0 +1,107 @@ +import { + isNaturalNumberString, + validateTokenSymbols, + mkValidator, + mkRequestValidator, + RequestValidator, + Validator, + validateToken, + validateAmount, + validateTxHash, +} from '../../services/validators'; + +import { isValidAddress } from '@harmony-js/utils'; + +// invalid parameter errors + +export const invalidAddressError: string = + 'The address param is not a valid Ethereum private key (64 hexidecimal characters).'; + +export const invalidSpenderError: string = + 'The spender param is not a valid Ethereum public key (0x followed by 40 hexidecimal characters).'; + +export const invalidNonceError: string = + 'If nonce is included it must be a non-negative integer.'; + +export const invalidMaxFeePerGasError: string = + 'If maxFeePerGas is included it must be a string of a non-negative integer.'; + +export const invalidMaxPriorityFeePerGasError: string = + 'If maxPriorityFeePerGas is included it must be a string of a non-negative integer.'; + +// given a request, look for a key called address that is an Ethereum private key +export const validateAddress: Validator = mkValidator( + 'address', + invalidAddressError, + (val) => typeof val === 'string' && isValidAddress(val) +); + +// given a request, look for a key called spender that is 'uniswap' or an Ethereum public key +export const validateSpender: Validator = mkValidator( + 'spender', + invalidSpenderError, + (val) => + typeof val === 'string' && + (val === 'sushiswap' || + val === 'viperswap' || + val === 'defikingdoms' || + val === 'defira' || + isValidAddress(val)) +); + +export const validateNonce: Validator = mkValidator( + 'nonce', + invalidNonceError, + (val) => typeof val === 'number' && val >= 0 && Number.isInteger(val), + true +); + +export const validateMaxFeePerGas: Validator = mkValidator( + 'maxFeePerGas', + invalidMaxFeePerGasError, + (val) => typeof val === 'string' && isNaturalNumberString(val), + true +); + +export const validateMaxPriorityFeePerGas: Validator = mkValidator( + 'maxPriorityFeePerGas', + invalidMaxPriorityFeePerGasError, + (val) => typeof val === 'string' && isNaturalNumberString(val), + true +); + +// request types and corresponding validators + +export const validateNonceRequest: RequestValidator = mkRequestValidator([ + validateAddress, +]); + +export const validateAllowancesRequest: RequestValidator = mkRequestValidator([ + validateAddress, + validateSpender, + validateTokenSymbols, +]); + +export const validateBalanceRequest: RequestValidator = mkRequestValidator([ + validateAddress, + validateTokenSymbols, +]); + +export const validateApproveRequest: RequestValidator = mkRequestValidator([ + validateAddress, + validateSpender, + validateToken, + validateAmount, + validateNonce, + validateMaxFeePerGas, + validateMaxPriorityFeePerGas, +]); + +export const validatePollRequest: RequestValidator = mkRequestValidator([ + validateTxHash, +]); + +export const validateCancelRequest: RequestValidator = mkRequestValidator([ + validateNonce, + validateAddress, +]); diff --git a/src/chains/harmony/harmony_tokens_defira.json b/src/chains/harmony/harmony_tokens_defira.json new file mode 100644 index 0000000000..77b1877c1c --- /dev/null +++ b/src/chains/harmony/harmony_tokens_defira.json @@ -0,0 +1,93 @@ +{ + "name": "Defira Token List", + "logoURI": "https://sushi.com/static/media/logo.dec926df.png", + "version": { + "major": 0, + "minor": 1, + "patch": 1 + }, + "keywords": [], + "timestamp": "2022-01-30T00:00:00+00:00", + "tokens": [ + { + "chainId": 1666600000, + "name": "Staked One", + "address": "0x22D62b19b7039333ad773b7185BB61294F3AdC19", + "symbol": "stONE", + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/sushiswap/assets/master/blockchains/harmony/assets/0x22D62b19b7039333ad773b7185BB61294F3AdC19/logo.png" + }, + { + "chainId": 1666600000, + "name": "Wrapped ONE", + "address": "0xcF664087a5bB0237a0BAd6742852ec6c8d69A27a", + "symbol": "WONE", + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/sushiswap/icons/master/token/one.jpg" + }, + { + "chainId": 1666600000, + "name": "Dai Stablecoin", + "address": "0xEf977d2f931C1978Db5F6747666fa1eACB0d0339", + "symbol": "1DAI", + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/sushiswap/icons/master/token/dai.jpg" + }, + { + "chainId": 1666600000, + "name": "Tether USDT", + "address": "0x3C2B8Be99c50593081EAA2A724F0B8285F5aba8f", + "symbol": "1USDT", + "decimals": 6, + "logoURI": "https://raw.githubusercontent.com/sushiswap/icons/master/token/usdt.jpg" + }, + { + "chainId": 1666600000, + "name": "1ETH", + "address": "0x6983D1E6DEf3690C4d616b13597A09e6193EA013", + "symbol": "1ETH", + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/sushiswap/icons/master/token/eth.jpg" + }, + { + "chainId": 1666600000, + "name": "Wrapped BTC", + "address": "0x3095c7557bCb296ccc6e363DE01b760bA031F2d9", + "symbol": "1WBTC", + "decimals": 18, + "logoURI": "" + }, + { + "chainId": 1666600000, + "address": "0xdc54046c0451f9269FEe1840aeC808D36015697d", + "symbol": "1BTC", + "name": "1BTC", + "decimals": 8, + "logoURI": "https://raw.githubusercontent.com/sushiswap/assets/master/blockchains/harmony/assets/0xdc54046c0451f9269FEe1840aeC808D36015697d/logo.png" + }, + { + "chainId": 1666600000, + "address": "0xE176EBE47d621b984a73036B9DA5d834411ef734", + "symbol": "BUSD", + "name": "Binance USD", + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/sushiswap/icons/master/token/busd.jpg" + }, + { + "chainId": 1666600000, + "address": "0x2A719aF848bf365489E548BE5edbEC1D65858e59", + "symbol": "FIRA", + "name": "Fira", + "decimals": 18, + "logoURI": "https://d2w69usg89gc0q.cloudfront.net/tokens/FIRA.png" + }, + { + "chainId": 1666600000, + "address": "0xCf1709Ad76A79d5a60210F23e81cE2460542A836", + "symbol": "TRANQ", + "name": "Tranquil", + "decimals": 18, + "logoURI": "https://d2w69usg89gc0q.cloudfront.net/tokens/TRANQ.png" + } + ] +} diff --git a/src/chains/harmony/harmony_tokens_defira_testnet.json b/src/chains/harmony/harmony_tokens_defira_testnet.json new file mode 100644 index 0000000000..98b2287e63 --- /dev/null +++ b/src/chains/harmony/harmony_tokens_defira_testnet.json @@ -0,0 +1,29 @@ +{ + "name": "Defira Token List", + "logoURI": "https://sushi.com/static/media/logo.dec926df.png", + "version": { + "major": 0, + "minor": 1, + "patch": 1 + }, + "keywords": [], + "timestamp": "2022-01-30T00:00:00+00:00", + "tokens": [ + { + "chainId": 1666700000, + "name": "OneETH", + "address": "0x1E120B3b4aF96e7F394ECAF84375b1C661830013", + "symbol": "1ETH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/279/small/ethereum.png" + }, + { + "chainId": 1666700000, + "name": "Wrapped ONE", + "address": "0x7466d7d0C21Fa05F32F5a0Fa27e12bdC06348Ce2", + "symbol": "WONE74", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4344/small/Y88JAze.png" + } + ] +} diff --git a/src/chains/harmony/harmony_tokens_sushiswap.json b/src/chains/harmony/harmony_tokens_sushiswap.json new file mode 100644 index 0000000000..b13cb651be --- /dev/null +++ b/src/chains/harmony/harmony_tokens_sushiswap.json @@ -0,0 +1,1050 @@ +{ + "name": "Sushiswap Token List", + "logoURI": "https://sushi.com/static/media/logo.dec926df.png", + "version": { + "major": 0, + "minor": 1, + "patch": 1 + }, + "keywords": [], + "timestamp": "2022-01-30T00:00:00+00:00", + "tokens": [ + { + "chainId": 1666600000, + "address": "0x6e1bC01Cc52D165B357c42042cF608159A2B81c1", + "symbol": "DFKAMBRTFY", + "name": "Ambertaffy", + "decimals": 0, + "logoURI": "https://dfk-hv.b-cdn.net/art-assets/items/ambertaffy.png", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x1771dEc8D9A29F30d82443dE0a69e7b6824e2F53", + "symbol": "DFKANTBLND", + "name": "Anti-blinding Potion", + "decimals": 0, + "logoURI": "https://defi-kingdoms.b-cdn.net/art-assets/items/blindness-potion.png", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0xA1f8b0E88c51a45E152934686270DDF4E3356278", + "symbol": "DFKANTPSN", + "name": "Anti-poison Potion", + "decimals": 0, + "logoURI": "https://defi-kingdoms.b-cdn.net/art-assets/items/antipoison-potion.png", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x27dC6AaaD95580EdF25F8B9676f1B984e09e413d", + "symbol": "DFKATONECR", + "name": "Atonement Crystal", + "decimals": 0, + "logoURI": "https://dfk-hv.b-cdn.net/art-assets/items/atonement-crystal-greater.gif", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x78aED65A2Cc40C7D8B0dF1554Da60b38AD351432", + "symbol": "DFKBLOATER", + "name": "Bloater", + "decimals": 0, + "logoURI": "https://dfk-hv.b-cdn.net/art-assets/items/bloater.png", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x9678518e04Fe02FB30b55e2D0e554E26306d0892", + "symbol": "DFKBLUEEGG", + "name": "Blue Pet Egg", + "decimals": 0, + "logoURI": "https://dfk-hv.b-cdn.net/art-assets/items/pet-egg-blue.png", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0xAC5c49Ff7E813dE1947DC74bbb1720c353079ac9", + "symbol": "DFKBLUESTEM", + "name": "Blue Stem", + "decimals": 0, + "logoURI": "https://dfk-hv.b-cdn.net/art-assets/items/bluestem.png", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x68EA4640C5ce6cC0c9A1F17B7b882cB1cBEACcd7", + "symbol": "DFKDRKWD", + "name": "Darkweed", + "decimals": 0, + "logoURI": "https://dfk-hv.b-cdn.net/art-assets/items/darkweed.png", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x87361363A75c9A6303ce813D0B2656c34B68FF52", + "symbol": "DFKFHLTHPTN", + "name": "Full Health", + "decimals": 0, + "logoURI": "https://defi-kingdoms.b-cdn.net/art-assets/items/health-potion-large.png", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0xDc2C698aF26Ff935cD1c50Eef3a4A933C62AF18D", + "symbol": "DFKFMNPTN", + "name": "Full Mana Potion", + "decimals": 0, + "logoURI": "https://defi-kingdoms.b-cdn.net/art-assets/items/mana-potion-large.png", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x17f3B5240C4A71a3BBF379710f6fA66B9b51f224", + "symbol": "DFKGATONECR", + "name": "Greater Atonement Crystal", + "decimals": 0, + "logoURI": "https://dfk-hv.b-cdn.net/art-assets/items/atonement-crystal-greater.gif", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x600541aD6Ce0a8b5dae68f086D46361534D20E80", + "symbol": "DFKGLDVN", + "name": "Goldvein", + "decimals": 0, + "logoURI": "https://dfk-hv.b-cdn.net/art-assets/items/goldvein.png", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x3a4EDcf3312f44EF027acfd8c21382a5259936e7", + "symbol": "DFKGOLD", + "name": "Gold", + "decimals": 3, + "logoURI": "https://dfk-hv.b-cdn.net/art-assets/items/gold-bag.png", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x9edb3Da18be4B03857f3d39F83e5C6AAD67bc148", + "symbol": "DFKGOLDEGG", + "name": "Golden Egg", + "decimals": 0, + "logoURI": "https://dfk-hv.b-cdn.net/art-assets/items/pet-egg-golden.gif", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x6d605303e9Ac53C59A3Da1ecE36C9660c7A71da5", + "symbol": "DFKGREENEGG", + "name": "Green Pet Egg", + "decimals": 0, + "logoURI": "https://dfk-hv.b-cdn.net/art-assets/items/pet-egg-green.png", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x95d02C1Dc58F05A015275eB49E107137D9Ee81Dc", + "symbol": "DFKGREGG", + "name": "Grey Pet Egg", + "decimals": 0, + "logoURI": "https://dfk-hv.b-cdn.net/art-assets/items/pet-egg-grey.png", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x2789F04d22a845dC854145d3c289240517f2BcF0", + "symbol": "DFKHLTHPTN", + "name": "Health", + "decimals": 0, + "logoURI": "https://dfk-hv.b-cdn.net/art-assets/items/health-potion.png", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0xe4Cfee5bF05CeF3418DA74CFB89727D8E4fEE9FA", + "symbol": "DFKIRONSCALE", + "name": "Ironscale", + "decimals": 0, + "logoURI": "https://dfk-hv.b-cdn.net/art-assets/items/ironscale.png", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x8Bf4A0888451C6b5412bCaD3D9dA3DCf5c6CA7BE", + "symbol": "DFKLANTERNEYE", + "name": "Lantern-Eye", + "decimals": 0, + "logoURI": "https://dfk-hv.b-cdn.net/art-assets/items/lanterneye.png", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x1f3F655079b70190cb79cE5bc5AE5F19dAf2A6Cf", + "symbol": "DFKLATONECR", + "name": "Lesser Atonement Crystal", + "decimals": 0, + "logoURI": "https://dfk-hv.b-cdn.net/art-assets/items/atonement-crystal-lesser.gif", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x7e120334D9AFFc0982719A4eacC045F78BF41C68", + "symbol": "DFKMGCRSPTN", + "name": "Magic Resistance Potion", + "decimals": 0, + "logoURI": "https://defi-kingdoms.b-cdn.net/art-assets/items/magic-resist-potion.png", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0xc0214b37FCD01511E6283Af5423CF24C96BB9808", + "symbol": "DFKMILKWEED", + "name": "Milk Weed", + "decimals": 0, + "logoURI": "https://dfk-hv.b-cdn.net/art-assets/items/milkweed.png", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x19b020001AB0C12Ffa93e1FDeF90c7C37C8C71ef", + "symbol": "DFKMNPTN", + "name": "Mana Vial", + "decimals": 0, + "logoURI": "https://defi-kingdoms.b-cdn.net/art-assets/items/mana-potion.png", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x6B10Ad6E3b99090De20bF9f95F960addC35eF3E2", + "symbol": "DFKRCKRT", + "name": "Rockroot", + "decimals": 0, + "logoURI": "https://dfk-hv.b-cdn.net/art-assets/items/rockroot.png", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x094243DfABfBB3E6F71814618ace53f07362a84c", + "symbol": "DFKRDLF", + "name": "Redleaf", + "decimals": 0, + "logoURI": "https://dfk-hv.b-cdn.net/art-assets/items/redleaf.png", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0xc5891912718ccFFcC9732D1942cCD98d5934C2e1", + "symbol": "DFKREDGILL", + "name": "Redgill", + "decimals": 0, + "logoURI": "https://dfk-hv.b-cdn.net/art-assets/items/redgill.png", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x043F9bd9Bb17dFc90dE3D416422695Dd8fa44486", + "symbol": "DFKRGWD", + "name": "Ragweed", + "decimals": 0, + "logoURI": "https://dfk-hv.b-cdn.net/art-assets/items/ragweed.png", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0xb80A07e13240C31ec6dc0B5D72Af79d461dA3A70", + "symbol": "DFKSAILFISH", + "name": "Sailfish", + "decimals": 0, + "logoURI": "https://dfk-hv.b-cdn.net/art-assets/items/sailfish.png", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x372CaF681353758f985597A35266f7b330a2A44D", + "symbol": "DFKSHIMMERSKIN", + "name": "ShimmerSkin", + "decimals": 0, + "logoURI": "https://dfk-hv.b-cdn.net/art-assets/items/shimmerskin.png", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x66F5BfD910cd83d3766c4B39d13730C911b2D286", + "symbol": "DFKSHVAS", + "name": "Shvas Rune", + "decimals": 0, + "logoURI": "https://dfk-hv.b-cdn.net/art-assets/items/shvas-rune.gif", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x2493cfDAcc0f9c07240B5B1C4BE08c62b8eEff69", + "symbol": "DFKSILVERFIN", + "name": "Silverfin", + "decimals": 0, + "logoURI": "https://dfk-hv.b-cdn.net/art-assets/items/silverfin.png", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x19B9F05cdE7A61ab7aae5b0ed91aA62FF51CF881", + "symbol": "DFKSPIDRFRT", + "name": "Spider Fruit", + "decimals": 0, + "logoURI": "https://dfk-hv.b-cdn.net/art-assets/items/spider-fruit.png", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x959ba19508827d1ed2333B1b503Bd5ab006C710e", + "symbol": "DFKSTMNPTN", + "name": "Stamina Vial", + "decimals": 0, + "logoURI": "https://defi-kingdoms.b-cdn.net/art-assets/items/stamina-potion.png", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0xCdfFe898E687E941b124dfB7d24983266492eF1d", + "symbol": "DFKSWFTHSL", + "name": "Swift-Thistle", + "decimals": 0, + "logoURI": "https://dfk-hv.b-cdn.net/art-assets/items/swift-thistle.png", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x872dD1595544CE22ad1e0174449C7ECE6F0bb01b", + "symbol": "DFKSWFTPTN", + "name": "Swiftness Potion", + "decimals": 0, + "logoURI": "https://defi-kingdoms.b-cdn.net/art-assets/items/swiftness-potion.png", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x24eA0D436d3c2602fbfEfBe6a16bBc304C963D04", + "symbol": "DFKTEARS", + "name": "Gaia's Tears", + "decimals": 0, + "logoURI": "https://dfk-hv.b-cdn.net/art-assets/items/gaias-tear.png", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0xFb03c364969a0bB572Ce62b8Cd616A7DDEb4c09A", + "symbol": "DFKTFNSPTN", + "name": "Toughness Potion", + "decimals": 0, + "logoURI": "https://defi-kingdoms.b-cdn.net/art-assets/items/toughness-potion.png", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x3dB1fd0Ad479A46216919758144FD15A21C3e93c", + "symbol": "DFKYELLOWEGG", + "name": "Yellow Pet Egg", + "decimals": 0, + "logoURI": "https://dfk-hv.b-cdn.net/art-assets/items/pet-egg-yellow.png", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x72Cb10C6bfA5624dD07Ef608027E366bd690048F", + "symbol": "JEWEL", + "name": "Jewel", + "decimals": 18, + "logoURI": "https://beta.defikingdoms.com/static/media/jewel-logo.88468185.png", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x8F655142104478724bbC72664042EA09EBbF7B38", + "symbol": "DFKMOKSHA", + "name": "Moksha Rune", + "decimals": 0, + "logoURI": "https://defi-kingdoms.b-cdn.net/art-assets/items/moksha-rune.gif", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x45B53E55b5c0A10fdd4fE2079a562d5702F3A033", + "symbol": "DFKCHSCR", + "name": "Chaos Crystal", + "decimals": 0, + "logoURI": "https://defi-kingdoms.b-cdn.net/art-assets/items/chaos-crystal.gif", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0xa509c34306AdF6168268A213Cc47D336630bf101", + "symbol": "DFKLCHSCR", + "name": "Lesser Chaos Crystal", + "decimals": 0, + "logoURI": "https://defi-kingdoms.b-cdn.net/art-assets/items/chaos-crystal-lesser.gif", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x3633F956410163A98D58D2D928B38C64A488654e", + "symbol": "DFKCHSST", + "name": "Chaos Stone", + "decimals": 0, + "logoURI": "https://defi-kingdoms.b-cdn.net/art-assets/items/chaos-stone.gif", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x6D4f4bC32df561a35C05866051CbE9C92759Da29", + "symbol": "DFKLCHSST", + "name": "Lesser Chaos Stone", + "decimals": 0, + "logoURI": "https://defi-kingdoms.b-cdn.net/art-assets/items/chaos-stone-lesser.gif", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0xc6A58eFc320A7aFDB1cD662eaf6de10Ee17103F2", + "symbol": "DFKFINCR", + "name": "Finesse Crystal", + "decimals": 0, + "logoURI": "https://defi-kingdoms.b-cdn.net/art-assets/items/finesse-crystal.gif", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x39927A2CEE5580d63A163bc402946C7600300373", + "symbol": "DFKLFINCR", + "name": "Lesser Finesse Crystal", + "decimals": 0, + "logoURI": "https://defi-kingdoms.b-cdn.net/art-assets/items/finesse-crystal-lesser.gif", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0xD0B689Cb5DE0c15792Aa456C89D64038C1F2EedC", + "symbol": "DFKFINST", + "name": "Finesse Stone", + "decimals": 0, + "logoURI": "https://defi-kingdoms.b-cdn.net/art-assets/items/finesse-stone.gif", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0xbb5614D466b77d50DdEd994892DFe6F0ACA4eEbb", + "symbol": "DFKLFINST", + "name": "Lesser Finesse Stone", + "decimals": 0, + "logoURI": "https://defi-kingdoms.b-cdn.net/art-assets/items/finesse-stone-lesser.gif", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x603919AEB55EB13F9CDE94274fC54ab2Bd2DecE7", + "symbol": "DFKFRTICR", + "name": "Fortitude Crystal", + "decimals": 0, + "logoURI": "https://defi-kingdoms.b-cdn.net/art-assets/items/fortitude-crystal.gif", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x3017609B9A59B77B708D783835B6fF94a3D9E337", + "symbol": "DFKLFRTICR", + "name": "Lesser Fortitude Crystal", + "decimals": 0, + "logoURI": "https://defi-kingdoms.b-cdn.net/art-assets/items/fortitude-crystal-lesser.gif", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x17Fa96ba9d9C29e4B96d29A7e89a4E7B240E3343", + "symbol": "DFKFRTIST", + "name": "Fortitude Stone", + "decimals": 0, + "logoURI": "https://defi-kingdoms.b-cdn.net/art-assets/items/fortitude-stone.gif", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x1f57eb682377f5Ad6276b9315412920BdF9530f6", + "symbol": "DFKLFRTIST", + "name": "Lesser Fortitude Stone", + "decimals": 0, + "logoURI": "https://defi-kingdoms.b-cdn.net/art-assets/items/fortitude-stone-lesser.gif", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x6D777C64f0320d8A5b31BE0FdeB694007Fc3ed45", + "symbol": "DFKFRTUCR", + "name": "Fortune Crystal", + "decimals": 0, + "logoURI": "https://defi-kingdoms.b-cdn.net/art-assets/items/fortune-crystal.gif", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x13AF184aEA970Fe79E3BB7A1B0B156B195fB1f40", + "symbol": "DFKLFRTUCR", + "name": "Lesser Fortune Crystal", + "decimals": 0, + "logoURI": "https://defi-kingdoms.b-cdn.net/art-assets/items/fortune-crystal-lesser.gif", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x5da2EffE9857DcEcB786E13566Ff37B92e1E6862", + "symbol": "DFKFRTUST", + "name": "Fortune Stone", + "decimals": 0, + "logoURI": "https://defi-kingdoms.b-cdn.net/art-assets/items/fortune-stone.gif", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x6D6eA1D2Dc1Df6Eaa2153f212d25Cf92d13Be628", + "symbol": "DFKLFRTUST", + "name": "Lesser Fortune Stone", + "decimals": 0, + "logoURI": "https://defi-kingdoms.b-cdn.net/art-assets/items/fortune-stone-lesser.gif", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x117E60775584CdfA4f414E22b075F31cC9c3207C", + "symbol": "DFKINSCR", + "name": "Insight Crystal", + "decimals": 0, + "logoURI": "https://defi-kingdoms.b-cdn.net/art-assets/items/insight-crystal.gif", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0xc63b76f710e9973b8989678eb16234CfADc8D9DB", + "symbol": "DFKLINSCR", + "name": "Lesser Insight Crystal", + "decimals": 0, + "logoURI": "https://defi-kingdoms.b-cdn.net/art-assets/items/insight-crystal-lesser.gif", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x9D71Bb9C781FC2eBdD3d6cb709438e3c71200149", + "symbol": "DFKINSST", + "name": "Insight Stone", + "decimals": 0, + "logoURI": "https://defi-kingdoms.b-cdn.net/art-assets/items/insight-stone.gif", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x762b98B3758d0A5Eb95B3E4A1E2914Ce0A80D99c", + "symbol": "DFKLINSST", + "name": "Lesser Insight Stone", + "decimals": 0, + "logoURI": "https://defi-kingdoms.b-cdn.net/art-assets/items/insight-stone-lesser.gif", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0xb368f69bE6eDa74700763672AEB2Ae63f3d20AE6", + "symbol": "DFKMGHTCR", + "name": "Might Crystal", + "decimals": 0, + "logoURI": "https://defi-kingdoms.b-cdn.net/art-assets/items/might-crystal.gif", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0xaB464901AFBc61bAC440a97Fa568aC42885Da58B", + "symbol": "DFKLMGHTCR", + "name": "Lesser Might Crystal", + "decimals": 0, + "logoURI": "https://defi-kingdoms.b-cdn.net/art-assets/items/might-crystal-lesser.gif", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0xE7F6ea1cE7BbEbC9F2Cf080010dd938d2D8D8B1b", + "symbol": "DFKMGHTST", + "name": "Might Stone", + "decimals": 0, + "logoURI": "https://defi-kingdoms.b-cdn.net/art-assets/items/might-stone.gif", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0xe4E7C0c693d8A7FC159776a993495378705464A7", + "symbol": "DFKLMGHTST", + "name": "Lesser Might Stone", + "decimals": 0, + "logoURI": "https://defi-kingdoms.b-cdn.net/art-assets/items/might-stone-lesser.gif", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x5d7f20e3B0f1406Bf038175218eA7e9B4838908c", + "symbol": "DFKSWFTCR", + "name": "Swiftness Crystal", + "decimals": 0, + "logoURI": "https://defi-kingdoms.b-cdn.net/art-assets/items/swiftness-crystal.gif", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0xf5c26F2F34E9245C3A9ea0B0e7Ea7B33E6404Da0", + "symbol": "DFKLSWFTCR", + "name": "Lesser Swiftness Crystal", + "decimals": 0, + "logoURI": "https://defi-kingdoms.b-cdn.net/art-assets/items/swiftness-crystal-lesser.gif", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x08f362517aD4119d93bBCd20825c2E4119abB495", + "symbol": "DFKSWFTST", + "name": "Swiftness Stone", + "decimals": 0, + "logoURI": "https://defi-kingdoms.b-cdn.net/art-assets/items/swiftness-stone.gif", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0xd9A8abC0Ce1ADC23F1c1813986c9a9C21C9e7510", + "symbol": "DFKLSWFTST", + "name": "Lesser Swiftness Stone", + "decimals": 0, + "logoURI": "https://defi-kingdoms.b-cdn.net/art-assets/items/swiftness-stone-lesser.gif", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0xBbA50bD111DC586Fd1f2B1476B6eC505800A3FD0", + "symbol": "DFKVGRCR", + "name": "Vigor Crystal", + "decimals": 0, + "logoURI": "https://defi-kingdoms.b-cdn.net/art-assets/items/vigor-crystal.gif", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x0d8403E47445DB9E316E36F476dacD5827220Bdd", + "symbol": "DFKLVGRCR", + "name": "Lesser Vigor Crystal", + "decimals": 0, + "logoURI": "https://defi-kingdoms.b-cdn.net/art-assets/items/vigor-crystal-lesser.gif", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x9df75917aC9747B4A70fa033E4b0182d85B62857", + "symbol": "DFKVGRST", + "name": "Vigor Stone", + "decimals": 0, + "logoURI": "https://defi-kingdoms.b-cdn.net/art-assets/items/vigor-stone.gif", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0xB00CbF5Cd5e7b321436C2D3d8078773522D2F073", + "symbol": "DFKLVGRST", + "name": "Lesser Vigor Stone", + "decimals": 0, + "logoURI": "https://defi-kingdoms.b-cdn.net/art-assets/items/vigor-stone-lesser.gif", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x3619fc2386FbBC19DDC39d29A72457e758CFAD69", + "symbol": "DFKWITCR", + "name": "Wit Crystal", + "decimals": 0, + "logoURI": "https://defi-kingdoms.b-cdn.net/art-assets/items/wit-crystal.gif", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x17ff2016c9ecCFBF4Fc4DA6EF95Fe646D2c9104F", + "symbol": "DFKLWITCR", + "name": "Lesser Wit Crystal", + "decimals": 0, + "logoURI": "https://defi-kingdoms.b-cdn.net/art-assets/items/wit-crystal-lesser.gif", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x939Ea05C81aAC48F7C10BdB08615082B82C80c63", + "symbol": "DFKWITST", + "name": "Wit Stone", + "decimals": 0, + "logoURI": "https://defi-kingdoms.b-cdn.net/art-assets/items/wit-stone.gif", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x4Ff7A020ec1100D36d5C81F3D4815F2e9C704b59", + "symbol": "DFKLWITST", + "name": "Lesser Wit Stone", + "decimals": 0, + "logoURI": "https://defi-kingdoms.b-cdn.net/art-assets/items/wit-stone-lesser.gif", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0xA9cE83507D872C5e1273E745aBcfDa849DAA654F", + "symbol": "xJEWEL", + "name": "xJewels", + "decimals": 18, + "logoURI": "https://beta.defikingdoms.com/static/media/jewel-logo.88468185.png", + "tags": ["harmony"] + }, + { + "chainId": 1666600000, + "address": "0x58f1b044d8308812881a1433d9Bbeff99975e70C", + "symbol": "1INCH", + "name": "1INCH Token", + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/sushiswap/icons/master/token/1inch.jpg" + }, + { + "chainId": 1666600000, + "address": "0xcF323Aad9E522B93F11c352CaA519Ad0E14eB40F", + "symbol": "AAVE", + "name": "Aave Token", + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/sushiswap/icons/master/token/aave.jpg" + }, + { + "chainId": 1666600000, + "address": "0x14A7B318fED66FfDcc80C1517C172c13852865De", + "symbol": "AXS", + "name": "Axie Infinity Shard", + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/sushiswap/assets/master/blockchains/harmony/assets/0x14A7B318fED66FfDcc80C1517C172c13852865De/logo.png" + }, + { + "chainId": 1666600000, + "address": "0x3095c7557bCb296ccc6e363DE01b760bA031F2d9", + "symbol": "BTC", + "name": "Bitcoin", + "decimals": 8, + "logoURI": "https://raw.githubusercontent.com/sushiswap/icons/master/token/btc.jpg" + }, + { + "chainId": 1666600000, + "address": "0xE176EBE47d621b984a73036B9DA5d834411ef734", + "symbol": "BUSD", + "name": "Binance USD", + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/sushiswap/icons/master/token/busd.jpg" + }, + { + "chainId": 1666600000, + "address": "0xEf977d2f931C1978Db5F6747666fa1eACB0d0339", + "symbol": "DAI", + "name": "Dai Stablecoin", + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/sushiswap/icons/master/token/dai.jpg" + }, + { + "chainId": 1666600000, + "address": "0x6983D1E6DEf3690C4d616b13597A09e6193EA013", + "symbol": "ETH", + "name": "Ether", + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/sushiswap/icons/master/token/eth.jpg" + }, + { + "chainId": 1666600000, + "address": "0x2F459Dd7CBcC9D8323621f6Fb430Cd0555411E7B", + "symbol": "JENN", + "name": "TokenJenny", + "decimals": 18, + "logoURI": "https://d1xrz6ki9z98vb.cloudfront.net/venomswap/tokens/JENN.png" + }, + { + "chainId": 1666600000, + "address": "0x218532a12a389a4a92fC0C5Fb22901D1c19198aA", + "symbol": "LINK", + "name": "ChainLink Token", + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/sushiswap/icons/master/token/link.jpg" + }, + { + "chainId": 1666600000, + "address": "0x7d0546dBb1Dca8108d99Aa389A8e9Ce0C40B2370", + "symbol": "LMA", + "name": "LMA-Art-Gallery", + "decimals": 18, + "logoURI": "https://swoop-exchange.s3-us-west-1.amazonaws.com/tokens/LMA.png" + }, + { + "chainId": 1666600000, + "address": "0x301259f392B551CA8c592C9f676FCD2f9A0A84C5", + "symbol": "MATIC", + "name": "Matic Token", + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/sushiswap/icons/master/token/polygon.jpg" + }, + { + "chainId": 1666600000, + "address": "0x7b9c523d59AeFd362247Bd5601A89722e3774dD2", + "symbol": "SNX", + "name": "Synthetix Network Token", + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/sushiswap/icons/master/token/snx.jpg" + }, + { + "chainId": 1666600000, + "address": "0xBEC775Cb42AbFa4288dE81F387a9b1A3c4Bc552A", + "symbol": "SUSHI", + "name": "Sushi Token", + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/sushiswap/icons/master/token/sushi.jpg" + }, + { + "chainId": 1666600000, + "address": "0x90D81749da8867962c760414C1C25ec926E889b6", + "symbol": "UNI", + "name": "Uniswap", + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/sushiswap/icons/master/token/uni.jpg" + }, + { + "chainId": 1666600000, + "address": "0x985458E523dB3d53125813eD68c274899e9DfAb4", + "symbol": "USDC", + "name": "USD Coin", + "decimals": 6, + "logoURI": "https://raw.githubusercontent.com/sushiswap/icons/master/token/usdc.jpg" + }, + { + "chainId": 1666600000, + "address": "0x3C2B8Be99c50593081EAA2A724F0B8285F5aba8f", + "symbol": "USDT", + "name": "Tether USD", + "decimals": 6, + "logoURI": "https://raw.githubusercontent.com/sushiswap/icons/master/token/usdt.jpg" + }, + { + "chainId": 1666600000, + "address": "0x224e64ec1BDce3870a6a6c777eDd450454068FEC", + "symbol": "UST", + "name": "TerraUSD", + "decimals": 18, + "logoURI": "https://github.com/sushiswap/icons/blob/master/token/ust.jpg" + }, + { + "chainId": 1666600000, + "address": "0xB8E0497018c991E86311b64EFd9D57b06aEDbBAE", + "symbol": "VINCI", + "name": "DaVinci Token", + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/sushiswap/assets/master/blockchains/harmony/assets/0xB8E0497018c991E86311b64EFd9D57b06aEDbBAE/logo.png" + }, + { + "chainId": 1666600000, + "address": "0xEa589E93Ff18b1a1F1e9BaC7EF3E86Ab62addc79", + "symbol": "VIPER", + "name": "Viper", + "decimals": 18, + "logoURI": "https://dvwecb5klcqus.cloudfront.net/venomswap/logos/venomswap-128x128.png" + }, + { + "chainId": 1666600000, + "address": "0xE7e3C4D1cFc722b45A428736845B6AfF862842a1", + "symbol": "WISE", + "name": "Wise Token", + "decimals": 18, + "logoURI": "https://d1xrz6ki9z98vb.cloudfront.net/venomswap/tokens/1WISE.png" + }, + { + "chainId": 1666600000, + "name": "Wrapped ONE", + "address": "0xcF664087a5bB0237a0BAd6742852ec6c8d69A27a", + "symbol": "WONE", + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/sushiswap/icons/master/token/one.jpg" + }, + { + "chainId": 1666600000, + "address": "0xa0dc05F84A27FcCBD341305839019aB86576bc07", + "symbol": "YFI", + "name": "yearn.finance", + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/sushiswap/icons/master/token/yfi.jpg" + }, + { + "chainId": 1666600000, + "address": "0x582617bD8Ca80d22D4432E63Fda52D74dcDCEe4c", + "symbol": "bscADA", + "name": "Cardano Token", + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/sushiswap/icons/master/token/ada.jpg" + }, + { + "chainId": 1666600000, + "address": "0x0aB43550A6915F9f67d0c454C2E90385E6497EaA", + "symbol": "bscBUSD", + "name": "BUSD Token", + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/sushiswap/icons/master/token/busd.jpg" + }, + { + "chainId": 1666600000, + "address": "0x08CB2917245BBE75C8C9c6Dc4a7B3765Dae02b31", + "symbol": "bscDOT", + "name": "Polkadot Token", + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/sushiswap/icons/master/token/dot.jpg" + }, + { + "chainId": 1666600000, + "address": "0xeB6C08ccB4421b6088e581ce04fcFBed15893aC3", + "symbol": "FRAX", + "name": "Frax", + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/sushiswap/assets/master/blockchains/harmony/assets/0xeB6C08ccB4421b6088e581ce04fcFBed15893aC3/logo.png" + }, + { + "chainId": 1666600000, + "address": "0x775d7816afbEf935ea9c21a3aC9972F269A39004", + "symbol": "FXS", + "name": "Frax Share", + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/sushiswap/assets/master/blockchains/harmony/assets/0x775d7816afbEf935ea9c21a3aC9972F269A39004/logo.png" + }, + { + "chainId": 1666600000, + "address": "0x63cf309500d8be0B9fDB8F1fb66C821236c0438c", + "symbol": "YGG", + "name": "Yield Guild Games Token", + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/sushiswap/assets/master/blockchains/harmony/assets/0x63cf309500d8be0B9fDB8F1fb66C821236c0438c/logo.png" + }, + { + "chainId": 1666600000, + "address": "0x95CE547D730519A90dEF30d647F37D9E5359B6Ae", + "symbol": "LUNA", + "name": "Wrapped LUNA Token", + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/sushiswap/assets/master/blockchains/harmony/assets/0x95CE547D730519A90dEF30d647F37D9E5359B6Ae/logo.png" + }, + { + "chainId": 1666600000, + "address": "0x40d2f81bD135B5282CB2aA18F19cF7098079D012", + "symbol": "IKURA", + "name": "Ikura", + "decimals": 9, + "logoURI": "https://raw.githubusercontent.com/sushiswap/assets/master/blockchains/harmony/assets/0x40d2f81bD135B5282CB2aA18F19cF7098079D012/logo.png" + }, + { + "chainId": 1666600000, + "address": "0x892D81221484F690C0a97d3DD18B9144A3ECDFB7", + "symbol": "MAGIC", + "name": "Magic", + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/sushiswap/assets/master/blockchains/harmony/assets/0x892D81221484F690C0a97d3DD18B9144A3ECDFB7/logo.png" + }, + { + "chainId": 1666600000, + "address": "0x0159ED2E06DDCD46a25E74eb8e159Ce666B28687", + "symbol": "FOX", + "name": "FarmersOnly Token2", + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/sushiswap/assets/master/blockchains/harmony/assets/0x0159ED2E06DDCD46a25E74eb8e159Ce666B28687/logo.png" + }, + { + "chainId": 1666600000, + "address": "0xCf1709Ad76A79d5a60210F23e81cE2460542A836", + "symbol": "TRANQ", + "name": "Tranquil", + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/sushiswap/assets/master/blockchains/harmony/assets/0xCf1709Ad76A79d5a60210F23e81cE2460542A836/logo.png" + }, + { + "chainId": 1666600000, + "address": "0x1b2bc2683F85bFb9c4C90e8322d62A20B97cF87D", + "symbol": "MM", + "name": "Million", + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/sushiswap/assets/master/blockchains/harmony/assets/0x1b2bc2683F85bFb9c4C90e8322d62A20B97cF87D/logo.png" + }, + { + "chainId": 1666600000, + "address": "0x6aB6d61428fde76768D7b45D8BFeec19c6eF91A8", + "symbol": "BIFI", + "name": "Beefy Finance", + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/sushiswap/assets/master/blockchains/harmony/assets/0x6aB6d61428fde76768D7b45D8BFeec19c6eF91A8/logo.png" + }, + { + "chainId": 1666600000, + "address": "0xdc54046c0451f9269FEe1840aeC808D36015697d", + "symbol": "1BTC", + "name": "1BTC", + "decimals": 8, + "logoURI": "https://raw.githubusercontent.com/sushiswap/assets/master/blockchains/harmony/assets/0xdc54046c0451f9269FEe1840aeC808D36015697d/logo.png" + }, + { + "chainId": 1666600000, + "address": "0x947394294F75D7502977AC6813FD99f77C2931ec", + "symbol": "ODAO", + "name": "ODAO", + "decimals": 9, + "logoURI": "https://raw.githubusercontent.com/sushiswap/assets/master/blockchains/harmony/assets/0x947394294F75D7502977AC6813FD99f77C2931ec/logo.png" + }, + { + "chainId": 1666600000, + "address": "0x01A4b054110d57069c1658AFBC46730529A3E326", + "symbol": "OpenX", + "name": "OpenSwap", + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/sushiswap/assets/master/blockchains/harmony/assets/0x01A4b054110d57069c1658AFBC46730529A3E326/logo.png" + }, + { + "chainId": 1666600000, + "address": "0x0D625029E21540aBdfAFa3BFC6FD44fB4e0A66d0", + "name": "ColonyToken", + "symbol": "CLNY", + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/sushiswap/assets/master/blockchains/harmony/assets/0x0D625029E21540aBdfAFa3BFC6FD44fB4e0A66d0/logo.png" + }, + { + "chainId": 1666600000, + "address": "0x10010078a54396F62c96dF8532dc2B4847d47ED3", + "name": "Hundred Finance", + "symbol": "HND", + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/sushiswap/assets/master/blockchains/harmony/assets/0x10010078a54396F62c96dF8532dc2B4847d47ED3/logo.png" + }, + { + "chainId": 1666600000, + "address": "0xBbD83eF0c9D347C85e60F1b5D2c58796dBE1bA0d", + "name": "Cheese", + "symbol": "CHEEZ", + "decimals": 9, + "logoURI": "https://raw.githubusercontent.com/sushiswap/assets/master/blockchains/harmony/assets/0xBbD83eF0c9D347C85e60F1b5D2c58796dBE1bA0d/logo.png" + }, + { + "chainId": 1666600000, + "address": "0x22D62b19b7039333ad773b7185BB61294F3AdC19", + "name": "Staked One", + "symbol": "stONE", + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/sushiswap/assets/master/blockchains/harmony/assets/0x22D62b19b7039333ad773b7185BB61294F3AdC19/logo.png" + }, + { + "chainId": 1666600000, + "address": "0x2A719aF848bf365489E548BE5edbEC1D65858e59", + "symbol": "FIRA", + "name": "Fira", + "decimals": 18, + "logoURI": "https://d2w69usg89gc0q.cloudfront.net/tokens/FIRA.png" + } + ] +} diff --git a/src/chains/harmony/harmony_tokens_sushiswap_testnet.json b/src/chains/harmony/harmony_tokens_sushiswap_testnet.json new file mode 100644 index 0000000000..e9658bd80e --- /dev/null +++ b/src/chains/harmony/harmony_tokens_sushiswap_testnet.json @@ -0,0 +1,70 @@ +{ + "name": "Sushiswap Testnet Token List", + "logoURI": "https://sushi.com/static/media/logo.dec926df.png", + "version": { + "major": 0, + "minor": 1, + "patch": 1 + }, + "keywords": [], + "timestamp": "2022-01-30T00:00:00+00:00", + "tokens": [ + { + "chainId": 1666700000, + "address": "0x63882d0438AdA0dD76ed2E6B7C2D53A55284A557", + "symbol": "JEWEL", + "name": "Jewel", + "decimals": 18, + "logoURI": "https://beta.defikingdoms.com/static/media/jewel-logo.88468185.png", + "tags": ["harmony testnet"] + }, + { + "name": "Wrapped ONE", + "address": "0x7466d7d0C21Fa05F32F5a0Fa27e12bdC06348Ce2", + "symbol": "WONE74", + "decimals": 18, + "chainId": 1666700000, + "logoURI": "https://assets.coingecko.com/coins/images/4344/small/Y88JAze.png" + }, + { + "chainId": 1666700000, + "address": "0x0E80905676226159cC3FF62B1876C907C91F7395", + "symbol": "1BUSD", + "name": "OneBUSD", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/9576/small/BUSD.png" + }, + { + "chainId": 1666700000, + "address": "0x1E120B3b4aF96e7F394ECAF84375b1C661830013", + "symbol": "1ETH", + "name": "OneETH", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/279/small/ethereum.png" + }, + { + "chainId": 1666700000, + "address": "0x2C6e26B2faD89bc52d043e78E3D980A08af0Ce88", + "symbol": "1LINK", + "name": "OneChainlink", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/877/small/chainlink-new-logo.png" + }, + { + "chainId": 1666700000, + "address": "0x6c4387C4f570Aa8cAdcaFFc5E73ecb3D0F8Fc593", + "symbol": "WBTC", + "name": "Wrapped BTC", + "decimals": 8, + "logoURI": "https://assets.coingecko.com/coins/images/7598/small/wrapped_bitcoin_wbtc.png" + }, + { + "chainId": 1666700000, + "address": "0x7466d7d0C21Fa05F32F5a0Fa27e12bdC06348Ce2", + "symbol": "WONE", + "name": "Wrapped ONE", + "decimals": 18, + "logoURI": "https://assets.coingecko.com/coins/images/4344/small/Y88JAze.png" + } + ] +} diff --git a/src/chains/near/near.abi.json b/src/chains/near/near.abi.json new file mode 100644 index 0000000000..cd80cdce83 --- /dev/null +++ b/src/chains/near/near.abi.json @@ -0,0 +1,4 @@ +{ + "changeMethods": [], + "viewMethods": ["ft_balance_of"] +} diff --git a/src/chains/near/near.base.ts b/src/chains/near/near.base.ts new file mode 100644 index 0000000000..ae17d5df57 --- /dev/null +++ b/src/chains/near/near.base.ts @@ -0,0 +1,344 @@ +import { + Contract, + providers, + connect, + keyStores, + KeyPair, + Near, + transactions, +} from 'near-api-js'; +import { createCipheriv, createDecipheriv, randomBytes } from 'crypto'; +import axios from 'axios'; +import { promises as fs } from 'fs'; +import { TokenListType, TokenValue, walletPath } from '../../services/base'; +import NodeCache from 'node-cache'; +import { EvmTxStorage } from '../../services/evm.tx-storage'; +import fse from 'fs-extra'; +import { ConfigManagerCertPassphrase } from '../../services/config-manager-cert-passphrase'; +import { logger } from '../../services/logger'; +import { ReferenceCountingCloseable } from '../../services/refcounting-closeable'; +import path from 'path'; +import { rootPath } from '../../paths'; +import { Account } from 'near-api-js/lib/account'; +import { BigNumber } from 'ethers'; +import { NodeStatusResult, GasPrice } from 'near-api-js/lib/providers/provider'; +import BN from 'bn.js'; +import { baseDecode } from 'borsh'; + +// information about an Near token +export interface TokenInfo { + chainId: number; + address: string; + name: string; + symbol: string; + decimals: number; +} + +export type NewDebugMsgHandler = (msg: any) => void; + +export class NearBase { + private _provider: providers.JsonRpcProvider; + protected tokenList: any; + private _tokenMap: Record = {}; + // there are async values set in the constructor + private _ready: boolean = false; + private _initializing: boolean = false; + private _initPromise: Promise = Promise.resolve(); + private _keyStore: keyStores.InMemoryKeyStore; + private _connection: Near | undefined; + + public chainName; + public network; + public gasPriceConstant; + private _gasLimitTransaction; + public tokenListSource: string; + public tokenListType: TokenListType; + public cache: NodeCache; + public rpcUrl: string; + private readonly _refCountingHandle: string; + private readonly _txStorage: EvmTxStorage; + + constructor( + chainName: string, + rpcUrl: string, + network: string, + tokenListSource: string, + tokenListType: TokenListType, + gasPriceConstant: number, + gasLimitTransaction: number, + transactionDbPath: string + ) { + this._provider = new providers.JsonRpcProvider({ url: rpcUrl }); + this.rpcUrl = rpcUrl; + this.chainName = chainName; + this.network = network; + this.gasPriceConstant = gasPriceConstant; + this.tokenListSource = tokenListSource; + this.tokenListType = tokenListType; + + this._refCountingHandle = ReferenceCountingCloseable.createHandle(); + this.cache = new NodeCache({ stdTTL: 3600 }); // set default cache ttl to 1hr + this._gasLimitTransaction = gasLimitTransaction; + this._txStorage = EvmTxStorage.getInstance( + this.resolveDBPath(transactionDbPath), + this._refCountingHandle + ); + this._txStorage.declareOwnership(this._refCountingHandle); + this._keyStore = new keyStores.InMemoryKeyStore(); + } + + ready(): boolean { + return this._ready; + } + + public get provider() { + return this._provider; + } + + public get gasLimitTransaction() { + return this._gasLimitTransaction; + } + + public resolveDBPath(oldPath: string): string { + if (oldPath.charAt(0) === '/') return oldPath; + const dbDir: string = path.join(rootPath(), 'db/'); + fse.mkdirSync(dbDir, { recursive: true }); + return path.join(dbDir, oldPath); + } + + async init(): Promise { + if (!this.ready() && !this._initializing) { + this._initializing = true; + this._connection = await this.connectProvider(); + this._initPromise = this.loadTokens( + this.tokenListSource, + this.tokenListType + ).then(() => { + this._ready = true; + this._initializing = false; + }); + } + return this._initPromise; + } + + async connectProvider(): Promise { + return await connect({ + networkId: this.network, + keyStore: this._keyStore, + nodeUrl: this.rpcUrl, + }); + } + + async loadTokens( + tokenListSource: string, + tokenListType: TokenListType + ): Promise { + const tokenList = await this.getTokenList(tokenListSource, tokenListType); + if (tokenList) { + for (const [key, value] of Object.entries(tokenList)) { + this._tokenMap[value.symbol] = { + ...value, + address: key, + }; + } + } + this.tokenList = Object.values(this._tokenMap); + } + + // returns a Tokens for a given list source and list type + async getTokenList( + tokenListSource: string, + tokenListType: TokenListType + ): Promise { + let data; + if (tokenListType === 'URL') { + ({ data } = await axios.get(tokenListSource)); + } else { + ({ data } = JSON.parse(await fs.readFile(tokenListSource, 'utf8'))); + } + return data; + } + + public get txStorage(): EvmTxStorage { + return this._txStorage; + } + + public get storedTokenList(): TokenInfo[] { + return this.tokenList; + } + + // return the Token object for a symbol + getTokenForSymbol(symbol: string): TokenInfo | null { + return this._tokenMap[symbol] ? this._tokenMap[symbol] : null; + } + + async getWalletFromPrivateKey( + privateKey: string, + accountId: string + ): Promise { + if (!this._connection) { + await this.init(); + } + // creates a public / private key pair using the provided private key + const keyPair = KeyPair.fromString(privateKey); + + const accounts = await this._keyStore.getAccounts(this.network); + if (!accounts.includes(accountId)) { + // adds the keyPair you created to keyStore + await this._keyStore.setKey(this.network, accountId, keyPair); + } + return await this._connection?.account(accountId); + } + + async getWallet(address: string): Promise { + const path = `${walletPath}/${this.chainName}`; + + const encryptedPrivateKey: string = await fse.readFile( + `${path}/${address}.json`, + 'utf8' + ); + + const passphrase = ConfigManagerCertPassphrase.readPassphrase(); + if (!passphrase) { + throw new Error('missing passphrase'); + } + const privateKey = this.decrypt(encryptedPrivateKey, passphrase); + return await this.getWalletFromPrivateKey(privateKey, address); + } + + encrypt(privateKey: string, password: string): string { + const iv = randomBytes(16); + const key = Buffer.alloc(32); + key.write(password); + + const cipher = createCipheriv('aes-256-cbc', key, iv); + + const encrypted = Buffer.concat([ + cipher.update(privateKey), + cipher.final(), + ]); + + return `${iv.toString('hex')}:${encrypted.toString('hex')}`; + } + + decrypt(encryptedPrivateKey: string, password: string): string { + const [iv, encryptedKey] = encryptedPrivateKey.split(':'); + const key = Buffer.alloc(32); + key.write(password); + + const decipher = createDecipheriv( + 'aes-256-cbc', + key, + Buffer.from(iv, 'hex') + ); + + const decrpyted = Buffer.concat([ + decipher.update(Buffer.from(encryptedKey, 'hex')), + decipher.final(), + ]); + + return decrpyted.toString(); + } + + // returns the Native balance, convert BigNumber to string + async getNativeBalance(account: Account): Promise { + return (await account.getAccountBalance()).available; + } + + // returns the balance for an fungible token + async getFungibleTokenBalance(contract: Contract | any): Promise { + logger.info( + 'Requesting balance for owner ' + contract.account.accountId + '.' + ); + let balance: string; + try { + balance = await contract.ft_balance_of({ + account_id: contract.account.accountId, + }); + } catch (_e) { + balance = '0'; + } + logger.info( + `Raw balance of ${contract.contractId} for ` + + `${contract.account.accountId}: ${balance}` + ); + return balance; + } + + // returns the allowance for an FT (Fungible Token) token + async getFungibleTokenAllowance( + _contract: Contract, + _wallet: keyStores.InMemoryKeyStore, + _spender: string, + _decimals: number + ): Promise { + return { value: BigNumber.from('0'), decimals: 0 }; + } + + async getTransaction( + txHash: string, + accountId: string + ): Promise { + return await this._provider.txStatus(txHash, accountId); + } + + // adds allowance by spender to transfer the given amount of Token + async approveFungibleToken( + _contract: Contract, + _wallet: keyStores.InMemoryKeyStore, + _spender: string, + _amount: BigNumber + ): Promise { + return; + } + + public getTokenBySymbol(tokenSymbol: string): TokenInfo | undefined { + return this._tokenMap[tokenSymbol]; + } + + // returns the current block number + async getCurrentBlockNumber(): Promise { + const status: NodeStatusResult = await this._provider.status(); + return status.sync_info.latest_block_height; + } + + // cancel transaction + async cancelTx(account: Account, nonce: number): Promise { + const block = await account.connection.provider.block({ + finality: 'final', + }); + const blockHash = block.header.hash; + + const [txHash, signedTx] = await transactions.signTransaction( + account.accountId, + nonce, + [transactions.transfer(new BN(0))], + baseDecode(blockHash), + account.connection.signer, + account.accountId, + account.connection.networkId + ); + await account.connection.provider.sendTransaction(signedTx); + + return txHash.toString(); + } + + /** + * Get the gas fee. + */ + async getGasPrice(): Promise { + if (!this.ready) { + await this.init(); + } + const feeData: GasPrice = await this._provider.gasPrice(null); + if (feeData.gas_price !== null) { + return feeData.gas_price; + } else { + return null; + } + } + + async close() { + await this._txStorage.close(this._refCountingHandle); + } +} diff --git a/src/chains/near/near.config.ts b/src/chains/near/near.config.ts new file mode 100644 index 0000000000..abc63e373c --- /dev/null +++ b/src/chains/near/near.config.ts @@ -0,0 +1,47 @@ +import { TokenListType } from '../../services/base'; +import { ConfigManagerV2 } from '../../services/config-manager-v2'; + +export interface NetworkConfig { + name: string; + nodeURL: string; + tokenListType: TokenListType; + tokenListSource: string; + gasPriceRefreshInterval: number | undefined; +} + +export interface Config { + network: NetworkConfig; + nativeCurrencySymbol: string; + manualGasPrice: number; + gasLimitTransaction: number; +} + +export function getNearConfig(chainName: string, networkName: string): Config { + const network = networkName; + return { + network: { + name: network, + nodeURL: ConfigManagerV2.getInstance().get( + chainName + '.networks.' + network + '.nodeURL' + ), + tokenListType: ConfigManagerV2.getInstance().get( + chainName + '.networks.' + network + '.tokenListType' + ), + tokenListSource: ConfigManagerV2.getInstance().get( + chainName + '.networks.' + network + '.tokenListSource' + ), + gasPriceRefreshInterval: ConfigManagerV2.getInstance().get( + chainName + '.networks.' + network + '.gasPriceRefreshInterval' + ), + }, + nativeCurrencySymbol: ConfigManagerV2.getInstance().get( + chainName + '.networks.' + network + '.nativeCurrencySymbol' + ), + manualGasPrice: ConfigManagerV2.getInstance().get( + chainName + '.manualGasPrice' + ), + gasLimitTransaction: ConfigManagerV2.getInstance().get( + chainName + '.gasLimitTransaction' + ), + }; +} diff --git a/src/chains/near/near.controllers.ts b/src/chains/near/near.controllers.ts new file mode 100644 index 0000000000..7244a4ee25 --- /dev/null +++ b/src/chains/near/near.controllers.ts @@ -0,0 +1,169 @@ +import { Account, providers, utils } from 'near-api-js'; +import { BigNumber, utils as ethersUtils } from 'ethers'; +import { latency } from '../../services/base'; +import { + HttpException, + OUT_OF_GAS_ERROR_CODE, + OUT_OF_GAS_ERROR_MESSAGE, + LOAD_WALLET_ERROR_CODE, + LOAD_WALLET_ERROR_MESSAGE, + TOKEN_NOT_SUPPORTED_ERROR_CODE, + TOKEN_NOT_SUPPORTED_ERROR_MESSAGE, +} from '../../services/error-handler'; +import { TokenInfo } from './near.base'; + +import { + CancelRequest, + CancelResponse, + PollResponse, + BalanceRequest, + BalanceResponse, +} from './near.requests'; +import { logger } from '../../services/logger'; +import { Nearish } from '../../services/common-interfaces'; + +export const getTokenSymbolsToTokens = ( + near: Nearish, + tokenSymbols: Array +): Record => { + const tokens: Record = {}; + + for (let i = 0; i < tokenSymbols.length; i++) { + const symbol = tokenSymbols[i]; + const token = near.getTokenBySymbol(symbol); + if (token) tokens[symbol] = token; + } + + return tokens; +}; + +export async function balances( + nearish: Nearish, + req: BalanceRequest +): Promise { + const initTime = Date.now(); + + let account: Account; + try { + account = await nearish.getWallet(req.address); + } catch (err) { + throw new HttpException( + 500, + LOAD_WALLET_ERROR_MESSAGE + err, + LOAD_WALLET_ERROR_CODE + ); + } + const tokens = getTokenSymbolsToTokens(nearish, req.tokenSymbols); + const balances: Record = {}; + if (req.tokenSymbols.includes(nearish.nativeTokenSymbol)) { + balances[nearish.nativeTokenSymbol] = utils.format.formatNearAmount( + await nearish.getNativeBalance(account) + ); + } + await Promise.all( + Object.keys(tokens).map(async (symbol) => { + if ( + tokens[symbol] !== undefined && + symbol !== nearish.nativeTokenSymbol + ) { + const address = tokens[symbol].address; + const decimals = tokens[symbol].decimals; + // instantiate a contract and pass in provider for read-only access + const contract = nearish.getContract(address, account); + const balance: string = await nearish.getFungibleTokenBalance(contract); + balances[symbol] = ethersUtils + .formatUnits(BigNumber.from(balance), decimals) + .toString(); + } + }) + ); + + if (!Object.keys(balances).length) { + throw new HttpException( + 500, + TOKEN_NOT_SUPPORTED_ERROR_MESSAGE, + TOKEN_NOT_SUPPORTED_ERROR_CODE + ); + } + + return { + network: nearish.chain, + timestamp: initTime, + latency: latency(initTime, Date.now()), + balances: balances, + }; +} + +// txStatus +// -1: not in the mempool or failed +// 1: succeeded +export async function poll( + nearish: Nearish, + address: string, + txHash: string +): Promise { + const initTime = Date.now(); + const currentBlock = await nearish.getCurrentBlockNumber(); + const txReceipt: providers.FinalExecutionOutcome = + await nearish.getTransaction(txHash, address); + let txStatus = -1; + if ( + typeof txReceipt.status === 'object' && + 'SuccessValue' in txReceipt.status + ) { + txStatus = 1; + } + + if ( + txReceipt.transaction_outcome.outcome.gas_burnt / + nearish.gasLimitTransaction > + 0.9 + ) { + throw new HttpException( + 503, + OUT_OF_GAS_ERROR_MESSAGE, + OUT_OF_GAS_ERROR_CODE + ); + } + + logger.info(`Poll ${nearish.chain}, txHash ${txHash}, status ${txStatus}.`); + return { + network: nearish.chain, + currentBlock, + timestamp: initTime, + txHash: txHash, + txStatus, + txReceipt, + }; +} + +export async function cancel( + nearish: Nearish, + req: CancelRequest +): Promise { + const initTime = Date.now(); + let account: Account; + try { + account = await nearish.getWallet(req.address); + } catch (err) { + throw new HttpException( + 500, + LOAD_WALLET_ERROR_MESSAGE + err, + LOAD_WALLET_ERROR_CODE + ); + } + + // call cancelTx function + const cancelTx = await nearish.cancelTx(account, req.nonce); + + logger.info( + `Cancelled transaction at nonce ${req.nonce}, cancel txHash ${cancelTx}.` + ); + + return { + network: nearish.chain, + timestamp: initTime, + latency: latency(initTime, Date.now()), + txHash: cancelTx, + }; +} diff --git a/src/chains/near/near.requests.ts b/src/chains/near/near.requests.ts new file mode 100644 index 0000000000..4bbdb8eeaa --- /dev/null +++ b/src/chains/near/near.requests.ts @@ -0,0 +1,54 @@ +import { providers } from 'near-api-js'; +import { NetworkSelectionRequest } from '../../services/common-interfaces'; + +export interface NonceRequest extends NetworkSelectionRequest { + address: string; // the user's Near account Id +} + +export interface NonceResponse { + nonce: number; // the user's nonce +} + +export interface NearBalanceRequest extends NetworkSelectionRequest { + address: string; // the user's Near account Id + tokenSymbols: string[]; // a list of token symbol +} + +export interface BalanceRequest extends NetworkSelectionRequest { + address: string; // the users Account Id + tokenSymbols: string[]; // a list of token symbol +} + +export interface BalanceResponse { + network: string; + timestamp: number; + latency: number; + balances: Record; // the balance should be a string encoded number +} + +export interface PollRequest { + network: string; // the target network of the chain (e.g. mainnet) + txHash: string; + address: string; +} + +export interface PollResponse { + network: string; + timestamp: number; + currentBlock: number; + txHash: string; + txStatus: number; + txReceipt: providers.FinalExecutionOutcome | null; +} + +export interface CancelRequest extends NetworkSelectionRequest { + nonce: number; // the nonce of the transaction to be canceled + address: string; // the user's Near account Id +} + +export interface CancelResponse { + network: string; + timestamp: number; + latency: number; + txHash: string | undefined; +} diff --git a/src/chains/near/near.routes.ts b/src/chains/near/near.routes.ts new file mode 100644 index 0000000000..6480defa88 --- /dev/null +++ b/src/chains/near/near.routes.ts @@ -0,0 +1,81 @@ +/* eslint-disable @typescript-eslint/ban-types */ +import { Router, Request, Response, NextFunction } from 'express'; +import { Nearish } from '../../services/common-interfaces'; +import { asyncHandler } from '../../services/error-handler'; + +import { getChain } from '../../services/connection-manager'; +import { BalanceResponse, PollRequest, PollResponse } from './near.requests'; +import { validateBalanceRequest } from './near.validators'; +import * as nearControllers from './near.controllers'; +import { getTokens } from '../../network/network.controllers'; +import { + validatePollRequest, + validateTokensRequest, +} from '../../network/network.routes'; +import { + BalanceRequest, + TokensRequest, + TokensResponse, +} from '../../network/network.requests'; + +export namespace NearRoutes { + export const router = Router(); + + router.post( + '/balances', + asyncHandler( + async ( + req: Request<{}, {}, BalanceRequest>, + res: Response, + _next: NextFunction + ) => { + validateBalanceRequest(req.body); + + const chain = await getChain('near', req.body.network); + + res + .status(200) + .json( + (await nearControllers.balances(chain, req.body)) as BalanceResponse + ); + } + ) + ); + + router.post( + '/poll', + asyncHandler( + async ( + req: Request<{}, {}, PollRequest>, + res: Response + ) => { + validatePollRequest(req.body); + + const chain = await getChain('near', req.body.network); + + res + .status(200) + .json( + await nearControllers.poll( + chain, + req.body.address, + req.body.txHash + ) + ); + } + ) + ); + + router.get( + '/tokens', + asyncHandler( + async ( + req: Request<{}, {}, {}, TokensRequest>, + res: Response + ) => { + validateTokensRequest(req.query); + res.status(200).json(await getTokens(req.query)); + } + ) + ); +} diff --git a/src/chains/near/near.ts b/src/chains/near/near.ts new file mode 100644 index 0000000000..bcb298492a --- /dev/null +++ b/src/chains/near/near.ts @@ -0,0 +1,102 @@ +import { Account, Contract } from 'near-api-js'; +import abi from './near.abi.json'; +import { logger } from '../../services/logger'; +import { ConfigManagerV2 } from '../../services/config-manager-v2'; +import { NearBase } from './near.base'; +import { ContractMethods } from 'near-api-js/lib/contract'; +import { getNearConfig } from './near.config'; + +export class Near extends NearBase { + private static _instances: { [name: string]: Near }; + private _gasPrice: number; + private _gasPriceRefreshInterval: number | null; + private _nativeTokenSymbol: string; + private _chain: string; + + private constructor(network: string) { + const config = getNearConfig('near', network); + super( + 'near', + config.network.nodeURL, + network, + config.network.tokenListSource, + config.network.tokenListType, + config.manualGasPrice, + config.gasLimitTransaction, + ConfigManagerV2.getInstance().get('database.transactionDbPath') + ); + this._chain = config.network.name; + this._nativeTokenSymbol = config.nativeCurrencySymbol; + this._gasPrice = config.manualGasPrice; + this._gasPriceRefreshInterval = + config.network.gasPriceRefreshInterval !== undefined + ? config.network.gasPriceRefreshInterval + : null; + + this.updateGasPrice(); + } + + public static getInstance(network: string): Near { + if (Near._instances === undefined) { + Near._instances = {}; + } + if (!(network in Near._instances)) { + Near._instances[network] = new Near(network); + } + + return Near._instances[network]; + } + + public static getConnectedInstances(): { [name: string]: Near } { + return Near._instances; + } + + public get gasPrice(): number { + return this._gasPrice; + } + + public get nativeTokenSymbol(): string { + return this._nativeTokenSymbol; + } + + public get chain(): string { + return this._chain; + } + + getContract(tokenAddress: string, account: Account) { + return new Contract(account, tokenAddress, abi); + } + + getSpender(reqSpender: string): string { + return reqSpender; + } + + /** + * Automatically update the prevailing gas price on the network. + */ + async updateGasPrice(): Promise { + if (this._gasPriceRefreshInterval === null) { + return; + } + + const gasPrice = await this.getGasPrice(); + if (gasPrice !== null) { + this._gasPrice = Number(gasPrice); + } else { + logger.info('gasPrice is unexpectedly null.'); + } + + setTimeout( + this.updateGasPrice.bind(this), + this._gasPriceRefreshInterval * 1000 + ); + } + + // cancel transaction + async cancelTx(account: Account, nonce: number): Promise { + logger.info( + 'Canceling any existing transaction(s) with nonce number ' + nonce + '.' + ); + return super.cancelTx(account, nonce); + } +} diff --git a/src/chains/near/near.validators.ts b/src/chains/near/near.validators.ts new file mode 100644 index 0000000000..2eedb4321f --- /dev/null +++ b/src/chains/near/near.validators.ts @@ -0,0 +1,64 @@ +import { + validateTokenSymbols, + mkValidator, + mkRequestValidator, + RequestValidator, + Validator, +} from '../../services/validators'; + +// invalid parameter errors + +export const invalidAddressError: string = + 'The address param is not a valid Near private key.'; + +export const invalidSpenderError: string = + 'The spender param is not a valid Near address.'; + +export const invalidNonceError: string = + 'If nonce is included it must be a non-negative integer.'; + +export const invalidChainError: string = 'The chain param is not a string.'; + +export const invalidNetworkError: string = 'The network param is not a string.'; + +// given a request, look for a key called address that is an Ethereum wallet +export const validateAddress: Validator = mkValidator( + 'address', + invalidAddressError, + (val) => typeof val === 'string' +); + +// given a request, look for a key called spender that has a string value +export const validateSpender: Validator = mkValidator( + 'spender', + invalidSpenderError, + (val) => typeof val === 'string' +); + +export const validateNonce: Validator = mkValidator( + 'nonce', + invalidNonceError, + (val) => + typeof val === 'undefined' || + (typeof val === 'number' && val >= 0 && Number.isInteger(val)), + true +); + +export const validateChain: Validator = mkValidator( + 'chain', + invalidChainError, + (val) => typeof val === 'string' +); + +export const validateNetwork: Validator = mkValidator( + 'network', + invalidNetworkError, + (val) => typeof val === 'string' +); + +// request types and corresponding validators + +export const validateBalanceRequest: RequestValidator = mkRequestValidator([ + validateAddress, + validateTokenSymbols, +]); diff --git a/src/chains/near/near_testnet_tokens.json b/src/chains/near/near_testnet_tokens.json new file mode 100644 index 0000000000..d9e94a47d8 --- /dev/null +++ b/src/chains/near/near_testnet_tokens.json @@ -0,0 +1,1494 @@ +{ + "aurora.fakes.testnet": { + "spec": "ft-1.0.0", + "name": "Aurora", + "symbol": "AURORA", + "icon": "data:image/svg+xml,%3Csvg version='1.1' id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 288 288' style='enable-background:new 0 0 288 288;' xml:space='preserve'%3E %3Cstyle type='text/css'%3E .st0%7Bfill:%2370D44B;%7D .st1%7Bfill:%23FFFFFF;%7D %3C/style%3E %3Cpath class='st0' d='M144,0L144,0c79.5,0,144,64.5,144,144v0c0,79.5-64.5,144-144,144h0C64.5,288,0,223.5,0,144v0 C0,64.5,64.5,0,144,0z'/%3E %3Cpath class='st1' d='M144,58.8c7.6,0,14.5,4.3,17.9,11.1l56.2,112.5c4.9,9.9,0.9,21.9-9,26.8c-2.8,1.4-5.8,2.1-8.9,2.1H87.8 c-11,0-20-9-20-20c0-3.1,0.7-6.2,2.1-8.9l56.2-112.5C129.5,63,136.4,58.7,144,58.8 M144,45c-12.8,0-24.5,7.2-30.2,18.7L57.6,176.2 c-8.3,16.7-1.6,36.9,15.1,45.3c4.7,2.3,9.9,3.6,15.1,3.6h112.5c18.6,0,33.8-15.1,33.8-33.7c0-5.2-1.2-10.4-3.6-15.1L174.2,63.7 C168.5,52.2,156.8,45,144,45z'/%3E %3C/svg%3E", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "lana.nearlyfinished.testnet": { + "spec": "ft-1.0.0", + "name": "Lana Test Token", + "symbol": "LTEST", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 8 + }, + "dev-1652538142137-68539457665982": { + "spec": "ft-1.0.0", + "name": "Eternal Lands Gold Token", + "symbol": "elGOLD", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "willa.fakes.testnet": { + "spec": "ft-1.0.0", + "name": "Willa Token", + "symbol": "WLT", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "maskedkids.testnet": { + "spec": "ft-1.0.0", + "name": "MASKED KIDS NFT", + "symbol": "MASK", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 8 + }, + "pizza.dexterdev8.testnet": { + "spec": "ft-1.0.0", + "name": "Pizza", + "symbol": "PZZ", + "icon": "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 288 288'%3E%3Cg id='l' data-name='l'%3E%3Cpath d='M187.58,79.81l-30.1,44.69a3.2,3.2,0,0,0,4.75,4.2L191.86,103a1.2,1.2,0,0,1,2,.91v80.46a1.2,1.2,0,0,1-2.12.77L102.18,77.93A15.35,15.35,0,0,0,90.47,72.5H87.34A15.34,15.34,0,0,0,72,87.84V201.16A15.34,15.34,0,0,0,87.34,216.5h0a15.35,15.35,0,0,0,13.08-7.31l30.1-44.69a3.2,3.2,0,0,0-4.75-4.2L96.14,186a1.2,1.2,0,0,1-2-.91V104.61a1.2,1.2,0,0,1,2.12-.77l89.55,107.23a15.35,15.35,0,0,0,11.71,5.43h3.13A15.34,15.34,0,0,0,216,201.16V87.84A15.34,15.34,0,0,0,200.66,72.5h0A15.35,15.35,0,0,0,187.58,79.81Z'/%3E%3C/g%3E%3C/svg%3E", + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "dev-1651687542300-42539251355514": { + "spec": "ft-1.0.0", + "name": "Example NEAR fungible token", + "symbol": "EXAMPLE", + "icon": "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 288 288'%3E%3Cg id='l' data-name='l'%3E%3Cpath d='M187.58,79.81l-30.1,44.69a3.2,3.2,0,0,0,4.75,4.2L191.86,103a1.2,1.2,0,0,1,2,.91v80.46a1.2,1.2,0,0,1-2.12.77L102.18,77.93A15.35,15.35,0,0,0,90.47,72.5H87.34A15.34,15.34,0,0,0,72,87.84V201.16A15.34,15.34,0,0,0,87.34,216.5h0a15.35,15.35,0,0,0,13.08-7.31l30.1-44.69a3.2,3.2,0,0,0-4.75-4.2L96.14,186a1.2,1.2,0,0,1-2-.91V104.61a1.2,1.2,0,0,1,2.12-.77l89.55,107.23a15.35,15.35,0,0,0,11.71,5.43h3.13A15.34,15.34,0,0,0,216,201.16V87.84A15.34,15.34,0,0,0,200.66,72.5h0A15.35,15.35,0,0,0,187.58,79.81Z'/%3E%3C/g%3E%3C/svg%3E", + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "usdt.qa.v1.nearlend.testnet": { + "spec": "ft-1.0.0", + "name": "Tether", + "symbol": "USDT", + "icon": "data:image/svg+xml,%3Csvg viewBox='0 0 40 41' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M20 40.3967C31.0457 40.3967 40 31.4424 40 20.3967C40 9.35103 31.0457 0.396729 20 0.396729C8.9543 0.396729 0 9.35103 0 20.3967C0 31.4424 8.9543 40.3967 20 40.3967ZM9.94128 26.8949C10.8013 27.6658 11.8831 27.8967 12.92 27.8967C14.0181 27.8967 15.0686 27.635 15.7432 27.467L15.7518 27.4648C15.8896 27.4288 16.0125 27.3988 16.1084 27.3778C18.6046 26.829 21.1098 26.805 23.5551 27.2939C23.6803 27.3172 23.8337 27.3575 24.01 27.4037L24.0256 27.4078L24.0427 27.4121C25.4456 27.7647 28.3397 28.4921 30.2856 26.652C31.0407 25.9442 31.5442 24.9274 31.703 23.7996L31.7042 23.791C31.9467 22.0799 32.2474 19.9585 31.658 17.0091C31.5352 16.3792 31.0677 15.0625 30.3485 14.2287C29.1828 12.87 27.2919 12.5521 24.7238 13.2689L24.6369 13.2929C21.859 14.0578 19.0451 14.1357 16.2762 13.5239L16.0395 13.4699L16.0332 13.4684C15.1327 13.2611 13.4619 12.8765 11.973 13.086C10.6275 13.2779 9.43185 14.1627 8.77558 15.4614C8.52686 15.9503 8.40699 16.4452 8.33208 16.8231C7.90056 18.9827 7.88857 21.5411 8.30211 23.8506C8.52086 25.0653 9.10221 26.1481 9.94128 26.8949ZM12.4165 16.2383C12.5723 16.2173 12.7372 16.2083 12.908 16.2083C13.75 16.2083 14.7509 16.4362 15.3263 16.5772L15.59 16.6402C18.8683 17.363 22.1916 17.2731 25.4729 16.3702L25.5808 16.3433C27.3159 15.8514 27.8103 16.1543 27.9422 16.3073C28.1999 16.6042 28.4936 17.36 28.5475 17.639C29.033 20.0624 28.7842 21.8141 28.5625 23.3587C28.5056 23.7726 28.3407 24.1326 28.11 24.3515C27.4265 24.997 25.7497 24.5746 24.8276 24.3423L24.8047 24.3365C24.559 24.2735 24.3462 24.2225 24.1754 24.1865C21.3016 23.6077 18.3589 23.6437 15.4341 24.2795C15.3141 24.3059 15.1654 24.3437 14.9937 24.3874L14.9817 24.3905L14.9487 24.3986C14.3211 24.5535 12.5601 24.9881 12.0479 24.5315C11.7393 24.2585 11.5115 23.8086 11.4216 23.2987C11.083 21.4001 11.089 19.2136 11.4426 17.459C11.4756 17.291 11.5295 17.0541 11.6044 16.9041C11.7902 16.5322 12.0959 16.2833 12.4165 16.2383Z' fill='%2386EC8A'/%3E%3C/svg%3E", + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "nstable.testnet": "", + "colors.testnet": { + "spec": "ft-1.0.0", + "name": "Color Token", + "symbol": "CLR", + "icon": "data:image/png;base64,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 QoQIESJEiBAhQoQIESJEiBAhQoQIESJEiBAhQoQIESJEiBAhQoQIESJEiBAhQoQIESJEiBAhQoQI ESJEiBAhQoQIESJEiBAhQoQIESJEiBAhQoQIESJEiBAhQoQIESJEyP8hR2TTsyOzo7Kjs2OyGdmx 2ZiZHZcdn52QnZidlJ2cnZKNU7PTstOzWdnsbE42N5uXjTOyM7OzsrOz+dmC7Jzs3Gycl52fXZBd mF2UXZwtzC7JxqJscXZptiS7LLs8uyJbmo0rs2XZVdny7OrsmuzabEUmRIgQIUKECBEiRIgQIUKE CBEiRIgQIUKECBEiRIgQIUKECBEiRIgQIUKECBEiRIgQIUKECBEiRIgQIUKECBEiRIgQIUKECBEi RIgQIUKECBEiRIgQIUKECBEiRIgQIUKECBEiRIgQIUKECBEiRIgQIUKECBEiRIgQIUKECBEiRIgQ IUKECBEiRIgQIUKECBEiRIgQIUKECBEiRIgQIUKECBFycIWszK7Lrs9WZauzG7Ibs5uycXN2S7Ym uzVbm92W3Z7dkY07s7uyu7N7snuz+7L7s3XZeCB7MHsoezh7JHs0W589lo3HsyeyDdmT2cZsU7Y5 eyqbQMjT2TPZs1kP2ZI9lz2fTSDkhezF7KWsh7ycvZK9mgkRIkSIECFChAgRIkSIECFChAgRIkSI ECFChAgRIkSIECFChAgRIkSIECFChAgRIkSIECFChAgRIkSIECFChAgRIkSIECFChAgRIkSIECFC hAgRIkSIECFChAgRIkSIECFChAgRIkSIECFChAgRIkSIECFChAgRIkSIECFChAgRIkSIECFChAgR IkSIECFChAgRIkSIECFChAgRIkSIECFChBzqIa9lW7PXsx7yRvZmti2bQMhb2dvZO1kPeTd7L3s/ Gx9kH2YfZR9n27NPsk+zz7LxebYj+yL7Mvsq+zr7Jvs2G99l32c/ZD9mO7Ofsp+zX7KxK/s1+y3b ne3Jfs/+yPZm48/sr+zvbF+2P/sn+zc7kAkRIkSIECFChAgRIkSIECFChAgRIkSIECFChAgRIkSI ECFChAgRIkSIECFChAgRIkSIECFChAgRIkSIECFChAgRIkSIECFChAgRIkSIECFChAgRIkSIECFC hAgRIkSIECFChAgRIkSIECFChAgRIkSIECFChAgRIkSIECFChAgRIkSIECFChAgRIkSIECFChAgR IkSIECFChAgRIkSIECFChAgRIkSIkImF/AfltMXr/n4MwAAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAy Mi0wMi0yNFQyMzoyMDoxNSswMzowMN6a5LYAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjItMDItMjRU MjM6MjA6MTUrMDM6MDCvx1wKAAAAPXRFWHRpY2M6Y29weXJpZ2h0AENvcHlyaWdodCAyMDA3IEFw cGxlIEluYy4sIGFsbCByaWdodHMgcmVzZXJ2ZWQunmbcKQAAACN0RVh0aWNjOmRlc2NyaXB0aW9u AEdlbmVyaWMgUkdCIFByb2ZpbGUapziOAAAAAElFTkSuQmCC", + "reference": null, + "reference_hash": null, + "decimals": 8 + }, + "dev-1652282573736-37357975462731": { + "spec": "ft-1.0.0", + "name": "Eternal Lands Gold Token", + "symbol": "elGOLD", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "potato_token.testnet": { + "spec": "ft-1.0.0", + "name": "Potato Token", + "symbol": "BATATA", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 8 + }, + "dev-1651688419857-34712330736260": { + "spec": "ft-1.0.0", + "name": "Example NEAR fungible token", + "symbol": "EXAMPLE", + "icon": "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 288 288'%3E%3Cg id='l' data-name='l'%3E%3Cpath d='M187.58,79.81l-30.1,44.69a3.2,3.2,0,0,0,4.75,4.2L191.86,103a1.2,1.2,0,0,1,2,.91v80.46a1.2,1.2,0,0,1-2.12.77L102.18,77.93A15.35,15.35,0,0,0,90.47,72.5H87.34A15.34,15.34,0,0,0,72,87.84V201.16A15.34,15.34,0,0,0,87.34,216.5h0a15.35,15.35,0,0,0,13.08-7.31l30.1-44.69a3.2,3.2,0,0,0-4.75-4.2L96.14,186a1.2,1.2,0,0,1-2-.91V104.61a1.2,1.2,0,0,1,2.12-.77l89.55,107.23a15.35,15.35,0,0,0,11.71,5.43h3.13A15.34,15.34,0,0,0,216,201.16V87.84A15.34,15.34,0,0,0,200.66,72.5h0A15.35,15.35,0,0,0,187.58,79.81Z'/%3E%3C/g%3E%3C/svg%3E", + "reference": null, + "reference_hash": null, + "decimals": 0 + }, + "nst.deganstable.testnet": { + "spec": "ft-1.0.0", + "name": "nStable Governance", + "symbol": "NST", + "icon": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgMzIgMzIiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkuc3Q2e2ZpbGw6I0ZGRkZGRjt9Cgkuc3Q1OXtmaWxsOiM4NjQ3OUY7fQo8L3N0eWxlPgo8Y2lyY2xlIGNsYXNzPSJzdDU5IiBjeD0iMTYiIGN5PSIxNiIgcj0iMTYiLz4KPHBhdGggY2xhc3M9InN0NiIgZD0ibTIzLjU1IDguNzNjLTAuMDQtMC4wMi0wLjA3LTAuMDQtMC4xMS0wLjA2bC0wLjE2LTAuMDl2MC4wMWMtMS4zOC0wLjY2LTMuMDMtMC4zMi00LjA0IDAuODQtMC4yMiAwLjI1LTAuNDEgMC41Mi0wLjU3IDAuODFsLTAuMDEgMC4wMi0wLjA4IDAuMTQtMC4wMSAwLjAyLTAuODEgMS40OC01LjMxLTMuMDVjLTEuMTYtMC42Ny0yLjU0LTAuNjctMy43LTAuMDMtMS4yMiAwLjY4LTEuOTQgMi0xLjk0IDMuMzl2OC4yYzAgMS4xNyAwLjYzIDIuMjYgMS42NCAyLjg2IDAuMDMgMC4wMiAwLjA3IDAuMDQgMC4xIDAuMDZsMC4xNyAwLjA5YzAuNDcgMC4yMiAwLjk3IDAuMzMgMS40NyAwLjMzIDAuOTYgMCAxLjkxLTAuNDEgMi41Ny0xLjE4IDAuMjItMC4yNSAwLjQxLTAuNTIgMC41Ny0wLjgxbDAuMDEtMC4wMiAwLjA4LTAuMTQgMC4wMS0wLjAxIDAuODEtMS40OCA1LjMxIDMuMDVjMC41OSAwLjM0IDEuMjMgMC41MSAxLjg4IDAuNTEgMC42MiAwIDEuMjUtMC4xNiAxLjgyLTAuNDcgMS4yMi0wLjY4IDEuOTUtMS45OSAxLjk1LTMuMzl2LTguMmMtMC4wMS0xLjE5LTAuNjQtMi4yOS0xLjY1LTIuODh6bS0xMC43NyAxMi4yNi0wLjAzIDAuMDYtMC40NSAwLjgzYy0wLjM0IDAuNjItMC45NyAwLjk5LTEuNjcgMWgtMC4wMWMtMC43MSAwLTEuMzMtMC4zNy0xLjY3LTAuOTgtMC4xLTAuMTgtMC4xNy0wLjM3LTAuMjItMC41OC0wLjA0LTAuMTctMC4wNi0wLjM0LTAuMDYtMC41MXYtMC43OGMwLTAuMTYgMC4wMi0wLjMyIDAuMDYtMC40OSAwLjA4LTAuMzQgMC4yNS0wLjY1IDAuNDctMC45IDAuNDktMC41NSAxLjMyLTAuNjggMS45Ni0wLjMxbDIuMzUgMS4zNS0wLjczIDEuMzF6bS0wLjkyLTQuMzFjLTEuMDEtMC41Ny0yLjI1LTAuNDYtMy4xNCAwLjI3di01LjE0YzAtMC42MSAwLjMyLTEuMTYgMC44NC0xLjQ3IDAuNTMtMC4zMSAxLjE2LTAuMzEgMS43LTAuMDJsNS42NCAzLjE3LTIuNTEgNC42MS0yLjUzLTEuNDJ6bTExLjQyIDMuNWMwIDAuNjEtMC4zMiAxLjE2LTAuODQgMS40Ny0wLjUzIDAuMzEtMS4xNiAwLjMxLTEuNyAwLjAybC01LjY0LTMuMTcgMi41MS00LjYxIDIuNTMgMS40MmMwLjQzIDAuMjQgMC45IDAuMzYgMS4zOCAwLjM2IDAuNjMgMCAxLjI1LTAuMjIgMS43Ny0wLjYzdjUuMTR6bTAuMDYtOC4yMWMwIDAuMTYtMC4wMiAwLjMyLTAuMDYgMC40OS0wLjA4IDAuMzQtMC4yNSAwLjY1LTAuNDcgMC45LTAuNDkgMC41NS0xLjMyIDAuNjgtMS45NiAwLjMxbC0yLjM1LTEuMzUgMS4yLTIuMjFjMC4zNC0wLjYyIDAuOTctMC45OSAxLjY3LTFoMC4wMWMwLjcxIDAgMS4zMyAwLjM3IDEuNjcgMC45OCAwLjEgMC4xOCAwLjE3IDAuMzcgMC4yMiAwLjU4IDAuMDQgMC4xNyAwLjA2IDAuMzQgMC4wNiAwLjUxdjAuNzl6Ii8+Cjwvc3ZnPgo=", + "reference": null, + "reference_hash": null, + "decimals": 6 + }, + "token13.duyhuongtest.testnet": { + "spec": "ft-1.0.0", + "name": "Music doge", + "symbol": "Mdoge", + "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAACCQAAAgkCAMAAABf8seIAAAACXBIWXMAAC4jAAAuIwF4pT92AAABsFBMVEUBEDcBEDcAAABGpUkIQFQKTFwLVGABCTQCHT8FL0rUv50KMx0oGlQBEDcCBzMBCDQBDzcBCTQBETggFAsBCzUBDTYBDjYCBjECCDMBDDUBCjQCBTABEzkBEjgBCjUCBzIBAi8BAi4BFToEJUQCCDIDDjYBDDYCBDAFJ0UDETgDEDcFKUYIQVUEFjsCBzEEGT0DHD4CCTI3Jm0HOFABEjkDHD9WR4MCFjsIQlUCAy8JQlYDFToJRFcCFzsDDTUBFDoJRVcIP1QKS1sIQFQIPFIJRlgDHkAIPlMCCjMJR1kKSVoBDjcGLEgEI0MEIkIJSFkBEDgCFzwCCzQBCDMEIEEGMEsIOlEDEzkHN08KTl0DFDkEGDwHNE0HNk4IO1EBFDkEHkAFIUIGKkcCGj0HMkwLUF4KT10GMEoEIUEKTVwCCDQGLkkGLUkLVGEKTFwBBzQFKEYHM0wEGz4CDDULUV8CDDQCGz4HOE8HNU4KSloEHT8LU2AIPVICBTEGL0oEGTwCGT0IPVMDIUILUl8HL0oKSlsCGTwHNU0HM00LVGACBjIGLkoLUmACCzMBAS4AAIGy0ANsAAAAkHRSTlOAQP//gICAgICA/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4A478nAAACzEUlEQVR42uzdPXIj5xWGUVU5cGaEjaoOwI4mQ97r4EKwAmyAgdbskcaWRA45IIj+uT/niW2l99T79YC//X5fU5Ge/mpO1rcVGtfu+rWGNL3c0Un39x9Je/Tv31oSARJSIGGABEGClAYJEyPURIIhYUskOPiMIBVEwlQqQwIkQAIkSFoICRMjQILXhiWQ4OBDglQMCVO5DAmbGmFkBEhgBKkoEiZGgARIgARIkCChgxAgARIgARIkPY6EiRH82wZG8EkCJEiQ0IYIhoTNkTBWNwIkQILUDAnTxAiGhB2XBEgQI0hRkTBNkGBIMCT4JAESJEho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", + "reference": null, + "reference_hash": null, + "decimals": 8 + }, + "fartokens.fewandfar.testnet": { + "spec": "ft-1.0.0", + "name": "Few and Far", + "symbol": "FAR", + "icon": "data:image/svg+xml,%3Csvg width='100px' height='100px' viewBox='0 0 100 100' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3EArtboard%3C/title%3E%3Cdefs%3E%3CradialGradient cx='21.9880676%25' cy='68.8403727%25' fx='21.9880676%25' fy='68.8403727%25' r='109.542893%25' id='radialGradient-1'%3E%3Cstop stop-color='%23B2CF67' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%2375CED7' offset='56.5969187%25'%3E%3C/stop%3E%3Cstop stop-color='%23B6B7F8' offset='100%25'%3E%3C/stop%3E%3C/radialGradient%3E%3C/defs%3E%3Cg id='Artboard' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E%3Crect id='Rectangle' fill='url(%23radialGradient-1)' x='0' y='0' width='100' height='100'%3E%3C/rect%3E%3Cpath d='M82.7692451,41.106498 L83,83 L41.3398092,83 L41.3398092,75.6400766 L75.6459075,75.6400766 L75.456591,41.1482042 L82.7692451,41.106498 Z M65.0417464,41.0894066 L65.2911892,65.1743472 L41.3389967,65.1743472 L41.3389967,57.8144237 L57.9021584,57.8144237 L57.7290922,41.1662769 L65.0417464,41.0894066 Z M57.6605158,33.8261435 L57.6605158,41.1860669 L41.0973541,41.1860669 L41.2704203,57.833396 L33.9577661,57.9102663 L33.7083233,33.8261435 L57.6605158,33.8261435 Z M57.6601908,16 L57.6601908,23.3599234 L23.3540925,23.3599234 L23.543409,57.850978 L16.2307549,57.8926843 L16,16 L57.6601908,16 Z' id='Combined-Shape' fill='%23FFFFFF'%3E%3C/path%3E%3C/g%3E%3C/svg%3E", + "reference": null, + "reference_hash": null, + "decimals": 8 + }, + "token11.ballstone.testnet": { + "spec": "ft-1.0.0", + "name": "Pumpopoly fungible token", + "symbol": "PUMPOPOLY", + "icon": "data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%2048%2048%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22100%25%22%20height%3D%22100%25%22%20fill%3D%22%23000%22%2F%3E%3Cpath%20fill%3D%22%230F0%22%20d%3D%22M4.8%2C31A1%2C1%2C0%2C0%2C0%2C4%2C32.2%2C1%2C1%2C0%2C0%2C0%2C5.2%2C33C25%2C29%2C37.55%2C15%2C42%2C9.12V11a1%2C1%2C0%2C0%2C0%2C1%2C1h0a1%2C1%2C0%2C0%2C0%2C1-1V6a1%2C1%2C0%2C0%2C0-1.28-1l-4.8%2C1.41a1%2C1%2C0%2C1%2C0%2C.57%2C1.92l2-.6C36.35%2C13.29%2C24.19%2C27.14%2C4.8%2C31Z%22%2F%3E%3Cpath%20fill%3D%22%230F0%22%20d%3D%22M45%2C41H44V26a1%2C1%2C0%2C0%2C0-1-1H33a1%2C1%2C0%2C0%2C0-1%2C1V41H30V32a1%2C1%2C0%2C0%2C0-1-1H19a1%2C1%2C0%2C0%2C0-1%2C1v9H16V36a1%2C1%2C0%2C0%2C0-1-1H5a1%2C1%2C0%2C0%2C0-1%2C1v5H3a1%2C1%2C0%2C0%2C0%2C0%2C2H45a1%2C1%2C0%2C0%2C0%2C0-2ZM6%2C41V37h8v4Zm14%2C0V33h8v8Zm14%2C0V27h8V41Z%22%2F%3E%3Cpath%20fill%3D%22%230F0%22%20d%3D%22M5.71%2C15.71l.29-.3V21a1%2C1%2C0%2C0%2C0%2C1%2C1H21a1%2C1%2C0%2C0%2C0%2C1-1V15.41l.29.3a1%2C1%2C0%2C0%2C0%2C1.42-1.42l-9-9a1%2C1%2C0%2C0%2C0-1.42%2C0l-9%2C9a1%2C1%2C0%2C0%2C0%2C1.42%2C1.42ZM12%2C20V16h4v4ZM14%2C7.41l6%2C6V20H18V15a1%2C1%2C0%2C0%2C0-1-1H11a1%2C1%2C0%2C0%2C0-1%2C1v5H8V13.41Z%22%2F%3E%3C%2Fsvg%3E", + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "usdn.fakes.testnet": { + "spec": "", + "name": "usdn.fakes.testnet", + "symbol": "usdn.fakes.testnet", + "icon": "", + "reference": "", + "reference_hash": "", + "decimals": 0 + }, + "lights.testnet": { + "spec": "ft-1.0.0", + "name": "Lights", + "symbol": "LTS", + "icon": "data:image/png;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 0 + }, + "dev-1651665723522-54152650554951": { + "spec": "ft-1.0.0", + "name": "potato", + "symbol": "PTO", + "icon": "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 288 288'%3E%3Cg id='l' data-name='l'%3E%3Cpath d='M187.58,79.81l-30.1,44.69a3.2,3.2,0,0,0,4.75,4.2L191.86,103a1.2,1.2,0,0,1,2,.91v80.46a1.2,1.2,0,0,1-2.12.77L102.18,77.93A15.35,15.35,0,0,0,90.47,72.5H87.34A15.34,15.34,0,0,0,72,87.84V201.16A15.34,15.34,0,0,0,87.34,216.5h0a15.35,15.35,0,0,0,13.08-7.31l30.1-44.69a3.2,3.2,0,0,0-4.75-4.2L96.14,186a1.2,1.2,0,0,1-2-.91V104.61a1.2,1.2,0,0,1,2.12-.77l89.55,107.23a15.35,15.35,0,0,0,11.71,5.43h3.13A15.34,15.34,0,0,0,216,201.16V87.84A15.34,15.34,0,0,0,200.66,72.5h0A15.35,15.35,0,0,0,187.58,79.81Z'/%3E%3C/g%3E%3C/svg%3E", + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "nev.zeiris-test.testnet": { + "spec": "ft-1.0.0", + "name": "NEV", + "symbol": "NEV", + "icon": "", + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "mdoge4.duyhuongtest.testnet": { + "spec": "ft-1.0.0", + "name": "Music doge", + "symbol": "Mdoge", + "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAACCQAAAgkCAMAAABf8seIAAAACXBIWXMAAC4jAAAuIwF4pT92AAABsFBMVEUBEDcBEDcAAABGpUkIQFQKTFwLVGABCTQCHT8FL0rUv50KMx0oGlQBEDcCBzMBCDQBDzcBCTQBETggFAsBCzUBDTYBDjYCBjECCDMBDDUBCjQCBTABEzkBEjgBCjUCBzIBAi8BAi4BFToEJUQCCDIDDjYBDDYCBDAFJ0UDETgDEDcFKUYIQVUEFjsCBzEEGT0DHD4CCTI3Jm0HOFABEjkDHD9WR4MCFjsIQlUCAy8JQlYDFToJRFcCFzsDDTUBFDoJRVcIP1QKS1sIQFQIPFIJRlgDHkAIPlMCCjMJR1kKSVoBDjcGLEgEI0MEIkIJSFkBEDgCFzwCCzQBCDMEIEEGMEsIOlEDEzkHN08KTl0DFDkEGDwHNE0HNk4IO1EBFDkEHkAFIUIGKkcCGj0HMkwLUF4KT10GMEoEIUEKTVwCCDQGLkkGLUkLVGEKTFwBBzQFKEYHM0wEGz4CDDULUV8CDDQCGz4HOE8HNU4KSloEHT8LU2AIPVICBTEGL0oEGTwCGT0IPVMDIUILUl8HL0oKSlsCGTwHNU0HM00LVGACBjIGLkoLUmACCzMBAS4AAIGy0ANsAAAAkHRSTlOAQP//gICAgICA/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4A478nAAACzEUlEQVR42uzdPXIj5xWGUVU5cGaEjaoOwI4mQ97r4EKwAmyAgdbskcaWRA45IIj+uT/niW2l99T79YC//X5fU5Ge/mpO1rcVGtfu+rWGNL3c0Un39x9Je/Tv31oSARJSIGGABEGClAYJEyPURIIhYUskOPiMIBVEwlQqQwIkQAIkSFoICRMjQILXhiWQ4OBDglQMCVO5DAmbGmFkBEhgBKkoEiZGgARIgARIkCChgxAgARIgARIkPY6EiRH82wZG8EkCJEiQ0IYIhoTNkTBWNwIkQILUDAnTxAiGhB2XBEgQI0hRkTBNkGBIMCT4JAESJEho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", + "reference": null, + "reference_hash": null, + "decimals": 8 + }, + "mdoge6.duyhuongtest.testnet": { + "spec": "ft-1.0.0", + "name": "Music doge", + "symbol": "Mdoge", + "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAACCQAAAgkCAMAAABf8seIAAAACXBIWXMAAC4jAAAuIwF4pT92AAABsFBMVEUBEDcBEDcAAABGpUkIQFQKTFwLVGABCTQCHT8FL0rUv50KMx0oGlQBEDcCBzMBCDQBDzcBCTQBETggFAsBCzUBDTYBDjYCBjECCDMBDDUBCjQCBTABEzkBEjgBCjUCBzIBAi8BAi4BFToEJUQCCDIDDjYBDDYCBDAFJ0UDETgDEDcFKUYIQVUEFjsCBzEEGT0DHD4CCTI3Jm0HOFABEjkDHD9WR4MCFjsIQlUCAy8JQlYDFToJRFcCFzsDDTUBFDoJRVcIP1QKS1sIQFQIPFIJRlgDHkAIPlMCCjMJR1kKSVoBDjcGLEgEI0MEIkIJSFkBEDgCFzwCCzQBCDMEIEEGMEsIOlEDEzkHN08KTl0DFDkEGDwHNE0HNk4IO1EBFDkEHkAFIUIGKkcCGj0HMkwLUF4KT10GMEoEIUEKTVwCCDQGLkkGLUkLVGEKTFwBBzQFKEYHM0wEGz4CDDULUV8CDDQCGz4HOE8HNU4KSloEHT8LU2AIPVICBTEGL0oEGTwCGT0IPVMDIUILUl8HL0oKSlsCGTwHNU0HM00LVGACBjIGLkoLUmACCzMBAS4AAIGy0ANsAAAAkHRSTlOAQP//gICAgICA/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4A478nAAACzEUlEQVR42uzdPXIj5xWGUVU5cGaEjaoOwI4mQ97r4EKwAmyAgdbskcaWRA45IIj+uT/niW2l99T79YC//X5fU5Ge/mpO1rcVGtfu+rWGNL3c0Un39x9Je/Tv31oSARJSIGGABEGClAYJEyPURIIhYUskOPiMIBVEwlQqQwIkQAIkSFoICRMjQILXhiWQ4OBDglQMCVO5DAmbGmFkBEhgBKkoEiZGgARIgARIkCChgxAgARIgARIkPY6EiRH82wZG8EkCJEiQ0IYIhoTNkTBWNwIkQILUDAnTxAiGhB2XBEgQI0hRkTBNkGBIMCT4JAESJEho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", + "reference": null, + "reference_hash": null, + "decimals": 8 + }, + "mfight-xp.testnet": { + "spec": "ft-1.0.0", + "name": "Multiverse Fighters XP", + "symbol": "MFXP", + "icon": "data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M6.17512 18.0234L5.93884 17.7027V16.2629L6.31818 15.9379L5.93884 16.0618V11.0351L5.10793 11.8686C5.02618 11.9505 5.02618 12.0835 5.10793 12.1655L5.67767 12.7369V14.2216L4.96902 13.5108L5.09091 13.0884L4.62552 13.1662L4.36786 12.9078C4.20596 12.7454 4.09751 12.5497 4.04249 12.3427L4.04545 12.3362L4.03902 12.3294C3.93313 11.9127 4.04275 11.4523 4.36786 11.1263L5.04795 10.4441H5.34091V10.1503L8.49431 6.98735H6.98546V8.13528L5.93884 9.18506V7.59159L6.31818 7.38946L5.93884 7.12088V5.93757H7.78204L8.06818 6.20407L8.56638 5.93757H9.54093L9.54343 5.93506L11.0236 5.93506L11.0211 5.93757H12.9789L12.148 5.10415C12.0663 5.02216 11.9337 5.02215 11.852 5.10415L11.2853 5.67252H9.80518L11.1119 4.36184C11.3231 4.15005 11.5907 4.02943 11.8662 4L12.8184 4.29694C12.8422 4.31753 12.8655 4.33916 12.8881 4.36184L13.1591 4.63366V4.72234L13.5455 5.42901L14.0334 5.51058L16.9416 8.42764V6.98735H15.8751L14.8285 5.93757H17.9883V6.34526L17.8636 6.47762L17.9883 6.76931V13.072L18.8921 12.1655C18.9738 12.0835 18.9738 11.9505 18.8921 11.8686L18.2495 11.224V9.73941L18.5904 10.0813L18.6364 10.1933L18.7823 10.2739L19.6321 11.1263C20.1226 11.6182 20.1226 12.4158 19.6321 12.9078L19.5896 12.9504L19.0909 13.0884V13.4507L15.5786 16.9736H16.9416V15.9694L17.9883 14.9196V18.0234H15.2599L15.1136 17.8983L14.7605 18.0234H10.9482L11.852 18.9299C11.9337 19.0119 12.0663 19.0119 12.148 18.9299L12.7915 18.2844H14.2045V18.3518L13.3157 19.2433H13.1591L12.8664 19.6934C12.835 19.7234 12.8025 19.7515 12.7689 19.7777L11.6808 20C11.4724 19.9453 11.2752 19.836 11.1119 19.6722L10.9939 19.5538L10.4545 18.8558V19.0128L6.98546 15.5333V16.9736H8.05476L9.10138 18.0234H7.23847L6.90909 17.8983L6.67764 18.0234H6.17512ZM16.9416 9.91225L14.0255 6.98735H9.97445L6.98546 9.98536V14.0487L9.90156 16.9736H14.0984L16.9416 14.1218V9.91225Z' fill='%23F9A266'/%3E%3Cpath d='M9.12788 14.3601L8.95988 14.8001L9.44788 14.9601L9.73588 15.0081L9.86388 14.7441L10.0959 13.9441V13.9521L10.2479 13.4641L10.2399 13.4721L10.4639 12.6801L10.9039 14.0001L10.8959 14.0721L11.0879 14.5841V14.7041L11.2719 15.0481L11.9759 14.8321L11.9199 14.4481L11.8719 14.3921L11.7119 14.3841L11.8159 14.3041L11.5439 13.6321L11.4639 13.5281L11.2479 12.8561L11.0319 12.2481L10.9039 11.8401L10.9999 11.5841V11.6001L11.3519 10.8001V10.8081L11.6399 10.1201L11.5759 9.98411L11.7039 9.89611L12.0239 9.24011L11.5039 9.00811H11.4239L11.1919 9.02411L11.0479 9.65611L11.0959 9.69611L11.0239 9.73611L10.8159 10.2881L10.7359 10.5521L10.5359 11.0641L10.5119 11.1601L10.3919 10.8161L10.2959 10.5681L10.2639 10.4881L10.1999 10.1601L10.0239 9.76011L10.0319 9.79211L9.79988 8.99211L9.36788 9.06411L9.00788 9.25611L9.39188 10.1761L9.56788 10.1841L9.44788 10.3201L9.79988 11.1041V11.0961L9.88788 11.3361L9.92788 11.4001L9.98388 11.5281L10.1039 11.7761L9.83188 12.5121L9.84788 12.5761L9.64788 13.0321L9.50388 13.3921L9.36788 13.7441L9.39188 13.9281L9.27988 13.9681L9.12788 14.3601Z' fill='%23F9A266'/%3E%3Cpath d='M14.5202 11.8721L14.7762 11.6241L15.0242 11.3201L15.0402 10.7681L14.2082 9.88811L14.0402 9.83211L14.0082 9.69611L13.2882 8.95211L13.0322 9.04811L12.6482 9.21611L12.6642 9.75211L12.7042 10.0801V11.3921L12.6882 11.4321L12.6802 13.4321L12.7762 13.5361L12.7042 13.7841L12.6162 14.9281L13.0802 14.9761L13.4802 14.9521L13.4322 13.9601L13.3042 13.8481L13.4322 13.6561L13.4162 13.1041L13.4882 13.0241L14.0242 12.4161L14.5202 11.8721ZM13.4242 11.3281L13.3362 11.1681L13.4162 10.9201L13.4082 10.5361L13.4162 9.96811L13.8802 10.4881L13.9522 10.5361L14.0082 10.6481L14.3522 11.0321L14.2242 11.2161L14.1442 11.4161L14.0562 11.3921L13.6562 11.8641L13.4242 12.1121V11.3281Z' fill='%23F9A266'/%3E%3C/svg%3E%0A", + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "hapi.fakes.testnet": { + "spec": "ft-1.0.0", + "name": "HAPI", + "symbol": "HAPI", + "icon": "data:image/svg+xml,%3Csvg version='1.1' id='Layer_2' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' width='600px' height='600px' viewBox='0 0 600 600' enable-background='new 0 0 600 600' xml:space='preserve'%3E %3Cg%3E %3Cg%3E %3Cpath fill='%23141414' d='M263.7,122.8c-3.6,0.3-7.1,0.9-10.7,1.8c-24.5,6-40.3,18.1-50.4,31c24.5-4.7,49.9,1.3,67.3,7.4 c0.5,0.2,1,0.4,1.6,0.6c-2.7-4.2-5.2-9-7.2-14.4C261.2,141.1,261.6,131.6,263.7,122.8z'/%3E %3Cpath fill='%23141414' d='M201.2,197.7c-9.8-1.1-19.1-2.1-24.6-2.1c-0.7,0-1.4,0-2,0.1c-38.1,2.6-67.2,37.3-69.1,82.4 c-1.4,32.2,13.5,53.1,23.3,63.4c-1.5-12.5-0.1-25,4.3-37.3c11.7-32.6,34.3-42.1,60.6-53.1c10.8-4.5,22.5-9.5,34.3-16.6l50.1-39.6 c-10.1,2.2-24.4,4.5-42.9,5.3C227.1,200.6,213.9,199.1,201.2,197.7z'/%3E %3Cpath fill='%23141414' d='M319.1,176.5c-0.5,1.1,0.9,2.1,1.8,1.2c5.3-5.4,16.3-14.3,30.8-14.2c15.6,0.1,35.5,10.2,40.5,22.1 c4,9.8-6.6,16.5-6.6,16.5l0,0c-2.5-2.7-8-6.3-18.2-6.6c-15-0.5-25.3,12.1-24.1,12.9c7.5,4.7,17.3,3.7,23.1,3.5 c5.8-0.2,15.1-2.5,17.8-3.5c4.7-1.8,11.7-7.8,14.9-16.1c2.5-6.5,8.4-28.7-25.2-34.4C352.7,154.3,327,159.6,319.1,176.5z'/%3E %3Cpath fill='%23141414' d='M473.1,225.1c-0.5-0.6-1.1-1.3-1.7-2l-0.3-0.3c-3.9-4.4-7.6-8.3-9.4-10.1c1.2-4.2,4-16.2,1-26.1 c-2.3-7.7-6.8-15.5-9.2-19.4l-0.8-1.2h0c-0.4-0.6-0.8-1.2-1.1-1.7c-0.3-0.4-0.5-0.7-0.6-1l-0.2-0.7c-2.5-7-8.6-22.3-16.4-28.1 l59.4-91.7c2.3-3.5-2.1-7.5-5.4-5l-86.8,66.5c-8.7-12.3-21.1-21.8-21.8-22.4c-0.8-0.6-2-0.7-2.9-0.2c-0.9,0.5-1.4,1.6-1.3,2.6 c0,0.1,0.6,5.9-2.9,17.6c7.5,2.7,13.9,6,19.3,9.7l-4.5,3.5c-8.8-5.7-20-10.5-34.3-12.6c-17.7-2.6-31.9,1-42.1,10.7c0,0,0,0,0,0 c5.9,3.8,13.1,8.7,17,12.4c0.8,0.7,1.5,1.5,2.2,2.3c-3.1,0.9-6.2,1.9-9.3,2.9c-0.3-0.2-0.5-0.5-0.8-0.7c-1.9-1.7-4.4-3.4-7-5.3 c-5.4-3.8-11.7-8.3-15.8-14c-2.2-3.1-3.8-6.5-4.3-10.4c-0.3-2.4-1-4-2.2-4.9c0,0,0,0,0,0c0,0,0,0,0,0c-0.6-0.5-2.8-2-5.8,0.3 c-2,1.6-4.4,5.3-6.5,10.3c-5.2,12.3-8.7,32.1-1.8,46.1c1.2,2.3,2.4,4.5,3.7,6.6c-0.4,1-0.7,2.1-0.9,3.1c-0.6,3.4-0.9,7.8-1.2,12.7 c-19.8-8.3-50.5-17.5-78.5-10.7c-23.9,5.8-39.4,17.5-49.6,30c7.4-3.1,15.2-5,23.5-5.6c5.6-0.4,16.4,0.8,27.9,2.1 c11.8,1.3,25.3,2.8,32.9,2.4c19.2-0.8,33.7-3.3,43.5-5.6c0,5.4,0.1,11.1,0.4,16.9c0.7,16.8,2.5,34.3,5,46.5 c3.6,17.9,16.5,55.2,31.4,64.6c5.5,3.5,13.5,8.2,22.9,13.4c-2.5,6.4-5.1,15.1-5.1,23.5c0,15.2,5.2,26.6,11,37 c4.6,8.2,9.6,15.7,12.8,24c2.5,6.5-2.7,27.7-5.6,38.9c-1.2,4.5-1.9,7.3-1.7,7c3.7-5.1,7.5-10.8,11.3-16.8 c15.3-24.2,19.4-47,19.5-48l0.2-1.4l-1.1-1c-0.2-0.2-17.2-15.7-18.3-33.3c-0.4-6.9,1-11.5,4.3-13.8c0.5-0.3,1-0.6,1.6-0.9 c7.5,3.7,15,7.3,22.2,10.5c2.8,3.5,9,9.4,11.8,12c3.4,3.2,6.9,7.8,12.2,7.8c5.3,0,15.9,0,21.3,0s13.1,0,17.3-2.1 c4.2-2.1,10.9-5.6,11-12.6c0-1.5,0.4-3.9,0.9-6.8c3.7-4.9,4.1-10.6,4.8-19.2c0.5-5.7,1.7-15.5,3-25.9c2-15.7,4.1-32,3.9-37.9 c-0.2-8.2-1.1-14.3-1.4-16.2C475.3,249.4,479.5,232.4,473.1,225.1z M318,310.6c-13.3-8.4-25.6-44.6-29-61.2 c-4.8-23.9-6.9-68.5-3.9-86.8c2.7-16.7,49-34.5,81.7-35.6c1.9-0.1,3.8-0.1,5.6-0.1c1,0,2,0,3,0c-0.1,4.9,1.3,15.6,13.8,25.5 c13.9,11,30.4,5,30.4,5l12.1-18.7c4.5,3.5,9.4,12.7,13,22.1c-0.9-0.4-1.9-0.7-3.1-0.9c-8.1-1.3-31.6-0.9-24,31.3 c1,4,5.2,9.4,17.2,22.3c2.8,3,5.1,5.3,7,7.2c5.6,5.6,7.4,7.4,7.5,11.8c0,0.3-0.2,1.6-0.4,3c-0.8-0.6-1.9-1.1-3.4-1 c-3.6-0.2-33.7,5.6-42.4,15.1c-1.7,1.9-4.5,2.6-6.7,1.4c-0.1-0.1-0.2-0.1-0.3-0.2c-1.4-0.8-2.3-1.9-2.8-3.5 c-1.3-5.1,2.9-13.2,4.6-16c0.6-1,0.3-2.3-0.6-2.9c-1-0.6-2.3-0.3-2.9,0.6c-0.1,0.2-0.9,1.5-1.9,3.5c-3.3,6.6-8.2,12.2-14.3,16.3 c-9.8,6.6-24,15.2-35.5,18.2c-18,4.7-24.9-8.2-25.2-8.8c-0.5-1-1.8-1.4-2.8-0.9c-1,0.5-1.5,1.8-0.9,2.8 c0.1,0.1,6.3,12.1,21.5,12.1c0.6,0,1.4-0.1,2.2-0.2c4.3-0.5,8.6,0.5,12.3,2.7c3.5,2.1,8,4.7,12.5,7c12.6,6.3,14.7,6.2,19.5,5.4 c1.1-0.2,49.8-2.4,80.1-8.2l3.6,0.2c2.4,0.1,4.3,2.3,4,4.7l0,0.1c-0.2,1.4-1,2.6-2.2,3.3c-2.7,1.5-6.5,3.5-9.9,4.9 c-1.6,0.6-3.3,1.2-5.1,1.6c-5.5,1.3-11.1,1.6-11.1,1.6s-5.4,1.2-13.5,2.1c-3.4,0.4-7.2,0.7-11.3,0.9c-14,0.7-13,1.6-24.8,1 c-2.9-0.1-5.7-0.3-8.3-0.6c-2.5-0.3-3.2,3.4-0.7,4c6.1,1.5,13.3,2.6,21.3,2.5c1,0,1.9,0,2.9,0c12.8-0.1,24.4,7.5,29.4,19.3 c2.1,5,4.1,12,5.4,18.5c1.8,8.4-5.3,16.1-13.8,15.3c-12.5-1.3-26.6-4.8-34.6-8.3C365.3,338.1,332.4,319.8,318,310.6z M448.7,169.2 l1.2,1.9c2.4,4,5.9,10.5,7.9,16.9c3.1,10.4-1.4,24.4-1.4,24.5l-0.5,1.5l1.1,1.1c0,0.1,5,5.2,10.3,11.1l0.1,0.2 c0.6,0.7,1.2,1.3,1.8,2c3.7,4.3,1.9,17-0.1,23.9l-0.2,0.6l0.1,0.6c0,0,0.3,1.5,0.6,3.9c-2.7,0.3-4.7,2.7-4.4,5.5l0.8,7.5l-8.6,0.1 l-13.5-15.3c-1-1.2-1-3,0.2-4c0,0,0,0,0,0c7.1-6.4,8.1-9.5,8.3-10.7c0.9-5.4,1.2-7.4,1.2-8.1c0-6.1-2.9-9-8.7-14.8 c-1.9-1.9-4.2-4.2-6.9-7.1c-0.6-0.6-1.1-1.2-1.7-1.8c2.1,0.6,4.9,1.2,8.5,1.5c8.4,0.7,10.9-1.4,10.9-1.4s1.5-2.7-1.1-6.6 c-2.6-3.9-6.2-6.7-13.2-6.9c-5-0.2-9.5,3.7-11.7,6c-0.9-1-2.9-4.7-3.8-10.9c-1.5-9.7,2.1-14.2,4.7-16.4c4.6-3.9,10.9-7.7,14.4-7.5 c0.9,0.1,1.9,0.2,2.7,0.4C447.8,167.7,448.2,168.4,448.7,169.2z M463.4,332.9c-0.7,8.2-1.1,12.8-3.8,16.5c-2.3,3.1-7.3,0.8-6.6-3 c0.4-2.1,0.7-4.3,0.8-6.4c0.3-10.7-4.9-20.9-6.7-27.7c0,0,0-0.1,0-0.1c-0.9-3.8,1.2-7.7,4.8-9.3c1.6-0.7,3.4-1.6,5.3-2.6 c4.6-2.3,9.9,1.3,9.2,6.4l0,0.1C465.2,317.2,463.9,327.1,463.4,332.9z M385.1,249.4c1.8-1.3,4.4-0.8,5.6,1.2 c0.8,1.4,1.9,2.9,3.4,4.1c4.5,3.7,9.8,3.5,13.2,3.5c3.3,0,5.4-0.6,6-0.8c0,0,0,0,0,0c2.4-0.5,4.3,2,3.1,4.2 c-2.6,4.8-6.1,11.1-6.5,11.4c-0.7,0.5-22.8,5.1-25.6,5.4s-11.6,1.2-18.2-3c-2.8-1.7-5.5-3.7-7.7-5.3c-1.7-1.2-1.4-3.8,0.4-4.7 C368.8,260.4,378.7,253.9,385.1,249.4z M436.8,263.8l8.3,9.1c1.5,1.7,0.5,4.4-1.7,4.7c-5,0.6-10,1.2-14.9,1.7 c-2.3,0.2-3.9-2.3-2.7-4.3c1.9-3,4.3-7,6.5-10.8C433.2,262.6,435.5,262.4,436.8,263.8z M396.4,117.1l83.5-69.1l-76.9,76.9 c-2.5,2.4-6.6,1.6-8.1-1.5h0C393.9,121.2,394.5,118.5,396.4,117.1z'/%3E %3Cpath fill='%23141414' d='M196.6,258.1c-25.6,10.7-45.8,19.2-56.4,48.7c-15.1,42,9.4,88.5,62.5,120.1c-17.4-68,3.5-93.1,22.1-115.3 c6.4-7.7,12.5-15,16.9-23.7c12.9-25.8,12.3-50.5,11.1-62C233.7,242.5,214.1,250.8,196.6,258.1z'/%3E %3C/g%3E %3Cg%3E %3Cpath d='M201.6,477.1h-9.1l-2.8,17.1h-14.3l2.8-17.1h-9.1l-2.8,17.1h-9.3l-1.5,9.1h9.3l-2.3,14h-9.4l-1.5,9.1h9.4l-2.8,17.1h9.1 l2.8-17.1h14.3l-2.8,17.1h9.1l2.8-17.1h9.3l1.5-9.1h-9.3l2.3-14h9.4l1.5-9.1h-9.4L201.6,477.1z M186,517.4h-14.3l2.3-14h14.3 L186,517.4z'/%3E %3Cpolygon points='260.8,505.3 230,505.3 230,477.1 218,477.1 218,543.6 230,543.6 230,515.4 260.8,515.4 260.8,543.6 272.9,543.6 272.9,477.1 260.8,477.1 '/%3E %3Cpath d='M307.1,477.1l-23.4,66.4h12.8l5.5-16.4h25l5.5,16.4h12.8l-23.4-66.4H307.1z M305.3,517.5l9-26.8h0.5l9,26.8H305.3z'/%3E %3Cpath d='M394,480c-3.5-1.9-7.8-2.9-12.9-2.9h-24.9v66.4h12v-22.4H381c5.1,0,9.4-0.9,12.9-2.8s6.2-4.5,7.9-7.8 c1.8-3.3,2.7-7.1,2.7-11.3c0-4.2-0.9-8-2.7-11.3C400.1,484.5,397.4,481.9,394,480z M390.9,505.4c-0.9,1.8-2.3,3.2-4.2,4.3 c-1.9,1-4.3,1.6-7.3,1.6h-11.1v-24h11c3,0,5.5,0.5,7.4,1.5c1.9,1,3.3,2.4,4.2,4.2c0.9,1.8,1.4,3.9,1.4,6.2 S391.8,503.6,390.9,505.4z'/%3E %3Crect x='417.1' y='477.1' width='12' height='66.4'/%3E %3C/g%3E %3C/g%3E %3C/svg%3E", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "lnct.token-factory.tokenhub.testnet": { + "spec": "ft-1.0.0", + "name": "LearnNear.Club Token", + "symbol": "LNCT", + "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAdZJREFUWEdj/L8p8j/DAALGUQeMhsBoCIyGwGgIUDsEPn79zfCfAVK6c7GzMLCxMOEt6KlaFAtGrmGAOAACQA54Mt+fQZCHDacjSHKAWMw6BlVpXoajna5gA2uWXALTLTF6DBqZWxmevfvOcKjDmcFAUZDhxfvvDCXzLjBsO/uM4d2yYPIcsPzQQ4ZIO3m4Zka/5WD2vdm+DIriPAyFc86B+YGWMgz2lXsZ/m6IYGBiYkSxzLF6L0NHvAGDuZowVkfgDYG6pZcYmqL1UBzQlWDAULnoIsPv9eEMRXPPg+XsdcQYSuadZ7gzy5fkip1kB7xfHszgVrefQU9BgIGXkxXugPgJJxg+rgjBcMDuCy8YXA0kyIsCbCEAcoAANxuDVPwGBn1FAQYNGT6GhihdBoGINQybauwYfM2k4ZZdfviBQS93O0NbnD5DZYgW6VGQPvUUQ6aXKlgjKGGB0gDMAY3LLzM0LL/CUOCnztCfYsRw8+kncEIEgfMTPRimbr3NMGfXXYayIE2GzgQD8kIAXVflwosM9ZE6DBxszGCpLaefgWkfUykw/fvvPwaF5E0M337+BfPn5pkxBFnK4k0XJGVDklMYERpGHTAaAqMhMBoCoyEw4CEAALRA6EHkby9MAAAAAElFTkSuQmCC", + "reference": null, + "reference_hash": null, + "decimals": 8 + }, + "ft.nearlend-official.testnet": { + "spec": "ft-1.0.0", + "name": "Nearlend Dao", + "symbol": "NEL", + "icon": "data:image/png;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "fusotaot.testnet": { + "spec": "ft-1.0.0", + "name": "FUSOTAO", + "symbol": "TAO", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "usdt.itachicara.testnet": { + "spec": "ft-1.0.0", + "name": "USDT", + "symbol": "USDT", + "icon": "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 288 288'%3E%3Cg id='l' data-name='l'%3E%3Cpath d='M187.58,79.81l-30.1,44.69a3.2,3.2,0,0,0,4.75,4.2L191.86,103a1.2,1.2,0,0,1,2,.91v80.46a1.2,1.2,0,0,1-2.12.77L102.18,77.93A15.35,15.35,0,0,0,90.47,72.5H87.34A15.34,15.34,0,0,0,72,87.84V201.16A15.34,15.34,0,0,0,87.34,216.5h0a15.35,15.35,0,0,0,13.08-7.31l30.1-44.69a3.2,3.2,0,0,0-4.75-4.2L96.14,186a1.2,1.2,0,0,1-2-.91V104.61a1.2,1.2,0,0,1,2.12-.77l89.55,107.23a15.35,15.35,0,0,0,11.71,5.43h3.13A15.34,15.34,0,0,0,216,201.16V87.84A15.34,15.34,0,0,0,200.66,72.5h0A15.35,15.35,0,0,0,187.58,79.81Z'/%3E%3C/g%3E%3C/svg%3E", + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "dev-1656158344303-37963081919420": { + "spec": "ft-1.0.0", + "name": "necco", + "symbol": "BB", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 8 + }, + "token.denbite.testnet": { + "spec": "ft-1.0.0", + "name": "My First Token on Near", + "symbol": "FTNEAR", + "icon": "https://www.svgrepo.com/download/90204/coin.svg", + "reference": null, + "reference_hash": null, + "decimals": 6 + }, + "unet.testnet": { + "spec": "ft-1.0.0", + "name": "Unique One Network", + "symbol": "UNET", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "linear-protocol.testnet": { + "spec": "ft-1.0.0", + "name": "LiNEAR", + "symbol": "LINEAR", + "icon": "data:image/svg+xml,%3Csvg width='40' height='40' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M30.74 28.78c.21-.36.32-.78.32-1.21v-6.33c0-.24-.06-.46-.17-.66-.12-.21-.28-.38-.48-.49l-16.86-9.77c-.35-.2-.73-.31-1.13-.32-.64 0-1.24.26-1.69.72-.45.45-.7 1.07-.71 1.71v6.39c0 .24.06.47.18.67.11.21.28.37.48.48l16.82 9.71c.36.22.77.32 1.19.32.41 0 .82-.12 1.19-.33.36-.21.66-.52.86-.89zm.32-16.27c0-.42-.1-.84-.29-1.21-.2-.38-.49-.7-.85-.93-.36-.22-.78-.34-1.21-.34-.42 0-.84.12-1.21.34l-4.97 2.81c-.04.02-.08.07-.1.12-.03.04-.04.1-.04.14 0 .06.01.11.04.16.02.04.06.08.1.1l8.05 4.62c.05.02.1.04.15.04.05 0 .1-.02.15-.05.04-.02.08-.06.11-.11.02-.04.04-.1.03-.15l.04-5.54zM10.05 27.5c-.01.43.08.86.28 1.23.2.38.49.7.85.93.36.22.78.34 1.2.34.42 0 .83-.12 1.2-.34l4.92-2.85c.04-.02.08-.06.1-.11.03-.04.05-.1.05-.15 0-.05-.02-.11-.05-.15-.02-.05-.06-.09-.1-.12l-8.05-4.6c-.05-.03-.09-.04-.15-.04-.05 0-.1.01-.15.04-.05.02-.08.07-.11.12-.02.04-.04.09-.04.14l.05 5.56z' fill='url(%23paint0_linear_186_370)'/%3E%3Cdefs%3E%3ClinearGradient id='paint0_linear_186_370' x1='11.135' y1='11.152' x2='30.145' y2='30.457' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%231BB3CC'/%3E%3Cstop offset='1' stop-color='%23824ACC'/%3E%3C/linearGradient%3E%3C/defs%3E%3C/svg%3E", + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "dev-1659376124979-70056900837834": "", + "dev-1656503191682-75595562063048": { + "spec": "ft-1.0.0", + "name": "AppTestnet INIT Token", + "symbol": "INIT", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "jnt.tokens.testnet": { + "spec": "ft-1.0.0", + "name": "Jorge New Token", + "symbol": "JNT", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 10 + }, + "usdt.nearlend.testnet": { + "spec": "ft-1.0.0", + "name": "Tether", + "symbol": "USDT", + "icon": "data:image/svg+xml,%3Csvg viewBox='0 0 40 41' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M20 40.3967C31.0457 40.3967 40 31.4424 40 20.3967C40 9.35103 31.0457 0.396729 20 0.396729C8.9543 0.396729 0 9.35103 0 20.3967C0 31.4424 8.9543 40.3967 20 40.3967ZM9.94128 26.8949C10.8013 27.6658 11.8831 27.8967 12.92 27.8967C14.0181 27.8967 15.0686 27.635 15.7432 27.467L15.7518 27.4648C15.8896 27.4288 16.0125 27.3988 16.1084 27.3778C18.6046 26.829 21.1098 26.805 23.5551 27.2939C23.6803 27.3172 23.8337 27.3575 24.01 27.4037L24.0256 27.4078L24.0427 27.4121C25.4456 27.7647 28.3397 28.4921 30.2856 26.652C31.0407 25.9442 31.5442 24.9274 31.703 23.7996L31.7042 23.791C31.9467 22.0799 32.2474 19.9585 31.658 17.0091C31.5352 16.3792 31.0677 15.0625 30.3485 14.2287C29.1828 12.87 27.2919 12.5521 24.7238 13.2689L24.6369 13.2929C21.859 14.0578 19.0451 14.1357 16.2762 13.5239L16.0395 13.4699L16.0332 13.4684C15.1327 13.2611 13.4619 12.8765 11.973 13.086C10.6275 13.2779 9.43185 14.1627 8.77558 15.4614C8.52686 15.9503 8.40699 16.4452 8.33208 16.8231C7.90056 18.9827 7.88857 21.5411 8.30211 23.8506C8.52086 25.0653 9.10221 26.1481 9.94128 26.8949ZM12.4165 16.2383C12.5723 16.2173 12.7372 16.2083 12.908 16.2083C13.75 16.2083 14.7509 16.4362 15.3263 16.5772L15.59 16.6402C18.8683 17.363 22.1916 17.2731 25.4729 16.3702L25.5808 16.3433C27.3159 15.8514 27.8103 16.1543 27.9422 16.3073C28.1999 16.6042 28.4936 17.36 28.5475 17.639C29.033 20.0624 28.7842 21.8141 28.5625 23.3587C28.5056 23.7726 28.3407 24.1326 28.11 24.3515C27.4265 24.997 25.7497 24.5746 24.8276 24.3423L24.8047 24.3365C24.559 24.2735 24.3462 24.2225 24.1754 24.1865C21.3016 23.6077 18.3589 23.6437 15.4341 24.2795C15.3141 24.3059 15.1654 24.3437 14.9937 24.3874L14.9817 24.3905L14.9487 24.3986C14.3211 24.5535 12.5601 24.9881 12.0479 24.5315C11.7393 24.2585 11.5115 23.8086 11.4216 23.2987C11.083 21.4001 11.089 19.2136 11.4426 17.459C11.4756 17.291 11.5295 17.0541 11.6044 16.9041C11.7902 16.5322 12.0959 16.2833 12.4165 16.2383Z' fill='%2386EC8A'/%3E%3C/svg%3E", + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "xcorn.v1.corndao.testnet": { + "spec": "ft-1.0.0", + "name": "Staked CORN", + "symbol": "xCORN", + "icon": "data:image/svg+xml,%3Csvg width='300' height='300' viewBox='0 0 300 300' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M150.43 32L99.7144 61.4389L150.43 90.8705L201.145 61.4389L150.43 32Z' fill='%235C65A5'/%3E%3Cpath d='M201.146 61.4388L150.431 90.8703L201.146 120.309L251.854 90.8703L201.146 61.4388Z' fill='%233B4274'/%3E%3Cpath d='M99.7152 61.4388L49 90.8703L99.7152 120.309L150.43 90.8703L99.7152 61.4388Z' fill='%233B4274'/%3E%3Cpath d='M150.43 90.8707L99.7144 120.31L150.43 149.749L201.145 120.31L150.43 90.8707Z' fill='%235C65A5'/%3E%3Cpath d='M99.7152 120.31L49 90.8707V149.749L99.7152 179.187V120.31Z' fill='%235C65A5'/%3E%3Cpath d='M150.43 149.748L99.7144 120.309V179.187L150.43 208.626V149.748Z' fill='%233B4274'/%3E%3Cpath d='M99.7152 179.187L49 149.748V208.626L99.7152 238.058V179.187Z' fill='%233B4274'/%3E%3Cpath d='M150.43 208.626L99.7144 179.187V238.057L150.43 267.496V208.626Z' fill='%235C65A5'/%3E%3Cpath d='M150.431 267.496L201.146 238.057L150.431 208.626V267.496Z' fill='%233B4274'/%3E%3Cpath d='M224.085 213.702L209.447 198.197L194.809 213.702H167.656L195.643 182.183L167.656 150.665H194.809L209.447 166.933L224.085 150.665H251.086L223.175 182.183L251.086 213.702H224.085Z' fill='%233B4274'/%3E%3C/svg%3E", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "wrap.testnet": { + "spec": "ft-1.0.0", + "name": "Wrapped NEAR fungible token", + "symbol": "wNEAR", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "dev-1638832810474-35858951963053": { + "spec": "ft-1.0.0", + "name": "Potato 🥔", + "symbol": "POTATO", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "dai.fakes.testnet": { + "spec": "ft-1.0.0", + "name": "Dai Stablecoin", + "symbol": "DAI", + "icon": "data:image/svg+xml,%3Csvg width='32' height='32' viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Ccircle fill='%23F4B731' fill-rule='nonzero' cx='16' cy='16' r='16'/%3E%3Cpath d='M9.277 8h6.552c3.985 0 7.006 2.116 8.13 5.194H26v1.861h-1.611c.031.294.047.594.047.898v.046c0 .342-.02.68-.06 1.01H26v1.86h-2.08C22.767 21.905 19.77 24 15.83 24H9.277v-5.131H7v-1.86h2.277v-1.954H7v-1.86h2.277V8zm1.831 10.869v3.462h4.72c2.914 0 5.078-1.387 6.085-3.462H11.108zm11.366-1.86H11.108v-1.954h11.37c.041.307.063.622.063.944v.045c0 .329-.023.65-.067.964zM15.83 9.665c2.926 0 5.097 1.424 6.098 3.528h-10.82V9.666h4.72z' fill='%23FFF'/%3E%3C/g%3E%3C/svg%3E", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "dev-1650623538314-53746013589195": { + "spec": "ft-1.0.0", + "name": "KJK Token Name", + "symbol": "KJK", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "stnear.fakes.testnet": { + "spec": "ft-1.0.0", + "name": "Staked NEAR", + "symbol": "STNEAR", + "icon": "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 67.79 67.79' version='1.1'%3E%3Cpath style='fill:%23fff' d='M33.934.311a33.9 33.9 0 1 0 33.89 33.9 33.9 33.9 0 0 0-33.89-33.9z' id='path505'%3E%3C/path%3E%3Cpath style='fill:%23ffbd00;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1' d='m11.803 27.8 12.387.359 2.361 5.959 7.616 3.31 8.523-3.322 2.348-5.87 12.269.03L54.822 54.2 31.837 58.86 12.89 52.648z' id='path1051'%3E%3C/path%3E%3Cpath style='fill:%23a0a0ff;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1' d='m34.657 12.575-10.43 9.633 1.096 10.01 8.844 5.21 9.785-5.287 1.086-11.33z' id='path1815'%3E%3C/path%3E%3Cpath id='path928' style='fill:%23666;fill-opacity:1' d='M33.928 4.282a29.93 29.93 0 0 1 4.682.367 29.93 29.93 0 0 1 25.244 29.572 29.93 29.93 0 0 1-29.92 29.92 29.93 29.93 0 0 1-.006-59.86zm.729 8.293c-2.03 5.668-8.815 9.76-8.815 14.521 0 4.76 3.912 8.62 8.737 8.62 4.824 0 8.736-3.86 8.736-8.62s-6.707-8.697-8.658-14.521zM37.84 22.67a2.524 2.446 0 0 1 .246.012 2.524 2.446 0 0 1 .246.035 2.524 2.446 0 0 1 .24.059 2.524 2.446 0 0 1 .233.08 2.524 2.446 0 0 1 .225.104 2.524 2.446 0 0 1 .213.123 2.524 2.446 0 0 1 .197.142 2.524 2.446 0 0 1 .183.162 2.524 2.446 0 0 1 .168.178 2.524 2.446 0 0 1 .147.191 2.524 2.446 0 0 1 .127.207 2.524 2.446 0 0 1 .105.217 2.524 2.446 0 0 1 .084.227 2.524 2.446 0 0 1 .06.232 2.524 2.446 0 0 1 .038.237 2.524 2.446 0 0 1 .012.24 2.524 2.446 0 0 1-.086.633 2.524 2.446 0 0 1-.252.59 2.524 2.446 0 0 1-.403.507 2.524 2.446 0 0 1-.521.389 2.524 2.446 0 0 1-.61.244 2.524 2.446 0 0 1-.652.084 2.524 2.446 0 0 1-.654-.084 2.524 2.446 0 0 1-.607-.244 2.524 2.446 0 0 1-.524-.389 2.524 2.446 0 0 1-.4-.508 2.524 2.446 0 0 1-.252-.59 2.524 2.446 0 0 1-.086-.632 2.524 2.446 0 0 1 .086-.633 2.524 2.446 0 0 1 .252-.59 2.524 2.446 0 0 1 .4-.506A2.524 2.446 0 0 1 36.58 23a2.524 2.446 0 0 1 .607-.247 2.524 2.446 0 0 1 .654-.082zM24.19 28.16a16.579 2.485 0 0 0-6.502 1.965 16.579 2.485 0 0 0 7.635 2.093 10.483 10.6 0 0 1-1.133-4.058zm20.848.078a10.483 10.6 0 0 1-1.086 3.904 16.579 2.485 0 0 0 6.894-2.017 16.579 2.485 0 0 0-5.808-1.887zm6.925 3.21c-.455 1.177-4.097 2.154-9.273 2.659a10.483 10.6 0 0 1-8.072 3.861 10.483 10.6 0 0 1-8.067-3.85c-5.276-.506-8.978-1.498-9.398-2.64h-.049v5.17h.049a.69.69 0 0 0-.049.24c0 1.8 7.81 3.25 17.43 3.25 9.62 0 17.43-1.45 17.43-3.25a.69.69 0 0 0 0-.24zm.032 7.323c-.67 1.73-8.22 3.03-17.43 3.03-9.23 0-16.771-1.34-17.381-3h-.049v5.17h.049a.69.69 0 0 0-.049.24c0 1.8 7.81 3.25 17.43 3.25 9.62 0 17.43-1.45 17.43-3.25a.69.69 0 0 0 0-.24zm0 7.21c-.67 1.69-8.22 3.03-17.43 3.03-9.23 0-16.771-1.34-17.381-3h-.049v5.17h.049a.69.69 0 0 0-.049.24c0 1.8 7.81 3.25 17.43 3.25 9.62 0 17.43-1.45 17.43-3.25a.69.69 0 0 0 0-.24z'%3E%3C/path%3E%3C/svg%3E", + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "token.pembrock.testnet": { + "spec": "ft-1.0.0", + "name": "PembRock", + "symbol": "PEM", + "icon": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCAyMDAgMjAwIj48cGF0aCBmaWxsPSIjMUUxRTFGIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMTMuMiAxNzAuNDJhODMuNTEgODMuNTEgMCAwIDAgNzAuNy04Mi42IDgzLjUgODMuNSAwIDAgMC01Ljc4LTMwLjYxbDEzLjY4LTIzLjg3aC0yOC4wOGE4My4xIDgzLjEgMCAwIDAtNjMuMi0yOS4wNiA4My4xIDgzLjEgMCAwIDAtNjMuMiAyOS4wNkg4LjU4TDIyLjcgNTcuNzhhODMuNSA4My41IDAgMCAwLTUuNTUgMzAuMDUgODMuNTEgODMuNTEgMCAwIDAgNzAuNiA4Mi41N2wxMi43NyAyMi4xMSAxMi42Ny0yMi4xWiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PHBhdGggZmlsbD0iI0VBRUNFRiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAwLjUzIDcuOTJBNzguNjYgNzguNjYgMCAwIDAgNDAuNjEgMzUuNmwtMS4xOCAxLjE3SDE2LjY1TDI4LjIzIDU3LjFsLS42OCAxLjc3Yy0zLjQgOC44Ny02LjA3IDE4LjEtNi4wNyAyOC4yIDAgMzkuNzcgMjkuMDMgNzMuMTQgNjYuOTQgNzlsMS44Ni4zIDEwLjM0IDE3Ljc5IDEwLjA2LTE3Ljc4IDEuODctLjNjMzcuOTUtNS44MSA2Ny4wMy0zOC44IDY3LjAzLTc4LjYxIDAtMTAuMy0yLjI0LTIwLjEzLTUuNzgtMjkuMTVsLS42OS0xLjc4IDExLjE4LTE5Ljc3aC0yMi42NWwtMS4xOC0xLjE3YTc4LjY2IDc4LjY2IDAgMCAwLTU5LjkzLTI3LjY3Wk0zNS44NCAyOS4wNEE4Ni40OCA4Ni40OCAwIDAgMSAxMDAuNTQgMGE4Ni40OCA4Ni40OCAwIDAgMSA2NC42OCAyOS4wNGgzMi42N0wxODEuODEgNTcuMmMzLjQ2IDkuNDMgNS42NSAxOS42MyA1LjY1IDMwLjI2IDAgNDMuMTItMzEuMDIgNzguOTUtNzEuODMgODYuMTRMMTAwLjY1IDIwMGwtMTUuMy0yNi40MmMtNDAuNzctNy4yMy03MS43NC00My40NC03MS43NC04Ni41MyAwLTEwLjQgMi42Mi0xOS45OSA1LjkzLTI5LjI1TDMgMjkuMDRoMzIuODRaIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48cGF0aCBmaWxsPSIjRjY4MjFGIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Im0zMS44NSA0NS40MSA2OC43NSAxMjAuNDIgOC4wNi0xNC4xMi0yNy40Ny00OC4xM2gyNC4zTDcyLjMzIDQ1LjRIMzEuODVabTQ5LjE5IDAgNDQuMTUgNzcuMzIgNy42Ny0xMy40NC0yOC4xOC00OS4zNGg4LjM3bDIzLjk5IDQyLjAyTDE0NSA4OGwtMTYuMDItMjguMDVoMTYuNDJsLTQuNDMgNy43NiA3LjgxIDEzLjcgMjAuNTctMzZIODEuMDRaTTU2LjMgNTkuOTVsMTYuNjIgMjkuMTFoOC42N0w2NC45NyA1OS45NUg1Ni4zWk00NC4yIDg0LjZhNTYuNjUgNTYuNjUgMCAwIDAgMzEuMDUgNTQuMTJsNi4zMiAxMS4wMWE2NC40NSA2NC40NSAwIDAgMS00NS4yOS02MS43YzAtNC45Ny41Ni05LjggMS42LTE0LjQ0bDYuMzMgMTEuMDJabTc5LjY1LTQ3LjlhNTUuNDYgNTUuNDYgMCAwIDAtMjMuNjYtNS4yNyA1NS40NSA1NS40NSAwIDAgMC0yMy42NSA1LjI2SDYxLjVhNjMuMjYgNjMuMjYgMCAwIDEgMzguNy0xMy4xNmMxNC41NCAwIDI3Ljk1IDQuOSAzOC43IDEzLjE2aC0xNS4wNVoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjxwYXRoIGZpbGw9IiNGNjgyMUYiIGQ9Ik00NC4xIDg4LjAyYzAtMS4xNC4wNC0yLjI4LjEtMy40MWwtNi4zLTExLjAyYTY1LjI2IDY1LjI2IDAgMCAwLTEuNiAxNC40MyA2NC40NSA2NC40NSAwIDAgMCA0NS4yOCA2MS43MWwtNi4zMS0xMWE1Ni42NSA1Ni42NSAwIDAgMS0zMS4xNS01MC43Wm0xMTMuMTIgMGMwLTEuMTQtLjItMi4yOC0uMjctMy40MWw2LjI1LTExLjAyYTY1LjMxIDY1LjMxIDAgMCAxIDEuODQgMTQuNDMgNjQuNDUgNjQuNDUgMCAwIDEtNDUuMjkgNjEuNzFsNi4zMS0xMWE1Ni42NSA1Ni42NSAwIDAgMCAzMS4xNi01MC43WiIvPjwvc3ZnPg==", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "azk.1741factory.gadillac.testnet": { + "spec": "nft141-ft-1.0.0", + "name": "Azuki", + "symbol": "AZK", + "icon": "https://ipfs.infura.io/ipfs/Qma9mRaodKPUsqRGJtKmeLSP8zTpU2exwUp7UqsNdwS3hh", + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "token.durudex.testnet": { + "spec": "ft-1.0.0", + "name": "Durudex", + "symbol": "DUR", + "icon": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDk4IiBoZWlnaHQ9IjQ5OCIgdmlld0JveD0iMCAwIDQ5OCA0OTgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSI0OTgiIGhlaWdodD0iNDk4IiBmaWxsPSJ3aGl0ZSIvPgo8Y2lyY2xlIGN4PSIyNDkiIGN5PSIyNDkiIHI9IjI0OSIgZmlsbD0idXJsKCNwYWludDBfbGluZWFyXzEwOF84KSIvPgo8cGF0aCBkPSJNMzE0LjYyOCAxMTcuODZIMTI4LjY1TDE4MC4zNTMgMTYyLjgwOUgzMDQuODUzQzMwOC43NjMgMTYzLjIyIDMwOS4zOTcgMTY3LjA4OSAzMDkuMjI2IDE2OC45NzNWMzA1LjM2QzMwNi43NTYgMzE2LjQ1NiAyOTcuMDUgMzIwLjA4NiAyOTIuNTA2IDMyMC41MTRIMjI0LjU5N1YzNjUuNDYzQzI1Mi4zNzggMzY1Ljg5MSAzMDcuOTQgMzY2LjQ5IDMwNy45NCAzNjUuNDYzQzM0OS41MDggMzY0LjIzIDM2MC4wNzIgMzM2LjM1MyAzNjAuMTU3IDMyMi41NjlWMTY3LjY4OUMzNjEuODA0IDEzMC4wODYgMzMwLjQ5IDExOC44MDIgMzE0LjYyOCAxMTcuODZaIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNMjA2LjA3NiAyNjguMTE3VjM2NS40NjNIMTY2LjcyVjMxMS43ODFMMjA2LjA3NiAyNjguMTE3WiIgZmlsbD0id2hpdGUiLz4KPGRlZnM+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhcl8xMDhfOCIgeDE9IjQxLjQxNDgiIHkxPSI1Ny4yNjQ5IiB4Mj0iNDc5LjU5MyIgeTI9IjQ3OS4wODIiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0iI0Q5RDlEOSIvPgo8c3RvcCBvZmZzZXQ9IjAuMDAwMSIgc3RvcC1jb2xvcj0iIzkxMjNCOCIvPgo8c3RvcCBvZmZzZXQ9IjAuNTU3MjkyIiBzdG9wLWNvbG9yPSIjNzc0RkVEIi8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzRCNUNGQSIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNEOUQ5RDkiIHN0b3Atb3BhY2l0eT0iMCIvPgo8L2xpbmVhckdyYWRpZW50Pgo8L2RlZnM+Cjwvc3ZnPgo=", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "mdoge5.duyhuongtest.testnet": { + "spec": "ft-1.0.0", + "name": "Music doge", + "symbol": "Mdoge", + "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAACCQAAAgkCAMAAABf8seIAAAACXBIWXMAAC4jAAAuIwF4pT92AAABsFBMVEUBEDcBEDcAAABGpUkIQFQKTFwLVGABCTQCHT8FL0rUv50KMx0oGlQBEDcCBzMBCDQBDzcBCTQBETggFAsBCzUBDTYBDjYCBjECCDMBDDUBCjQCBTABEzkBEjgBCjUCBzIBAi8BAi4BFToEJUQCCDIDDjYBDDYCBDAFJ0UDETgDEDcFKUYIQVUEFjsCBzEEGT0DHD4CCTI3Jm0HOFABEjkDHD9WR4MCFjsIQlUCAy8JQlYDFToJRFcCFzsDDTUBFDoJRVcIP1QKS1sIQFQIPFIJRlgDHkAIPlMCCjMJR1kKSVoBDjcGLEgEI0MEIkIJSFkBEDgCFzwCCzQBCDMEIEEGMEsIOlEDEzkHN08KTl0DFDkEGDwHNE0HNk4IO1EBFDkEHkAFIUIGKkcCGj0HMkwLUF4KT10GMEoEIUEKTVwCCDQGLkkGLUkLVGEKTFwBBzQFKEYHM0wEGz4CDDULUV8CDDQCGz4HOE8HNU4KSloEHT8LU2AIPVICBTEGL0oEGTwCGT0IPVMDIUILUl8HL0oKSlsCGTwHNU0HM00LVGACBjIGLkoLUmACCzMBAS4AAIGy0ANsAAAAkHRSTlOAQP//gICAgICA/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4A478nAAACzEUlEQVR42uzdPXIj5xWGUVU5cGaEjaoOwI4mQ97r4EKwAmyAgdbskcaWRA45IIj+uT/niW2l99T79YC//X5fU5Ge/mpO1rcVGtfu+rWGNL3c0Un39x9Je/Tv31oSARJSIGGABEGClAYJEyPURIIhYUskOPiMIBVEwlQqQwIkQAIkSFoICRMjQILXhiWQ4OBDglQMCVO5DAmbGmFkBEhgBKkoEiZGgARIgARIkCChgxAgARIgARIkPY6EiRH82wZG8EkCJEiQ0IYIhoTNkTBWNwIkQILUDAnTxAiGhB2XBEgQI0hRkTBNkGBIMCT4JAESJEho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", + "reference": null, + "reference_hash": null, + "decimals": 8 + }, + "toke_b.ttnear.testnet": { + "spec": "ft-1.0.0", + "name": "toke_b", + "symbol": "TB", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 8 + }, + "skyward.fakes.testnet": { + "spec": "ft-1.0.0", + "name": "Skyward Finance Token", + "symbol": "SKYWARD", + "icon": "data:image/png;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "hbtc.fakes.testnet": { + "spec": "ft-1.0.0", + "name": "Huobi BTC", + "symbol": "HBTC", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "ft.nekocoin.testnet": { + "spec": "ft-1.0.0", + "name": "NEKO", + "symbol": "NEK", + "icon": "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' version='1.1' id='Layer_1' x='0px' y='0px' width='50px' height='50px' viewBox='0 0 50 50' enable-background='new 0 0 50 50' xml:space='preserve'%3E%3Cimage id='image0' width='50' height='50' x='0' y='0' href='data:image/png;base64,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'/%3E%3C/svg%3E", + "reference": null, + "reference_hash": null, + "decimals": 0 + }, + "wnear.snails_fi.testnet": { + "spec": "ft-1.0.0", + "name": "Wrapped NEAR fungible token", + "symbol": "wNEAR", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "near.token-factory.tokenhub.testnet": { + "spec": "ft-1.0.0", + "name": "Near Tip", + "symbol": "NEAR", + "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAfFJREFUWEftVj/IQXEUPV8WYlHKbGJQDAZKoYjBZpDdaFRs2JgxyWAzGA0GhTIoFINiMxiMBopS7+veei9/8t7gvb5veLfE793rnvPOu/fwIwiCgD+MH52AroCuwL9XIBwOYzKZsFOMRiPQWS4WiwWCwSButxvq9TpyuZxsvawPnE4nWK1WqYHBYMBqtYLb7f7Y1OfzYblcSnkln5MlsN/v4XA4nsCcTieTMBqNbySKxSJqtdrTddUIEPBut+PmoVAI4/H4CWg2myEQCMBut8PlckmPTTUCpVIJpEin02HgdDqNbrcrkfB6vaxKv99Ho9FApVLhnKoEyuUyD6E4lK1WC9lsFvl8HjR8oipUpxmB+/0OutvNZiNths1mexpMTQkQ6na7ZRK0arQZdPd0FkNzAgREckciEcakASUSFouFz5oTIAWOxyO/MpnM22ZoSmA6nSKRSGA4HMLv9/MQttttJpFKpdDr9bRTgCw2FouhUCigWq1Kz/x1Mw6Hg/pb4PF4sF6vQe/khI9Bm0EWTHnRqMRVVc0HRMD5fM5gr0FzQdcvl4t6Vny9XmEymaSG5IY0YJ/icTOoxmw243w+f6ynhOK/Yvo5bTabiMfjGAwGss0oSTXJZJLr6HM0Gv2OgCLilwWKCnzZX/HrOgFdAV2BX5SgorCtRzFVAAAAAElFTkSuQmCC", + "reference": null, + "reference_hash": null, + "decimals": 8 + }, + "dev-1651721707474-21284748210345": { + "spec": "ft-1.0.0", + "name": "Example NEAR fungible token", + "symbol": "WGQ", + "icon": "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 288 288'%3E%3Cg id='l' data-name='l'%3E%3Cpath d='M187.58,79.81l-30.1,44.69a3.2,3.2,0,0,0,4.75,4.2L191.86,103a1.2,1.2,0,0,1,2,.91v80.46a1.2,1.2,0,0,1-2.12.77L102.18,77.93A15.35,15.35,0,0,0,90.47,72.5H87.34A15.34,15.34,0,0,0,72,87.84V201.16A15.34,15.34,0,0,0,87.34,216.5h0a15.35,15.35,0,0,0,13.08-7.31l30.1-44.69a3.2,3.2,0,0,0-4.75-4.2L96.14,186a1.2,1.2,0,0,1-2-.91V104.61a1.2,1.2,0,0,1,2.12-.77l89.55,107.23a15.35,15.35,0,0,0,11.71,5.43h3.13A15.34,15.34,0,0,0,216,201.16V87.84A15.34,15.34,0,0,0,200.66,72.5h0A15.35,15.35,0,0,0,187.58,79.81Z'/%3E%3C/g%3E%3C/svg%3E", + "reference": null, + "reference_hash": null, + "decimals": 28 + }, + "dev-1638834025046-98047691367302": { + "spec": "ft-1.0.0", + "name": "Potato 🥔", + "symbol": "POTATO", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "unp.zus.testnet": { + "spec": "ft-1.0.0", + "name": "UPN", + "symbol": "UPN", + "icon": "data:image/png;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 6 + }, + "poop.tokens.testnet": { + "spec": "ft-1.0.0", + "name": "Poo Token", + "symbol": "POOP", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "test_ft_token.denbite.testnet": { + "spec": "ft-1.0.0", + "name": "Example Fungible Token by @denbite", + "symbol": "EXMPL", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 8 + }, + "protocol-token.1667369905.ttnear.testnet": { + "spec": "ft-1.0.0", + "name": "protocol token", + "symbol": "RES", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "nearx.staderlabs.testnet": { + "spec": "ft-1.0.0", + "name": "NearX", + "symbol": "NearX", + "icon": "data:image/svg+xml,%0A%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M24 12C24 18.6274 18.6274 24 12 24C5.37258 24 0 18.6274 0 12C0 5.37258 5.37258 0 12 0C18.6274 0 24 5.37258 24 12ZM17.1421 21.3848L21.3848 17.1421L19.3669 15.1243C18.5576 17.0303 17.0303 18.5576 15.1243 19.3669L17.1421 21.3848ZM9.43294 19.5793C7.45322 18.909 5.82115 17.4848 4.87848 15.6484L3.24264 17.2843L7.48528 21.5269L9.43294 19.5793ZM4.63306 8.8757C5.44239 6.96975 6.96975 5.44239 8.8757 4.63306L7.24264 3L3 7.24264L4.63306 8.8757ZM15.6484 4.87848L17.3848 3.14214L21.6274 7.38478L19.5793 9.43294C18.909 7.45322 17.4848 5.82115 15.6484 4.87848Z' fill='black'/%3E%3Cpath d='M8.00119 11.9921C8.00119 11.0268 8.00119 10.0615 8.00119 9.09612C8.00119 8.50505 8.16497 8.1743 8.56285 8.05781C8.97778 7.93628 9.40619 7.97917 9.79565 8.45228C11.3533 10.3447 12.9343 12.218 14.5092 14.0959C14.5692 14.1676 14.6117 14.3122 14.734 14.2626C14.8496 14.2157 14.7858 14.0805 14.786 13.9878C14.7904 12.6326 14.7898 11.2774 14.7868 9.92226C14.7868 9.83668 14.838 9.7162 14.7271 9.67372C14.6401 9.64029 14.5824 9.74185 14.522 9.79358C14.0492 10.1981 13.5804 10.6073 13.1088 11.0133C13.0208 11.089 12.9332 11.2118 12.8002 11.1012C12.6657 10.9894 12.7696 10.8872 12.8364 10.7881C13.3547 10.0186 13.8728 9.24898 14.3909 8.47919C14.6656 8.07085 15.0079 7.92282 15.4056 8.04141C15.786 8.15475 15.9986 8.48592 15.9992 8.97668C16.0007 10.0905 15.9996 11.2045 15.9996 12.3183C15.9996 13.2094 16.0003 14.1005 15.9994 14.9916C15.999 15.4826 15.8137 15.798 15.4512 15.9324C15.0256 16.0901 14.5767 15.9683 14.2734 15.6058C12.6823 13.705 11.0924 11.8029 9.50198 9.90144C9.46029 9.85161 9.42303 9.7961 9.37377 9.75489C9.28998 9.68487 9.21967 9.68108 9.21314 9.81797C9.20999 9.88273 9.21188 9.94791 9.21188 10.0129C9.21188 11.3496 9.21062 12.6862 9.2142 14.0227C9.21441 14.1186 9.15609 14.2557 9.26114 14.3038C9.38093 14.3587 9.45061 14.2178 9.52998 14.1503C9.98259 13.7651 10.4291 13.3728 10.8805 12.9859C10.9729 12.9066 11.0626 12.7651 11.208 12.8973C11.3402 13.0176 11.2213 13.1196 11.159 13.2127C10.6323 13.9989 10.1032 14.7837 9.57145 15.5663C9.32788 15.9248 8.9881 16.056 8.61085 15.9488C8.23739 15.8428 8.00498 15.5246 8.00287 15.0827C7.99761 14.0523 8.00119 13.022 8.00119 11.9917V11.9921Z' fill='white'/%3E%3C/svg%3E", + "reference": "https://nearX.app", + "reference_hash": null, + "decimals": 24 + }, + "naistable.deganstable.testnet": { + "spec": "ft-1.0.0", + "name": "NAI StableCoin", + "symbol": "NAI", + "icon": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgMzIgMzIiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkuc3Q2e2ZpbGw6I0ZGRkZGRjt9Cgkuc3Q1OXtmaWxsOiM4NjQ3OUY7fQo8L3N0eWxlPgo8Y2lyY2xlIGNsYXNzPSJzdDU5IiBjeD0iMTYiIGN5PSIxNiIgcj0iMTYiLz4KPHBvbHlnb24gY2xhc3M9InN0NiIgcG9pbnRzPSIxNC4wNyAxNS4wNSAxNS4zMyAxNi45NSAxNi42MSAxOC44OSAxOS44MiAyMy43NCAyMi4zNSAyMy43NCAyMi4zNSAxOC44OSAyNC43MyAxOC44OSAyNC43MyAxNi45NSAyMi4zNSAxNi45NSAyMi4zNSAxNS4wNSAyNC43MyAxNS4wNSAyNC43MyAxMy4xMSAyMi4zNSAxMy4xMSAyMi4zNSA4LjI2IDE5LjgyIDguMjYgMTkuODIgMTMuMTEgMTkuODIgMTUuMDUgMTkuODIgMTYuOTUgMTkuODIgMTguODkgMTkuODIgMTkuNzggMTkuMjIgMTguODkgMTcuOTQgMTYuOTUgMTYuNjggMTUuMDUgMTUuNCAxMy4xMSAxMi4xOCA4LjI2IDkuNjUgOC4yNiA5LjY1IDEzLjExIDcuMjcgMTMuMTEgNy4yNyAxNS4wNSA5LjY1IDE1LjA1IDkuNjUgMTYuOTUgNy4yNyAxNi45NSA3LjI3IDE4Ljg5IDkuNjUgMTguODkgOS42NSAyMy43NCAxMi4xOCAyMy43NCAxMi4xOCAxOC44OSAxMi4xOCAxNi45NSAxMi4xOCAxNS4wNSAxMi4xOCAxMy4xMSAxMi4xOCAxMi4yIDEyLjc5IDEzLjExIi8+Cjwvc3ZnPgo=", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "yti.1741factory.gadillac.testnet": { + "spec": "nft141-ft-1.0.0", + "name": "Yetis", + "symbol": "YTI", + "icon": "https://cdn-icons-png.flaticon.com/512/1137/1137074.png", + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "wnear.qa.nearlend.testnet": { + "spec": "ft-1.0.0", + "name": "Wrapped Near", + "symbol": "WNEAR", + "icon": "data:image/svg+xml,%3Csvg viewBox='0 0 40 41' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M20 40.3967C31.0457 40.3967 40 31.4424 40 20.3967C40 9.35103 31.0457 0.396729 20 0.396729C8.9543 0.396729 0 9.35103 0 20.3967C0 31.4424 8.9543 40.3967 20 40.3967ZM9.94128 26.8949C10.8013 27.6658 11.8831 27.8967 12.92 27.8967C14.0181 27.8967 15.0686 27.635 15.7432 27.467L15.7518 27.4648C15.8896 27.4288 16.0125 27.3988 16.1084 27.3778C18.6046 26.829 21.1098 26.805 23.5551 27.2939C23.6803 27.3172 23.8337 27.3575 24.01 27.4037L24.0256 27.4078L24.0427 27.4121C25.4456 27.7647 28.3397 28.4921 30.2856 26.652C31.0407 25.9442 31.5442 24.9274 31.703 23.7996L31.7042 23.791C31.9467 22.0799 32.2474 19.9585 31.658 17.0091C31.5352 16.3792 31.0677 15.0625 30.3485 14.2287C29.1828 12.87 27.2919 12.5521 24.7238 13.2689L24.6369 13.2929C21.859 14.0578 19.0451 14.1357 16.2762 13.5239L16.0395 13.4699L16.0332 13.4684C15.1327 13.2611 13.4619 12.8765 11.973 13.086C10.6275 13.2779 9.43185 14.1627 8.77558 15.4614C8.52686 15.9503 8.40699 16.4452 8.33208 16.8231C7.90056 18.9827 7.88857 21.5411 8.30211 23.8506C8.52086 25.0653 9.10221 26.1481 9.94128 26.8949ZM12.4165 16.2383C12.5723 16.2173 12.7372 16.2083 12.908 16.2083C13.75 16.2083 14.7509 16.4362 15.3263 16.5772L15.59 16.6402C18.8683 17.363 22.1916 17.2731 25.4729 16.3702L25.5808 16.3433C27.3159 15.8514 27.8103 16.1543 27.9422 16.3073C28.1999 16.6042 28.4936 17.36 28.5475 17.639C29.033 20.0624 28.7842 21.8141 28.5625 23.3587C28.5056 23.7726 28.3407 24.1326 28.11 24.3515C27.4265 24.997 25.7497 24.5746 24.8276 24.3423L24.8047 24.3365C24.559 24.2735 24.3462 24.2225 24.1754 24.1865C21.3016 23.6077 18.3589 23.6437 15.4341 24.2795C15.3141 24.3059 15.1654 24.3437 14.9937 24.3874L14.9817 24.3905L14.9487 24.3986C14.3211 24.5535 12.5601 24.9881 12.0479 24.5315C11.7393 24.2585 11.5115 23.8086 11.4216 23.2987C11.083 21.4001 11.089 19.2136 11.4426 17.459C11.4756 17.291 11.5295 17.0541 11.6044 16.9041C11.7902 16.5322 12.0959 16.2833 12.4165 16.2383Z' fill='%2386EC8A'/%3E%3C/svg%3E", + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "v1.deflationary.testnet": { + "spec": "ft-1.0.0", + "name": "def farming", + "symbol": "DEFF", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "ref.fakes.testnet": { + "spec": "ft-1.0.0", + "name": "Ref Finance Token", + "symbol": "REF", + "icon": "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='16 24 248 248' style='background: %23000'%3E%3Cpath d='M164,164v52h52Zm-45-45,20.4,20.4,20.6-20.6V81H119Zm0,18.39V216h41V137.19l-20.6,20.6ZM166.5,81H164v33.81l26.16-26.17A40.29,40.29,0,0,0,166.5,81ZM72,153.19V216h43V133.4l-11.6-11.61Zm0-18.38,31.4-31.4L115,115V81H72ZM207,121.5h0a40.29,40.29,0,0,0-7.64-23.66L164,133.19V162h2.5A40.5,40.5,0,0,0,207,121.5Z' fill='%23fff'/%3E%3Cpath d='M189 72l27 27V72h-27z' fill='%2300c08b'/%3E%3C/svg%3E%0A", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "memecoin.duyhuongtest.testnet": { + "spec": "ft-1.0.0", + "name": "Meme Coin", + "symbol": "MemeCoin", + "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAACCQAAAgkCAMAAABf8seIAAAACXBIWXMAAC4jAAAuIwF4pT92AAABsFBMVEUBEDcBEDcAAABGpUkIQFQKTFwLVGABCTQCHT8FL0rUv50KMx0oGlQBEDcCBzMBCDQBDzcBCTQBETggFAsBCzUBDTYBDjYCBjECCDMBDDUBCjQCBTABEzkBEjgBCjUCBzIBAi8BAi4BFToEJUQCCDIDDjYBDDYCBDAFJ0UDETgDEDcFKUYIQVUEFjsCBzEEGT0DHD4CCTI3Jm0HOFABEjkDHD9WR4MCFjsIQlUCAy8JQlYDFToJRFcCFzsDDTUBFDoJRVcIP1QKS1sIQFQIPFIJRlgDHkAIPlMCCjMJR1kKSVoBDjcGLEgEI0MEIkIJSFkBEDgCFzwCCzQBCDMEIEEGMEsIOlEDEzkHN08KTl0DFDkEGDwHNE0HNk4IO1EBFDkEHkAFIUIGKkcCGj0HMkwLUF4KT10GMEoEIUEKTVwCCDQGLkkGLUkLVGEKTFwBBzQFKEYHM0wEGz4CDDULUV8CDDQCGz4HOE8HNU4KSloEHT8LU2AIPVICBTEGL0oEGTwCGT0IPVMDIUILUl8HL0oKSlsCGTwHNU0HM00LVGACBjIGLkoLUmACCzMBAS4AAIGy0ANsAAAAkHRSTlOAQP//gICAgICA/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4A478nAAACzEUlEQVR42uzdPXIj5xWGUVU5cGaEjaoOwI4mQ97r4EKwAmyAgdbskcaWRA45IIj+uT/niW2l99T79YC//X5fU5Ge/mpO1rcVGtfu+rWGNL3c0Un39x9Je/Tv31oSARJSIGGABEGClAYJEyPURIIhYUskOPiMIBVEwlQqQwIkQAIkSFoICRMjQILXhiWQ4OBDglQMCVO5DAmbGmFkBEhgBKkoEiZGgARIgARIkCChgxAgARIgARIkPY6EiRH82wZG8EkCJEiQ0IYIhoTNkTBWNwIkQILUDAnTxAiGhB2XBEgQI0hRkTBNkGBIMCT4JAESJEho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", + "reference": null, + "reference_hash": null, + "decimals": 8 + }, + "usn.fakes.testnet": { + "spec": "ft-1.0.0", + "name": "USN", + "symbol": "USN", + "icon": "data:image/svg+xml;charset=UTF-8,%3csvg width='245' height='245' viewBox='0 0 245 245' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='122.5' cy='122.5' r='122.5' fill='white'/%3e%3cpath d='M78 179V67H93.3342L152.668 154.935V67H167V179H151.666L92.3325 90.9891V179H78Z' fill='black'/%3e%3cpath d='M150 104C147.239 104 145 106.239 145 109C145 111.761 147.239 114 150 114V104ZM171 114C173.761 114 176 111.761 176 109C176 106.239 173.761 104 171 104V114ZM150 114H171V104H150V114Z' fill='black'/%3e%3cpath d='M150 125C147.239 125 145 127.239 145 130C145 132.761 147.239 135 150 135V125ZM171 135C173.761 135 176 132.761 176 130C176 127.239 173.761 125 171 125V135ZM150 135H171V125H150V135Z' fill='black'/%3e%3c/svg%3e", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "wagbo.1741factory.gadillac.testnet": { + "spec": "nft141-ft-1.0.0", + "name": "Okay Bears", + "symbol": "WAGBO", + "icon": "https://ipfs.infura.io/ipfs/QmYGAUiqhKp4PvzQpxkbjZ1M3sYAqWLsz3xhCG3NBqMccR", + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "mdoge.duyhuongtest.testnet": { + "spec": "ft-1.0.0", + "name": "Music doge", + "symbol": "Mdoge", + "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAACCQAAAgkCAMAAABf8seIAAAACXBIWXMAAC4jAAAuIwF4pT92AAABsFBMVEUBEDcBEDcAAABGpUkIQFQKTFwLVGABCTQCHT8FL0rUv50KMx0oGlQBEDcCBzMBCDQBDzcBCTQBETggFAsBCzUBDTYBDjYCBjECCDMBDDUBCjQCBTABEzkBEjgBCjUCBzIBAi8BAi4BFToEJUQCCDIDDjYBDDYCBDAFJ0UDETgDEDcFKUYIQVUEFjsCBzEEGT0DHD4CCTI3Jm0HOFABEjkDHD9WR4MCFjsIQlUCAy8JQlYDFToJRFcCFzsDDTUBFDoJRVcIP1QKS1sIQFQIPFIJRlgDHkAIPlMCCjMJR1kKSVoBDjcGLEgEI0MEIkIJSFkBEDgCFzwCCzQBCDMEIEEGMEsIOlEDEzkHN08KTl0DFDkEGDwHNE0HNk4IO1EBFDkEHkAFIUIGKkcCGj0HMkwLUF4KT10GMEoEIUEKTVwCCDQGLkkGLUkLVGEKTFwBBzQFKEYHM0wEGz4CDDULUV8CDDQCGz4HOE8HNU4KSloEHT8LU2AIPVICBTEGL0oEGTwCGT0IPVMDIUILUl8HL0oKSlsCGTwHNU0HM00LVGACBjIGLkoLUmACCzMBAS4AAIGy0ANsAAAAkHRSTlOAQP//gICAgICA/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4A478nAAACzEUlEQVR42uzdPXIj5xWGUVU5cGaEjaoOwI4mQ97r4EKwAmyAgdbskcaWRA45IIj+uT/niW2l99T79YC//X5fU5Ge/mpO1rcVGtfu+rWGNL3c0Un39x9Je/Tv31oSARJSIGGABEGClAYJEyPURIIhYUskOPiMIBVEwlQqQwIkQAIkSFoICRMjQILXhiWQ4OBDglQMCVO5DAmbGmFkBEhgBKkoEiZGgARIgARIkCChgxAgARIgARIkPY6EiRH82wZG8EkCJEiQ0IYIhoTNkTBWNwIkQILUDAnTxAiGhB2XBEgQI0hRkTBNkGBIMCT4JAESJEho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", + "reference": null, + "reference_hash": null, + "decimals": 8 + }, + "dbio.fakes.testnet": { + "spec": "ft-1.0.0", + "name": "Debio", + "symbol": "DBIO", + "icon": "data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIxOTAgOTcgNDIwIDQyMCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgODAwIDgwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZGVmcz48c3R5bGU+LnN0MHtmaWxsOiMzNjM2MzZ9LnN0M3tmaWxsOiNmZjU2ZTB9PC9zdHlsZT48L2RlZnM+PGNpcmNsZSBjbGFzcz0ic3QzIiBjeD0iNDAwIiBjeT0iMzA3LjM5IiByPSIyMDguNTgiLz48cGF0aCBkPSJNNDczLjk5IDIxMS4zczIuMzQgNTYuMjUtNzcuMzQgOTguNDMtNzAuMzEgOTMuNzQtNzAuMzEgOTMuNzQiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiNlNmU2ZTY7c3Ryb2tlLXdpZHRoOjM3LjQ5NzU7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MTAiLz48cGF0aCBkPSJNMzI2LjAxIDIxMS4zcy0yLjM0IDU2LjI1IDc3LjM0IDk4LjQzIDcwLjMxIDkzLjc0IDcwLjMxIDkzLjc0IiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojZmZmO3N0cm9rZS13aWR0aDozNy40OTc1O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjEwIi8+PGNpcmNsZSBjbGFzcz0ic3QwIiBjeD0iNDAwIiBjeT0iMjE2LjQyIiByPSIyMC40OSIvPjxjaXJjbGUgY2xhc3M9InN0MCIgY3g9IjQwMCIgY3k9IjM5OC4zNiIgcj0iMjAuNDkiLz48dGV4dCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyMzYuMzQyIDY1OC4wNzUpIiBjbGFzcz0ic3QzIiBzdHlsZT0id2hpdGUtc3BhY2U6cHJlO2ZvbnQtc2l6ZToxMTIuNDkyNXB4O2ZvbnQtZmFtaWx5OidBcnRlZ3JhU2Fucy1TZW1pQm9sZCciPkRlQmlvPC90ZXh0Pjwvc3ZnPg==", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "gem.thegame.testnet": { + "spec": "ft-1.0.0", + "name": "Game GEM!!", + "symbol": "gGEM", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 4 + }, + "meta-v2.pool.testnet": { + "spec": "ft-1.0.0", + "name": "Staked NEAR?", + "symbol": "STNEAR", + "icon": "data:image/svg+xml,%3Csvg width='96' height='96' viewBox='0 0 96 96' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='96' height='96' rx='48' fill='white'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M48.0006 20L41.2575 26.7431L48.0006 33.4862L54.7437 26.7431L48.0006 20ZM37.281 30.7188L30.7144 37.2853L47.9998 54.5707L65.2851 37.2853L58.7186 30.7188L47.9998 41.4376L37.281 30.7188ZM26.7384 41.261L19.9953 48.0041L47.9995 76.0083L76.0037 48.0041L69.2606 41.2611L47.9995 62.5221L26.7384 41.261Z' fill='%23231B51'/%3E%3C/svg%3E", + "reference": "https://metapool.app", + "reference_hash": null, + "decimals": 10 + }, + "berryclub.testnet": { + "spec": "ft-1.0.0", + "name": "Banana", + "symbol": "BANANA", + "icon": "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='256' height='256'%3E%3Cdefs%3E%3Ctext id='A' x='50' y='180' font-size='180'%3E🍌%3C/text%3E%3C/defs%3E%3Cuse xlink:href='%23A'/%3E%3C/svg%3E%0A", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "xref.ref-finance.testnet": { + "spec": "ft-1.0.0", + "name": "xRef Finance Token", + "symbol": "xREF", + "icon": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNjIiIHZpZXdCb3g9IjAgMCA1NiA2MiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEuODU2OTMgMTcuODg1NkMxLjg1NjkzIDE2LjAyNzggMi44ODY5MiAxNC4zMjMyIDQuNTMxNTEgMTMuNDU5MkwyNS45MjE2IDIuMjIxNzJDMjcuMzc3NSAxLjQ1NjgzIDI5LjExNjUgMS40NTY4MyAzMC41NzI0IDIuMjIxNzJMNTEuOTYyNCAxMy40NTkyQzUzLjYwNyAxNC4zMjMyIDU0LjYzNyAxNi4wMjc4IDU0LjYzNyAxNy44ODU2VjQ1LjYzMDRDNTQuNjM3IDQ3LjYwMjEgNTMuNDc4MiA0OS4zODk4IDUxLjY3ODMgNTAuMTk0N0wzMC4yODgyIDU5Ljc2MDZDMjguOTg5NCA2MC4zNDE0IDI3LjUwNDYgNjAuMzQxNSAyNi4yMDU3IDU5Ljc2MDZMNC44MTU3IDUwLjE5NDdDMy4wMTU3NCA0OS4zODk4IDEuODU2OTMgNDcuNjAyMSAxLjg1NjkzIDQ1LjYzMDRMMS44NTY5MyAxNy44ODU2WiIgZmlsbD0idXJsKCNwYWludDBfbGluZWFyXzEyNDYxXzIwNzUpIiBzdHJva2U9IiMwMEM2QTIiIHN0cm9rZS13aWR0aD0iMiIvPgo8cGF0aCBkPSJNMTMuNjk3OCAyMC4zMzJMMjguMjQ3MSAxNEwyOC4yMjAyIDMwLjU0MTdMMjAuMjgwMyAyMy43MTE2TDEyLjMxMzUgMzAuOTI5NVYyMi4zNjU0QzEyLjMxNTIgMjEuNDkyMiAxMi44NTM4IDIwLjY5OTMgMTMuNjk3OCAyMC4zMzJaIiBmaWxsPSIjMDBDNkEyIiBmaWxsLW9wYWNpdHk9IjAuNSIvPgo8cGF0aCBkPSJNMTQuMTAyMyA0Mi43NjQ1TDI4LjI0NzEgNDYuODYyNkwyOC4yMjAyIDM0LjU5NDRMMjAuMjc5NCAyNy45NDE0TDEyLjMxMzUgMzQuOTcyMlY0MC41Mjc0QzEyLjMxMzUgNDEuNTUxNSAxMy4wMzY3IDQyLjQ1NTkgMTQuMTAyMyA0Mi43NjQ1WiIgZmlsbD0iIzAwQzZBMiIgZmlsbC1vcGFjaXR5PSIwLjUiLz4KPHBhdGggZD0iTTQzLjY0NDUgNDIuNzYzM0wyOC4yNzQ0IDQ2Ljg2MzJMMjguMjQ2OCAzNC41MTU3TDQzLjIyMSAyMi40NjQ4QzQzLjIyMSAyMi40NjQ4IDQ1Ljc5MyAyNC4zOTk2IDQ1LjAzNzMgMjcuODE5NkM0My43MDQ4IDMzLjg1MTEgMzUuMTc5NiAzNS45ODY5IDM1LjE3OTYgMzUuOTg2OUw0My45MDk2IDQxLjE1NjFDNDQuNjE1NSA0MS41NzggNDQuNDU1NCA0Mi41NDcgNDMuNjQ0NSA0Mi43NjMzWiIgZmlsbD0iIzQ1RkZERSIvPgo8cGF0aCBkPSJNMzguNTkwMyAxOC45NzkzTDI4LjI3MzQgMTRMMjguMjQ2OCAzMC40MzE1TDQwLjY5NSAyMC4zNTA5QzQwLjY5NSAyMC4zNTA5IDQwLjQyNzEgMjAuMDU5NyAzOS42OTAxIDE5LjU4MDVDMzkuNDI4OSAxOS40MTE0IDM4LjU5MDMgMTguOTc5MyAzOC41OTAzIDE4Ljk3OTNaIiBmaWxsPSIjNDVGRkRFIi8+CjxwYXRoIGQ9Ik00MC41NTEgMTYuMDEwMUw0Ni42NjAyIDE4LjI4MDVDNDYuOTY3NSAxOC4zOTQzIDQ3LjE2OCAxOC42NjU2IDQ3LjE2OCAxOC45NjVWMjMuMTIwN0M0Ny4xNjggMjMuNDM4OCA0Ni43MjYgMjMuNTgyMiA0Ni41MDQyIDIzLjMzNDNMNDAuMjU1MyAxNi4zNjg3QzQwLjA4OTMgMTYuMTgzMSA0MC4zMDYyIDE1LjkxODEgNDAuNTUxIDE2LjAxMDFaIiBmaWxsPSIjNDVGRkRFIi8+CjxkZWZzPgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MF9saW5lYXJfMTI0NjFfMjA3NSIgeDE9IjI4LjI0NyIgeTE9IjEiIHgyPSIyOC4yNDciIHkyPSI2MC42NzM1IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IiMwMTEzMjAiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMDAxMzIwIi8+CjwvbGluZWFyR3JhZGllbnQ+CjwvZGVmcz4KPC9zdmc+Cg==", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "weth.nearlend.testnet": { + "spec": "ft-1.0.0", + "name": "Wrapped Ethereum", + "symbol": "WETH", + "icon": "data:image/svg+xml,%3Csvg viewBox='0 0 40 41' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M20 40.3967C31.0457 40.3967 40 31.4424 40 20.3967C40 9.35103 31.0457 0.396729 20 0.396729C8.9543 0.396729 0 9.35103 0 20.3967C0 31.4424 8.9543 40.3967 20 40.3967ZM9.94128 26.8949C10.8013 27.6658 11.8831 27.8967 12.92 27.8967C14.0181 27.8967 15.0686 27.635 15.7432 27.467L15.7518 27.4648C15.8896 27.4288 16.0125 27.3988 16.1084 27.3778C18.6046 26.829 21.1098 26.805 23.5551 27.2939C23.6803 27.3172 23.8337 27.3575 24.01 27.4037L24.0256 27.4078L24.0427 27.4121C25.4456 27.7647 28.3397 28.4921 30.2856 26.652C31.0407 25.9442 31.5442 24.9274 31.703 23.7996L31.7042 23.791C31.9467 22.0799 32.2474 19.9585 31.658 17.0091C31.5352 16.3792 31.0677 15.0625 30.3485 14.2287C29.1828 12.87 27.2919 12.5521 24.7238 13.2689L24.6369 13.2929C21.859 14.0578 19.0451 14.1357 16.2762 13.5239L16.0395 13.4699L16.0332 13.4684C15.1327 13.2611 13.4619 12.8765 11.973 13.086C10.6275 13.2779 9.43185 14.1627 8.77558 15.4614C8.52686 15.9503 8.40699 16.4452 8.33208 16.8231C7.90056 18.9827 7.88857 21.5411 8.30211 23.8506C8.52086 25.0653 9.10221 26.1481 9.94128 26.8949ZM12.4165 16.2383C12.5723 16.2173 12.7372 16.2083 12.908 16.2083C13.75 16.2083 14.7509 16.4362 15.3263 16.5772L15.59 16.6402C18.8683 17.363 22.1916 17.2731 25.4729 16.3702L25.5808 16.3433C27.3159 15.8514 27.8103 16.1543 27.9422 16.3073C28.1999 16.6042 28.4936 17.36 28.5475 17.639C29.033 20.0624 28.7842 21.8141 28.5625 23.3587C28.5056 23.7726 28.3407 24.1326 28.11 24.3515C27.4265 24.997 25.7497 24.5746 24.8276 24.3423L24.8047 24.3365C24.559 24.2735 24.3462 24.2225 24.1754 24.1865C21.3016 23.6077 18.3589 23.6437 15.4341 24.2795C15.3141 24.3059 15.1654 24.3437 14.9937 24.3874L14.9817 24.3905L14.9487 24.3986C14.3211 24.5535 12.5601 24.9881 12.0479 24.5315C11.7393 24.2585 11.5115 23.8086 11.4216 23.2987C11.083 21.4001 11.089 19.2136 11.4426 17.459C11.4756 17.291 11.5295 17.0541 11.6044 16.9041C11.7902 16.5322 12.0959 16.2833 12.4165 16.2383Z' fill='%2386EC8A'/%3E%3C/svg%3E", + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "illutoken.testnet": { + "spec": "ft-1.0.0", + "name": "Illuminating Token", + "symbol": "ILLU", + "icon": "data:image/png;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "flas.zeiris-test.testnet": { + "spec": "ft-1.0.0", + "name": "FLAS", + "symbol": "FLAS", + "icon": "", + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "aurora": { + "decimals": 18, + "icon": "data:image/png;base64,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", + "name": "Ether", + "reference": null, + "reference_hash": null, + "spec": "ft-1.0.0", + "symbol": "ETH" + }, + "gold4.thegame.testnet": { + "spec": "ft-1.0.0", + "name": "LandtoEmpire.com game GOLD!", + "symbol": "GOLD", + "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAaYSURBVHgBxVfbcxNlFP99u5tkc+2mtKUBC2natGnAUhEUAbW8OM7ojDridXSqo844+qD/gfrko/gXqA8+6DijD46XBytIGaVAW6CFFgpJmiZN2zRN01w33V3PLpRLmpQO4nCSzLfJ+fKd37mfj2GD5PV6JZNJfJ4xPAmwHsaYF9Cka1yW1jQtTOuIpqnHyuXiT+FwOL2Rc9mdNgQCAa+msY9o61s3Bd6Z6D9fc5z62fj4eBh3A0DX2GKxfkKPH+M/EXekVMp9VssiVQFc1/pPHQfuDYUZ0w5VswZX+UMwGOy5x8J1MhTy+/09lYzbLPA/aF5JayxxA8B1nw9XE24ymfDYY/vwyqsvE8guWK1WmAQB5ZUVpFIphEIhnD59BgPHB4xnVVXXBVEqFR5ajQl+9dfNmz2f0/J05W5JqjMEf/jBB3hw54Ow20TEEtMYGBzAP2dOIj4fg2ri0OLbimef6YW/rQOxWALpdM0slATBIi4szP9+wwLXTR+q3Gk2m/H666/i3ffegVtyI7mQwuj4EFkkjB0BBsnFwJEKmrqC2XkVkRiPxQUVw6di6O8/Q0CmKR21qijIFa26KwwLNDQ0fUHLbQHidkvo63sTh186DDIZLlwaQ3LxHLr8KQQ7GWxWEs5xpAG9GA+nQ4CZS2E2HoJ3uwN793Rjfl7BzEyiKgBVZSyVSv4meL09kqaV3qrcsPvh3eg91AupTsTfg8cJxASeOCDB4eCROH8SHJPh9krQyhEwQYJg7cLlqybksjL8Oy6jacuLUFSfESPhcGQNAMLeR3H3KSeKxeerIdy+rcX4jAz14+zwX2QlM4HRwCkRiFwEpeUkllPzui70LkKVE2hvmMCe5gnYcknMTEfQ0dWCg48fRA0ySrtAWKi2r/VTd/dOzKaziGcs2H9gC3o6JiAvzRm8FVVGPJqHk/zb3iUYfp6dDOP8iTD4lSwCHXYorlEUnG3w+Ty1AEDvK4KqatRY1jJ9vnYUS0XCR4JscUo7BYshhkL0EkJTJZw4nUFmWSFTMoJPlqEz9nY78ei+JnJNAPncdgwNHoVcqlsHANcjXO9qa5iizY7UXAxb3ZfQ0hiFRjlv5tL46g/g298FbBJ5+mSxCr5RMkHy7YJn/yGouRl4lUEoO9swV36YuN/XgKB5hVodTqFisrycgUvMwyrK4EzNgGCGoiygrApI5OsxX6Dg41QCsoQGrYBzgxeRSSbR3cWjdRu5ZeoCFlkH1iGJq8WZm5tDJpeDYHGRUBP0tqGn283ayaBoPGRFoJUzLKHIZbjqJdQ3N+ppBofLDZe0fgfn9GGiGqNQkME0BdGZOsQXmijQ8hTtedJYM7TmmGY8m/hrzxoBCgac2NO1AisdubCkIplWkM3l15OfFvRJhtCv6VKlUgk20YwUHVLIalCyWailPN54isPhXhVLyyskmIHnGZIpOyYmOfCik7wkgFOXcSG2DeMzPjjsuXXks7AeA2f1EauSlcumUefWzSdRzluQvTIDs90Bp68b5ZkktrR70Rx8xCjDmiLjYH4BxegwtHwcGWbDbApwSl46p1xTPI1vIwJVpKOUxn2VzFgsRrhMmJuKIjtnQbm5FX55HOODEUTTLuze3wT72M8op8J6Xb3xP87EYzDUQNG/C61bG3H0j5PrAMAx3uF4ICwI6vv0XbyVabaIkMtFTE9n0OQJogAXNZo4ytkMPIFudLYRPzFmnKJQwMllRjWRx6loB67mD2BncC/Gxq7i119+RbFYrApAlotv8+l0otjQ0KCXq323MhephtfXb8KBJ/bD4/HA7tyK6aVN4E0ZBBtDVJ/ihnAqQSjKHKLUDQdCfmibnkN76w6Kiav4s78f0chUDe21r69cmfxu3XZst9ux99FHqCkdIjD1cLlcxrBxaXIM8akRzIaHqDfINDNI2N6+Cz37noPF2oixi6P44fsfMXR6mCpl9eFktR3fyOrOzq4jtHxUuVGgyafN70MHTUJNmz0IdHbC5/XCZrMaYFQKQp4CSVE1RCheLlw8jxPHT+DcyKgeZKhBX05MXDSm7VtGsh4ayUpVR7JVau+g5uJvp9SqQ0tLC1nFbRyRSCQwMjKM0XMTSKcWSesVsNo3jttGsvs+lN5Wio0RiWcv6Btx78k4u/JucN8vJny13clkMu10PvCNIChWVKTnXdCX5PPXJicnqw6HG7qc0vIpWaQPGya9wSnf0Kxx5K4vp5WkX1xEUdTnx15qtbuqX8+1EcrIY1T5Nnw9/xcSywDf1DgKcwAAAABJRU5ErkJggg==", + "reference": null, + "reference_hash": null, + "decimals": 0 + }, + "lnc.factory.tokenhub.testnet": { + "spec": "ft-1.0.0", + "name": "Learn NEAR Club", + "symbol": "LNC", + "icon": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/4gIoSUNDX1BST0ZJTEUAAQEAAAIYAAAAAAQwAABtbnRyUkdCIFhZWiAAAAAAAAAAAAAAAABhY3NwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA9tYAAQAAAADTLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlkZXNjAAAA8AAAAHRyWFlaAAABZAAAABRnWFlaAAABeAAAABRiWFlaAAABjAAAABRyVFJDAAABoAAAAChnVFJDAAABoAAAAChiVFJDAAABoAAAACh3dHB0AAAByAAAABRjcHJ0AAAB3AAAADxtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAFgAAAAcAHMAUgBHAEIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAABvogAAOPUAAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAJKAAAA+EAAC2z3BhcmEAAAAAAAQAAAACZmYAAPKnAAANWQAAE9AAAApbAAAAAAAAAABYWVogAAAAAAAA9tYAAQAAAADTLW1sdWMAAAAAAAAAAQAAAAxlblVTAAAAIAAAABwARwBvAG8AZwBsAGUAIABJAG4AYwAuACAAMgAwADEANv/bAEMAAwICAgICAwICAgMDAwMEBgQEBAQECAYGBQYJCAoKCQgJCQoMDwwKCw4LCQkNEQ0ODxAQERAKDBITEhATDxAQEP/bAEMBAwMDBAMECAQECBALCQsQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEP/AABEIACAAIAMBIgACEQEDEQH/xAAZAAADAAMAAAAAAAAAAAAAAAAABgcDBAj/xAAjEAACAgICAgMAAwAAAAAAAAABAgMEBQYAEQcSEyExFCJB/8QAGAEAAgMAAAAAAAAAAAAAAAAAAQMABwj/xAAlEQACAQMDBAIDAAAAAAAAAAABEQMAAgQxQWESIZHwUXGBwfH/2gAMAwEAAhEDEQA/AOqOHNHN5vF67jnyuZtCtVSSKJpCjN00kixoOlBP27qPz/fv64qZDzBq+L8h2/Gt2rk0yVXFJlROK3tVlVhMwhEoPSzeteZgr+vsqMVJ9W6zZHBLKCbLSV38J+GKva+aONC8p/v+U88ORWv5t3fyTFTbwTpWPvxpjMfl8lc2O49SvCLldbENGMwLJ72vidWf7CxB4ifcSDqmaPseS2rXIMtmdYva9kRJLWuY632TDPE5jf436HyxFlJjlAAdCrADvrjZ8OXHt6pEOGGPhjUP3alxZUc9ys78oo/R0rD5E1O3u+oXdboZaPGWrD15oLctU2EikhnjlUtGHQuCYwCPZf394jZDwNc2pdht75uMF3LZ2ji4I72LxQpGhZoT25YLMKySzdN1aVSpJBCOD2shVa7w5IcyaC3ojKDegex1T2HbTtRkxYpruq8MpannbTc1EcB4D3jx3UxaeLPK1fFSpgcfhsxBkcH/AC6V+epWirR5CKFZ42gn+OPpv7uHCQq31GDymeP9XymnarTwed27JbPk0LzXcrfIElmeRy8jKgJEUfsxCRKSqIFUdgd8YuHDPmzZIUpB5QB4ZAZ9+BQhxIoC4wR+SvDXvNf/2Q==", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "usdc.itachicara.testnet": { + "spec": "ft-1.0.0", + "name": "USDC", + "symbol": "USDC", + "icon": "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 288 288'%3E%3Cg id='l' data-name='l'%3E%3Cpath d='M187.58,79.81l-30.1,44.69a3.2,3.2,0,0,0,4.75,4.2L191.86,103a1.2,1.2,0,0,1,2,.91v80.46a1.2,1.2,0,0,1-2.12.77L102.18,77.93A15.35,15.35,0,0,0,90.47,72.5H87.34A15.34,15.34,0,0,0,72,87.84V201.16A15.34,15.34,0,0,0,87.34,216.5h0a15.35,15.35,0,0,0,13.08-7.31l30.1-44.69a3.2,3.2,0,0,0-4.75-4.2L96.14,186a1.2,1.2,0,0,1-2-.91V104.61a1.2,1.2,0,0,1,2.12-.77l89.55,107.23a15.35,15.35,0,0,0,11.71,5.43h3.13A15.34,15.34,0,0,0,216,201.16V87.84A15.34,15.34,0,0,0,200.66,72.5h0A15.35,15.35,0,0,0,187.58,79.81Z'/%3E%3C/g%3E%3C/svg%3E", + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "corn.2.csdev.testnet": { + "spec": "ft-1.0.0", + "name": "Cornerstone", + "symbol": "CORN", + "icon": "data:image/svg+xml,%3Csvg width='140' height='140' viewBox='0 0 140 140' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M17 39.685L43.0018 54.6965V85.8307L17 70.7955V39.685Z' fill='%2362AEFE'/%3E%3Cpath d='M17 70.7955L43.0018 85.8307V116.965L17 101.93V70.7955Z' fill='%235C65A5'/%3E%3Cpath d='M43.0017 54.6965L68.9799 69.7317V100.866L43.0017 85.8307V54.6965Z' fill='%23564788'/%3E%3Cpath d='M43.0017 85.8307L68.9799 100.866V132L43.0017 116.965V85.8307Z' fill='%2351328E'/%3E%3Cpath d='M120.983 69.6608L94.9817 84.6959V115.83L120.983 100.795V69.6608Z' fill='%232F2B48'/%3E%3Cpath d='M68.9797 100.866V132L94.9815 115.83L68.9797 100.866Z' fill='%2348297B'/%3E%3Cpath d='M94.9815 115.83L68.9797 100.871V69.6608L94.9815 84.6959V115.83Z' fill='%23494661'/%3E%3Cpath d='M17 39.6614L43.8512 24.3425L69.6642 39.2595L43.0018 54.6965L17 39.6614Z' fill='%23BF9AD2'/%3E%3Cpath d='M43.0017 54.6256L69.5744 39.2318L95.9478 54.2613L68.9799 69.6608L43.0017 54.6256Z' fill='%23D0B5E0'/%3E%3Cpath d='M43.8513 24.3425L70.7025 9L96.4651 24.0295L69.5746 39.2317L43.8513 24.3425Z' fill='%23A676BF'/%3E%3Cpath d='M69.5745 39.2317L96.465 24.0295L122.493 38.8812L95.8311 54.3183L69.5745 39.2317Z' fill='%236649A9'/%3E%3Cpath d='M94.9815 84.6959L68.9797 69.6608L95.8309 54.3183L120.983 69.6608L94.9815 84.6959Z' fill='%235C5A6F'/%3E%3C/svg%3E", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "dev-1638835188758-11260808668918": { + "spec": "ft-1.0.0", + "name": "Potato 🥔", + "symbol": "POTATO", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "test_contract.testnet": { + "spec": "ft-1.0.0", + "name": "Test Token Demo", + "symbol": "TTD", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 8 + }, + "token.infi-finance.testnet": { + "spec": "ft-1.0.0", + "name": "INFI FINANCE TOKEN", + "symbol": "INFI DEV", + "icon": "data:image/png;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "usn.testnet": "", + "dc.tokens.testnet": { + "spec": "ft-1.0.0", + "name": "DabnioCoin", + "symbol": "DC", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "usdc.faucet.orderbook.testnet": { + "spec": "ft-1.0.0", + "name": "USD Coin (Tonic)", + "symbol": "USDC", + "icon": "data:image/svg+xml,%3Csvg width='32' height='32' viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none'%3E%3Ccircle cx='16' cy='16' r='16' fill='%232775C9'/%3E%3Cpath d='M15.75 27.5C9.26 27.5 4 22.24 4 15.75S9.26 4 15.75 4 27.5 9.26 27.5 15.75A11.75 11.75 0 0115.75 27.5zm-.7-16.11a2.58 2.58 0 00-2.45 2.47c0 1.21.74 2 2.31 2.33l1.1.26c1.07.25 1.51.61 1.51 1.22s-.77 1.21-1.77 1.21a1.9 1.9 0 01-1.8-.91.68.68 0 00-.61-.39h-.59a.35.35 0 00-.28.41 2.73 2.73 0 002.61 2.08v.84a.705.705 0 001.41 0v-.85a2.62 2.62 0 002.59-2.58c0-1.27-.73-2-2.46-2.37l-1-.22c-1-.25-1.47-.58-1.47-1.14 0-.56.6-1.18 1.6-1.18a1.64 1.64 0 011.59.81.8.8 0 00.72.46h.47a.42.42 0 00.31-.5 2.65 2.65 0 00-2.38-2v-.69a.705.705 0 00-1.41 0v.74zm-8.11 4.36a8.79 8.79 0 006 8.33h.14a.45.45 0 00.45-.45v-.21a.94.94 0 00-.58-.87 7.36 7.36 0 010-13.65.93.93 0 00.58-.86v-.23a.42.42 0 00-.56-.4 8.79 8.79 0 00-6.03 8.34zm17.62 0a8.79 8.79 0 00-6-8.32h-.15a.47.47 0 00-.47.47v.15a1 1 0 00.61.9 7.36 7.36 0 010 13.64 1 1 0 00-.6.89v.17a.47.47 0 00.62.44 8.79 8.79 0 005.99-8.34z' fill='%23FFF'/%3E%3C/g%3E%3C/svg%3E", + "reference": null, + "reference_hash": null, + "decimals": 6 + }, + "banana.ft-fin.testnet": { + "spec": "ft-1.0.0", + "name": "Banana", + "symbol": "BANANA", + "icon": "https://assets.onlinelabels.com/images/clip-art/pitr/pitr_Bananas_icon.png", + "reference": null, + "reference_hash": null, + "decimals": 6 + }, + "daubuoi123.testnet": "", + "cusd.fakes.testnet": { + "spec": "ft-1.0.0", + "name": "Celo Dollar", + "symbol": "cUSD", + "icon": "data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjEwMCIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHdpZHRoPSIxMDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0ibTEwMCA1MGMwLTI3LjYxNDItMjIuMzg1OC01MC01MC01MHMtNTAgMjIuMzg1OC01MCA1MCAyMi4zODU4IDUwIDUwIDUwIDUwLTIyLjM4NTggNTAtNTB6IiBmaWxsPSIjNDVjZDg1Ii8+PGcgZmlsbD0iI2ZmZiI+PHBhdGggZD0ibTY5Ljg4MDUgNjIuNjQzOGMtMS41NjcxIDMuMzkzMS0zLjkzNzUgNi4zNTMyLTYuOTA2MSA4LjYyNDEtMi45Njg1IDIuMjcwOC02LjQ0NTggMy43ODQxLTEwLjEzMDcgNC40MDg3LTMuNjg1LjYyNDYtNy40NjY3LjM0MTctMTEuMDE3Ny0uODI0MS0zLjU1MTEtMS4xNjU4LTYuNzY0Ni0zLjE3OTQtOS4zNjIzLTUuODY2Ni0yLjU5NzgtMi42ODcxLTQuNTAxNS01Ljk2NjktNS41NDY1LTkuNTU1NC0xLjA0NDktMy41ODg1LTEuMTk5Ni03LjM3NzUtLjQ1MDctMTEuMDM5My43NDg5LTMuNjYxNyAyLjM3ODktNy4wODU3IDQuNzQ4OS05Ljk3NTggMi4zNzAxLTIuODkgNS40MDg3LTUuMTU4OSA4Ljg1MjktNi42MTAzbDIuMjY2OCA1LjM3OTJjLTIuNTcgMS4wODMxLTQuODM3NSAyLjc3NjEtNi42MDYgNC45MzI3LTEuNzY4NSAyLjE1NjUtMi45ODQ4IDQuNzExNS0zLjU0MzYgNy40NDM5LS41NTg5IDIuNzMyNC0uNDQzNSA1LjU1OTguMzM2MyA4LjIzNzYuNzc5OCAyLjY3NzcgMi4yMDAzIDUuMTI1MSA0LjEzODggNy4xMzAyIDEuOTM4NCAyLjAwNTIgNC4zMzYzIDMuNTA3OCA2Ljk4NjEgNC4zNzc3czUuNDcxNyAxLjA4MSA4LjIyMTUuNjE0OWMyLjc0OTctLjQ2NjEgNS4zNDQ0LTEuNTk1MyA3LjU1OTUtMy4yODk4IDIuMjE1Mi0xLjY5NDUgMy45ODQtMy45MDMzIDUuMTUzNC02LjQzNTNsNS45MTg5LjMwNDJ6Ii8+PHBhdGggZD0ibTU2LjEwNjEgMjQuNXYtNGg0LjUwMDV2NGMyIDAgNS4xNjY3LjY2NjcgNi41IDF2NC41Yy0xOS0zLTE1LjUwMTEgMy44NDYyLTggNSA2LjcyMTcgMS4wMzM5IDExIDIgMTEuNSA5IC40IDUuNi01LjgzMzMgNy42NjY3LTkgOHYzLjVoLTV2LTMuNWMtMi40IDAtNi42NjY3LTEuNjY2Ny04LjUtMi41di01LjVjNC41IDIuNSAxNyA0LjUgMTcgMHMtMTYuNTAxMS0zLTE4LjAwMDUtMTFjLTEuMDAyMy01LjM0NzUgNS4zMzMzLTcuODMzMyA5LTguNXoiLz48L2c+PC9zdmc+", + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "dev-1668149532445-37289092214188": { + "spec": "ft-1.0.0", + "name": "NEKO", + "symbol": "NEKO", + "icon": "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' version='1.1' id='Layer_1' x='0px' y='0px' width='46px' height='46px' viewBox='0 0 46 46' enable-background='new 0 0 46 46' xml:space='preserve'%3E%3Cimage id='image0' width='46' height='46' x='0' y='0' href='data:image/png;base64,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 OjAwO8gregAAAABJRU5ErkJggg=='/%3E%3C/svg%3E", + "reference": null, + "reference_hash": null, + "tax_rate": 500, + "decimals": 24 + }, + "wbtc.fakes.testnet": { + "spec": "ft-1.0.0", + "name": "Wrapped BTC", + "symbol": "WBTC", + "icon": "data:image/svg+xml,%3Csvg width='32' height='32' viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none'%3E%3Ccircle fill='%23201A2D' cx='16' cy='16' r='16'/%3E%3Cg fill='%23FFF'%3E%3Cpath d='M22.818 9.586l-.6.6a8.494 8.494 0 010 11.464l.6.6a9.352 9.352 0 000-12.678v.014zM10.2 9.638a8.494 8.494 0 0111.464 0l.6-.6a9.352 9.352 0 00-12.678 0l.614.6zm-.562 12.018a8.494 8.494 0 010-11.458l-.6-.6a9.352 9.352 0 000 12.678l.6-.62zm12.018.554a8.494 8.494 0 01-11.464 0l-.6.6a9.352 9.352 0 0012.678 0l-.614-.6zm-1.942-8.286c-.12-1.252-1.2-1.672-2.566-1.8V10.4h-1.056v1.692h-.844V10.4H14.2v1.736h-2.142v1.13s.78-.014.768 0a.546.546 0 01.6.464v4.752a.37.37 0 01-.128.258.366.366 0 01-.272.092c.014.012-.768 0-.768 0l-.2 1.262h2.122v1.764h1.056V20.12h.844v1.73h1.058v-1.744c1.784-.108 3.028-.548 3.184-2.218.126-1.344-.506-1.944-1.516-2.186.614-.302.994-.862.908-1.778zm-1.48 3.756c0 1.312-2.248 1.162-2.964 1.162v-2.328c.716.002 2.964-.204 2.964 1.166zm-.49-3.28c0 1.2-1.876 1.054-2.472 1.054v-2.116c.596 0 2.472-.188 2.472 1.062z'/%3E%3Cpath d='M15.924 26.852C9.89 26.851 5 21.959 5 15.925 5 9.892 9.892 5 15.925 5c6.034 0 10.926 4.89 10.927 10.924a10.926 10.926 0 01-10.928 10.928zm0-21c-5.559.004-10.062 4.513-10.06 10.072.002 5.559 4.51 10.064 10.068 10.064 5.559 0 10.066-4.505 10.068-10.064A10.068 10.068 0 0015.924 5.852z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E", + "reference": null, + "reference_hash": null, + "decimals": 8 + }, + "weth.fakes.testnet": { + "spec": "ft-1.0.0", + "name": "Wrapped Ether", + "symbol": "WETH", + "icon": "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='256' height='256'%3E%3Cdefs%3E%3Ctext id='A' x='50' y='180' font-size='180'%3E🍌%3C/text%3E%3C/defs%3E%3Cuse xlink:href='%23A'/%3E%3C/svg%3E%0A", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "a19.tokens.testnet": { + "spec": "ft-1.0.0", + "name": "newstar", + "symbol": "A19", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 10 + }, + "nusdc.ft-fin.testnet": { + "spec": "ft-1.0.0", + "name": "NEAR Wrapped USDC", + "symbol": "nUSDC", + "icon": "https://s2.coinmarketcap.com/static/img/coins/64x64/3408.png", + "reference": null, + "reference_hash": null, + "decimals": 2 + }, + "token.bigprojects.testnet": { + "spec": "ft-1.0.0", + "name": "DeToken", + "symbol": "TEST", + "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAMAAADypuvZAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAnBQTFRFAAAADBorCh4nCB4lChwmCh0nCh0nCh0nCxwnCxwoCh0nCR0mCh0kDRcoDg4gCR4nCR0nCB4lHzA6TFlkaHR/doKMd4GMZW95SFdgHy85EyUvPEpVdX+Jpq64wcbQw8jSv8TNt7zFnKGrbXaANENODyErCh4oKztGgYqVu8DKw8fRvcLLrrK7f4CJR01YHCs2CSEnDiErTVplq7O9vMDKub7IwsfRnZ+pbGtzZ2VuXl9nLjlCDR8pCh0oECMtY3B6vcLMqq64iIiSe3uFmpulv8TOvsLMjIyWdnV/bWx0ZGRsOkNNDiAqCR4ng4KMeHeBcXB6aWdwp6q0i4uVd3aAa2pyZmRtPEVPCxslf3+JcnF7aGZvoaOtnp+pdXR+hYeQSFVfCh0okZKcbm11dXaAtbnDkJCaeXiCdneAqq63oKWuKDlEvsPNpKawuLzGsbS+pqmzrbG7srW/s7fAeIGKEiUvu8HLrLC5OUdRCiArCh4ptLjCs7fBtbnCCxsnpqq0gICKdXZ/paexuLzFm6GqgYGLfn6HwcXPu7/Jsra/Chwne3qEb254SFdek5WfkpOctLjBY213oKGrioqUwMXPb3mDaXN+q664iIqUd3Z/bm52Ym13qKu1enqEdHN9a2tzrLC6sLO9hYWOp6u0R1dgf36Ib252c3N8hYWPh4mSsbW+Ch0oqKy2c3J8rrK8jY6XkpKciYuUrK+5CR4nvMHLhISOe3uEtrvEKTtEs7bAvMHKt7vFmJulgoKLfHyFlJegt7vEXmhyECIsuL3GXmhztrrDCSEnO0lUp623ByEeHi86d4GLY295CxwoCxwnCh0om2h0ngAAANB0Uk5TADBwn8/f/7+QQO+fYCAQj49f////////////////////////////////////////QP///////////////2D////////////////////P/////////////zD//////////6D//////////////////////////////zBw////cP//////////////z///////////////////////////////////////////v//////////v////////////////////////IP//EP///7/Pn+n4jU0AAANLSURBVHiclZZnXxNBEIePSI5LEKSLlJyCBlBQ6ZyKxAKKbUGwUCyIiDTbghBFpago9oYdewM7KvaCGsWCX8nc5ZKdK0lgXt3uzvOb2f/O7hxFKc1DM8pTS1tN68VoPFQcFKZj9LTEtN7uOJ0XrWKeo0eMCOF8nCC+Y5whvPn5qjE+WleMejAPvWuGpvUKQfzdIbz5y+IMh6FpSSwft7mJGYJ9+So0CAgMCg4ZGzpOPq8lGkq1DguPiDSwvI2fEBU9cZJk0c+RHJw1xsTGsXabPCU+Yeo0I1yfLkIwucSkZDYl1WCn0tIzuBkzZwEHLxuTCaZmZ5nYOXPnzc8WoZwFC3O5RYuXKEItBXGyDGzOMpSXv1yETAWocAW3chWghFCrwX6STCwbV4SKS0rt6a1BaG0+t2492BcfqowMY5J5vw2ofGOFfVNxmypR3uaq6hrixUhkCIsV/Gqr6rY49GOzt27bvgPj+gaHm16SXfhOVt1yMG5sIn5mahcZRMh8d9c1izvbg3E08dtLMWQQKWX2tRS2ttk+2zHeT/y8KXLDAwxS6ABC5Qc7hM9DGB8mddgJdEiSZXcEoaOo1nZcGONjDkctRaIGyaDjCGWcECU8ifEp4gmgYBmUdvpMupjxWasS54YFAXMOdYke5y9cvJTQLIH49C4DSCHElasIdedfu06QGzeLbmF8GwhBatwmeeodZLW73L0OR273Ue4D3EMk74X1KhzuQ55BjzjusR0yFKDcJ/BwGUUZlQpQN8e1OdKrePqsSlpGsGD5x+F5JQ8VcyVACkXBUn2OgXA1XrzkoXLuFTiwfsnV0FrvE6jY1/wlfNOCUF5JK7hSbzGGl9DbCunIULju7Lv3Hz5+SpGcbHyoUZIdBepceFj4fNJgNX3GPV8SiU+n8BqBUPRAlklWQYavOP7bAHARWylsmvxjKam6dlwdCuIIMshDyZ/l7431NUa4brE/5gycpcN+RPwUG0B/VHRTg2SRcXSNQUWr+RXY9Tvkj0qrGSQNytInX1U3vYUCZh4eZJY23Uz3BE1nUjIzu81Qb5Yz1n25+/mwKBmrhowrhhlUY1wG+6tzggh6DI0YEQQpk4XTM+4QG6dhem2/o0P/NCqSUf8BX/kBQ4eo7ZcAAAAASUVORK5CYII=", + "reference": null, + "reference_hash": null, + "decimals": 8 + }, + "token_test02.supernova11.testnet": { + "version": "V_1", + "name": "Rare", + "symbol": "Rare", + "icon": "data:image/png;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 20 + }, + "dev-1669774757309-31633349373710": { + "spec": "ft-1.0.0", + "name": "PN", + "symbol": "PN", + "icon": "data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='46px' height='46px' viewBox='0 0 46 46' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' version='1.1'%3E%3C!--list-runtimeslist-runtimes Generated by Pixelmator Pro 2.0.5 --%3E%3Cdefs%3E%3Cimage id='image' width='46px' height='46px' xlink:href='data:image/jpeg;base64,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'/%3E%3C/defs%3E%3Cuse id='Background-Layer' xlink:href='%23image' x='0px' y='0px' width='46px' height='46px'/%3E%3C/svg%3E%0A", + "reference": null, + "reference_hash": null, + "decimals": 8 + }, + "gem4.thegame.testnet": { + "spec": "ft-1.0.0", + "name": "LandtoEmpire.com game GEM!", + "symbol": "GEM", + "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAZ3SURBVHgBvVdbb1xXFf72ucx9PBN7nNpOqCdIAStRU0sRUd9CuYiXgpoHEDxBH5D6Rv9B6T9oHuGpfYMHRFEFDwgJVQ3QoICcprbsYuOJk3h8G8/dc2577377xG3t8XFttWnXw8w5Z6+911rf+tbaewucUqrVatl1My8KgeuAmBVCVAFdfjwqWlrrGv/ntFbvhKH3Vq1Wa51mXXGSwszMTFVr8Suq/uJTgycL57xhWeq1xcXFGj6PAybidDr7Kh9fwRcS63Xf7792HCKJDuxH/XfjB56M1ITQzyehYQ1/uHTp0uwTNm4kDujixYuzwwOHEPgSIh+WI0h8goDJ+ZdsPDZjbBhbRxzYJ1x1eAbLDcKy8ASlmk7nX/1kffOzD/1qknb53Nch3TJSI3nYpQpE/gwsJxVPpGtQSsd6lmUcZfmFPoJuE2hvwW/U0amvmprE0cD0BZMK5/GrRY8OKHF1OzOCVGkS9syPoJwxjE+XMHbhHKzRpxC6WdgGFAV4vo5nZlICjlnN9yCbWwjqD7HKVOfkWxg0VqEj/5ADUgpT3q/Y1eps2baj3x0cNBHmnrqI/OxPsF35IQbpKgrlKUxUSigUUnBcgQyN5dOAaymk+Jy2AfqAnGUjnyqgpyexpi+j4LrAYAs66EHJ8AACmCkWC7+xJybKP+XriwcdyFWqKH7je+idvwEtLShC2OwBzTZDDhRGhcIZW2Eyo1EtAUVi0GlI7DUi9FsSu02F91ckVCAQ5C5gJBtC9OsIeo2DZjKW5SzRd+v6IfiNd5PPYm/qBeS2bQhGibSFkLne7Wq0BxoDovnL5x1YQiPUAudKEv9dEbjHdPepY9nkg7JBH5H3U/Amv4+ibKJb/3CIB7hukURHmsPUcz/GlekKHI8LdOnqQCBFkhnof3DFwsvfsSCp5ymBiA60QxsvfcvCCxzLZkmNSMXGR3c4t6PpxBjcs9/FUSJas87+rnZowHL3cOZpC9cKGndvk2SM2GEpXr0MPDNto6sdSE6JyFYd14KGw/RePqdjBt9a0PAecYSvxYrAFC343RD3j7igq1bSDhfU57HZ2UJ41sHZb9oxudJc7OlRgVLRQkTsNBExlWBahPmXJuI8cGWK7XyCaEmOZwSeuWZBu3Xy8H0kSNlJ+jpY+ie2nSy2p64ilGWEXyshYOIfBA5U20agSbBIwqZlrVTcrGwlyX56ymZgjdDBSSJE/rTUJtprt7G9+G6SKTjmMDGMQvfBEmxGPNhso56/hvGrRcg9Cw+Z70EPccYkQ7YdOhDpuG/IiCXpkhssw4Zi5ZxXrJ4+lu/cQvThu2jdX0qy33LMSYYBHCLioN+FWF/GWStET42AJQGXXZBFTjgFsmlBpjtx51OR+ScZ2ZBCpqG1BzQ8ooIB3Pt3YM//Gc1Ha/D2egn2Rc1w4O7wZxlFnNBFd3cL0/570Fs1fgyw0xPosDJsx3Q9ws5yc1mi5jmdF+gRhV3aESqCs7uKwr0/oLuzCY8BKSmPmOfxbc4eH6+UhxuRETOh3+0gn0uj2FtlQ5mALozBZwV4DLVMgyb3sS4b1cOGjo1HYYDMxgco/eu38Dvb2HhQiwNKEk67aRcK52uOo17meyZJqd9pI5dNI93fhMqNQRbGIRwXOdOGbcR8aPcJO9EJ/RCFLRpffBud9RVsrhnjIY6TIPBeslutDa9SqZCzeC5JSZHlETeYHBnuhntQdhYyP2EOnShmBctPY6P52Hhx4y5yC39Bc/kutusPEHDecULuvbGysvx7EwOYhkWm4djDZ8goJLfZlPTJQ4k0Q7dLEyiQlEEk0OgqVNZvw/n/LTSX7qCx+Ygc6uOzhP3jxs7OTit2wDxUKuNnjkPBiMktVIiM9rj5sFOWihCjE3FHdNfuQX/wV7T+9x/s1NdYRZ9tnHJzaWkx3oHtj78Ui+ffcxzJnRGJZ39ChohICB0hKyKUXQVrfBoOt1l77m3U5/+NnfWHNN47yXjN9wc/a7Va3iEHDBeYij/tV0SyE+RDGIbwBn1InyjIPtLr85j/x9+w+eg+Am+Ak4ybQ+ny8vLGxx+O3AvMsVxK/UeccDg1Jei4qfjZpEcnHLuGjbNv3FhYWJg7tE6S5ld5MbGTtA0pyYk3yQnu7scT85Ry0+T8IOwH5VSXU/79moj8HKcWs8HJN5mm1z/35XRYzGUik8kYgn5bKfFs8vVcz7G+3/G801/PPwJ/EAP1ERh5CwAAAABJRU5ErkJggg==", + "reference": null, + "reference_hash": null, + "decimals": 0 + }, + "dev-1653557891931-71587257098750": { + "spec": "test", + "name": "test", + "symbol": "test", + "icon": "data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M6.18169 18.0234L5.94469 17.7027V16.2629L6.32518 15.9379L5.94469 16.0618V11.0351L5.11127 11.8686C5.02928 11.9505 5.02928 12.0835 5.11127 12.1655L5.68274 12.7369V14.2216L4.97194 13.5108L5.0942 13.0884L4.62741 13.1662L4.36897 12.9078C4.20658 12.7454 4.0978 12.5497 4.04261 12.3427L4.04559 12.3362L4.03914 12.3294C3.93293 11.9127 4.04287 11.4523 4.36897 11.1263L5.05112 10.4441H5.34496V10.1503L8.50787 6.98735H6.99447V8.13528L5.94469 9.18506V7.59159L6.32518 7.38946L5.94469 7.12088V5.93757H7.79345L8.08046 6.20407L8.58016 5.93757H9.55765L9.56015 5.93506L11.0448 5.93506L11.0423 5.93757H13.006L12.1726 5.10415C12.0906 5.02216 11.9577 5.02215 11.8757 5.10415L11.3073 5.67252H9.8227L11.1334 4.36184C11.3452 4.15005 11.6136 4.02943 11.8899 4L12.845 4.29694C12.8689 4.31753 12.8922 4.33916 12.9149 4.36184L13.1867 4.63366V4.72234L13.5743 5.42901L14.0636 5.51058L16.9807 8.42764V6.98735H15.9109L14.8611 5.93757H18.0305V6.34526L17.9055 6.47762L18.0305 6.76931V13.072L18.937 12.1655C19.019 12.0835 19.019 11.9505 18.937 11.8686L18.2925 11.224V9.73941L18.6344 10.0813L18.6805 10.1933L18.8269 10.2739L19.6793 11.1263C20.1713 11.6182 20.1713 12.4158 19.6793 12.9078L19.6367 12.9504L19.1364 13.0884V13.4507L15.6135 16.9736H16.9807V15.9694L18.0305 14.9196V18.0234H15.2939L15.1472 17.8983L14.793 18.0234H10.9691L11.8757 18.9299C11.9577 19.0119 12.0906 19.0119 12.1726 18.9299L12.8181 18.2844H14.2353V18.3518L13.3438 19.2433H13.1867L12.8932 19.6934C12.8617 19.7234 12.829 19.7515 12.7953 19.7777L11.704 20C11.4949 19.9453 11.2972 19.836 11.1334 19.6722L11.015 19.5538L10.474 18.8558V19.0128L6.99447 15.5333V16.9736H8.06699L9.11677 18.0234H7.24824L6.91787 17.8983L6.68572 18.0234H6.18169ZM16.9807 9.91225L14.0558 6.98735H9.99248L6.99447 9.98536V14.0487L9.91937 16.9736H14.1289L16.9807 14.1218V9.91225Z' fill='%23FFD378'/%3E%3Cg clip-path='url(%23clip0_5878_1589)'%3E%3Cpath d='M9.51221 8.49464C10.9949 10.6511 9.70598 10.4886 9.11497 10.6715C9.70476 11.4759 9.3666 12.2318 8.43848 12.7052C9.23653 13.0257 10.2968 13.1681 9.07733 14.8593C10.287 14.1749 11.125 14.1172 11.0098 15.6672C11.8884 14.7781 13.0322 14.33 14.1725 15.0815C14.0424 13.958 14.3649 13.4659 15.4931 13.9506C14.2834 12.8408 14.7833 12.1818 15.5001 11.5362C14.2613 11.4871 14.0876 10.5406 14.1332 9.4093C13.3855 10.2228 12.8183 10.1352 12.5522 8.54342C12.0384 9.71173 11.3463 10.4574 9.5122 8.49463L9.51221 8.49464ZM11.1901 10.1567C11.4348 10.1622 11.5787 10.3422 11.717 10.5319L10.8125 12.0986C10.5021 12.1288 10.2757 12.029 10.1773 11.7319L11.0819 10.1651C11.1112 10.1601 11.1392 10.1574 11.1661 10.1568C11.1742 10.1566 11.1822 10.1566 11.1901 10.1567V10.1567ZM12.2395 10.327C12.4842 10.3323 12.6281 10.5124 12.7665 10.7021L11.7494 12.5114C11.439 12.5416 11.2127 12.4417 11.1142 12.1447L12.1313 10.3353C12.1607 10.3303 12.1887 10.3276 12.2155 10.327C12.2236 10.3268 12.2316 10.3268 12.2395 10.3269L12.2395 10.327ZM13.1318 10.8141C13.3766 10.8196 13.5205 10.9996 13.6589 11.1892L12.6564 12.976C12.346 13.0061 12.1197 12.9064 12.0213 12.6093L13.0236 10.8225C13.053 10.8175 13.081 10.8148 13.1079 10.8142C13.1159 10.814 13.124 10.814 13.1319 10.8142L13.1318 10.8141ZM13.8363 11.6537C14.0912 11.6552 14.2428 11.8358 14.3889 12.0259L13.5444 13.4887C13.24 13.5084 13.0145 13.4071 12.9092 13.122L13.7538 11.6593C13.7824 11.6554 13.8099 11.6536 13.8363 11.6538L13.8363 11.6537ZM10.0561 12.2298L11.6648 12.9522C11.7106 13.2819 11.6225 13.5418 11.331 13.6956L9.72221 12.9732C9.65369 12.6446 9.84797 12.4338 10.056 12.2298H10.0561Z' fill='%23FFD378'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='clip0_5878_1589'%3E%3Crect width='7.7829' height='7.7829' fill='white' transform='translate(8.11719 8.09961)'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E%0A", + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "gold.thegame.testnet": { + "spec": "ft-1.0.0", + "name": "Game Gold!!", + "symbol": "gGOLD", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 2 + }, + "dev-1645773481635-17615479205365": { + "spec": "ft-1.0.0", + "name": "Bitcoin", + "symbol": "BTC", + "icon": "data:image/svg+xml;utf8;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSI2NHB4IiBoZWlnaHQ9IjY1cHgiIHZpZXdCb3g9IjAgMCA2NCA2NSIgdmVyc2lvbj0iMS4xIj48dGl0bGU+Qml0Y29pbjwvdGl0bGU+PGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+PGcgaWQ9ImNyeXB0byIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTg2LjAwMDAwMCwgLTkzLjAwMDAwMCkiIGZpbGwtcnVsZT0ibm9uemVybyI+PGcgaWQ9IkJpdGNvaW4iIHRyYW5zZm9ybT0idHJhbnNsYXRlKDg2LjAwMDAwMCwgOTMuMDAwMDAwKSI+PGcgaWQ9Ikdyb3VwIj48Y2lyY2xlIGlkPSJPdmFsIiBmaWxsPSIjRjVCMzAwIiBjeD0iMzEuNyIgY3k9IjMyLjUiIHI9IjMxLjciLz48cGF0aCBkPSJNMjMuMSAxNi4zYzEuMS4zIDIuMi41IDMuMy44IDEuMS4zIDIuMi41IDMuMy44LjMuMS40IDAgLjUtLjMuNC0xLjcuOC0zLjMgMS4yLTUgLjEtLjMuMi0uNC41LS4zIDEgLjMgMS45LjUgMi45LjcuMy4xLjMuMi4yLjQtLjQgMS42LS44IDMuMy0xLjIgNC45IDAgLjEgMCAuMi0uMS40LjguMiAxLjcuNCAyLjUuNi4xIDAgLjItLjIuMy0uMy4zLTEuMy42LTIuNSAxLTMuOGwuMy0xLjJjMC0uMi4xLS4zLjMtLjIgMSAuMyAyIC41IDMuMS44LjEgMCAuMS4xLjIuMS0uMyAxLjMtLjYgMi41LS45IDMuNy0uMS41LS4yIDEtLjQgMS41LS4xLjMgMCAuNC4zLjVsMy4zIDEuNWMxIC42IDEuOSAxLjQgMi42IDIuNC45IDEuNSAxIDMuMS42IDQuNy0uMyAxLjEtLjcgMi4xLTEuNSAyLjktLjYuNi0xLjQgMS0yLjIgMS4zLS4xIDAtLjIuMS0uNC4xLjQuMy44LjUgMS4yLjggMS4yLjkgMiAyIDIuNCAzLjQuMiAxLjEuMSAyLjMtLjIgMy40LS40IDEuNC0uOSAyLjYtMS44IDMuNy0xLjEgMS4zLTIuNSAyLTQuMSAyLjItMi4xLjMtNC4xLjEtNi4xLS4yLS4zLS4xLS41IDAtLjYuMy0uNCAxLjYtLjggMy4zLTEuMiA0LjktLjEuNC0uMS41LS42LjMtLjktLjItMS45LS41LTIuOC0uNy0uMy0uMS0uMy0uMi0uMi0uNC40LTEuNy44LTMuNCAxLjMtNSAwLS4yLjEtLjMtLjEtLjQtLjgtLjItMS42LS40LTIuNS0uNi0uMi45LS41IDEuOC0uNyAyLjctLjIuOS0uNSAxLjgtLjcgMi43LS4xLjItLjEuMy0uNC4yLTEtLjMtMi0uNS0zLS43LS4zLS4xLS4zLS4yLS4yLS40LjQtMS43LjgtMy40IDEuMy01IDAtLjEuMS0uMi4xLS40LTIuMy0uNi00LjYtMS4yLTctMS44LjItLjQuMy0uNy41LTEuMS40LS45LjgtMS44IDEuMS0yLjYuMS0uMy4yLS4zLjUtLjMuNy4yIDEuNS40IDIuMi41LjguMiAxLjQtLjIgMS41LS45IDEuMy01LjEgMi42LTEwLjIgMy44LTE1LjQuMi0uOC0uMy0xLjctMS4yLTItLjktLjMtMS44LS41LTIuNi0uNy0uMiAwLS4zLS4xLS4yLS4zLjMtMS4xLjYtMi4zLjktMy40LS40LjMtLjQuMy0uMy4yek0yOC4yIDQxYy4xIDAgLjIuMS4yLjEgMS42LjQgMy4zLjkgNSAxIDEuMi4xIDIuMy4xIDMuNC0uMyAxLjktLjYgMi43LTMuMSAxLjYtNC43LS41LS44LTEuMy0xLjMtMi4xLTEuOC0xLjgtMS0zLjktMS40LTUuOS0xLjgtLjMtLjEtLjMgMC0uNC4zLS4yIDEtLjUgMS45LS43IDIuOS0uNCAxLjQtLjcgMi44LTEuMSA0LjN6bTguNC0xMC4yYy4yIDAgLjctLjEgMS4xLS4yIDEuOS0uNCAyLjktMi42IDEuOS00LjMtLjUtLjktMS40LTEuNS0yLjMtMS45LTEuNC0uNi0yLjgtLjktNC4zLTEuMy0uMy0uMS0uNCAwLS41LjMtLjUgMi4xLTEgNC4xLTEuNiA2LjItLjEuMiAwIC4zLjIuNC40LjEuNy4yIDEuMS4zIDEuNS4yIDIuOC41IDQuNC41eiIgaWQ9IlNoYXBlIiBmaWxsPSIjRkZGIi8+PC9nPjwvZz48L2c+PC9nPjxtZXRhZGF0YT48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiIHhtbG5zOnJkZnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDEvcmRmLXNjaGVtYSMiIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyI+PHJkZjpEZXNjcmlwdGlvbiBhYm91dD0iaHR0cHM6Ly9pY29uc2NvdXQuY29tL2xlZ2FsI2xpY2Vuc2VzIiBkYzp0aXRsZT0iYml0Y29pbiIgZGM6ZGVzY3JpcHRpb249ImJpdGNvaW4iIGRjOnB1Ymxpc2hlcj0iSWNvbnNjb3V0IiBkYzpkYXRlPSIyMDE3LTA5LTE3IiBkYzpmb3JtYXQ9ImltYWdlL3N2Zyt4bWwiIGRjOmxhbmd1YWdlPSJlbiI+PGRjOmNyZWF0b3I+PHJkZjpCYWc+PHJkZjpsaT5WbGFkaXNsYXYgU2VyZ2VldjwvcmRmOmxpPjwvcmRmOkJhZz48L2RjOmNyZWF0b3I+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwvbWV0YWRhdGE+PC9zdmc+", + "reference": null, + "reference_hash": null, + "decimals": 8 + }, + "usdc.map007.testnet": { + "spec": "ft-1.0.0", + "name": "", + "symbol": "", + "icon": null, + "reference": "", + "reference_hash": "", + "decimals": 6 + }, + "xcorn.ver_1.csdev.testnet": { + "spec": "ft-1.0.0", + "name": "Staked CORN", + "symbol": "xCORN", + "icon": "data:image/svg+xml,%3Csvg width='300' height='300' viewBox='0 0 300 300' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M150.43 32L99.7144 61.4389L150.43 90.8705L201.145 61.4389L150.43 32Z' fill='%235C65A5'/%3E%3Cpath d='M201.146 61.4388L150.431 90.8703L201.146 120.309L251.854 90.8703L201.146 61.4388Z' fill='%233B4274'/%3E%3Cpath d='M99.7152 61.4388L49 90.8703L99.7152 120.309L150.43 90.8703L99.7152 61.4388Z' fill='%233B4274'/%3E%3Cpath d='M150.43 90.8707L99.7144 120.31L150.43 149.749L201.145 120.31L150.43 90.8707Z' fill='%235C65A5'/%3E%3Cpath d='M99.7152 120.31L49 90.8707V149.749L99.7152 179.187V120.31Z' fill='%235C65A5'/%3E%3Cpath d='M150.43 149.748L99.7144 120.309V179.187L150.43 208.626V149.748Z' fill='%233B4274'/%3E%3Cpath d='M99.7152 179.187L49 149.748V208.626L99.7152 238.058V179.187Z' fill='%233B4274'/%3E%3Cpath d='M150.43 208.626L99.7144 179.187V238.057L150.43 267.496V208.626Z' fill='%235C65A5'/%3E%3Cpath d='M150.431 267.496L201.146 238.057L150.431 208.626V267.496Z' fill='%233B4274'/%3E%3Cpath d='M224.085 213.702L209.447 198.197L194.809 213.702H167.656L195.643 182.183L167.656 150.665H194.809L209.447 166.933L224.085 150.665H251.086L223.175 182.183L251.086 213.702H224.085Z' fill='%233B4274'/%3E%3C/svg%3E", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "token1.map007.testnet": { + "spec": "ft-1.0.0", + "name": "", + "symbol": "", + "icon": null, + "reference": "", + "reference_hash": "", + "decimals": 24 + }, + "andyxyz1.testnet": "", + "v2.deflationary.testnet": { + "spec": "ft-1.0.0", + "name": "def farming", + "symbol": "DEFF2", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "v010.refve.testnet": { + "spec": "ft-1.0.0", + "name": "refLove Finance Token", + "symbol": "refLove", + "icon": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHZpZXdCb3g9IjAgMCA1MCA1MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGNpcmNsZSBjeD0iMjUiIGN5PSIyNSIgcj0iMjUiIGZpbGw9IiMwRjFEMjciLz4KPHBhdGggZD0iTTE1LjUgMTRIMTFWMjcuMjVIMTMuMjVWMzEuNUgxNS41VjM2SDIwVjMxLjVIMjJWMjcuMjVIMjQuNVYxNEgyMFYyN0gxNS41VjE0WiIgZmlsbD0iIzAwRkZEMSIvPgo8cGF0aCBkPSJNMjguNSAxNEgzNy41VjE4LjVIMzNWMjIuNzVIMzcuNVYyNy4yNUgzM1YzMS41SDM3LjVWMzZIMjguNVYxNFoiIGZpbGw9IiMwMEZGRDEiLz4KPC9zdmc+Cg==", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "bolt-official.testnet": { + "spec": "ft-1.0.0", + "name": "BOLT", + "symbol": "BOLT", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "ulm.tokens.testnet": { + "spec": "ft-1.0.0", + "name": "ulimoney", + "symbol": "ulm", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 10 + }, + "space-tret.huanlam2.testnet": { + "spec": "ft-1.0.0", + "name": "Space Tret Token", + "symbol": "SPTT", + "icon": "https://spacefintech.com/images/logofintech.png", + "reference": null, + "reference_hash": null, + "decimals": 8 + }, + "mdoge2.duyhuongtest.testnet": { + "spec": "ft-1.0.0", + "name": "Music doge", + "symbol": "Mdoge", + "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAACCQAAAgkCAMAAABf8seIAAAACXBIWXMAAC4jAAAuIwF4pT92AAABsFBMVEUBEDcBEDcAAABGpUkIQFQKTFwLVGABCTQCHT8FL0rUv50KMx0oGlQBEDcCBzMBCDQBDzcBCTQBETggFAsBCzUBDTYBDjYCBjECCDMBDDUBCjQCBTABEzkBEjgBCjUCBzIBAi8BAi4BFToEJUQCCDIDDjYBDDYCBDAFJ0UDETgDEDcFKUYIQVUEFjsCBzEEGT0DHD4CCTI3Jm0HOFABEjkDHD9WR4MCFjsIQlUCAy8JQlYDFToJRFcCFzsDDTUBFDoJRVcIP1QKS1sIQFQIPFIJRlgDHkAIPlMCCjMJR1kKSVoBDjcGLEgEI0MEIkIJSFkBEDgCFzwCCzQBCDMEIEEGMEsIOlEDEzkHN08KTl0DFDkEGDwHNE0HNk4IO1EBFDkEHkAFIUIGKkcCGj0HMkwLUF4KT10GMEoEIUEKTVwCCDQGLkkGLUkLVGEKTFwBBzQFKEYHM0wEGz4CDDULUV8CDDQCGz4HOE8HNU4KSloEHT8LU2AIPVICBTEGL0oEGTwCGT0IPVMDIUILUl8HL0oKSlsCGTwHNU0HM00LVGACBjIGLkoLUmACCzMBAS4AAIGy0ANsAAAAkHRSTlOAQP//gICAgICA/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4A478nAAACzEUlEQVR42uzdPXIj5xWGUVU5cGaEjaoOwI4mQ97r4EKwAmyAgdbskcaWRA45IIj+uT/niW2l99T79YC//X5fU5Ge/mpO1rcVGtfu+rWGNL3c0Un39x9Je/Tv31oSARJSIGGABEGClAYJEyPURIIhYUskOPiMIBVEwlQqQwIkQAIkSFoICRMjQILXhiWQ4OBDglQMCVO5DAmbGmFkBEhgBKkoEiZGgARIgARIkCChgxAgARIgARIkPY6EiRH82wZG8EkCJEiQ0IYIhoTNkTBWNwIkQILUDAnTxAiGhB2XBEgQI0hRkTBNkGBIMCT4JAESJEho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", + "reference": null, + "reference_hash": null, + "decimals": 8 + }, + "token2.map007.testnet": { + "spec": "ft-1.0.0", + "name": "", + "symbol": "", + "icon": null, + "reference": "", + "reference_hash": "", + "decimals": 18 + }, + "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwx.fakes.testnet": { + "spec": "ft-1.0.0", + "name": "Long Name Token", + "symbol": "LNT", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "v2-nearx.staderlabs.testnet": { + "spec": "ft-1.0.0", + "name": "NearX", + "symbol": "NearX", + "icon": "data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M24 12C24 18.6274 18.6274 24 12 24C5.37258 24 0 18.6274 0 12C0 5.37258 5.37258 0 12 0C18.6274 0 24 5.37258 24 12ZM17.1421 21.3847L21.3848 17.1421L19.3669 15.1243C18.5576 17.0302 17.0303 18.5576 15.1243 19.3669L17.1421 21.3847ZM9.4329 19.5792C7.45318 18.9089 5.82112 17.4847 4.87847 15.6484L3.24263 17.2842L7.48527 21.5269L9.4329 19.5792ZM4.63307 8.87568C5.4424 6.96973 6.96977 5.44237 8.87573 4.63305L7.24263 2.99995L2.99999 7.24259L4.63307 8.87568ZM15.6484 4.87847L17.3848 3.14209L21.6274 7.38473L19.5792 9.4329C18.9089 7.45318 17.4847 5.82112 15.6484 4.87847Z' fill='%232FA8AF'/%3E%3Cpath d='M8.00119 11.9921C8.00119 11.0268 8.00119 10.0615 8.00119 9.09612C8.00119 8.50505 8.16497 8.1743 8.56285 8.05781C8.97778 7.93628 9.40619 7.97917 9.79565 8.45228C11.3533 10.3447 12.9343 12.218 14.5092 14.0959C14.5692 14.1676 14.6117 14.3122 14.734 14.2626C14.8496 14.2157 14.7858 14.0805 14.786 13.9878C14.7904 12.6326 14.7898 11.2774 14.7868 9.92226C14.7868 9.83668 14.838 9.7162 14.7271 9.67372C14.6401 9.64029 14.5824 9.74185 14.522 9.79358C14.0492 10.1981 13.5804 10.6073 13.1088 11.0133C13.0208 11.089 12.9332 11.2118 12.8002 11.1012C12.6657 10.9894 12.7696 10.8872 12.8364 10.7881C13.3547 10.0186 13.8728 9.24898 14.3909 8.47919C14.6656 8.07085 15.0079 7.92282 15.4056 8.04141C15.786 8.15475 15.9986 8.48592 15.9992 8.97668C16.0007 10.0905 15.9996 11.2045 15.9996 12.3183C15.9996 13.2094 16.0003 14.1005 15.9994 14.9916C15.999 15.4826 15.8137 15.798 15.4512 15.9324C15.0256 16.0901 14.5767 15.9683 14.2734 15.6058C12.6823 13.705 11.0924 11.8029 9.50198 9.90144C9.46029 9.85161 9.42303 9.7961 9.37377 9.75489C9.28998 9.68487 9.21967 9.68108 9.21314 9.81797C9.20999 9.88273 9.21188 9.94791 9.21188 10.0129C9.21188 11.3496 9.21062 12.6862 9.2142 14.0227C9.21441 14.1186 9.15609 14.2557 9.26114 14.3038C9.38093 14.3587 9.45061 14.2178 9.52998 14.1503C9.98259 13.7651 10.4291 13.3728 10.8805 12.9859C10.9729 12.9066 11.0626 12.7651 11.208 12.8973C11.3402 13.0176 11.2213 13.1196 11.159 13.2127C10.6323 13.9989 10.1032 14.7837 9.57145 15.5663C9.32788 15.9248 8.9881 16.056 8.61085 15.9488C8.23739 15.8428 8.00498 15.5246 8.00287 15.0827C7.99761 14.0523 8.00119 13.022 8.00119 11.9917V11.9921Z' fill='white'/%3E%3C/svg%3E%0A", + "reference": "https://near.staderlabs.com", + "reference_hash": null, + "decimals": 24 + }, + "test.duyhuongtest.testnet": { + "spec": "ft-1.0.0", + "name": "Meme Coin", + "symbol": "testNear", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 8 + }, + "usdc.fakes.testnet": { + "spec": "ft-1.0.0", + "name": "USD Coin", + "symbol": "USDC", + "icon": "data:image/svg+xml,%3Csvg width='32' height='32' viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none'%3E%3Ccircle cx='16' cy='16' r='16' fill='%232775C9'/%3E%3Cpath d='M15.75 27.5C9.26 27.5 4 22.24 4 15.75S9.26 4 15.75 4 27.5 9.26 27.5 15.75A11.75 11.75 0 0115.75 27.5zm-.7-16.11a2.58 2.58 0 00-2.45 2.47c0 1.21.74 2 2.31 2.33l1.1.26c1.07.25 1.51.61 1.51 1.22s-.77 1.21-1.77 1.21a1.9 1.9 0 01-1.8-.91.68.68 0 00-.61-.39h-.59a.35.35 0 00-.28.41 2.73 2.73 0 002.61 2.08v.84a.705.705 0 001.41 0v-.85a2.62 2.62 0 002.59-2.58c0-1.27-.73-2-2.46-2.37l-1-.22c-1-.25-1.47-.58-1.47-1.14 0-.56.6-1.18 1.6-1.18a1.64 1.64 0 011.59.81.8.8 0 00.72.46h.47a.42.42 0 00.31-.5 2.65 2.65 0 00-2.38-2v-.69a.705.705 0 00-1.41 0v.74zm-8.11 4.36a8.79 8.79 0 006 8.33h.14a.45.45 0 00.45-.45v-.21a.94.94 0 00-.58-.87 7.36 7.36 0 010-13.65.93.93 0 00.58-.86v-.23a.42.42 0 00-.56-.4 8.79 8.79 0 00-6.03 8.34zm17.62 0a8.79 8.79 0 00-6-8.32h-.15a.47.47 0 00-.47.47v.15a1 1 0 00.61.9 7.36 7.36 0 010 13.64 1 1 0 00-.6.89v.17a.47.47 0 00.62.44 8.79 8.79 0 005.99-8.34z' fill='%23FFF'/%3E%3C/g%3E%3C/svg%3E", + "reference": null, + "reference_hash": null, + "decimals": 6 + }, + "usdt.qa.nearlend.testnet": { + "spec": "ft-1.0.0", + "name": "Tether", + "symbol": "USDT", + "icon": "data:image/svg+xml,%3Csvg viewBox='0 0 40 41' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M20 40.3967C31.0457 40.3967 40 31.4424 40 20.3967C40 9.35103 31.0457 0.396729 20 0.396729C8.9543 0.396729 0 9.35103 0 20.3967C0 31.4424 8.9543 40.3967 20 40.3967ZM9.94128 26.8949C10.8013 27.6658 11.8831 27.8967 12.92 27.8967C14.0181 27.8967 15.0686 27.635 15.7432 27.467L15.7518 27.4648C15.8896 27.4288 16.0125 27.3988 16.1084 27.3778C18.6046 26.829 21.1098 26.805 23.5551 27.2939C23.6803 27.3172 23.8337 27.3575 24.01 27.4037L24.0256 27.4078L24.0427 27.4121C25.4456 27.7647 28.3397 28.4921 30.2856 26.652C31.0407 25.9442 31.5442 24.9274 31.703 23.7996L31.7042 23.791C31.9467 22.0799 32.2474 19.9585 31.658 17.0091C31.5352 16.3792 31.0677 15.0625 30.3485 14.2287C29.1828 12.87 27.2919 12.5521 24.7238 13.2689L24.6369 13.2929C21.859 14.0578 19.0451 14.1357 16.2762 13.5239L16.0395 13.4699L16.0332 13.4684C15.1327 13.2611 13.4619 12.8765 11.973 13.086C10.6275 13.2779 9.43185 14.1627 8.77558 15.4614C8.52686 15.9503 8.40699 16.4452 8.33208 16.8231C7.90056 18.9827 7.88857 21.5411 8.30211 23.8506C8.52086 25.0653 9.10221 26.1481 9.94128 26.8949ZM12.4165 16.2383C12.5723 16.2173 12.7372 16.2083 12.908 16.2083C13.75 16.2083 14.7509 16.4362 15.3263 16.5772L15.59 16.6402C18.8683 17.363 22.1916 17.2731 25.4729 16.3702L25.5808 16.3433C27.3159 15.8514 27.8103 16.1543 27.9422 16.3073C28.1999 16.6042 28.4936 17.36 28.5475 17.639C29.033 20.0624 28.7842 21.8141 28.5625 23.3587C28.5056 23.7726 28.3407 24.1326 28.11 24.3515C27.4265 24.997 25.7497 24.5746 24.8276 24.3423L24.8047 24.3365C24.559 24.2735 24.3462 24.2225 24.1754 24.1865C21.3016 23.6077 18.3589 23.6437 15.4341 24.2795C15.3141 24.3059 15.1654 24.3437 14.9937 24.3874L14.9817 24.3905L14.9487 24.3986C14.3211 24.5535 12.5601 24.9881 12.0479 24.5315C11.7393 24.2585 11.5115 23.8086 11.4216 23.2987C11.083 21.4001 11.089 19.2136 11.4426 17.459C11.4756 17.291 11.5295 17.0541 11.6044 16.9041C11.7902 16.5322 12.0959 16.2833 12.4165 16.2383Z' fill='%2386EC8A'/%3E%3C/svg%3E", + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "neartip1.token-factory.tokenhub.testnet": { + "spec": "ft-1.0.0", + "name": "NearTip", + "symbol": "NEARTIP1", + "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAfFJREFUWEftVj/IQXEUPV8WYlHKbGJQDAZKoYjBZpDdaFRs2JgxyWAzGA0GhTIoFINiMxiMBopS7+veei9/8t7gvb5veLfE793rnvPOu/fwIwiCgD+MH52AroCuwL9XIBwOYzKZsFOMRiPQWS4WiwWCwSButxvq9TpyuZxsvawPnE4nWK1WqYHBYMBqtYLb7f7Y1OfzYblcSnkln5MlsN/v4XA4nsCcTieTMBqNbySKxSJqtdrTddUIEPBut+PmoVAI4/H4CWg2myEQCMBut8PlckmPTTUCpVIJpEin02HgdDqNbrcrkfB6vaxKv99Ho9FApVLhnKoEyuUyD6E4lK1WC9lsFvl8HjR8oipUpxmB+/0OutvNZiNths1mexpMTQkQ6na7ZRK0arQZdPd0FkNzAgREckciEcakASUSFouFz5oTIAWOxyO/MpnM22ZoSmA6nSKRSGA4HMLv9/MQttttJpFKpdDr9bRTgCw2FouhUCigWq1Kz/x1Mw6Hg/pb4PF4sF6vQe/khI9Bm0EWTHnRqMRVVc0HRMD5fM5gr0FzQdcvl4t6Vny9XmEymaSG5IY0YJ/icTOoxmw243w+f6ynhOK/Yvo5bTabiMfjGAwGss0oSTXJZJLr6HM0Gv2OgCLilwWKCnzZX/HrOgFdAV2BX5SgorCtRzFVAAAAAElFTkSuQmCC", + "reference": null, + "reference_hash": null, + "decimals": 8 + }, + "dev-1651510927087-21303959453558": { + "spec": "", + "name": "dev-1651510927087-21303959453558", + "symbol": "dev-1651510927087-21303959453558", + "icon": "", + "reference": "", + "reference_hash": "", + "decimals": 0 + }, + "nexp.testnet": { + "spec": "ft-1.0.0", + "name": "NEXP", + "symbol": "NEXP", + "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpCN0Y4OTQ5NEMxQTJFQzExOTYyRDlEQzhBQzkzREZEOSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCMEEzMTExNEEyQ0ExMUVDODFGN0YzNjM5NzNDOTI5MSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCMEEzMTExM0EyQ0ExMUVDODFGN0YzNjM5NzNDOTI5MSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkI3Rjg5NDk0QzFBMkVDMTE5NjJEOURDOEFDOTNERkQ5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkI3Rjg5NDk0QzFBMkVDMTE5NjJEOURDOEFDOTNERkQ5Ii8+IDwvcmRmOkRlc2NyaXB0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", + "reference": null, + "reference_hash": null, + "decimals": 4 + }, + "usdn.testnet": { + "spec": "ft-1.0.0", + "name": "USN", + "symbol": "USN", + "icon": "data:image/svg+xml;charset=UTF-8,%3Csvg width='38' height='38' viewBox='0 0 38 38' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='38' height='38' rx='19' fill='black'/%3E%3Cpath d='M14.8388 10.6601C14.4203 10.1008 13.6748 9.86519 12.9933 10.0768C12.3119 10.2885 11.85 10.8991 11.85 11.5883V14.7648H8V17.9412H11.85V20.0589H8V23.2353H11.85V28H15.15V16.5108L23.1612 27.2165C23.5797 27.7758 24.3252 28.0114 25.0067 27.7997C25.6881 27.5881 26.15 26.9775 26.15 26.2882V23.2353H30V20.0589H26.15V17.9412H30V14.7648H26.15V10.0001H22.85V21.3658L14.8388 10.6601Z' fill='white'/%3E%3C/svg%3E", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "dev-1656877137694-34571929023079": { + "spec": "ft-1.0.0", + "name": "Stader and Near", + "symbol": "NEARX", + "icon": null, + "reference": "https://nearX.app", + "reference_hash": null, + "decimals": 24 + }, + "xcorn.corndao.testnet": { + "spec": "ft-1.0.0", + "name": "Staked CORN", + "symbol": "xCORN", + "icon": "data:image/svg+xml,%3Csvg width='300' height='300' viewBox='0 0 300 300' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M150.43 32L99.7144 61.4389L150.43 90.8705L201.145 61.4389L150.43 32Z' fill='%235C65A5'/%3E%3Cpath d='M201.146 61.4388L150.431 90.8703L201.146 120.309L251.854 90.8703L201.146 61.4388Z' fill='%233B4274'/%3E%3Cpath d='M99.7152 61.4388L49 90.8703L99.7152 120.309L150.43 90.8703L99.7152 61.4388Z' fill='%233B4274'/%3E%3Cpath d='M150.43 90.8707L99.7144 120.31L150.43 149.749L201.145 120.31L150.43 90.8707Z' fill='%235C65A5'/%3E%3Cpath d='M99.7152 120.31L49 90.8707V149.749L99.7152 179.187V120.31Z' fill='%235C65A5'/%3E%3Cpath d='M150.43 149.748L99.7144 120.309V179.187L150.43 208.626V149.748Z' fill='%233B4274'/%3E%3Cpath d='M99.7152 179.187L49 149.748V208.626L99.7152 238.058V179.187Z' fill='%233B4274'/%3E%3Cpath d='M150.43 208.626L99.7144 179.187V238.057L150.43 267.496V208.626Z' fill='%235C65A5'/%3E%3Cpath d='M150.431 267.496L201.146 238.057L150.431 208.626V267.496Z' fill='%233B4274'/%3E%3Cpath d='M224.085 213.702L209.447 198.197L194.809 213.702H167.656L195.643 182.183L167.656 150.665H194.809L209.447 166.933L224.085 150.665H251.086L223.175 182.183L251.086 213.702H224.085Z' fill='%233B4274'/%3E%3C/svg%3E", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "bob.infi.testnet": { + "spec": "ft-1.0.0", + "name": "INFI", + "symbol": "INFI", + "icon": "data:image/png;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "usdc.mocks.testnet": { + "spec": "ft-1.0.0", + "name": "USD Coin", + "symbol": "USDC", + "icon": "data:image/svg+xml,%3Csvg width='32' height='32' viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none'%3E%3Ccircle cx='16' cy='16' r='16' fill='%232775C9'/%3E%3Cpath d='M15.75 27.5C9.26 27.5 4 22.24 4 15.75S9.26 4 15.75 4 27.5 9.26 27.5 15.75A11.75 11.75 0 0115.75 27.5zm-.7-16.11a2.58 2.58 0 00-2.45 2.47c0 1.21.74 2 2.31 2.33l1.1.26c1.07.25 1.51.61 1.51 1.22s-.77 1.21-1.77 1.21a1.9 1.9 0 01-1.8-.91.68.68 0 00-.61-.39h-.59a.35.35 0 00-.28.41 2.73 2.73 0 002.61 2.08v.84a.705.705 0 001.41 0v-.85a2.62 2.62 0 002.59-2.58c0-1.27-.73-2-2.46-2.37l-1-.22c-1-.25-1.47-.58-1.47-1.14 0-.56.6-1.18 1.6-1.18a1.64 1.64 0 011.59.81.8.8 0 00.72.46h.47a.42.42 0 00.31-.5 2.65 2.65 0 00-2.38-2v-.69a.705.705 0 00-1.41 0v.74zm-8.11 4.36a8.79 8.79 0 006 8.33h.14a.45.45 0 00.45-.45v-.21a.94.94 0 00-.58-.87 7.36 7.36 0 010-13.65.93.93 0 00.58-.86v-.23a.42.42 0 00-.56-.4 8.79 8.79 0 00-6.03 8.34zm17.62 0a8.79 8.79 0 00-6-8.32h-.15a.47.47 0 00-.47.47v.15a1 1 0 00.61.9 7.36 7.36 0 010 13.64 1 1 0 00-.6.89v.17a.47.47 0 00.62.44 8.79 8.79 0 005.99-8.34z' fill='%23FFF'/%3E%3C/g%3E%3C/svg%3E", + "reference": null, + "reference_hash": null, + "decimals": 6 + }, + "mfight-ft.testnet": { + "spec": "ft-1.0.0", + "name": "Multiverse Fighters token", + "symbol": "MFIGHT", + "icon": "data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M6.18169 18.0234L5.94469 17.7027V16.2629L6.32518 15.9379L5.94469 16.0618V11.0351L5.11127 11.8686C5.02928 11.9505 5.02928 12.0835 5.11127 12.1655L5.68274 12.7369V14.2216L4.97194 13.5108L5.0942 13.0884L4.62741 13.1662L4.36897 12.9078C4.20658 12.7454 4.0978 12.5497 4.04261 12.3427L4.04559 12.3362L4.03914 12.3294C3.93293 11.9127 4.04287 11.4523 4.36897 11.1263L5.05112 10.4441H5.34496V10.1503L8.50787 6.98735H6.99447V8.13528L5.94469 9.18506V7.59159L6.32518 7.38946L5.94469 7.12088V5.93757H7.79345L8.08046 6.20407L8.58016 5.93757H9.55765L9.56015 5.93506L11.0448 5.93506L11.0423 5.93757H13.006L12.1726 5.10415C12.0906 5.02216 11.9577 5.02215 11.8757 5.10415L11.3073 5.67252H9.8227L11.1334 4.36184C11.3452 4.15005 11.6136 4.02943 11.8899 4L12.845 4.29694C12.8689 4.31753 12.8922 4.33916 12.9149 4.36184L13.1867 4.63366V4.72234L13.5743 5.42901L14.0636 5.51058L16.9807 8.42764V6.98735H15.9109L14.8611 5.93757H18.0305V6.34526L17.9055 6.47762L18.0305 6.76931V13.072L18.937 12.1655C19.019 12.0835 19.019 11.9505 18.937 11.8686L18.2925 11.224V9.73941L18.6344 10.0813L18.6805 10.1933L18.8269 10.2739L19.6793 11.1263C20.1713 11.6182 20.1713 12.4158 19.6793 12.9078L19.6367 12.9504L19.1364 13.0884V13.4507L15.6135 16.9736H16.9807V15.9694L18.0305 14.9196V18.0234H15.2939L15.1472 17.8983L14.793 18.0234H10.9691L11.8757 18.9299C11.9577 19.0119 12.0906 19.0119 12.1726 18.9299L12.8181 18.2844H14.2353V18.3518L13.3438 19.2433H13.1867L12.8932 19.6934C12.8617 19.7234 12.829 19.7515 12.7953 19.7777L11.704 20C11.4949 19.9453 11.2972 19.836 11.1334 19.6722L11.015 19.5538L10.474 18.8558V19.0128L6.99447 15.5333V16.9736H8.06699L9.11677 18.0234H7.24824L6.91787 17.8983L6.68572 18.0234H6.18169ZM16.9807 9.91225L14.0558 6.98735H9.99248L6.99447 9.98536V14.0487L9.91937 16.9736H14.1289L16.9807 14.1218V9.91225Z' fill='%23FFD378'/%3E%3Cg clip-path='url(%23clip0_5878_1589)'%3E%3Cpath d='M9.51221 8.49464C10.9949 10.6511 9.70598 10.4886 9.11497 10.6715C9.70476 11.4759 9.3666 12.2318 8.43848 12.7052C9.23653 13.0257 10.2968 13.1681 9.07733 14.8593C10.287 14.1749 11.125 14.1172 11.0098 15.6672C11.8884 14.7781 13.0322 14.33 14.1725 15.0815C14.0424 13.958 14.3649 13.4659 15.4931 13.9506C14.2834 12.8408 14.7833 12.1818 15.5001 11.5362C14.2613 11.4871 14.0876 10.5406 14.1332 9.4093C13.3855 10.2228 12.8183 10.1352 12.5522 8.54342C12.0384 9.71173 11.3463 10.4574 9.5122 8.49463L9.51221 8.49464ZM11.1901 10.1567C11.4348 10.1622 11.5787 10.3422 11.717 10.5319L10.8125 12.0986C10.5021 12.1288 10.2757 12.029 10.1773 11.7319L11.0819 10.1651C11.1112 10.1601 11.1392 10.1574 11.1661 10.1568C11.1742 10.1566 11.1822 10.1566 11.1901 10.1567V10.1567ZM12.2395 10.327C12.4842 10.3323 12.6281 10.5124 12.7665 10.7021L11.7494 12.5114C11.439 12.5416 11.2127 12.4417 11.1142 12.1447L12.1313 10.3353C12.1607 10.3303 12.1887 10.3276 12.2155 10.327C12.2236 10.3268 12.2316 10.3268 12.2395 10.3269L12.2395 10.327ZM13.1318 10.8141C13.3766 10.8196 13.5205 10.9996 13.6589 11.1892L12.6564 12.976C12.346 13.0061 12.1197 12.9064 12.0213 12.6093L13.0236 10.8225C13.053 10.8175 13.081 10.8148 13.1079 10.8142C13.1159 10.814 13.124 10.814 13.1319 10.8142L13.1318 10.8141ZM13.8363 11.6537C14.0912 11.6552 14.2428 11.8358 14.3889 12.0259L13.5444 13.4887C13.24 13.5084 13.0145 13.4071 12.9092 13.122L13.7538 11.6593C13.7824 11.6554 13.8099 11.6536 13.8363 11.6538L13.8363 11.6537ZM10.0561 12.2298L11.6648 12.9522C11.7106 13.2819 11.6225 13.5418 11.331 13.6956L9.72221 12.9732C9.65369 12.6446 9.84797 12.4338 10.056 12.2298H10.0561Z' fill='%23FFD378'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='clip0_5878_1589'%3E%3Crect width='7.7829' height='7.7829' fill='white' transform='translate(8.11719 8.09961)'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E%0A", + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "ft.zomland2.testnet": { + "spec": "ft-1.0.0", + "name": "ZomLand Token", + "symbol": "ZML", + "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAjVBMVEUAAACqG/mfFvGPEeavHf2ZFe2VE+lyBNCmGvajGfSJDuF5B9aEDN1/CtpsAszHcvnaqPnz4v3ivvq3buzbsvfIgfWiLe3Tify2RfjPpfGPKN+pRO2dH+2vKfnPkvasUuujOeuQO9m6feqDGdnamv22NfzDXvrKmfDBjOy7VPeoJfWyXuygTuKaQuCgW94+UbkuAAAAAXRSTlMAQObYZgAAAxlJREFUWMOclOtuozAQhU+AWNA/NubacosqggR9//dbZoaw4FhJdz9HYBK+MzNECd4wmhH/S1rco5V7Zao1JMW/IvpON1f21yFmGqfIgXupcvwGXUd+NEa8pZq0nl3zwnSzRvrWp1aPnhDRivRYrRGvM+g+eom2rZ2u11Vh8ILuWNJHlXf6xTd/J8tPbWHvcRxPtn7xADzi3F1iIjLUYBxfpvcDCDFTA7VsuMK6SdZdb+FDs3emA7DQRvOMcbKyWPgDFsemckkOaLIKEHUSUAK8mIO3w62b+BGgg6Sd+iWHi6ST6MKt50mgpUgQBDm09jbgmIFgtsozmPUdOgIFXLrNc+g38fYIaAFcNUzvDhD4mR4fg2k5sS7x9MMsE59+DUowhcyStkEKIL9aOKTL2dsXiaxoEFcJpCuHo7ZviRkn8yb9lnA5FD6hrnkqAZqmbyXgpuDS7qIb0PA/oerFbKUDZXDC6tb11HpgCikAplHUT6oaOOyWekICNmMIqXQePgWI6RLSKwPxA8kJs0+gfwpozl7b3FT4YACRYX96FDCkOFFu5URTAwydeIUliAJMy518h3Aoww1xPvHNWcIxQC6GxhegxCYsMj5/8LJ/A4zM85XB4We9OysPNTNWmS8QOYjMgvgo4GD/lD4vOQ7CQBBAS8qiJX9Q+MzCnkUCXoAUkvsfb7oxEMSwwObZCAu5ugRf7B9LJXf+TOfJ9nJs7k2HPQ7Xg4QkdZOraubxVTqIt/nF3l2pp1OzEeypmFGq/n/X1E2PnTLcFP939ALrOW14N9hrHQ54qYvbxFJlhMfe4HBkUEbW5AXh5/PeHYdKZRb2AfG0fDQOZz2+A94Q3WitDTjtzklZzCMaLM86rQw22tR2usN5o11h4Suc12trtdW87bh+QwqrVyNytNIel26RodYb1iFZoxfET0C6QD5ImhHRG8lqQkOkZcsEh1RVADytPHLU9DUgg6ONHumqgqKCF3VIF6PFPKNCsjAlR0kXRYd0Lefowy/WIsOHmwlwnPfI0c3NbV5/rB5wBQ/AJVR8cElb4JpmQII/0SE/if+Kx5MAAAAASUVORK5CYII=", + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "dev-1647826409169-57002928574824": { + "spec": "ft-1.0.0", + "name": "VITAMIN C", + "symbol": "VCT", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 8 + }, + "trc_contract.admin.tracer.testnet": { + "spec": "ft-1.0.0", + "name": "Tracer Utility Token", + "symbol": "TRC", + "icon": "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1514.28 1514.28'%3E%3Cdefs%3E%3ClinearGradient id='d' x1='102.19' y1='379.01' x2='1412.09' y2='1135.28' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%23c922ee'/%3E%3Cstop offset='.08' stop-color='%23bf20e9'/%3E%3Cstop offset='.2' stop-color='%23a61bdd'/%3E%3Cstop offset='.37' stop-color='%237c14ca'/%3E%3Cstop offset='.56' stop-color='%23430aaf'/%3E%3Cstop offset='.57' stop-color='%23400aae'/%3E%3Cstop offset='.87' stop-color='%239a1dd9'/%3E%3Cstop offset='.99' stop-color='%23b824e7'/%3E%3C/linearGradient%3E%3ClinearGradient id='e' x1='274.03' y1='1240.25' x2='1240.25' y2='274.03' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0' stop-color='%232e048e'/%3E%3Cstop offset='.15' stop-color='%23280497'/%3E%3Cstop offset='.24' stop-color='%232404a0'/%3E%3Cstop offset='.45' stop-color='%233507a8'/%3E%3Cstop offset='.57' stop-color='%23400aae'/%3E%3Cstop offset='.87' stop-color='%239a1dd9'/%3E%3Cstop offset='.99' stop-color='%23b824e7'/%3E%3C/linearGradient%3E%3Cfilter id='f' filterUnits='userSpaceOnUse'%3E%3CfeOffset dx='7' dy='7'/%3E%3CfeGaussianBlur result='g' stdDeviation='5'/%3E%3CfeFlood flood-color='%23000' flood-opacity='.75'/%3E%3CfeComposite in2='g' operator='in'/%3E%3CfeComposite in='SourceGraphic'/%3E%3C/filter%3E%3Cstyle%3E.i%7Bstroke:%23140a96;stroke-miterlimit:10;fill:%23c821ed;stroke-width:4px%7D%3C/style%3E%3C/defs%3E%3Cg id='b'%3E%3Cg id='c'%3E%3Ccircle cx='757.14' cy='757.14' r='756.14' style='fill:url(%23d);stroke-width:2px;stroke:%23140a96;stroke-miterlimit:10'/%3E%3Ccircle cx='757.14' cy='757.14' r='683.22' style='stroke-width:2px;stroke:%23140a96;stroke-miterlimit:10;fill:url(%23e)'/%3E%3Ccircle class='i' cx='757.14' cy='757.14' r='614.9'/%3E%3Ccircle class='i' cx='757.14' cy='757.14' r='572.47'/%3E%3Cpath d='M1230.91 757.14c-373.28 55.5-418.27 100.5-473.77 473.77-55.5-373.28-100.5-418.27-473.77-473.77 373.28-55.5 418.27-100.5 473.77-473.77 55.5 373.28 100.5 418.27 473.77 473.77Z' style='fill:%23fff;filter:url(%23f)'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E", + "reference": null, + "reference_hash": null, + "decimals": 8 + }, + "usdtt.fakes.testnet": { + "spec": "ft-1.0.0", + "name": "Tether USD", + "symbol": "USDt", + "icon": "data:image/svg+xml,%3Csvg width='111' height='90' viewBox='0 0 111 90' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M24.4825 0.862305H88.0496C89.5663 0.862305 90.9675 1.64827 91.7239 2.92338L110.244 34.1419C111.204 35.7609 110.919 37.8043 109.549 39.1171L58.5729 87.9703C56.9216 89.5528 54.2652 89.5528 52.6139 87.9703L1.70699 39.1831C0.305262 37.8398 0.0427812 35.7367 1.07354 34.1077L20.8696 2.82322C21.6406 1.60483 23.0087 0.862305 24.4825 0.862305ZM79.8419 14.8003V23.5597H61.7343V29.6329C74.4518 30.2819 83.9934 32.9475 84.0642 36.1425L84.0638 42.803C83.993 45.998 74.4518 48.6635 61.7343 49.3125V64.2168H49.7105V49.3125C36.9929 48.6635 27.4513 45.998 27.3805 42.803L27.381 36.1425C27.4517 32.9475 36.9929 30.2819 49.7105 29.6329V23.5597H31.6028V14.8003H79.8419ZM55.7224 44.7367C69.2943 44.7367 80.6382 42.4827 83.4143 39.4727C81.0601 36.9202 72.5448 34.9114 61.7343 34.3597V40.7183C59.7966 40.8172 57.7852 40.8693 55.7224 40.8693C53.6595 40.8693 51.6481 40.8172 49.7105 40.7183V34.3597C38.8999 34.9114 30.3846 36.9202 28.0304 39.4727C30.8066 42.4827 42.1504 44.7367 55.7224 44.7367Z' fill='%23009393'/%3E%3C/svg%3E", + "reference": null, + "reference_hash": null, + "decimals": 6 + }, + "cookie.dexterdev8.testnet": { + "spec": "ft-1.0.0", + "name": "Cookie", + "symbol": "CKS", + "icon": "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 288 288'%3E%3Cg id='l' data-name='l'%3E%3Cpath d='M187.58,79.81l-30.1,44.69a3.2,3.2,0,0,0,4.75,4.2L191.86,103a1.2,1.2,0,0,1,2,.91v80.46a1.2,1.2,0,0,1-2.12.77L102.18,77.93A15.35,15.35,0,0,0,90.47,72.5H87.34A15.34,15.34,0,0,0,72,87.84V201.16A15.34,15.34,0,0,0,87.34,216.5h0a15.35,15.35,0,0,0,13.08-7.31l30.1-44.69a3.2,3.2,0,0,0-4.75-4.2L96.14,186a1.2,1.2,0,0,1-2-.91V104.61a1.2,1.2,0,0,1,2.12-.77l89.55,107.23a15.35,15.35,0,0,0,11.71,5.43h3.13A15.34,15.34,0,0,0,216,201.16V87.84A15.34,15.34,0,0,0,200.66,72.5h0A15.35,15.35,0,0,0,187.58,79.81Z'/%3E%3C/g%3E%3C/svg%3E", + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "rft.tokenfactory.testnet": { + "spec": "ft-1.0.0", + "name": "Ref Finance Token", + "symbol": "RFT", + "icon": "", + "reference": null, + "reference_hash": null, + "decimals": 8 + }, + "sci.testnet": { + "spec": "ft-1.0.0", + "name": "SCI", + "symbol": "SCI", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "dev-1638904065122-71210869985191": { + "spec": "ft-1.0.0", + "name": "Potato 🥔", + "symbol": "POTATO", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "test4.duyhuongtest.testnet": { + "spec": "ft-1.0.0", + "name": "Meme Coin", + "symbol": "testNear", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 8 + }, + "nusdt.ft-fin.testnet": { + "spec": "ft-1.0.0", + "name": "NEAR Wrapped Tether", + "symbol": "nUSDT", + "icon": "https://s2.coinmarketcap.com/static/img/coins/64x64/825.png", + "reference": null, + "reference_hash": null, + "decimals": 6 + }, + "token-v3.cheddar.testnet": { + "spec": "ft-1.0.0", + "name": "Cheddar", + "symbol": "Cheddar", + "icon": "", + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "uxuu.leopollum.testnet": { + "spec": "ft-1.0.0", + "name": "Fluxus", + "symbol": "UXU", + "icon": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGNpcmNsZSBjeD0iMTYiIGN5PSIxNiIgcj0iMTYiIGZpbGw9IiMyMUQwQjMiLz4KPHBhdGggZD0iTTE1LjkxNDEgMTUuMTgxNEgxNS40ODE0QzE1LjU4NDkgMTUuMTkwMyAxNS42ODk2IDE1LjE5ODEgMTUuNzk0MiAxNS4yMDM2QzE1LjgyNTkgMTUuMTk0NyAxNS44NjU5IDE1LjE4NyAxNS45MTQxIDE1LjE4MTRaIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNOS45MDUyMiAxNy41MjYzQzcuOTY3NjMgMTkuMTc1OSA3IDIxLjIwMjYgNyAyMy42MDQySDguMzg4NTNDOC4zODg1MyAyMS41ODg2IDkuMjA1NjYgMTkuODg3OCAxMC44NDIzIDE4LjUwMjlDMTIuMzA2MSAxNy4yNDA0IDEzLjk1MjEgMTYuNTc4NSAxNS43ODE1IDE2LjUxNzRIMTUuOTc1NUgxNi4zOTUyQzE4LjIwMzUgMTYuNTc4NSAxOS44MTc4IDE3LjIyMDQgMjEuMjM4MSAxOC40NDE3QzIyLjg1MjMgMTkuODA2NiAyMy42NjAxIDIxLjUyNjMgMjMuNjYwMSAyMy42MDQySDI1LjA0ODZDMjUuMDQ4NiAyMS4yMDE1IDI0LjA5MDQgMTkuMTU0NyAyMi4xNzUxIDE3LjQ2NTFDMjEuNzYxMyAxNy4xMDggMjEuMzA1MSAxNi43ODU0IDIwLjgwNzcgMTYuNDk1MUgxMS4zNjlDMTAuODU3NiAxNi43ODk5IDEwLjM2OTYgMTcuMTMxNCA5LjkwNTIyIDE3LjUyNjNaIiBmaWxsPSJ3aGl0ZSIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIwLjUiLz4KPHBhdGggZD0iTTkuOTA1MjIgMTQuMDc3N0M3Ljk2NzYzIDEyLjQyODEgNyAxMC40MDE0IDcgNy45OTk4NUg4LjM4ODUzQzguMzg4NTMgMTAuMDE1NCA5LjIwNTY2IDExLjcxNjIgMTAuODQyMyAxMy4xMDExQzEyLjMwNjEgMTQuMzYzNiAxMy45NTIxIDE1LjAyNTUgMTUuNzgxNSAxNS4wODY2SDE1Ljk3NTVIMTYuMzk1MkMxOC4yMDM1IDE1LjAyNTUgMTkuODE3OCAxNC4zODM2IDIxLjIzODEgMTMuMTYyM0MyMi44NTIzIDExLjc5NzQgMjMuNjYwMSAxMC4wNzc3IDIzLjY2MDEgNy45OTk4NUgyNS4wNDg2QzI1LjA0ODYgMTAuNDAyNSAyNC4wOTA0IDEyLjQ0OTMgMjIuMTc1MSAxNC4xMzg5QzIxLjc2MTMgMTQuNDk2IDIxLjMwNTEgMTQuODE4NiAyMC44MDc3IDE1LjEwODlIMTEuMzY5QzEwLjg1NzYgMTQuODE0MSAxMC4zNjk2IDE0LjQ3MjYgOS45MDUyMiAxNC4wNzc3WiIgZmlsbD0id2hpdGUiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMC41Ii8+Cjwvc3ZnPgo=", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "minimous35.testnet": { + "spec": "ft-1.0.0", + "name": "Banana Coin", + "symbol": "Banana", + "icon": "data:image/png;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 8 + }, + "dev-1656503291173-39720893370899": { + "spec": "ft-1.0.0", + "name": "AppTestnet IDEA Token", + "symbol": "IDEA", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "tayadeamit1009.testnet": { + "spec": "ft-1.0.0", + "name": "DOJOTestCoin", + "symbol": "DOJOTWO", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 8 + }, + "contract.gematest.testnet": { + "spec": "ft-1.0.0", + "name": "GEMATESTTOKENS", + "symbol": "GEM-T1", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 8 + }, + "mak.zeiris-test.testnet": { + "spec": "ft-1.0.0", + "name": "MAK", + "symbol": "MAK", + "icon": "", + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "usdt.fakes.testnet": { + "spec": "ft-1.0.0", + "name": "Tether USD", + "symbol": "USDT.e", + "icon": "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Ccircle cx='16' cy='16' r='16' fill='%2326A17B'/%3E%3Cpath fill='%23FFF' d='M17.922 17.383v-.002c-.11.008-.677.042-1.942.042-1.01 0-1.721-.03-1.971-.042v.003c-3.888-.171-6.79-.848-6.79-1.658 0-.809 2.902-1.486 6.79-1.66v2.644c.254.018.982.061 1.988.061 1.207 0 1.812-.05 1.925-.06v-2.643c3.88.173 6.775.85 6.775 1.658 0 .81-2.895 1.485-6.775 1.657m0-3.59v-2.366h5.414V7.819H8.595v3.608h5.414v2.365c-4.4.202-7.709 1.074-7.709 2.118 0 1.044 3.309 1.915 7.709 2.118v7.582h3.913v-7.584c4.393-.202 7.694-1.073 7.694-2.116 0-1.043-3.301-1.914-7.694-2.117'/%3E%3C/g%3E%3C/svg%3E", + "reference": null, + "reference_hash": null, + "decimals": 6 + }, + "corn.all_hands_test.csdev.testnet": { + "spec": "ft-1.0.0", + "name": "Cornerstone", + "symbol": "CORN", + "icon": "data:image/svg+xml,%3Csvg width='140' height='140' viewBox='0 0 140 140' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M17 39.685L43.0018 54.6965V85.8307L17 70.7955V39.685Z' fill='%2362AEFE'/%3E%3Cpath d='M17 70.7955L43.0018 85.8307V116.965L17 101.93V70.7955Z' fill='%235C65A5'/%3E%3Cpath d='M43.0017 54.6965L68.9799 69.7317V100.866L43.0017 85.8307V54.6965Z' fill='%23564788'/%3E%3Cpath d='M43.0017 85.8307L68.9799 100.866V132L43.0017 116.965V85.8307Z' fill='%2351328E'/%3E%3Cpath d='M120.983 69.6608L94.9817 84.6959V115.83L120.983 100.795V69.6608Z' fill='%232F2B48'/%3E%3Cpath d='M68.9797 100.866V132L94.9815 115.83L68.9797 100.866Z' fill='%2348297B'/%3E%3Cpath d='M94.9815 115.83L68.9797 100.871V69.6608L94.9815 84.6959V115.83Z' fill='%23494661'/%3E%3Cpath d='M17 39.6614L43.8512 24.3425L69.6642 39.2595L43.0018 54.6965L17 39.6614Z' fill='%23BF9AD2'/%3E%3Cpath d='M43.0017 54.6256L69.5744 39.2318L95.9478 54.2613L68.9799 69.6608L43.0017 54.6256Z' fill='%23D0B5E0'/%3E%3Cpath d='M43.8513 24.3425L70.7025 9L96.4651 24.0295L69.5746 39.2317L43.8513 24.3425Z' fill='%23A676BF'/%3E%3Cpath d='M69.5745 39.2317L96.465 24.0295L122.493 38.8812L95.8311 54.3183L69.5745 39.2317Z' fill='%236649A9'/%3E%3Cpath d='M94.9815 84.6959L68.9797 69.6608L95.8309 54.3183L120.983 69.6608L94.9815 84.6959Z' fill='%235C5A6F'/%3E%3C/svg%3E", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "tra.factory.tokenhub.testnet": { + "spec": "ft-1.0.0", + "name": "Tra", + "symbol": "TRA", + "icon": "data:image/png;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 8 + }, + "token2.duyhuongtest.testnet": { + "spec": "ft-1.0.0", + "name": "Huong Token Name", + "symbol": "Huong", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 8 + }, + "dev-1652197859279-96214400725752": { + "spec": "ft-1.0.0", + "name": "Eternal Lands Gold Token", + "symbol": "elGOLD", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "yet.171factory.gadillac.testnet": "", + "ft-final.nekocoin.testnet": { + "spec": "ft-1.0.0", + "name": "NEKO", + "symbol": "NEKO", + "icon": "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' version='1.1' id='Layer_1' x='0px' y='0px' width='46px' height='46px' viewBox='0 0 46 46' enable-background='new 0 0 46 46' xml:space='preserve'%3E%3Cimage id='image0' width='46' height='46' x='0' y='0' href='data:image/png;base64,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 OjAwO8gregAAAABJRU5ErkJggg=='/%3E%3C/svg%3E", + "reference": null, + "reference_hash": null, + "decimals": 0 + }, + "usdt.mocks.testnet": { + "spec": "ft-1.0.0", + "name": "Tether USD", + "symbol": "USDT.e", + "icon": "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Ccircle cx='16' cy='16' r='16' fill='%2326A17B'/%3E%3Cpath fill='%23FFF' d='M17.922 17.383v-.002c-.11.008-.677.042-1.942.042-1.01 0-1.721-.03-1.971-.042v.003c-3.888-.171-6.79-.848-6.79-1.658 0-.809 2.902-1.486 6.79-1.66v2.644c.254.018.982.061 1.988.061 1.207 0 1.812-.05 1.925-.06v-2.643c3.88.173 6.775.85 6.775 1.658 0 .81-2.895 1.485-6.775 1.657m0-3.59v-2.366h5.414V7.819H8.595v3.608h5.414v2.365c-4.4.202-7.709 1.074-7.709 2.118 0 1.044 3.309 1.915 7.709 2.118v7.582h3.913v-7.584c4.393-.202 7.694-1.073 7.694-2.116 0-1.043-3.301-1.914-7.694-2.117'/%3E%3C/g%3E%3C/svg%3E", + "reference": null, + "reference_hash": null, + "decimals": 6 + }, + "corn.0.csdev.testnet": { + "spec": "ft-1.0.0", + "name": "Cornerstone", + "symbol": "CORN", + "icon": "", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "pulse.fakes.testnet": { + "spec": "ft-1.0.0", + "name": "Pulse", + "symbol": "PULSE", + "icon": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCIgdmlld0JveD0iMCAwIDIwMCAyMDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxjaXJjbGUgY3g9IjEwMCIgY3k9IjEwMCIgcj0iMTAwIiBmaWxsPSIjMEYyQUMzIi8+CjxwYXRoIGQ9Ik0xMDMuNTc0IDg0LjU3M0MxMDIuMDUyIDg2LjU4MDggMTAwLjg1MyA4OS4xNDAyIDk5LjY5NzIgOTEuNjU1OUM5OC41NDA5IDk0LjE3MTYgOTcuMzkyIDk2LjY1OTYgOTYuMjE0OSA5OC40MjU1Qzk1LjAzNzggMTAwLjE5MSA5My45Mjg0IDEwMS4wNTggOTIuNzMyNiAxMDEuMDU4QzkxLjI3MDMgMTAxLjA1OCA5MC40NDI1IDEwMC42NDMgODkuNzEwMiA5OS44NjcyQzg4Ljk3NzYgOTkuMDkxNiA4OC40MDY1IDk3LjkwNSA4Ny44NzAzIDk2LjY3MDRDODcuMzMzOSA5NS40MzU4IDg2Ljg0NzcgOTQuMTM1MSA4Ni4wMzA1IDkzLjAzNDlDODUuMjEzMyA5MS45MzQ3IDgzLjkxMDQgOTEuMDI5MSA4Mi4yMTk4IDkxLjAyOTFDODEuMjYzMyA5MS4wMjkxIDgwLjQyMzcgOTEuNDQ1MSA3OS43ODg2IDkyLjAzMkM3OS4xNTM0IDkyLjYxODkgNzguNjkwMSA5My4zOTAxIDc4LjI3NzQgOTQuMjI1OUM3Ny40NTIxIDk1Ljg5NjggNzYuODM1NCA5Ny45NjgyIDc2LjA0MzUgOTkuOTkyN0M3NS4yNTE2IDEwMi4wMTcgNzQuMjc3MSAxMDMuOTk1IDcyLjk1NTUgMTA1LjM4M0M3MS42MzM2IDEwNi43NzIgNjkuOTk5MiAxMDcuNjQgNjcuNTAxOCAxMDcuNjRIMzguMDY2MkMzNy42ODcxIDEwNy42MzUgMzcuMzM0NSAxMDcuODI1IDM3LjE0MzMgMTA4LjEzN0MzNi45NTIyIDEwOC40NDkgMzYuOTUyMiAxMDguODM2IDM3LjE0MzMgMTA5LjE0OEMzNy4zMzQ1IDEwOS40NjEgMzcuNjg3MSAxMDkuNjUxIDM4LjA2NjIgMTA5LjY0Nkg2Ny41MDE4QzcwLjU0NzkgMTA5LjY0NiA3Mi44OTg1IDEwOC40MTYgNzQuNTMyMyAxMDYuN0M3Ni4xNjYyIDEwNC45ODQgNzcuMTg3NSAxMDIuNzk3IDc4LjAxNDYgMTAwLjY4MkM3OC44NDE3IDk4LjU2NzUgNzkuNDc1IDk2LjQ3NDEgODAuMTgyOCA5NS4wNDA3QzgwLjUzNyA5NC4zMjQgODAuODg5MyA5My43OTE5IDgxLjIzNDEgOTMuNDczOEM4MS41Nzg5IDkzLjE1NTIgODEuODI2NiA5My4wMzQ5IDgyLjIxOTggOTMuMDM0OUM4My4yMjc5IDkzLjAzNDkgODMuNzQyNyA5My40NDUzIDg0LjMyMjIgOTQuMjI1OUM4NC45MDE4IDk1LjAwNiA4NS40MTIgOTYuMjEyNyA4NS45NjQ5IDk3LjQ4NTRDODYuNTE3NyA5OC43NTc3IDg3LjA4OTYgMTAwLjA3OCA4OC4xMzMxIDEwMS4xODRDODkuMTc2NiAxMDIuMjg5IDkwLjczNzUgMTAzLjA2NCA5Mi43MzI2IDEwMy4wNjRDOTQuOTkzOCAxMDMuMDY0IDk2LjY1OTEgMTAxLjQ4NiA5Ny45ODg4IDk5LjQ5MTJDOTkuMzE4NSA5Ny40OTYyIDEwMC40NTQgOTQuOTY5NSAxMDEuNjAzIDkyLjQ3MDlDMTAyLjc1MSA4OS45NzE4IDEwMy45NTMgODcuNTE2OSAxMDUuMjgyIDg1Ljc2MzhDMTA2LjYxMSA4NC4wMTA3IDEwNy45MjUgODMuMDA1OCAxMDkuNTUzIDgzLjAwNThDMTEwLjI5NSA4My4wMDU4IDExMC45NDYgODMuMjcyOCAxMTEuNjU2IDgzLjg4MzRDMTEyLjM2NSA4NC40OTM5IDExMy4wNjggODUuNDUxNyAxMTMuNzU4IDg2LjY0MTRDMTE1LjEzOCA4OS4wMjA3IDExNi40NDcgOTIuMzI4OCAxMTcuODMyIDk1LjY2NzVDMTE5LjIxNiA5OS4wMDYyIDEyMC43MTcgMTAyLjM3NiAxMjIuNjk0IDEwNS4wMDdDMTI0LjY3MSAxMDcuNjM4IDEyNy4yMzQgMTA5LjU4MyAxMzAuNTc4IDEwOS41ODNIMTYwLjkzNEMxNjEuMzEzIDEwOS41ODggMTYxLjY2NiAxMDkuMzk4IDE2MS44NTcgMTA5LjA4NkMxNjIuMDQ4IDEwOC43NzMgMTYyLjA0OCAxMDguMzg3IDE2MS44NTcgMTA4LjA3NEMxNjEuNjY2IDEwNy43NjIgMTYxLjMxMyAxMDcuNTcyIDE2MC45MzQgMTA3LjU3N0gxMzAuNTc4QzEyOC4wNjcgMTA3LjU3NyAxMjYuMTcgMTA2LjIzMiAxMjQuNDAyIDEwMy44NzlDMTIyLjYzNCAxMDEuNTI2IDEyMS4xMDggOTguMjgzNyAxMTkuNzM3IDk0Ljk3ODFDMTE4LjM2NiA5MS42NzIxIDExNy4xMDggODguMzA1MiAxMTUuNTk4IDg1LjcwMTJDMTE0Ljg0MyA4NC4zOTkxIDExNC4wOCA4My4yODQ2IDExMy4xMDEgODIuNDQxOEMxMTIuMTIyIDgxLjU5ODcgMTEwLjg4MyA4MSAxMDkuNTUzIDgxQzEwNy4wMzYgODEgMTA1LjA5NiA4Mi41NjUzIDEwMy41NzQgODQuNTczWiIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSI1Ii8+Cjwvc3ZnPgo=", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "token11.duyhuongtest.testnet": { + "spec": "ft-1.0.0", + "name": "Huong2 Token Name", + "symbol": "Huong8", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 8 + }, + "corn.wanwan.csdev.testnet": { + "spec": "ft-1.0.0", + "name": "Cornerstone", + "symbol": "CORN", + "icon": "data:image/svg+xml,%3Csvg width='140' height='140' viewBox='0 0 140 140' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M17 39.685L43.0018 54.6965V85.8307L17 70.7955V39.685Z' fill='%2362AEFE'/%3E%3Cpath d='M17 70.7955L43.0018 85.8307V116.965L17 101.93V70.7955Z' fill='%235C65A5'/%3E%3Cpath d='M43.0017 54.6965L68.9799 69.7317V100.866L43.0017 85.8307V54.6965Z' fill='%23564788'/%3E%3Cpath d='M43.0017 85.8307L68.9799 100.866V132L43.0017 116.965V85.8307Z' fill='%2351328E'/%3E%3Cpath d='M120.983 69.6608L94.9817 84.6959V115.83L120.983 100.795V69.6608Z' fill='%232F2B48'/%3E%3Cpath d='M68.9797 100.866V132L94.9815 115.83L68.9797 100.866Z' fill='%2348297B'/%3E%3Cpath d='M94.9815 115.83L68.9797 100.871V69.6608L94.9815 84.6959V115.83Z' fill='%23494661'/%3E%3Cpath d='M17 39.6614L43.8512 24.3425L69.6642 39.2595L43.0018 54.6965L17 39.6614Z' fill='%23BF9AD2'/%3E%3Cpath d='M43.0017 54.6256L69.5744 39.2318L95.9478 54.2613L68.9799 69.6608L43.0017 54.6256Z' fill='%23D0B5E0'/%3E%3Cpath d='M43.8513 24.3425L70.7025 9L96.4651 24.0295L69.5746 39.2317L43.8513 24.3425Z' fill='%23A676BF'/%3E%3Cpath d='M69.5745 39.2317L96.465 24.0295L122.493 38.8812L95.8311 54.3183L69.5745 39.2317Z' fill='%236649A9'/%3E%3Cpath d='M94.9815 84.6959L68.9797 69.6608L95.8309 54.3183L120.983 69.6608L94.9815 84.6959Z' fill='%235C5A6F'/%3E%3C/svg%3E", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "dev-1638903851089-93093931624718": { + "spec": "ft-1.0.0", + "name": "Potato 🥔", + "symbol": "POTATO", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "dev-1652660333908-53333239111308": { + "spec": "ft-1.0.0", + "name": "MFOX", + "symbol": "MFOX", + "icon": "data:image/png;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "light_token.testnet": { + "spec": "ft-1.0.0", + "name": "Light", + "symbol": "Light", + "icon": "data:image/png;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 8 + }, + "paras.fakes.testnet": { + "spec": "ft-1.0.0", + "name": "PARAS", + "symbol": "PARAS", + "icon": "data:image/png;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "oct.fakes.testnet": { + "spec": "ft-1.0.0", + "name": "Octopus Network Token", + "symbol": "OCT", + "icon": "data:image/svg+xml,%3Csvg version='1.1' id='O' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 113.39 113.39' style='enable-background:new 0 0 113.39 113.39;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0%7Bfill:%23014299;%7D .st1%7Bfill:%23FFFFFF;%7D %3C/style%3E%3Ccircle class='st0' cx='56.69' cy='56.69' r='56.69'/%3E%3Cg%3E%3Cpath class='st1' d='M44.25,59.41c-1.43,0-2.59,1.16-2.59,2.59v20.28c0,1.43,1.16,2.59,2.59,2.59c1.43,0,2.59-1.16,2.59-2.59V62 C46.84,60.57,45.68,59.41,44.25,59.41z'/%3E%3Cpath class='st1' d='M56.69,59.41c-1.45,0-2.62,1.17-2.62,2.62v26.47c0,1.45,1.17,2.62,2.62,2.62s2.62-1.17,2.62-2.62V62.02 C59.31,60.58,58.14,59.41,56.69,59.41z'/%3E%3Cpath class='st1' d='M79.26,78.87c-0.33,0.15-0.64,0.28-0.95,0.38c0,0-0.01,0-0.01,0c-0.59,0.19-1.13,0.29-1.63,0.31h-0.06 c-1,0.03-1.84-0.27-2.59-0.75c-0.49-0.32-0.91-0.73-1.25-1.23c-0.3-0.43-0.53-0.93-0.71-1.51c0-0.01-0.01-0.02-0.01-0.03 c-0.22-0.74-0.34-1.61-0.34-2.59V62.02c0-1.45-1.17-2.62-2.62-2.62c-1.45,0-2.62,1.17-2.62,2.62v11.43c0,4.5,1.64,8.03,4.63,9.96 c1.5,0.97,3.21,1.45,5.04,1.45c1.68,0,3.45-0.41,5.25-1.22c1.32-0.59,1.9-2.14,1.31-3.46C82.13,78.86,80.57,78.27,79.26,78.87z'/%3E%3Cpath class='st1' d='M68.33,45.9c0-2.15-1.75-3.9-3.9-3.9c-2.15,0-3.9,1.75-3.9,3.9s1.75,3.9,3.9,3.9 C66.58,49.8,68.33,48.05,68.33,45.9z'/%3E%3Cpath class='st1' d='M48.96,41.99c-2.15,0-3.9,1.75-3.9,3.9s1.75,3.9,3.9,3.9s3.9-1.75,3.9-3.9S51.11,41.99,48.96,41.99z'/%3E%3Cpath class='st1' d='M56.69,22.28c-15.17,0-27.52,12.34-27.52,27.52v15.09c0,1.46,1.18,2.64,2.64,2.64s2.64-1.18,2.64-2.64V49.8 c0-12.26,9.98-22.24,22.24-22.24c12.26,0,22.24,9.98,22.24,22.24v15.09c0,1.46,1.18,2.64,2.64,2.64s2.64-1.18,2.64-2.64V49.8 C84.21,34.62,71.87,22.28,56.69,22.28z'/%3E%3C/g%3E%3C/svg%3E", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "corn.ver_1.csdev.testnet": { + "spec": "ft-1.0.0", + "name": "Cornerstone", + "symbol": "CORN", + "icon": "data:image/svg+xml,%3Csvg width='140' height='140' viewBox='0 0 140 140' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M17 39.685L43.0018 54.6965V85.8307L17 70.7955V39.685Z' fill='%2362AEFE'/%3E%3Cpath d='M17 70.7955L43.0018 85.8307V116.965L17 101.93V70.7955Z' fill='%235C65A5'/%3E%3Cpath d='M43.0017 54.6965L68.9799 69.7317V100.866L43.0017 85.8307V54.6965Z' fill='%23564788'/%3E%3Cpath d='M43.0017 85.8307L68.9799 100.866V132L43.0017 116.965V85.8307Z' fill='%2351328E'/%3E%3Cpath d='M120.983 69.6608L94.9817 84.6959V115.83L120.983 100.795V69.6608Z' fill='%232F2B48'/%3E%3Cpath d='M68.9797 100.866V132L94.9815 115.83L68.9797 100.866Z' fill='%2348297B'/%3E%3Cpath d='M94.9815 115.83L68.9797 100.871V69.6608L94.9815 84.6959V115.83Z' fill='%23494661'/%3E%3Cpath d='M17 39.6614L43.8512 24.3425L69.6642 39.2595L43.0018 54.6965L17 39.6614Z' fill='%23BF9AD2'/%3E%3Cpath d='M43.0017 54.6256L69.5744 39.2318L95.9478 54.2613L68.9799 69.6608L43.0017 54.6256Z' fill='%23D0B5E0'/%3E%3Cpath d='M43.8513 24.3425L70.7025 9L96.4651 24.0295L69.5746 39.2317L43.8513 24.3425Z' fill='%23A676BF'/%3E%3Cpath d='M69.5745 39.2317L96.465 24.0295L122.493 38.8812L95.8311 54.3183L69.5745 39.2317Z' fill='%236649A9'/%3E%3Cpath d='M94.9815 84.6959L68.9797 69.6608L95.8309 54.3183L120.983 69.6608L94.9815 84.6959Z' fill='%235C5A6F'/%3E%3C/svg%3E", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "tiptoken.testnet": { + "spec": "ft-1.0.0", + "name": "Tiptoken", + "symbol": "TT", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "tmp-contract2.kaiching.testnet": { + "spec": "ft-1.0.0", + "name": "Kai-Ching Token", + "symbol": "KAI-C", + "icon": "data:image/svg+xml,%3Csvg%20 viewBox='0 -20 100 100' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M13.9422 0.000976562H0V64.0001H13.9422V0.000976562Z' fill='black'/%3E%3Cpath d='M54.5806 0L34.8995 27.2691V0H21V63.9991H34.8995V32.9737L55.3392 63.9991H96.4446L70.1346 28.3679L95.8199 0H54.5806Z' fill='black'/%3E%3C/svg%3E", + "reference": null, + "reference_hash": null, + "decimals": 8 + }, + "sub1.nstable1.testnet": { + "spec": "ft-1.0.0", + "name": "trinh", + "symbol": "giang", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 9 + }, + "test3.duyhuongtest.testnet": { + "spec": "ft-1.0.0", + "name": "Meme Coin", + "symbol": "testNear", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 8 + }, + "elixir.thegame.testnet": { + "spec": "ft-1.0.0", + "name": "Game Elixir!!", + "symbol": "gELXR", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 2 + }, + "meme.duyhuongtest.testnet": { + "spec": "ft-1.0.0", + "name": "Music doge", + "symbol": "Mdoge", + "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAACCQAAAgkCAMAAABf8seIAAAACXBIWXMAAC4jAAAuIwF4pT92AAABsFBMVEUBEDcBEDcAAABGpUkIQFQKTFwLVGABCTQCHT8FL0rUv50KMx0oGlQBEDcCBzMBCDQBDzcBCTQBETggFAsBCzUBDTYBDjYCBjECCDMBDDUBCjQCBTABEzkBEjgBCjUCBzIBAi8BAi4BFToEJUQCCDIDDjYBDDYCBDAFJ0UDETgDEDcFKUYIQVUEFjsCBzEEGT0DHD4CCTI3Jm0HOFABEjkDHD9WR4MCFjsIQlUCAy8JQlYDFToJRFcCFzsDDTUBFDoJRVcIP1QKS1sIQFQIPFIJRlgDHkAIPlMCCjMJR1kKSVoBDjcGLEgEI0MEIkIJSFkBEDgCFzwCCzQBCDMEIEEGMEsIOlEDEzkHN08KTl0DFDkEGDwHNE0HNk4IO1EBFDkEHkAFIUIGKkcCGj0HMkwLUF4KT10GMEoEIUEKTVwCCDQGLkkGLUkLVGEKTFwBBzQFKEYHM0wEGz4CDDULUV8CDDQCGz4HOE8HNU4KSloEHT8LU2AIPVICBTEGL0oEGTwCGT0IPVMDIUILUl8HL0oKSlsCGTwHNU0HM00LVGACBjIGLkoLUmACCzMBAS4AAIGy0ANsAAAAkHRSTlOAQP//gICAgICA/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4A478nAAACzEUlEQVR42uzdPXIj5xWGUVU5cGaEjaoOwI4mQ97r4EKwAmyAgdbskcaWRA45IIj+uT/niW2l99T79YC//X5fU5Ge/mpO1rcVGtfu+rWGNL3c0Un39x9Je/Tv31oSARJSIGGABEGClAYJEyPURIIhYUskOPiMIBVEwlQqQwIkQAIkSFoICRMjQILXhiWQ4OBDglQMCVO5DAmbGmFkBEhgBKkoEiZGgARIgARIkCChgxAgARIgARIkPY6EiRH82wZG8EkCJEiQ0IYIhoTNkTBWNwIkQILUDAnTxAiGhB2XBEgQI0hRkTBNkGBIMCT4JAESJEho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", + "reference": null, + "reference_hash": null, + "decimals": 8 + }, + "wnear.qa.v1.nearlend.testnet": { + "spec": "ft-1.0.0", + "name": "Wrapped Near", + "symbol": "WNEAR", + "icon": "data:image/svg+xml,%3Csvg viewBox='0 0 40 41' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M20 40.3967C31.0457 40.3967 40 31.4424 40 20.3967C40 9.35103 31.0457 0.396729 20 0.396729C8.9543 0.396729 0 9.35103 0 20.3967C0 31.4424 8.9543 40.3967 20 40.3967ZM9.94128 26.8949C10.8013 27.6658 11.8831 27.8967 12.92 27.8967C14.0181 27.8967 15.0686 27.635 15.7432 27.467L15.7518 27.4648C15.8896 27.4288 16.0125 27.3988 16.1084 27.3778C18.6046 26.829 21.1098 26.805 23.5551 27.2939C23.6803 27.3172 23.8337 27.3575 24.01 27.4037L24.0256 27.4078L24.0427 27.4121C25.4456 27.7647 28.3397 28.4921 30.2856 26.652C31.0407 25.9442 31.5442 24.9274 31.703 23.7996L31.7042 23.791C31.9467 22.0799 32.2474 19.9585 31.658 17.0091C31.5352 16.3792 31.0677 15.0625 30.3485 14.2287C29.1828 12.87 27.2919 12.5521 24.7238 13.2689L24.6369 13.2929C21.859 14.0578 19.0451 14.1357 16.2762 13.5239L16.0395 13.4699L16.0332 13.4684C15.1327 13.2611 13.4619 12.8765 11.973 13.086C10.6275 13.2779 9.43185 14.1627 8.77558 15.4614C8.52686 15.9503 8.40699 16.4452 8.33208 16.8231C7.90056 18.9827 7.88857 21.5411 8.30211 23.8506C8.52086 25.0653 9.10221 26.1481 9.94128 26.8949ZM12.4165 16.2383C12.5723 16.2173 12.7372 16.2083 12.908 16.2083C13.75 16.2083 14.7509 16.4362 15.3263 16.5772L15.59 16.6402C18.8683 17.363 22.1916 17.2731 25.4729 16.3702L25.5808 16.3433C27.3159 15.8514 27.8103 16.1543 27.9422 16.3073C28.1999 16.6042 28.4936 17.36 28.5475 17.639C29.033 20.0624 28.7842 21.8141 28.5625 23.3587C28.5056 23.7726 28.3407 24.1326 28.11 24.3515C27.4265 24.997 25.7497 24.5746 24.8276 24.3423L24.8047 24.3365C24.559 24.2735 24.3462 24.2225 24.1754 24.1865C21.3016 23.6077 18.3589 23.6437 15.4341 24.2795C15.3141 24.3059 15.1654 24.3437 14.9937 24.3874L14.9817 24.3905L14.9487 24.3986C14.3211 24.5535 12.5601 24.9881 12.0479 24.5315C11.7393 24.2585 11.5115 23.8086 11.4216 23.2987C11.083 21.4001 11.089 19.2136 11.4426 17.459C11.4756 17.291 11.5295 17.0541 11.6044 16.9041C11.7902 16.5322 12.0959 16.2833 12.4165 16.2383Z' fill='%2386EC8A'/%3E%3C/svg%3E", + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "eth.fakes.testnet": { + "spec": "ft-1.0.0", + "name": "Ether", + "symbol": "ETH", + "icon": "data:image/png;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + } + } \ No newline at end of file diff --git a/src/chains/near/near_tokens.json b/src/chains/near/near_tokens.json new file mode 100644 index 0000000000..1b5625034e --- /dev/null +++ b/src/chains/near/near_tokens.json @@ -0,0 +1,2018 @@ +{ + "1ab43204a195a0fd37edec621482afd3792ef90b.factory.bridge.near": { + "spec": "ft-1.0.0", + "name": "Aurigami Token", + "symbol": "PLY", + "icon": "data:image/svg+xml,%3Csvg id='Layer_1' data-name='Layer 1' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1473.23 1500'%3E%3Cdefs%3E%3Cstyle%3E.cls-1%7Bfill:%2322bf5a;%7D.cls-2%7Bfill:%238cdea6;%7D%3C/style%3E%3C/defs%3E%3Cpath class='cls-1' d='M36.89,883.14,1435.12,3.9c19.28-12.13,43.36,5.95,37.1,27.85L1057.6,1482a24.84,24.84,0,0,1-36.35,14.65l-983.6-571A24.84,24.84,0,0,1,36.89,883.14Z'/%3E%3Cpath class='cls-2' d='M8.83,887.27c14.74,6.42,28.06-4.13,28.06-4.13l480-301.85L318.16,199.39c-9.81-18.84-37.21-17.47-45.09,2.25L4.2,874.22S.69,883.73,8.83,887.27Z'/%3E%3Cpath class='cls-1' d='M516.93,581.29l-480,301.85s-13.32,10.55-28.06,4.13c-8.14-3.54-4.63-13-4.63-13l-2.42,6.06A24.83,24.83,0,0,0,12.37,911l968.89,562.43Z'/%3E%3C/svg%3E", + "reference": "", + "reference_hash": "", + "decimals": 18 + }, + "ft.metafoxonry.near": { + "spec": "ft-1.0.0", + "name": "MFOX", + "symbol": "MFOX", + "icon": "data:image/png;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "501ace9c35e60f03a2af4d484f49f9b1efde9f40.factory.bridge.near": { + "spec": "ft-1.0.0", + "name": "solace", + "symbol": "SOLACE", + "icon": "data:image/svg+xml,%3Csvg width='55' height='55' viewBox='0 0 55 55' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cmask id='mask0_47_131' style='mask-type:alpha' maskUnits='userSpaceOnUse' x='0' y='0' width='55' height='55'%3E%3Cpath d='M25.1677 23.3374C24.3684 22.8235 23.9687 22.1727 23.9687 21.3848C23.9687 20.5285 24.3018 19.8605 24.9679 19.3809C25.6672 18.9014 26.5498 18.6616 27.6155 18.6616C29.7398 18.6616 31.2379 19.4958 32.11 21.1642C32.2268 21.3876 32.4981 21.4827 32.7135 21.3586L36.502 19.1748C36.6997 19.0608 36.7735 18.805 36.6592 18.6039C35.8049 17.1011 34.622 15.9214 33.1107 15.0648C31.5121 14.1057 29.6804 13.6261 27.6155 13.6261C25.0178 13.6261 22.8364 14.3455 21.0713 15.7842C19.3394 17.2229 18.4735 19.124 18.4735 21.4876C18.4402 22.755 18.6734 23.8683 19.1729 24.8274C19.7058 25.7866 20.4551 26.5573 21.421 27.1396C22.4201 27.722 23.3193 28.1673 24.1186 28.4756C24.9512 28.7839 25.967 29.0922 27.1659 29.4005C30.3298 30.1883 31.9118 31.2845 31.9118 32.6889C31.9118 34.6072 30.4964 35.5663 27.6655 35.5663C24.996 35.5663 23.2088 34.495 22.3041 32.3525C22.1996 32.1048 21.9091 31.993 21.6819 32.1286L17.7959 34.4494C17.6126 34.5589 17.5374 34.7925 17.6294 34.9887C18.4353 36.7073 19.6659 38.0645 21.321 39.0603C23.0862 40.1222 25.201 40.6532 27.6655 40.6532C30.4297 40.6532 32.7444 39.9509 34.6094 38.5465C36.4745 37.142 37.407 35.2066 37.407 32.7403C37.4403 31.4386 37.1905 30.3082 36.6576 29.3491C36.1581 28.3557 35.4254 27.5678 34.4596 26.9855C33.4937 26.3689 32.5779 25.9065 31.712 25.5982C30.846 25.2899 29.8303 24.9987 28.6646 24.7247C27.1326 24.2794 25.967 23.8169 25.1677 23.3374Z' fill='%23111111'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M27.5 0C12.3122 0 0 12.3122 0 27.5C0 42.6878 12.3122 55 27.5 55C42.6878 55 55 42.6878 55 27.5C55 12.3122 42.6878 0 27.5 0ZM5.45045 27.5C5.45045 15.3224 15.3224 5.45045 27.5 5.45045C39.6776 5.45045 49.5495 15.3224 49.5495 27.5C49.5495 39.6776 39.6776 49.5495 27.5 49.5495C15.3224 49.5495 5.45045 39.6776 5.45045 27.5Z' fill='%23111111'/%3E%3C/mask%3E%3Cg mask='url(%23mask0_47_131)'%3E%3Cpath d='M58.1026 69.8338C48.2962 136.902 14.9557 178.376 -16.3655 162.468C-47.6867 146.56 -65.1279 79.294 -55.3214 12.2257C-45.515 -54.8426 -12.1745 -96.3162 19.1467 -80.4082C50.4679 -64.5001 67.909 2.76547 58.1026 69.8338Z' fill='url(%23paint0_radial_47_131)'/%3E%3Cpath d='M91.5924 40.6669C86.3735 90.8052 68.7127 126.71 52.1459 120.862C35.579 115.015 26.3797 69.6293 31.5986 19.491C36.8175 -30.6472 54.4783 -66.5519 71.0451 -60.7043C87.6119 -54.8568 96.8112 -9.47132 91.5924 40.6669Z' fill='url(%23paint1_radial_47_131)'/%3E%3Cpath d='M44.2379 38.3184C48.3714 59.496 40.8507 84.6778 27.44 94.5636C14.0293 104.449 -0.193113 95.2955 -4.32657 74.1178C-8.46003 52.9402 -0.939323 27.7584 12.4714 17.8727C25.8821 7.98693 40.1045 17.1408 44.2379 38.3184Z' fill='url(%23paint2_radial_47_131)'/%3E%3Cpath d='M25.1294 31.7514C5.9949 29.0394 -8.77222 10.8288 -7.85386 -8.92291C-6.93549 -28.6747 9.32058 -42.488 28.4551 -39.7759C47.5896 -37.0638 62.3567 -18.8533 61.4384 0.898438C60.52 20.6502 44.2639 34.4635 25.1294 31.7514Z' fill='url(%23paint3_radial_47_131)'/%3E%3C/g%3E%3Cdefs%3E%3CradialGradient id='paint0_radial_47_131' cx='0' cy='0' r='1' gradientUnits='userSpaceOnUse' gradientTransform='translate(1.39059 41.0297) rotate(98.3186) scale(122.729 60.2826)'%3E%3Cstop stop-color='%23F04D42'/%3E%3Cstop offset='1' stop-color='%23F04D42' stop-opacity='0'/%3E%3C/radialGradient%3E%3CradialGradient id='paint1_radial_47_131' cx='0' cy='0' r='1' gradientUnits='userSpaceOnUse' gradientTransform='translate(61.5955 30.0789) rotate(95.9425) scale(91.2738 30.9319)'%3E%3Cstop stop-color='%235F5DF9'/%3E%3Cstop offset='1' stop-color='%235F5DF9' stop-opacity='0'/%3E%3C/radialGradient%3E%3CradialGradient id='paint2_radial_47_131' cx='0' cy='0' r='1' gradientUnits='userSpaceOnUse' gradientTransform='translate(19.9557 56.2182) rotate(78.9558) scale(39.069 27.2615)'%3E%3Cstop stop-color='%23F3D37E'/%3E%3Cstop offset='1' stop-color='%23F3D37E' stop-opacity='0'/%3E%3C/radialGradient%3E%3CradialGradient id='paint3_radial_47_131' cx='0' cy='0' r='1' gradientUnits='userSpaceOnUse' gradientTransform='translate(26.7923 -4.01222) rotate(-171.933) scale(34.9924 35.6431)'%3E%3Cstop stop-color='%23D478D8'/%3E%3Cstop offset='1' stop-color='%23D478D8' stop-opacity='0'/%3E%3C/radialGradient%3E%3C/defs%3E%3C/svg%3E%0A", + "reference": "", + "reference_hash": "", + "decimals": 18 + }, + "neardog.tkn.near": { + "spec": "ft-1.0.0", + "name": "NEARDOG", + "symbol": "NEARDOG", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "hbsc.tkn.near": { + "spec": "ft-1.0.0", + "name": "HIBISCUS COIN", + "symbol": "HBSC", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "whales.tkn.near": { + "spec": "ft-1.0.0", + "name": "NEAR WHALES", + "symbol": "WHALES", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 4 + }, + "4691937a7508860f876c9c0a2a617e7d9e945d4b.factory.bridge.near": { + "spec": "ft-1.0.0", + "name": "Wootrade Network", + "symbol": "WOO", + "icon": "data:image/svg+xml,%3Csvg width='125' height='83' viewBox='0 0 125 83' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M102.422 0H122.958L113.203 30.9433H92.9243L102.422 0ZM75.982 29.4048L86.0788 53.3388L89.8436 41.0299H109.951L98.5713 78.0422C97.6301 80.9485 94.9776 82.9145 91.8972 82.9145H80.4314C77.6078 82.9145 75.0408 81.2049 73.9285 78.5551L61.2648 47.8682L48.8578 78.5551C47.831 81.2904 45.2641 83 42.3549 83H30.718C27.6376 83 24.9851 80.9485 24.0439 78.0422L0 5.85842e-05H20.1934L36.2797 53.3388L46.8898 29.3193C49.2857 23.3358 55.0185 19.4038 61.4359 19.4038C67.8533 19.4038 73.6718 23.3358 75.982 29.4048Z' fill='%2320252F'/%3E%3C/svg%3E", + "reference": "", + "reference_hash": "", + "decimals": 18 + }, + "52a047ee205701895ee06a375492490ec9c597ce.factory.bridge.near": { + "spec": "ft-1.0.0", + "name": "Pulse", + "symbol": "PULSE", + "icon": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGNpcmNsZSBjeD0iMTYiIGN5PSIxNiIgcj0iMTYiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNi41NTAzNSAxOS4xMjM5TDkuMTcxNjYgMTQuOTQ5MkM5LjMyNzMxIDE0LjcwMTMgOS41OTk0OCAxNC41NTA4IDkuODkyMiAxNC41NTA4SDE4LjQxNEMxOS41NDEyIDE0LjU1MDggMjAuNTYxNCAxMy44ODM2IDIxLjAxMzMgMTIuODUwOUMyMS4zNjQ3IDEyLjA0NzYgMjAuNzc2MSAxMS4xNDc3IDE5Ljg5OTMgMTEuMTQ3N0gxMS45NzQyTDExLjU0ODggMTEuMjU0TDEzLjY0NjEgNy40NDA3OEMxMy43OTU2IDcuMTY4OTEgMTQuMDgxMyA3IDE0LjM5MTUgN0gyMi4wNzU0QzI1LjA1NDMgNyAyNy4xMTA3IDkuOTgyNzkgMjYuMDUxMyAxMi43NjdMMjUuODYzMSAxMy4yNjEzQzI0LjU0NDQgMTYuNzI2OSAyMS4yMjE4IDE5LjAxNzYgMTcuNTEzOCAxOS4wMTc2SDYuOTc1NzVMNi41NTAzNSAxOS4xMjM5Wk04LjM2ODg0IDE5Ljk3NDdDNy4wNTA0MiAxOS45NzQ3IDUuODM2NTUgMjAuNjkyNSA1LjIwMTE4IDIxLjg0NzdDNC42MTIyMyAyMi45MTg1IDUuMzg2OTQgMjQuMjI4NyA2LjYwOTAzIDI0LjIyODdIMTAuODA0NEwxMy40NjMxIDE5Ljg2ODRMMTMuMTQ0MSAxOS45NzQ3SDguMzY4ODRaIiBmaWxsPSJ1cmwoI3BhaW50MF9saW5lYXJfMjBfMykiLz4KPGRlZnM+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhcl8yMF8zIiB4MT0iMTguMDI2NiIgeTE9IjUuNTI5MjYiIHgyPSIyLjI2ODYxIiB5Mj0iMzAuMTExNyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBzdG9wLWNvbG9yPSIjREQ1OUZGIi8+CjxzdG9wIG9mZnNldD0iMC40NzM5NTgiIHN0b3AtY29sb3I9IiM1MDY5RkYiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMDAyNUZGIi8+CjwvbGluZWFyR3JhZGllbnQ+CjwvZGVmcz4KPC9zdmc+Cg==", + "reference": "", + "reference_hash": "", + "decimals": 18 + }, + "ust.token.a11bd.near": { + "spec": "ft-1.0.0", + "name": "TerraUSD", + "symbol": "UST", + "icon": "data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjEwMCIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHdpZHRoPSIxMDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0ibTgxLjA5NiAxMy43MjItLjAxLS4wMS4wMTQtLjAwOGE0NC4xNzQgNDQuMTc0IDAgMCAwIC0yOC43NjUtMTAuNTc0IDQ0LjE2NyA0NC4xNjcgMCAwIDAgLTE4LjAxIDMuODI1Yy0zLjcwNSAxLjU2NS02LjcxNSAzLjYzNS05LjE5NSA2Ljg4NS0xMi43NCAxNi44MyAyOS45NiAyOS4wNiA1Mi43OSAyOS4xMDQgMTAuNDkyIDcuNTI4IDEzLjQ0Ni0yMS4yMzYgMy4xNzctMjkuMjIyeiIgZmlsbD0iIzBkM2NhNCIvPjxwYXRoIGQ9Im0zNi44OTMgMTQuMDYzYy01Ljg2MyA4LjgxNi0yNS40MDMgMTUuMDI3LTI4LjYxNSAxNC4wNTdsLS4wMTktLjA0Yy4xMzItLjI2OC4yNjgtLjUzMi40LS43OTVhNDYuNjcyIDQ2LjY3MiAwIDAgMSA4LjQ4LTExLjU4IDQ3LjIxIDQ3LjIxIDAgMCAxIDkuMTg1LTcuMTUxYzIuNzM3LTEuNTg0IDUuNTM2LTEuNjg4IDYuNDU4LTEuNzIgOC43MDguMTc3IDQuMTYgNy4xNiA0LjExIDcuMjI5em0tNC44MDYgNjIuMzAzYy40MTggMi43NzItLjAwOSAxMy43MTMtLjU4IDE0LjYzNC0uNDg2LjAzMi0xLjUwMy4wOTUtNC40NDgtMS41NTdhNDYuODI3IDQ2LjgyNyAwIDAgMSAtOS45Mi03LjU3MyA0Ni45NTIgNDYuOTUyIDAgMCAxIC04LjQ4LTExLjU4IDQ2LjUyNCA0Ni41MjQgMCAwIDEgLTUuMjIzLTIxLjVjMC0yLjU4MS4yMDgtNS4xMTguNjEyLTcuNTg3YTQ2LjUxMSA0Ni41MTEgMCAwIDEgMi4yNjUtOC41OThjMy4zNzYgNC40ODMgNy4yNzggOC41NDQgMTAuNTk1IDEzLjA3MyAzLjE1OSA0LjMxNSA3LjUwNiAxMS4zNDQgOC4zODYgMTIuODUgNS41IDkuMzE2IDYuMzc2IDE1LjA3NCA2Ljc5MyAxNy44Mzh6bS0zLjMxMi0zOC44NTdjLTIuMDA2LTE1LjMxIDI5LjA1NS0yNS45NzkgNDIuNzA1LTI2LjM4MiAxLjYzOC4wMTggNi42MTYuMDc3IDkuNTI1IDIuNDM2IDUzLjQ5NSA1MC45MzctNDYuOTU3IDY0LjI0LTUyLjIzIDIzLjk0N3oiIGZpbGw9IiM1NDk0ZjgiLz48cGF0aCBkPSJtMjAuNDU3IDkyLjM1YzAgMS44MjUgMS4yNyAzLjMwNCAyLjg0NSAzLjMxMyAzNy40OTYuMjU5IDczLjY5NC0xLjQ2IDczLjY5NC03LjA4MyAwLTE3LjAwNy03Ni41MzkgMy43Ny03Ni41MzkgMy43N3oiIGZpbGw9IiM3NjAxMDEiLz48cGF0aCBkPSJtMjMuMzIgNDQuMTg3YTIuODYzIDIuODYzIDAgMCAwIC0yLjg2MyAyLjg2M3Y0NS4zYzAgMS41NzQgMS4yNyAyLjg1IDIuODQ1IDIuODU4IDM3LjQ5Ni0uMjc2IDczLjc0LTEyLjY4NyA3My42OTQtNi42M3YtNTEuMDI0Yy4wNDUtNi4wNTMtMzYuMTg5IDYuMzUzLTczLjY3NiA2LjYzNHoiIGZpbGw9IiNkZTMwMzAiLz48cGF0aCBkPSJtODQgODBjOC44LTEuNiAxMi4zMzMtLjMzMyAxMyAuNXYzLjVjLTEuNi0xLjYtOS4zMzMtLjY2Ny0xMyAwLTIwLjUgNC41LTQ3LjgzMyA2LjMzMy02My41IDcuNXYtNGMxMS41IDAgNTIuNS01LjUgNjMuNS03LjV6bTAtOC4yMzJjOC44LTEuNiAxMi4zMzMtLjMzMyAxMyAuNXYzLjVjLTEuNi0xLjYtOS4zMzMtLjY2Ny0xMyAwLTIwLjUgNC41LTQ3LjgzMyA2LjMzMy02My41IDcuNXYtNGMxNC41IDEgNTIuNS01LjUgNjMuNS03LjV6bTAtOC4yMzJjOC44LTEuNiAxMi4zMzMtLjMzNCAxMyAuNXYzLjVjLTEuNi0xLjYtOS4zMzMtLjY2OC0xMyAwLTIwLjUgNC41LTQ3LjgzMyA2LjMzMi02My41IDcuNXYtNGMxNC41IDEgNTIuNS01LjUgNjMuNS03LjV6bTAtOC4yMzNjOC44LTEuNiAxMi4zMzMtLjMzMyAxMyAuNXYzLjVjLTEuNi0xLjYtOS4zMzMtLjY2Ny0xMyAwLTIwLjUgNC41LTQ3LjgzMyA2LjMzMy02My41IDcuNXYtNGMxNC41IDEgNTIuNS01LjUgNjMuNS03LjV6bTAtOC4yMzNjOC44LTEuNiAxMi4zMzMtLjMzMyAxMyAuNXYzLjVjLTEuNi0xLjYtOS4zMzMtLjY2Ni0xMyAwLTIwLjUgNC41LTQ3LjgzMyA2LjMzNC02My41IDcuNXYtNGMxNC41IDEgNTIuNS01LjUgNjMuNS03LjV6bTAtOC4yMzJjOC44LTEuNiAxMi4zMzMtLjMzMyAxMyAuNXYzLjVjLTEuNi0xLjYtOS4zMzMtLjY2Ny0xMyAwLTIwLjUgNC41LTQ3LjgzMyA2LjMzMy02My41IDcuNXYtNGMxNC41IDEgNTIuNS01LjUgNjMuNS03LjV6IiBmaWxsPSIjZmZmIi8+PHBhdGggZD0ibTI4LjU5MyA3MS41NGEyMDQuMTEyIDIwNC4xMTIgMCAwIDAgNy4wNjYtLjM3NiAyNTEuNzQ1IDI1MS43NDUgMCAwIDAgNi43MDYtLjU3MmMxLjEzLS4xMDkgMi4yNy0uMjIyIDMuNDQ1LS4zNSAxLjE3LS4xMjYgMi4zNjgtLjI1OCAzLjYxMi0uNDEyIDEuMjQzLS4xNSAyLjUzNi0uMzEzIDMuODg5LS40OSAxLjM1Mi0uMTczIDIuNzYzLS4zNzIgNC4yMzgtLjU5di0yNy41M2MtMTAuNTMyIDEuNTU2LTIyLjMxNyAyLjg3Mi0zNC4yMjkgMi45NThhMi44NjMgMi44NjMgMCAwIDAgLTIuODYzIDIuODY0djI0LjY1M2MxLjQ4NCAwIDIuODk1LS4wMTggNC4yNDctLjA1IDEuMzUzLS4wMTggMi42NDYtLjA2IDMuODktLjEwNXoiIGZpbGw9IiMxYTNhYjkiLz48cGF0aCBkPSJtMjMuMDUzIDQ2LjQ4IDEuMjIxIDEuODYzLTIuMjIzLjEyNiAxLjAwMi0xLjk4OHptNS4xMzUtLjI5IDEuMjIgMS44NjItMi4yMjIuMTI2em01LjEzNS0uMjkyIDEuMjIgMS44NjItMi4yMjMuMTI2em01LjEzNS0uMjkxIDEuMjIgMS44NjItMi4yMjMuMTI2em01LjEzNC0uMjkyIDEuMjIxIDEuODYyLTIuMjIzLjEyNnptNS4xMzUtLjI5MSAxLjIyMSAxLjg2Mi0yLjIyMy4xMjZ6bTUuMTMzLS4yOTIgMS4yMiAxLjg2Mi0yLjIyMi4xMjZ6bS0yOC4wNDcgNS4wMjYgMS4yMiAxLjg2Mi0yLjIyMi4xMjd6bTUuMTM1LS4yOTEgMS4yMiAxLjg2My0yLjIyMy4xMjZ6bTUuMTM1LS4yOTIgMS4yMiAxLjg2My0yLjIyMy4xMjZ6bTUuMTM0LS4yOTEgMS4yMjEgMS44NjItMi4yMjMuMTI3em01LjEzNS0uMjkyIDEuMjIxIDEuODYzLTIuMjIzLjEyNnptNS4xMzUtLjI5MSAxLjIyIDEuODYyLTIuMjIzLjEyN3ptLTI4LjA0NyA1LjAyNiAxLjIyIDEuODYyLTIuMjIzLjEyNnptNS4xMzUtLjI5MiAxLjIyIDEuODYzLTIuMjIzLjEyNnptNS4xMzUtLjI5MiAxLjIyIDEuODYzLTIuMjIzLjEyNiAxLjAwMi0xLjk4OXptNS4xMzQtLjI5IDEuMjIxIDEuODYyLTIuMjIzLjEyNiAxLjAwMi0xLjk4OXptNS4xMzUtLjI5MyAxLjIyIDEuODYzLTIuMjIyLjEyNnptNS4xMzUtLjI5IDEuMjIgMS44NjItMi4yMjMuMTI2em01LjEzMi0uMjkyIDEuMjIxIDEuODYyLTIuMjIzLjEyNiAxLjAwMi0xLjk4OXptLTI4LjA0MiA1LjAyNiAxLjIyIDEuODYyLTIuMjIzLjEyNyAxLjAwMy0xLjk5em01LjEzNC0uMjkxIDEuMjIxIDEuODYyLTIuMjIzLjEyNnptNS4xMzUtLjI5MyAxLjIyMSAxLjg2My0yLjIyMy4xMjd6bTUuMTM1LS4yOSAxLjIyIDEuODYyLTIuMjIzLjEyNnptNS4xMzUtLjI5MiAxLjIyIDEuODYyLTIuMjIzLjEyNnptNS4xMzQtLjI5MSAxLjIyMSAxLjg2Mi0yLjIyMy4xMjZ6bS0yOC4wNDggNS4wMjYgMS4yMiAxLjg2My0yLjIyMy4xMjZ6bTUuMTM0LS4yOTEgMS4yMjEgMS44NjMtMi4yMjMuMTI2em01LjEzNS0uMjkyIDEuMjIxIDEuODYzLTIuMjIzLjEyNnptNS4xMzUtLjI5IDEuMjIgMS44NjItMi4yMjMuMTI2IDEuMDAzLTEuOTg5em01LjEzNS0uMjkzIDEuMjIgMS44NjMtMi4yMjMuMTI2em01LjEzNC0uMjkxIDEuMjIxIDEuODYyLTIuMjIzLjEyN3ptNS4xMzMtLjI5MiAxLjIyMSAxLjg2My0yLjIyMy4xMjZ6bS0zMC42NTUgOS4wNDEgMS4yMjIgMS44NjMtMi4yMjMuMTI2IDEuMDAyLTEuOTg5em01LjEzNi0uMjkxIDEuMjIgMS44NjMtMi4yMjMuMTI2em01LjEzNC0uMjkyIDEuMjIxIDEuODYzLTIuMjIzLjEyNnptNS4xMzUtLjI5MSAxLjIyMSAxLjg2My0yLjIyMy4xMjZ6bTUuMTM1LS4yOTEgMS4yMjEgMS44NjItMi4yMjMuMTI2IDEuMDAyLTEuOTg5em01LjEzNS0uMjkyIDEuMjIgMS44NjMtMi4yMjMuMTI2em01LjEzMy0uMjkyIDEuMjIgMS44NjMtMi4yMjMuMTI2em0tMjguMTk2LTIuMjY2IDEuMjIxIDEuODYzLTIuMjIzLjEyNiAxLjAwMi0xLjk4OHptNS4xMzUtLjI5IDEuMjIxIDEuODYyLTIuMjIzLjEyNnptNS4xMzUtLjI5MiAxLjIyIDEuODYyLTIuMjIzLjEyNnptNS4xMzQtLjI5MSAxLjIyMSAxLjg2Mi0yLjIyMy4xMjZ6bTUuMTM1LS4yOTIgMS4yMjEgMS44NjItMi4yMjMuMTI2em01LjEzNS0uMjkyIDEuMjIxIDEuODYzLTIuMjIzLjEyNnoiIGZpbGw9IiNmZmYiLz48L3N2Zz4=", + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "deip-token.near": { + "spec": "ft-1.0.0", + "name": "DEIP Token", + "symbol": "DEIP", + "icon": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDUiIGhlaWdodD0iNDUiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHJlY3QgeD0iLjg5MiIgeT0iLjkxIiB3aWR0aD0iNDMuMTYxIiBoZWlnaHQ9IjQzLjE2MSIgcng9IjIxLjU4MSIgZmlsbD0iI0Y4RkVGQSIvPjxwYXRoIGQ9Ik05LjcgMTAuNmgxNC41MzRjNi41NjcgMCAxMS44OTIgNS4zMjMgMTEuODkyIDExLjg5IDAgNi41NjgtNS4zMjQgMTEuODkyLTExLjg5MiAxMS44OTJIOS43VjEwLjZaIiBmaWxsPSJ1cmwoI2EpIi8+PGNpcmNsZSBjeD0iMjIuNDczIiBjeT0iMjIuNDkxIiByPSI0Ljg0NSIgZmlsbD0iIzAwMCIvPjxkZWZzPjxyYWRpYWxHcmFkaWVudCBpZD0iYSIgY3g9IjAiIGN5PSIwIiByPSIxIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCguMjE2IDExLjY5NTUgLTExLjkyNjc3IC4yMjAyOCAyMi42OTcgMjIuNjg3KSI+PHN0b3Agb2Zmc2V0PSIuMzU5IiBzdG9wLWNvbG9yPSIjRTlGRjAwIi8+PHN0b3Agb2Zmc2V0PSIuNzYiIHN0b3AtY29sb3I9IiMyNjM4MDAiLz48c3RvcCBvZmZzZXQ9IjEiLz48L3JhZGlhbEdyYWRpZW50PjwvZGVmcz48L3N2Zz4=", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "panda.tkn.near": { + "spec": "ft-1.0.0", + "name": "Panda Token", + "symbol": "PANDA", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "magic.tkn.near": { + "spec": "ft-1.0.0", + "name": "Magic Token", + "symbol": "MAGIC", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "token.skyward.near": { + "spec": "ft-1.0.0", + "name": "Skyward Finance Token", + "symbol": "SKYWARD", + "icon": "data:image/png;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "ruct.tkn.near": { + "spec": "ft-1.0.0", + "name": "RUCT", + "symbol": "RUCT", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "2260fac5e5542a773aa44fbcfedf7c193bc2c599.factory.bridge.near": { + "spec": "ft-1.0.0", + "name": "Wrapped BTC", + "symbol": "WBTC", + "icon": "data:image/svg+xml,%3Csvg width='32' height='32' viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none'%3E%3Ccircle fill='%23201A2D' cx='16' cy='16' r='16'/%3E%3Cg fill='%23FFF'%3E%3Cpath d='M22.818 9.586l-.6.6a8.494 8.494 0 010 11.464l.6.6a9.352 9.352 0 000-12.678v.014zM10.2 9.638a8.494 8.494 0 0111.464 0l.6-.6a9.352 9.352 0 00-12.678 0l.614.6zm-.562 12.018a8.494 8.494 0 010-11.458l-.6-.6a9.352 9.352 0 000 12.678l.6-.62zm12.018.554a8.494 8.494 0 01-11.464 0l-.6.6a9.352 9.352 0 0012.678 0l-.614-.6zm-1.942-8.286c-.12-1.252-1.2-1.672-2.566-1.8V10.4h-1.056v1.692h-.844V10.4H14.2v1.736h-2.142v1.13s.78-.014.768 0a.546.546 0 01.6.464v4.752a.37.37 0 01-.128.258.366.366 0 01-.272.092c.014.012-.768 0-.768 0l-.2 1.262h2.122v1.764h1.056V20.12h.844v1.73h1.058v-1.744c1.784-.108 3.028-.548 3.184-2.218.126-1.344-.506-1.944-1.516-2.186.614-.302.994-.862.908-1.778zm-1.48 3.756c0 1.312-2.248 1.162-2.964 1.162v-2.328c.716.002 2.964-.204 2.964 1.166zm-.49-3.28c0 1.2-1.876 1.054-2.472 1.054v-2.116c.596 0 2.472-.188 2.472 1.062z'/%3E%3Cpath d='M15.924 26.852C9.89 26.851 5 21.959 5 15.925 5 9.892 9.892 5 15.925 5c6.034 0 10.926 4.89 10.927 10.924a10.926 10.926 0 01-10.928 10.928zm0-21c-5.559.004-10.062 4.513-10.06 10.072.002 5.559 4.51 10.064 10.068 10.064 5.559 0 10.066-4.505 10.068-10.064A10.068 10.068 0 0015.924 5.852z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E", + "reference": "", + "reference_hash": "", + "decimals": 8 + }, + "dbio.near": { + "spec": "ft-1.0.0", + "name": "Debio", + "symbol": "DBIO", + "icon": "data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIxOTAgOTcgNDIwIDQyMCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgODAwIDgwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZGVmcz48c3R5bGU+LnN0MHtmaWxsOiMzNjM2MzZ9LnN0M3tmaWxsOiNmZjU2ZTB9PC9zdHlsZT48L2RlZnM+PGNpcmNsZSBjbGFzcz0ic3QzIiBjeD0iNDAwIiBjeT0iMzA3LjM5IiByPSIyMDguNTgiLz48cGF0aCBkPSJNNDczLjk5IDIxMS4zczIuMzQgNTYuMjUtNzcuMzQgOTguNDMtNzAuMzEgOTMuNzQtNzAuMzEgOTMuNzQiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiNlNmU2ZTY7c3Ryb2tlLXdpZHRoOjM3LjQ5NzU7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MTAiLz48cGF0aCBkPSJNMzI2LjAxIDIxMS4zcy0yLjM0IDU2LjI1IDc3LjM0IDk4LjQzIDcwLjMxIDkzLjc0IDcwLjMxIDkzLjc0IiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojZmZmO3N0cm9rZS13aWR0aDozNy40OTc1O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjEwIi8+PGNpcmNsZSBjbGFzcz0ic3QwIiBjeD0iNDAwIiBjeT0iMjE2LjQyIiByPSIyMC40OSIvPjxjaXJjbGUgY2xhc3M9InN0MCIgY3g9IjQwMCIgY3k9IjM5OC4zNiIgcj0iMjAuNDkiLz48dGV4dCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyMzYuMzQyIDY1OC4wNzUpIiBjbGFzcz0ic3QzIiBzdHlsZT0id2hpdGUtc3BhY2U6cHJlO2ZvbnQtc2l6ZToxMTIuNDkyNXB4O2ZvbnQtZmFtaWx5OidBcnRlZ3JhU2Fucy1TZW1pQm9sZCciPkRlQmlvPC90ZXh0Pjwvc3ZnPg==", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "cointiva.tamada.near": { + "spec": "ft-1.0.0", + "name": "Cointiva", + "symbol": "CTNEAR", + "icon": "data:image/svg+xml;base64, PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCINCgkgdmlld0JveD0iMCAwIDI5MS43NjQgMjkxLjc2NCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMjkxLjc2NCAyOTEuNzY0OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8Zz4NCgk8cGF0aCBzdHlsZT0iZmlsbDojRUZDNzVFOyIgZD0iTTE0NS44ODIsMGM4MC41NzMsMCwxNDUuODgyLDY1LjMxOSwxNDUuODgyLDE0NS44ODJzLTY1LjMxLDE0NS44ODItMTQ1Ljg4MiwxNDUuODgyDQoJCVMwLDIyNi40NDYsMCwxNDUuODgyUzY1LjMxLDAsMTQ1Ljg4MiwweiIvPg0KCTxwYXRoIHN0eWxlPSJmaWxsOiNDQzk5MzM7IiBkPSJNMTQ1Ljg4MiwyNy4zNTNjLTY1LjQ2NSwwLTExOC41MjksNTMuMDY1LTExOC41MjksMTE4LjUyOXM1My4wNjUsMTE4LjUyOSwxMTguNTI5LDExOC41MjkNCgkJczExOC41MjktNTMuMDY1LDExOC41MjktMTE4LjUyOVMyMTEuMzQ3LDI3LjM1MywxNDUuODgyLDI3LjM1M3ogTTE0NS44ODIsMjQ2LjE3NmMtNTUuMzksMC0xMDAuMjk0LTQ0LjkwNC0xMDAuMjk0LTEwMC4yOTQNCgkJUzkwLjQ5Myw0NS41ODgsMTQ1Ljg4Miw0NS41ODhzMTAwLjI5NCw0NC45MDQsMTAwLjI5NCwxMDAuMjk0UzIwMS4yODEsMjQ2LjE3NiwxNDUuODgyLDI0Ni4xNzZ6IE0xNTguMDA5LDEzOC4yNjkNCgkJYy01LjQ1Mi0yLjI4OS0yNS40OTMtNS40NTItMjUuNDkzLTE0LjIxNGMwLTYuNDY0LDcuNDk1LTguMzM0LDExLjk5LTguMzM0YzQuMDk0LDAsOC45OTksMS4yOTUsMTEuNTg5LDMuODc1DQoJCWMxLjY0MSwxLjU3NywyLjMxNiwyLjcyNiwyLjg1NCw0LjMxM2MwLjY4NCwxLjg2OSwxLjA5NCwzLjg3NSwzLjY4NCwzLjg3NWgxMy4zNTdjMy4xMzYsMCwzLjk1Ny0wLjU3NCwzLjk1Ny00LjAyMQ0KCQljMC0xNC43ODktMTEuNTg5LTIzLjEyMi0yNC44MDktMjUuOTk0Vjg2LjI4YzAtMi41OC0wLjgyMS00LjE2Ny0zLjk1Ny00LjE2N2gtMTAuNjRjLTMuMTM2LDAtMy45NTcsMS41NzctMy45NTcsNC4xNjd2MTEuMDUxDQoJCWMtMTQuMTc4LDIuNzI2LTI2LjAzMSwxMS42MzQtMjYuMDMxLDI3LjcxOGMwLDE4LjIzNSwxMi42ODMsMjMuOTc5LDI2LjQ0MSwyOC41NjZjMTEuNTg5LDMuODg0LDIzLjcyNCw0LjAyMSwyMy43MjQsMTIuMDYzDQoJCXMtNS45OSw5Ljc2NS0xMy4zNTcsOS43NjVjLTUuMDUxLDAtMTAuNjMxLTEuMzA0LTEzLjM2Ni00Ljc0MWMtMS43NjktMi4xNTItMi40NTMtNC4wMjEtMi41OC01Ljg5DQoJCWMtMC4yNzQtMy41OTItMS43NjktNC4wMjEtNC45MTQtNC4wMjFIMTEzLjI4Yy0zLjEzNiwwLTMuOTU3LDAuNzI5LTMuOTU3LDQuMDIxYzAsMTYuMzY2LDEzLjA5MywyNi4yODYsMjcuMjYyLDI5LjQ0MXYxMS4yMDYNCgkJYzAsMi41OCwwLjgyMSw0LjE2NywzLjk1Nyw0LjE2N2gxMC42NGMzLjEzNiwwLDMuOTU3LTEuNTg2LDMuOTU3LTQuMTY3di0xMC45MDVjMTYuMDg0LTIuNDUzLDI3LjEyNS0xMi4yMDksMjcuMTI1LTI5LjQ0MQ0KCQlDMTgyLjI4LDE0NS41OTEsMTY3LjgyOSwxNDEuNDI0LDE1OC4wMDksMTM4LjI2OXoiLz4NCjwvZz4NCjwvc3ZnPg0K", + "reference": null, + "reference_hash": null, + "decimals": 6 + }, + "azerotha.near": { + "spec": "ft-1.0.0", + "name": "Flora", + "symbol": "FLA", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 8 + }, + "v3.oin_finance.near": { + "spec": "ft-1.0.0", + "name": "nUSDO", + "symbol": "nUSDO", + "icon": "data:image/png;base64,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", + "reference": "", + "reference_hash": "", + "decimals": 8 + }, + "30d20208d987713f46dfd34ef128bb16c404d10f.factory.bridge.near": { + "spec": "ft-1.0.0", + "name": "Stader", + "symbol": "SD", + "icon": "data:image/svg+xml,%3Csvg width='256' height='256' viewBox='0 0 256 256' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M128 256C198.692 256 256 198.692 256 128C256 57.3075 198.692 0 128 0C57.3075 0 0 57.3075 0 128C0 198.692 57.3075 256 128 256Z' fill='%236259D4'/%3E%3Cpath d='M126.852 191.869L126.822 181.088L153.98 165.105L153.886 133.025L163.667 127.882L164.056 170.723L126.852 191.869Z' fill='white'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M153.98 165.105L126.822 181.088L126.852 191.869L164.056 170.723L163.667 127.882L153.886 133.025L153.98 165.105ZM154.207 133.218L154.3 165.104C154.301 165.218 154.241 165.323 154.143 165.381L127.143 181.271L127.171 191.32L163.735 170.538L163.352 128.41L154.207 133.218Z' fill='%236259D4'/%3E%3Cpath d='M134.785 112.611L145.906 106.314L173.184 123.396L173.334 175.037L164.063 170.734L163.673 127.894L134.785 112.611Z' fill='white'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M163.673 127.894L164.063 170.734L173.334 175.037L173.184 123.396L145.906 106.314L134.785 112.611L163.673 127.894ZM135.451 112.601L163.823 127.611C163.927 127.666 163.992 127.773 163.993 127.891L164.381 170.529L173.013 174.535L172.865 123.574L145.898 106.687L135.451 112.601Z' fill='%236259D4'/%3E%3Cpath d='M126.443 53.3335L173.06 79.8728L173.094 90.9255L126.49 64.9081L126.443 53.3335Z' fill='white'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M126.443 53.3335L126.49 64.9081L173.094 90.9255L173.06 79.8728L126.443 53.3335ZM126.766 53.8852L126.81 64.7198L172.773 90.3795L172.741 80.0592L126.766 53.8852Z' fill='%236259D4'/%3E%3Cpath d='M80.1584 134.322L80 80.4074L126.432 53.3335L126.48 64.9081L88.7187 86.0335L88.5731 128.106L80.1584 134.322Z' fill='white'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M88.7187 86.0335L126.48 64.9081L126.432 53.3335L80 80.4074L80.1584 134.322L88.5731 128.106L88.7187 86.0335ZM88.2536 127.944L88.3987 86.0324C88.3991 85.9169 88.4617 85.8106 88.5624 85.7542L126.159 64.7209L126.115 53.8892L80.3205 80.5909L80.4766 133.689L88.2536 127.944Z' fill='%236259D4'/%3E%3Cpath d='M107.511 149.374L80.1562 134.324L88.5709 128.108L135.44 154.885L107.58 170.601L98.2445 175.794L126.85 191.879L164.054 170.733L173.325 175.035L126.619 202.66L80.2804 176.371L117.215 154.711L107.511 149.374Z' fill='white'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M107.58 170.601L135.44 154.885L88.5709 128.108L80.1562 134.324L117.215 154.711L80.2804 176.371L126.619 202.66L173.325 175.035L164.054 170.733L126.85 191.879L98.2445 175.794L107.58 170.601ZM164.069 171.092L127.008 192.157C126.91 192.213 126.791 192.213 126.693 192.158L98.0877 176.073C97.9866 176.016 97.9242 175.909 97.9245 175.794C97.9248 175.678 97.9877 175.571 98.0889 175.515L107.423 170.322L134.792 154.884L88.5932 128.49L80.7483 134.285L107.666 149.093L117.369 154.431C117.47 154.486 117.533 154.592 117.535 154.707C117.536 154.822 117.476 154.929 117.377 154.987L80.9208 176.367L126.615 202.29L172.639 175.069L164.069 171.092Z' fill='%236259D4'/%3E%3Cpath d='M88.7207 86.0458L126.482 64.9204L173.085 90.9378L145.902 106.323L134.781 112.619L163.669 127.902L153.888 133.044L116.808 112.11L153.764 90.4499L144.947 85.4178L126.512 74.8955L99.0623 90.6069L88.7207 86.0458Z' fill='white'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M173.085 90.9378L126.482 64.9204L88.7207 86.0458L99.0623 90.6069L126.512 74.8955L153.764 90.4499L116.808 112.11L153.888 133.044L163.669 127.902L134.781 112.619L173.085 90.9378ZM162.983 127.901L134.631 112.902C134.528 112.847 134.462 112.741 134.461 112.624C134.459 112.507 134.521 112.398 134.623 112.341L145.744 106.044L172.432 90.9397L126.482 65.287L89.4368 86.0119L99.0436 90.2489L126.353 74.6177C126.451 74.5614 126.572 74.5614 126.67 74.6175L153.923 90.172C154.022 90.2286 154.083 90.3338 154.084 90.4481C154.085 90.5623 154.024 90.6682 153.926 90.726L117.45 112.105L153.894 132.68L162.983 127.901Z' fill='%236259D4'/%3E%3Cpath d='M98.252 175.789L107.587 170.596L126.827 181.093L126.857 191.874L98.252 175.789Z' fill='white'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M98.252 175.789L126.857 191.874L126.827 181.093L107.587 170.596L98.252 175.789ZM98.9075 175.791L126.536 191.326L126.508 181.283L107.589 170.962L98.9075 175.791Z' fill='%236259D4'/%3E%3Cpath d='M80.2804 176.368L80.2461 164.785L107.511 149.371L117.215 154.708L80.2804 176.368Z' fill='white'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M80.2804 176.368L117.215 154.708L107.511 149.371L80.2461 164.785L80.2804 176.368ZM80.5987 175.81L116.567 154.717L107.513 149.737L80.5666 164.971L80.5987 175.81Z' fill='%236259D4'/%3E%3Cpath d='M116.809 112.109L116.92 101.073L144.947 85.417L153.764 90.4491L116.809 112.109Z' fill='white'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M116.809 112.109L153.764 90.4491L144.947 85.417L116.92 101.073L116.809 112.109ZM117.134 111.547L153.125 90.4528L144.946 85.7845L117.238 101.262L117.134 111.547Z' fill='%236259D4'/%3E%3Cpath d='M88.5723 128.087L88.7179 86.0142L99.0595 90.5753L99.1537 123.589L135.407 143.582L135.442 154.864L88.5723 128.087Z' fill='white'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M99.1537 123.589L99.0595 90.5753L88.7179 86.0142L88.5723 128.087L135.442 154.864L135.407 143.582L99.1537 123.589ZM135.088 143.771L98.9992 123.869C98.8974 123.813 98.8341 123.706 98.8337 123.59L98.7401 90.7841L89.0362 86.5043L88.8929 127.901L135.12 154.311L135.088 143.771Z' fill='%236259D4'/%3E%3C/svg%3E", + "reference": "", + "reference_hash": "", + "decimals": 18 + }, + "wrap.near": { + "spec": "ft-1.0.0", + "name": "Wrapped NEAR fungible token", + "symbol": "wNEAR", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "csat.tkn.near": { + "spec": "ft-1.0.0", + "name": "CSAT Token", + "symbol": "CSAT", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "runaid.near": { + "spec": "ft-1.0.0", + "name": "Literal Scam Token", + "symbol": "LST", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 9 + }, + "nvision.tkn.near": { + "spec": "ft-1.0.0", + "name": "NVISION", + "symbol": "NVISION", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "newfy-token.near": { + "spec": "ft-1.0.0", + "name": "NEWFY", + "symbol": "NEWFY", + "icon": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAeAB4AAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAUABQADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD5/ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAdSVPFbzTtthieQ+iqTWnF4c1SYbvsrJ7ykL+hrWNGctkJyS3Zi0V1MPgy5P+uuYk/3VLH+lXovBlov+uuJX/3cL/jW8cFWfQh1YLqcTRivRYvDOlxqP9G3t6sxP9cVcj02whUeXaQDHfyhn863jllR7sl149DzBY3c4VSTVtNI1CTlLK5Yf9cjXpwGxcD5V9F4owK3WVrqzN4jyPO18Naq/ItP++nUfzNWF8J6m/3hCn1kz/LNd5ilq1ltJbsX1hnEL4Lve89uv/fR/pUy+CnP3r1R9Iya7GitVl9FdCfbyOT/AOEJT/n+P/fkf408eC7fveSH/dQCupop/UaPYXtpdzmB4Ltf4rqf/vkUf8IVaf8AP1P/AN8iunoqvqVDsP2su5zH/CFWn/P1P/3yKD4Ltf4bqf8A75FdPRR9Sodhe1n3OWPguDtdyD/eQUz/AIQpP+f4/wDfkf411lFT9So9g9rM49vBTj7t4p+sRFQN4MvP4bi3P/fQ/pXb0UngKLGq0zgm8J6lH93yX+kmP54qu3hvVU5+ylv911P8jXotJis3ltJ7Mr6xI8yk0fUY8l7K4UD/AKZGqjxOjYdSp/2lxXrGBQRlcH5l9GrN5WujGsR3R5JiivUZNNsZM77SA+7RDP8AKqknhrS5M/6LsPqrN/jisJZZPoy1Xj1R5xRXcS+DLNv9TcSp/vYb/CqM/gu4H+puon/3lK/41hLA1o9C1Vg+pytLWxN4a1SHn7Pv/wCubBqzp7e4gbbPDJGfRlI/nWEqU4/Ei1JPZlaiiishhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUALS1JHE8rhI1ZmPQBcmte08Malc4LRCFT/AM9eD+XWtYUpz+FCcktzDpea7a38HWqc3M8kh9FXaP6mti20fT7X/U2kSkd2XcfzOa7KeX1JfFoZOvFbHn1vpl7d8wW0jr6qvH51rW/hC9k5neKEf724/pxXcY9fmpa7KeWwXxO5k8Q3sc3b+D7FMGeaWX/dwo/rWrb6Lptt/q7SL6su4/rmr9FdcMNThsjN1JPdiBAFCD5VHZelGMUuKXFbcqRAlFLijFMQlGKWigBMUuKdRQA3FFOoxQA2jFOxRigBuKKdRQA2inUUANop1FADaMU6igBuKKdijFADaMU7FFADcUmKfRQAzFFLRQAlFLijFADSM0EAqQeh7U7FJilZMZQuNE064/1lpF9VXaf0xWVceDrJ8mGaWI/gw/pXSYorKeGpy3iUqklsziLnwheRZMEkMy/720/rxWRc6XfWmTNayIP723I/McV6dSY/u1yVMtpv4XY1WIa3PJOaSvULnSrC6z59rEWPU7cH8xzWPc+DbV8m3nliPoy7h/Q1xVMuqR+HU1VeL3OHoreu/C+owZMcQmT+9H/geax5YpIXKSIysOoZcGuOdGcPiRqpJ7EFFFFZDCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBaKWtSy0O/1DDwwFYz/wAtG+VauFOU3aKuJtLcyqkjjaVgiKWJ6BVya7Sz8IW8eDdyGV/7ifKv59TW9bWdtZpi3hSId9q4z9T1NehSy6ctZ6GUq8VscRaeFtQueZEW3T1k6/kK3rPwjYw4M5e4b/e2r+Q5rfpa9CngaUOlzCVaTIbe2gtk2QxJEPRFAzUtLilxXVGEY6JGV2xKKXFFUITFLinUUANxRTqKACilooATFFLiigBKKWigAopaKAExRilxRQAmKKWigBKKWigBKKWigBKKWigBKKWigBKKWigBMUYpaMUAJRS0UANopaKAEoxS0YoASilooAZRinUUANxSYp9FADKKWjFADajntobhNkyLKP8AbUEfrU2KSpcIy0Y7mBd+E7GXJgLQH/ZO5f1rBuvCl9b5aMCdP9nhvyNd7RXLVwNKfSxpGtJHlEsMkLlJFZGHUEYNRV6tc2lvdpsniSUdg65x9PSsG98IWsuTaymJvRvmX/EV51XLpx1jqdEK6e5w1Fa17oF9Y5MkJeP/AJ6R/MKya4Z05QdpKxqmnsJRRRWYwooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAFoqxbWlxdS+XBE0j+irmumsPB7Nh72Xb/ANM4+T+Jrelh6lR+6iZVIx3OWjieZwkas7HoAuTW/Y+E7u4w9yVt0/76b8q7C0sbayTFvCkS9z3P1PU1Zr1KWXJaz1Oede/wmXYaDp9lgpCryf35fmP+ArTpaK9GnThBWijnlNvcKKXFFWIMUYp1FADadRS0AJiilooAKKWjFACUUtFABRRS4oASilxRigBKKXFLigBtLilooASjFLRQAmKMUtFACYopaKkBKKXFGKAEopcUYoASjFLRQAmKMUtFUAmKKWigBMUlOooAbRTsUmKAEopcUYoASilxSUAJRS0UAJRS4ooAbRilooASm0+koAbRinUUAMopaMUANxWffaHY33zSQqrn/lpH8rVo4oqJ04TVpK41JrY4i+8I3VvlrVhMnp0auflhlgkMciMjjqGXBr1eq93Z216my4hSRe25eR9D1FedWy2L1gbwrtfEeVUV2GoeEOr2Mv8A2zf+hrmLmzuLOTy54njb0Za8yrhp0/iR0RnGWxVooornLCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBaKnggluJRFCjO56BVya6jTfCP/LS/b38tW/ma3pYepVdooiU1Hc5m2sri8mEdvE0r+irXU6d4PAw+oP8A9s0/qa6W3toLWIRwIIkH91amr16OXxhrPVnPOu3sQ29tBaxCOGIRJ6Lx/wDrqailr0IxUVaJhuJS4op1MQ2nUUUAFFLRQAUUtFACUtFLQAlFLijFACUuKWigBMUYpaMVIBRS0UAJRS0UAJiloxS0AJRS0UAJRS0UAJRS0UAJijFLRQAmKMUtFACYoxS0UAJijFLRQAlFLRQAlFLRQAlFLRQAlJinUmKAEopaKAEopaKAExSYpcUUAJikp1FUA2ilxRigBKSnUlACUUtFADaKWjFACU2nUUANxSU+m0AJUU1vDcReXMglQ9mXIqbFJSlFS0Y9jldR8II3z2D7D/zzkbI/A1y13ZT2UnlzxMje46/jXqdRXFtDcRmOVBIncMuRXn1sBCesNGbwrtbnk9FdjqXhEf6zT2/7Zu38jXK3NtPaymKeJo3HZlxXk1cPOm/eR0RmpbFeiiiucsKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAWlpK1tL0O71NgUXbFnmRulXTpym7RVxNpK7MsAlgMV0mmeFZ7jEl1+4j/u/wAZ/wAK6PTNDtNNUGMb5u8jdfw9K1K9fD5elrUOepW6RK1np9vYw+XbxBAep7n6nvVmilr04wjBWic7lzCUtFOqiRtOopaAEpaKKACilooAKKWigBKXFLRQAmKWilqQEopaKACilooASjFLRQAUUYooAKKWigBKMUtFACUUuKMUAFFFFABRRRQAUU6igBtFOooAbRTqKAG0U6igBtFOptABRRRQAlFLijFACYopaKAEopaKAEoooxQAmKKWigBKKWigBtFLRQAlJinUlACYpKdRVANopcUYoAbRS0UAJSU6koASm0+koAbSU+m0AJVe8sba+i8u4iWUdvUfQ9qs0lTKEZK0ilLlOJ1PwnPB+8syZo/7n8Yrm2BUkEYIr1qs7UtFs9TUmSPbNjiReG/H1rzMRl6fvQN6dZ7SPM6K2NU0C601i7DzYO0iLx+PpWPXkVKcoO0kdKaauhKKKKgYUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA6pre2mu5RFCjPIegUVq6T4fudSYSEeVB/wA9GXr9BXbWOm22nR7LeP73Unlj9TXfh8DOrrLRGU6qjotzD0jwpHDtmv8AEj9RH2H1rpQgChAFUAYAVcAU6ivapYeFJWijjnNyeoUtFOrYkbTqKWgBKWiigApaKKACilpaAExRilooAKKWipAKKKWgBKWijFABRS0UAJiiloxQAUUU6gBtGKdRQA2nUYpcUgEopcUUAJijFLRQAmKXFLRQAmKMUtGKAExRilxRQAmKKWigBKMUtFACYoxS0YoATFGKXFFACYpMU6igBuKMUtFACUUtGKAEptPxSYoAbiinUUwG0U6m0AJRilxRQAlFLRQAlJS0UAJRS0lACUUtFADaKWigBtFOpKoBKSlooASkp1JQAlNp9JQA2kp9NoAaQCpBG5TwRXN6t4Whn3TWW2GTqY/4D9PSulorGrQhVXvIuE3F6HlNzazWkxhmjMbjqGqGvUrzT7fUI/LuI1b0PQj6HtXFav4cuNO/ex/vbf8AvheR9RXi4jAyp6x1R1wqqWj3MCiiiuA1CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAFoorS0zSLjU5dsK4UdXboKuEHN2itRNpaspwwyTyrHGrM5OAAMmuw0jwqkO2a/Akk6iPqo+ta2l6Pa6ZFiNcyEczN1P+ArRr2sLgYx96e5y1KzekRAAFwKWilr0tjnCinUUAFFLRQAUUtFABRS0UAFLRRQAUUtFSAUUtFABRRS0AJRS0UAFFFOoAbiinYpcUAJRilopAJilxS0YoASilooAKMUUuKAEopaKAEopaKAEpaKXFACYopcUUAJRS0UAJRS0UAJRS0UAJRS0UAJRiloxQAlJTsUlACUUtFACUUtFACYopcUlACUUtFACYpMU7FFADcUUtFADKKfikxTAbRTqbQAlFLRQAlFLSUAJRS0UANopaKAEpKWigBtFOpKoBtFLRQA2ilooAZRTqKAGUhGadSUAc3q/heOfdNYgRS9fL6Kfp6GuNmglt5mimRkkU4KsuCK9WqjqWk2+pw4nXa4HySL94f/W9q83FYGMvehudFOs1ozzCitXVNHudKl/eLujJ+WRRwf8ACsqvGnTlB2kjqTTV0JRRRWYwooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBaKkRGlcIgYsTwBySa7TRvDCxbbi+UM/UR9QPr6muijh5VXaJM5qK1MvRfDct7tuLrMVv1HYv/gK7W3t4beJY4VCRgYAWngUte9h8NCkrdTiqVHJhS0U6ukzG06iloASlopaACiiloAKKWigAopaKkAopaKACiiloASloooAKKdRigAopaKQBiilooASlopaAEopaKAEpcUUtACUUtFACUuKMUtACUUtFACUUuKKQCYoxS4paYCUUuKMUAJRS4ooASilooASilooASiloxQAlFLijFACYpMU6kxQAlFLiikAlFLRTATFJTqTFACUUtFACUlOpKAEopaKAEpKdSUAJRilooAbiiloxQAyinUUwG0lLRQAlFLSUAJRS0UANopaKAG0UtFUA2ilpKAEopaSgBKbT6SgBtJT6bQBFLFFNE0cih0IwQy5BrjNZ8NSWm6e0DSQDqvVk/wARXb0VzYjDQqrXc0p1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0lACUlOpKAG0UtJVAJSUtFADKQ0+m0AJXEeJdH+ySm7gT9w5+cf3G/wNdvTJYknhaORFZCMOG7iufE0FVhbqaU6jizyakrV1fS30q9MfLRnmN/Uf4isqvm6kHCTTO5NNXQlFFFQMKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAnijeaVY41YuxAAHc16Po+mR6XYrH8rSH5pCvc/4CsfwrpHkxC/mX5nH7sN2X1/Guor3MDheWPPLc5a1S75UFLQKdXpnMFLSUtABS0UtABS0UtSAUUUtABS0lLQAU6iigBaKKWkAUtFFABS0UtABRS0UAFLRTqACiiloAKCQilyVUAZJbsKWuK8aa/tU6Xat/18Ff/QawrVVSg2yoQcnYwvFGuHWNQ2Rki1hyIx6+rfjXPUVq6RY+fJ58g/doeB6mvnpylUldnoJJKyL2k2PkRefIP3jjgN2FaVFFaJWJCiiimIKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigArN1ax8+Lz4x+8Qche4rSopNXGcVW14f1qTRNREnLQv8sqeo/wARUOr2PkSefH/q3PT0NZVZwlKErroU0mrHuEUkc8KTQsrxuA4K9CDT64HwXr/kSjS7lv3Uh/dN/cY9voa7+voMPWVWFzhqQcWNopaSugzG0lPptACUlLRQA2kp1JQAlJS0UANopaSgBKbT6SmA2kpaSgBKKWkoASkp1JQA2kp1JVAJSUtJQA00lPppoAz9U06PUbJoX2q3VH9Grze4t5Lad4ZVKyIcEV6vXN+KNI+02/26FP3kY+f3X/EV5uOwvNHnjujoo1LOzOFooorwjrCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAdW1oGknUrzdIP3EXzSf0X8ayreCS5nSKMZdzgCvS9NsI9Os0t0+pb1bua7sDh/aT5nsjKrPlWm5bAAUABVUdAtKKKWvoThCnUUtABS0lLQAU6kFLQAUtFLUgFFFLQAU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UUUUAFFFFABRRRQBKjtE4dCwYHgjgg12mjeJ1l2298wV+gk6A/X0NcPRXRRxEqTvEmUFJanrlLXDaL4kksttvdZkt+gPUp/iK7W3uIbiJZIWDxkZBWvew+JhVV+pxVKbiyWnUylrpMx1LTKdQAtLSUUALS0lFADqKSigB1FJRUgOopKKAFpaSigBaKSloAdRTaKAH0UlGaQDqKTNFAC0tNpaAFopKKAFpabS0ALRSUUALmlptLmgBaKSigBaM0lFAC5pc03NLmgBc0ZpKKAFzRSUUgFzRSUUwFozSUUALmjNJRSAXNGaSimAtJmikzQAuaKSigBaKSigBaTNFJQAtFJRQAtJRSUALRSUUALSUUlAC0UlGaACjNJmigAzRTaKYBRRSUALSUUUAFFJRQAUUlFABRSUVQBSUUUAFJRRQAUlFNoAdTaKSgAopkssUMTSSOEQDJLNgCuM1jxNJd7oLQtHB3boz/4CufEYmFJa7mlOm5M09a8TR2u63syHl6GTqq/4muKkkeWRnkYlycktySaiorwa+IlWldnZCCitBKKKK5iwooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBa0tM1e40yXdC2VPVG6Gs2irhNwd4vUTSejPTNL1i11OLMbYkA5hbqP8AEVo15RDNJBKskbMrg5BBwa7DR/FKTbYb0rHJ0EnRT9a9rC46MvdnuctSi1rE6elpoIK5FLXpbnOPoptFAD6KSigB1FJRQA6ikooAdRSUtAC0UlFSA6ikooAWlpKKAFopKKAFp1NooAdmlzTKKAH0UlGaQDqM03NLmgBaKSigBaXNJRmgBaKSigBaKSigBaXNNpc0ALRSZooAWikooAWikooAWikooAWikooAWikozQAuaSjNJQAtFJRQAtFJRQAuaSjNFABRSUUALmikzRmgAopM0UALSZptFMB1NoooAKKSigBaSiigAopKKACikooAKKKSgBaSkoqgCikooAKKSigAoptFABSUUhOKAFqjqWrW+mQ5nbc5HyRr94//AFvesnV/E8dvuhsSssvQydVH09TXGzzy3MzSzMzyOclmOSa83FY6MfdhudFOi3qy9qmr3Oqy/vDtjB+WNTwP8TWVS0leNOpKbvJnUkkrISiiisxhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAG7pPiC501hGT5sH/PNm6fQ121jqVtqMe+3k+71B4YfUV5dU1tczWkwlgkZJB0K134fHTpaS1RlOkparc9WormNI8VRzbYb/EcnQSdj9a6UOHUOpVlIyCrda9qliIVVeLOScHF6j6dTKWtiB1LTKdQAtFJS0ALRSUtAC5pabRQA6ikzRmgB1FJRUgLS0lFAC0UlLQAtFJRQAtGaTNFAC06m0UAOoptGaAHZpc0ynUgFzRSUUALRSZozQA6im5pc0ALmjNJmjNAC0UmaM0ALRSZooAWikozQAtFJmjNAC5ozSZozQAtFJmkzQAtFJmjNAC0ZpKKAFzSZoptADqKbmimA6m0UUAGaKSjNAC0UlFABRRSZoAWikooAKKSigAopKKAFpKSiqAKKKSgBaSikoAWkoptADqbRSUAFFISApJO1RXN6t4phg3RWW2aToZP4B9PWsataFJXky4Qcnobl5qNtp8W+4kVfQdSfoO9cRq3iO41HMUe6K3/ALobk/U1k3N1NdzGaaQyOepaoa8XEY6VTSOiOuFJR1e42iiiuA1CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAFrW0vXLvTGARt0WeY26Vk0tXTqSg7xdhNJqzPSdM1y01NQI32Td426/h61p15LkqwINdHpniue3xHd/v4/wC//GP8a9fD5gnpUOedHrE7elqrZ39tfReZbyq6jqO4+o7VZr04zjNXic7XKLTqZS1RI6lplOoAWikpaAFopKKAHZozSUUAOoptLmgBaWm5pakBaKSigB1FJRQAtFJRmgBc0UUUALRSUUALRSUZoAXNGaSigBaKKKACnU2igB1FNooAdRTaKAHUU2igB1FNooAdTaKKACiiigAzRmkooAWikzRQAtFJRQAUZoooAKKTNFAC0UlFABmikooAWkopKAFopM0lUAuaKSigAopKKAFpKKSgBaSim0AOptFJQAtJRVe8vraxi8y4lWIdvU/Qd6mU4xV5FKPMWKztS1qz01SJn3TY4jXlvx9K5zU/Fk0+Y7IGGP8Av/xmuZcliSTkmvMxGYJe7A3p0W9ZGrqmv3WpEoT5UHaJG4/H1rHpaSvJqVJTd5O50pJKyEooorMYUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBYgnlt5RLC7I46FWwa6jTfF3/ACzv19vMVf5iuQoreliKlJ3iyJQUtz1e3uYLuISQSLKn+y2f/wBVTV5XbXs9nN5kErRv6qa6nTvF4OI9Qj/7aR/1FevRzCM9J6M550Gtjq6XNQQXMFxEJIpRKnqrZqavQjJSV4mGwtOplLmmIdRTadQAuaKSigB1FJRQAtLTaWgBc0ZpKKAHUU2lzQAtGaTNLmpAWikooAWikooAXNLTc0tAC0UlFAC0UlFAC0UlFAC0UmaM0ALRSZozQAtFJmjNAC0UmaM0ALRSZooAWikooAWikooAWkzRSZoAWikooAWikooAM0UZpM0ALRSZpKoBc0ZpKKAFpKKSgBaKSigAopKM0ALSUU2gB1NopKAFzSUVFNcQ28XmTOIkHdmwKUpKOrHuS1HNcQ28fmTyCJR1LNgVzWo+L0X5LBN5/wCeki4H4CuVu72e9k8yeVnb3PT8K8+tj4Q0hqzeFBvc6fUvFw/1dgvt5zL/ACFcrc3M91KZZ5Gkc92bNQUteRVxE6r95nRGCjsNooorAsKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKALNteXFpL5kErxv6q2K6aw8YMuEvYs/wDTSPg/iK5Git6WIqU/hZEoRlueqWuoW96m+3mSVe47j6jqKs15PHK8Lh42ZGHQhsGt+x8WXdvhLkLcJ/3y3516lLMU9J6GE6FvhO5orLsdfsL3ASYJIf4JflP+BrTr0adSE1eLOeUWtx1FJRViH0U3NFADqWmU6gBaKTNFADqM0lFAC0UlFAC0uaSigBc0ZpKKAFzS5ptFADqKSjNAC0UlGaAFopM0ZoAWikzRUgLmjNJRQAuaM0lFAC0UlGaAFopM0ZoAWikzRVALRSZooAXNGabRQAuaM0lFAC5pKM0UAFFJRQAuaKSigAopKM0ALSUU2gB1FNzRmgAozSUUAFFJms++1yxsflkmVnH/ACzj+ZqidSEFeTsUouWxo1Xu722sot9xMkQ7bup+g6muQvvF11cZW1UQp69Wrn5ZpZ5DJNIzsepZsmvOrZlFaQN4UG/iOq1Dxf1Sxi/7aP8A0Fcxc3lxeSeZPK8jerNVaivMq4mdT4mbxhGOwlFFFc5YUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFADq1LPXL6wwI5i0Y/5Zv8y1lUVcKkoO8XYTSe53Fn4wt5MC7jML/wB9PmH+Iretry2vEzbzJL67Wzj6jtXlNSxyPE4eNyrDoQcGvQpZjOOk9TKVGL2PV6WuAtPFN/bEB2WZP+mnX8637PxdYzYE4e3b/d3L+Y5r0KeOpT62MJUZI6ClzUNvcwXSb4ZVlHqjA4qSuqM4y1TMrNDs0UlFUIfRTM0uaAHUU3NFAD6KSigBc0UmaKAFopKKAHUUlFAC5opM0ZoAWikooAWikooAWikooAWikooAWikooAWikooAWjNJmjNAC0UlFABRSUUALRmkozQAtFJRQAUU2igB1FNzSUALRmkzRQAuaSkqOe4ht03SyLEPV2AH61LnGOrHYlorCu/FdhDkQBrg+w2r+Zrn7rxZfXOViKwJ/s8t+Zrlq46lDrc0jRkzt7m7t7RN88qRDsXbGfp61gXvi61iyLVDK3q3yr/ia4yWWSZy8jM7HqS2TUVefVzGctI6HRGglua17r+oX2UkmKR/880+UVk0tNrgnUlN3k7mqSWwUUUVmMKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAJo5XicPGzKw6ENg1r2nifUrbCtKswH/PVcn8+tYdLWsKs4fCxOKe521v4ytXwLmCWM+qtuH9DWzb6tYXX+pu4mY9i20/kcGvL6XmuynmNSPxamToRex63n1+WlrzC31S+tcCC6lRfRW4/Kte38X3kfE6xTD/d2n9OK7KeZQfxKxi8PJbHcUZrm7fxjZvgTwyxf7uGH9K1LfWtOuP9Xdxf8Cbaf1xXXDE057Mh05LdGhmlzTQ4Khx8ynuvSjOa25kyB2aM0lFMQtFJRmgB9FMzS5oAdRmm5ooAdmjNNzRmgB1FNzRQA6im0UAOoptFADqKbRmgB2aM03NGaAHZoptGaAHUU3NJmgBaKTNFAC5ozSUUALmkzSZxQSApJ6DvSuluMXNFULjWdOtv9Zdxf8BbcfyGay7jxhYpxDHLIf8AdCisZ4mnHdlKnJ7I6Okz/driLnxhey/LDHFCP93cf14rKutVv7vImupHX+7uwv5DiuWpmVOPwq5qsO3uegXOq2Frnz7qIMOo3ZP5Dmse48YWqZW3gklPq3yj+priOaSuKpmNSXw6GqoRW5vXfijUZ8iOUQp/dj/xPNY800szmSRy7nqWbJqGiuOdac/iZqopbCUUUVkMKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigCxFcTwNvhleM+qsRWnF4j1SEbftTP7SgN+prGpK1jWnHZicU90dTD4zuR/rraJ/wDdYqf61ei8Z2jf663lT/dw3+FcRRW8cbWXUh0oPoejReJtLkUf6VsPoykf0xVyPUrGX7l3AfZZRn8s15dRmt45nUW6JdCPQ9bByuR8y+q0ZFeTpK6tlGZT7NirSavqEfCXtyo/66mt1mi6ozeH8z07NLXnS+JdVTgXf/fSKf5irC+LNTT7xhf6x4/lirWZUnuhfV2d7RXEL4zvO9vbt/30P61OvjSUdbNT/uykVqsfRfUn2EjsKK5P/hNU/wCfE/8Af4f4U/8A4TSD+K0kX/dcGn9eo9xeymdTRXMDxpa/xWs//fQpf+E0tP8An3n/AO+lqvrtDuHsZdjpqK5n/hNLT/n3n/76WkPjS1/htZ/++hR9do9w9lLsdPRXLHxtB2tJD/vMKZ/wmqf8+J/7/D/Cp+u0e4eymdZRXHt40kPSzUfWUmoG8Z3n8Nvbj/vo/wBaTzCiuo/YSO3orgm8Wak/3fIT6R5/nmq7eJdVfj7UV+iKP5Cs3mVJbIr6vI9EyKCcLk/KP9qvMpNY1GTIe9uGB/6amqjzPI2XZmP+02azeaLohrD92enSalZx/eu4B7NKuf51Uk8SaXHn/SlZvREavOc0VhLM59EWqEerO3l8Z2i/6m3lf/ewo/rVGbxpcN/qLSJP95i38sVytFYSx1aXUtUoLobU3iXVJhj7R5XtGoWs2e4uJ23TzSSH1Zif51XpawlVnL4mWopbIbRRRWQwooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD/9k=", + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "meritocracy.tkn.near": { + "spec": "ft-1.0.0", + "name": "MERITOCRACY", + "symbol": "MERITOCRACY", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "kvlad.tkn.near": { + "spec": "ft-1.0.0", + "name": "KryptoVlada", + "symbol": "KVLAD", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "swear.tkn.near": { + "spec": "ft-1.0.0", + "name": "SWEAR", + "symbol": "SWEAR", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "metrop.near": { + "spec": "ft-1.0.0", + "name": "METROP", + "symbol": "METROP", + "icon": "data:image/svg+xml,%0A%3Csvg width='5239px' height='5246px' viewBox='0 0 5239 5246' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3C!-- Generator: Sketch 51.3 (57544) - http://www.bohemiancoding.com/sketch --%3E%3Cdesc%3ECreated with Sketch.%3C/desc%3E%3Cdefs%3E%3Ccircle id='path-1' cx='2684.08165' cy='2627.98243' r='2379.33064'%3E%3C/circle%3E%3Cfilter x='-3.8%25' y='-3.8%25' width='107.6%25' height='107.6%25' filterUnits='objectBoundingBox' id='filter-2'%3E%3CfeMorphology radius='24' operator='dilate' in='SourceAlpha' result='shadowSpreadOuter1'%3E%3C/feMorphology%3E%3CfeOffset dx='0' dy='2' in='shadowSpreadOuter1' result='shadowOffsetOuter1'%3E%3C/feOffset%3E%3CfeGaussianBlur stdDeviation='36' in='shadowOffsetOuter1' result='shadowBlurOuter1'%3E%3C/feGaussianBlur%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0' type='matrix' in='shadowBlurOuter1'%3E%3C/feColorMatrix%3E%3C/filter%3E%3ClinearGradient x1='62.8494952%25' y1='3.10986454%25' x2='42.5208559%25' y2='98.8051932%25' id='linearGradient-3'%3E%3Cstop stop-color='%23FDC327' offset='0.416666667%25'%3E%3C/stop%3E%3Cstop stop-color='%23F8AD1E' offset='78.75%25'%3E%3C/stop%3E%3Cstop stop-color='%23F39514' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3Cpath d='M1194.985,4673.392 C1599.166,4955.508 2090.437,5121 2620,5121 C3997.776,5121 5116.356,4000.788 5116.356,2621 C5116.356,1241.212 3997.776,121 2620,121 C1242.224,121 123.644,1241.212 123.644,2621 C123.644,3224.258 337.464,3777.898 693.282,4209.991 L850.776,4135.018 L779.626,4309.422 C805.757,4337.969 832.541,4365.907 859.953,4393.212 L968.503,4302.077 L968.503,4495.118 C1009.104,4531.035 1050.879,4565.65 1093.763,4598.898 L1194.985,4478.106 L1194.985,4673.392 Z' id='path-4'%3E%3C/path%3E%3Cfilter x='-4.3%25' y='-4.2%25' width='108.6%25' height='108.6%25' filterUnits='objectBoundingBox' id='filter-5'%3E%3CfeMorphology radius='12.5' operator='dilate' in='SourceAlpha' result='shadowSpreadOuter1'%3E%3C/feMorphology%3E%3CfeOffset dx='0' dy='2' in='shadowSpreadOuter1' result='shadowOffsetOuter1'%3E%3C/feOffset%3E%3CfeGaussianBlur stdDeviation='76' in='shadowOffsetOuter1' result='shadowBlurOuter1'%3E%3C/feGaussianBlur%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0' type='matrix' in='shadowBlurOuter1'%3E%3C/feColorMatrix%3E%3C/filter%3E%3Ccircle id='path-6' cx='2615.54818' cy='2611.86515' r='1859.5134'%3E%3C/circle%3E%3Cfilter x='-15.6%25' y='-15.6%25' width='131.3%25' height='131.3%25' filterUnits='objectBoundingBox' id='filter-7'%3E%3CfeMorphology radius='119' operator='erode' in='SourceAlpha' result='shadowSpreadInner1'%3E%3C/feMorphology%3E%3CfeGaussianBlur stdDeviation='522' in='shadowSpreadInner1' result='shadowBlurInner1'%3E%3C/feGaussianBlur%3E%3CfeOffset dx='0' dy='1' in='shadowBlurInner1' result='shadowOffsetInner1'%3E%3C/feOffset%3E%3CfeComposite in='shadowOffsetInner1' in2='SourceAlpha' operator='arithmetic' k2='-1' k3='1' result='shadowInnerInner1'%3E%3C/feComposite%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0953068388 0' type='matrix' in='shadowInnerInner1' result='shadowMatrixInner1'%3E%3C/feColorMatrix%3E%3CfeMorphology radius='14' operator='erode' in='SourceAlpha' result='shadowSpreadInner2'%3E%3C/feMorphology%3E%3CfeGaussianBlur stdDeviation='48.5' in='shadowSpreadInner2' result='shadowBlurInner2'%3E%3C/feGaussianBlur%3E%3CfeOffset dx='-4' dy='1' in='shadowBlurInner2' result='shadowOffsetInner2'%3E%3C/feOffset%3E%3CfeComposite in='shadowOffsetInner2' in2='SourceAlpha' operator='arithmetic' k2='-1' k3='1' result='shadowInnerInner2'%3E%3C/feComposite%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0' type='matrix' in='shadowInnerInner2' result='shadowMatrixInner2'%3E%3C/feColorMatrix%3E%3CfeMerge%3E%3CfeMergeNode in='shadowMatrixInner1'%3E%3C/feMergeNode%3E%3CfeMergeNode in='shadowMatrixInner2'%3E%3C/feMergeNode%3E%3C/feMerge%3E%3C/filter%3E%3Cpath d='M2344,2795 C2439.9856,2912.06986 2505.9856,2988.73653 2542,3025 C2607.98825,3091.44462 2649,3148 2687,3148 C2724.38491,3148 2721.61952,3163.92659 2760,3148 C2798.38048,3132.07341 2846,3105.0065 2824,3068 C2749.86731,2943.3004 2642.53397,2816.3004 2502,2687 L2344,2795 Z' id='path-8'%3E%3C/path%3E%3Cfilter x='-69.5%25' y='-67.6%25' width='229.7%25' height='230.9%25' filterUnits='objectBoundingBox' id='filter-9'%3E%3CfeMorphology radius='49' operator='dilate' in='SourceAlpha' result='shadowSpreadOuter1'%3E%3C/feMorphology%3E%3CfeOffset dx='0' dy='2' in='shadowSpreadOuter1' result='shadowOffsetOuter1'%3E%3C/feOffset%3E%3CfeGaussianBlur stdDeviation='48.5' in='shadowOffsetOuter1' result='shadowBlurOuter1'%3E%3C/feGaussianBlur%3E%3CfeComposite in='shadowBlurOuter1' in2='SourceAlpha' operator='out' result='shadowBlurOuter1'%3E%3C/feComposite%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.509312726 0' type='matrix' in='shadowBlurOuter1'%3E%3C/feColorMatrix%3E%3C/filter%3E%3Cpath d='M1592,3085 C1582.4654,3293.37123 1582.4654,3421.03789 1592,3468 C1597.16073,3493.41888 1631.60297,3452.10337 1638,3468 C1662.12509,3527.95084 1701.93326,3487.95084 1757.42453,3348 L1930,2939 L1592,3085 Z' id='path-10'%3E%3C/path%3E%3Cfilter x='-96.0%25' y='-75.2%25' width='317.2%25' height='235.3%25' filterUnits='objectBoundingBox' id='filter-11'%3E%3CfeMorphology radius='49' operator='dilate' in='SourceAlpha' result='shadowSpreadOuter1'%3E%3C/feMorphology%3E%3CfeOffset dx='0' dy='2' in='shadowSpreadOuter1' result='shadowOffsetOuter1'%3E%3C/feOffset%3E%3CfeGaussianBlur stdDeviation='85' in='shadowOffsetOuter1' result='shadowBlurOuter1'%3E%3C/feGaussianBlur%3E%3CfeComposite in='shadowBlurOuter1' in2='SourceAlpha' operator='out' result='shadowBlurOuter1'%3E%3C/feComposite%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.509312726 0' type='matrix' in='shadowBlurOuter1'%3E%3C/feColorMatrix%3E%3C/filter%3E%3Cpath d='M2849,3085 C2855.54158,3280.38249 2870.87491,3408.04916 2895,3468 C2919.12509,3527.95084 2972.79175,3557.95084 3056,3558 L3187,2939 L2849,3085 Z' id='path-12'%3E%3C/path%3E%3Cfilter x='-98.7%25' y='-64.0%25' width='307.8%25' height='218.0%25' filterUnits='objectBoundingBox' id='filter-13'%3E%3CfeMorphology radius='49' operator='dilate' in='SourceAlpha' result='shadowSpreadOuter1'%3E%3C/feMorphology%3E%3CfeOffset dx='0' dy='2' in='shadowSpreadOuter1' result='shadowOffsetOuter1'%3E%3C/feOffset%3E%3CfeGaussianBlur stdDeviation='85' in='shadowOffsetOuter1' result='shadowBlurOuter1'%3E%3C/feGaussianBlur%3E%3CfeComposite in='shadowBlurOuter1' in2='SourceAlpha' operator='out' result='shadowBlurOuter1'%3E%3C/feComposite%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.509312726 0' type='matrix' in='shadowBlurOuter1'%3E%3C/feColorMatrix%3E%3C/filter%3E%3Cpath d='M2208.53781,1645 C2265.5786,1645 2361.30347,1706.25463 2412.60666,1836.87129 C2433.90084,1891.08576 2591.479,2136.54789 2564,2198 C2544.6407,2241.29378 2480.97403,2338.62711 2373,2490 C2371.21767,2951.15017 2354.88433,3313.81684 2324,3578 C2310.98742,3689.30898 2195.14293,3746.05813 2061,3753 C1926.85707,3759.94187 1807.92763,3694.8932 1782,3578 C1641.8431,2946.1109 1961.45561,2361.09119 2208.53781,1645 Z' id='path-14'%3E%3C/path%3E%3Cfilter x='-40.5%25' y='-15.7%25' width='180.2%25' height='131.5%25' filterUnits='objectBoundingBox' id='filter-15'%3E%3CfeMorphology radius='49' operator='dilate' in='SourceAlpha' result='shadowSpreadOuter1'%3E%3C/feMorphology%3E%3CfeOffset dx='0' dy='2' in='shadowSpreadOuter1' result='shadowOffsetOuter1'%3E%3C/feOffset%3E%3CfeGaussianBlur stdDeviation='85' in='shadowOffsetOuter1' result='shadowBlurOuter1'%3E%3C/feGaussianBlur%3E%3CfeComposite in='shadowBlurOuter1' in2='SourceAlpha' operator='out' result='shadowBlurOuter1'%3E%3C/feComposite%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.509312726 0' type='matrix' in='shadowBlurOuter1'%3E%3C/feColorMatrix%3E%3C/filter%3E%3Cpath d='M2175,1650 C2139,1547 2119,1484 2031,1402 C1979.23776,1353.76701 1883.91058,1305.14275 1786,1322 C1671.91058,1341.64275 1561,1428 1531,1486 C1497,1779.33333 1489.33333,2386.66667 1508,3308 C1502.39641,3373.28247 1523.72975,3425.94914 1572,3466 C1620.27025,3506.05086 1706.60359,3530.05086 1831,3538 C2173.83443,2604.07258 2288.5011,1974.73925 2175,1650 Z' id='path-16'%3E%3C/path%3E%3Cfilter x='-28.2%25' y='-9.1%25' width='156.3%25' height='118.3%25' filterUnits='objectBoundingBox' id='filter-17'%3E%3CfeMorphology radius='17.5' operator='dilate' in='SourceAlpha' result='shadowSpreadOuter1'%3E%3C/feMorphology%3E%3CfeOffset dx='0' dy='2' in='shadowSpreadOuter1' result='shadowOffsetOuter1'%3E%3C/feOffset%3E%3CfeGaussianBlur stdDeviation='50.5' in='shadowOffsetOuter1' result='shadowBlurOuter1'%3E%3C/feGaussianBlur%3E%3CfeComposite in='shadowBlurOuter1' in2='SourceAlpha' operator='out' result='shadowBlurOuter1'%3E%3C/feComposite%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0' type='matrix' in='shadowBlurOuter1'%3E%3C/feColorMatrix%3E%3C/filter%3E%3Cpath d='M3494,1673 C3551.04079,1673 3646.76566,1734.25463 3698.06885,1864.87129 C3719.36304,1919.08576 3703.76864,2032.21014 3676.28964,2093.66225 C3656.93034,2136.95603 3636.36109,2169.25985 3614.58188,2190.57371 C3614.58188,2865.95663 3605.76648,3339.85698 3588.13569,3612.27475 C3580.70603,3727.07238 3489.96704,3774.17861 3355.82411,3781.12048 C3221.68117,3788.06235 3112.10436,3755.14421 3086.17673,3638.25101 C2946.01983,3006.36191 3246.9178,2389.09119 3494,1673 Z' id='path-18'%3E%3C/path%3E%3Cfilter x='-59.4%25' y='-16.5%25' width='218.6%25' height='137.1%25' filterUnits='objectBoundingBox' id='filter-19'%3E%3CfeMorphology radius='44.5' operator='dilate' in='SourceAlpha' result='shadowSpreadOuter1'%3E%3C/feMorphology%3E%3CfeOffset dx='0' dy='44' in='shadowSpreadOuter1' result='shadowOffsetOuter1'%3E%3C/feOffset%3E%3CfeGaussianBlur stdDeviation='136.5' in='shadowOffsetOuter1' result='shadowBlurOuter1'%3E%3C/feGaussianBlur%3E%3CfeComposite in='shadowBlurOuter1' in2='SourceAlpha' operator='out' result='shadowBlurOuter1'%3E%3C/feComposite%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.509312726 0' type='matrix' in='shadowBlurOuter1'%3E%3C/feColorMatrix%3E%3C/filter%3E%3Cpath d='M3070.756,2725.88823 C2931.781,2742.49313 2824.168,2627.11127 2828.577,2549.37419 L2868.94,2089.61637 L2473,2173 L3004,1421.79204 C3194.456,1359.7 3342,1356 3444,1496 C3546,1636 3476,1631 3444,1693 C3394.53319,1788.84195 3270.11852,2133.13802 3070.756,2725.88823 Z' id='path-20'%3E%3C/path%3E%3Cfilter x='-31.6%25' y='-20.6%25' width='159.0%25' height='141.6%25' filterUnits='objectBoundingBox' id='filter-21'%3E%3CfeMorphology radius='17.5' operator='dilate' in='SourceAlpha' result='shadowSpreadOuter1'%3E%3C/feMorphology%3E%3CfeOffset dx='0' dy='2' in='shadowSpreadOuter1' result='shadowOffsetOuter1'%3E%3C/feOffset%3E%3CfeGaussianBlur stdDeviation='127.5' in='shadowOffsetOuter1' result='shadowBlurOuter1'%3E%3C/feGaussianBlur%3E%3CfeComposite in='shadowBlurOuter1' in2='SourceAlpha' operator='out' result='shadowBlurOuter1'%3E%3C/feComposite%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0' type='matrix' in='shadowBlurOuter1'%3E%3C/feColorMatrix%3E%3C/filter%3E%3Cpath d='M1525.64522,3287.27161 C1545.88922,3005.89261 1529.81522,1767.12461 1579.46322,1543.39761 C1629.11022,1319.67061 1963.45822,1320.73161 2087.36722,1543.39761 C2211.27622,1766.06361 2471.99822,2182.15161 2494.90522,2236.39761 C2517.81322,2290.64361 2820.34522,1704.13361 2989.93522,1523.62061 C3159.52522,1343.10861 3375.59322,1454.69261 3414.90522,1543.39761 C3468.72322,1639.82061 3415.39222,1798.52561 3354.32522,1876.79961 C3364.60422,2017.37661 3336.71122,3003.22561 3338.90522,3297.36261 C3341.09922,3591.49961 2878.06422,3620.30161 2868.84522,3333.24061 C2859.62522,3046.17961 2881.32022,2618.45161 2843.90522,2508.03661 C2806.49022,2397.62061 2605.73322,2821.18961 2470.81822,2836.54861 C2335.90322,2851.90761 2044.76022,2342.98961 2041.39822,2508.03661 C2038.03622,2673.08261 1998.04322,3068.15761 1983.09522,3333.24061 C1968.14722,3598.32461 1505.40122,3568.65061 1525.64522,3287.27161 Z' id='path-22'%3E%3C/path%3E%3Cfilter x='-5.2%25' y='-4.6%25' width='110.5%25' height='109.3%25' filterUnits='objectBoundingBox' id='filter-23'%3E%3CfeMorphology radius='68' operator='erode' in='SourceAlpha' result='shadowSpreadInner1'%3E%3C/feMorphology%3E%3CfeGaussianBlur stdDeviation='60' in='shadowSpreadInner1' result='shadowBlurInner1'%3E%3C/feGaussianBlur%3E%3CfeOffset dx='-12' dy='1' in='shadowBlurInner1' result='shadowOffsetInner1'%3E%3C/feOffset%3E%3CfeComposite in='shadowOffsetInner1' in2='SourceAlpha' operator='arithmetic' k2='-1' k3='1' result='shadowInnerInner1'%3E%3C/feComposite%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0' type='matrix' in='shadowInnerInner1'%3E%3C/feColorMatrix%3E%3C/filter%3E%3C/defs%3E%3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E%3Cpath d='M162.084,2627.329 C158.202,1275.698 1252.404,175.194 2604.035,171.312 C3955.666,167.431 5056.171,1261.633 5060.052,2613.264 C5063.933,3964.895 3969.731,5065.399 2618.1,5069.28 C1266.469,5073.162 165.965,3978.96 162.084,2627.329 Z' id='Shape' fill='%23B35B09' fill-rule='nonzero'%3E%3C/path%3E%3Cg id='Oval' fill-rule='nonzero'%3E%3Cuse fill='black' fill-opacity='1' filter='url(%23filter-2)' xlink:href='%23path-1'%3E%3C/use%3E%3Cuse fill='%23E39714' xlink:href='%23path-1'%3E%3C/use%3E%3C/g%3E%3Cg id='Shape'%3E%3Cuse fill='black' fill-opacity='1' filter='url(%23filter-5)' xlink:href='%23path-4'%3E%3C/use%3E%3Cuse fill='url(%23linearGradient-3)' fill-rule='evenodd' xlink:href='%23path-4'%3E%3C/use%3E%3C/g%3E%3Cpath d='M756.035,2611.865 C756.035,1585.572 1589.255,752.352 2615.548,752.352 C3641.842,752.352 4475.062,1585.572 4475.062,2611.865 C4475.062,3638.159 3641.842,4471.379 2615.548,4471.379 C1589.255,4471.379 756.035,3638.159 756.035,2611.865 Z' id='Shape' fill='%23FCDB34'%3E%3C/path%3E%3Ccircle id='Oval' fill='%23FCDB34' fill-rule='nonzero' cx='2615.54818' cy='2615.78936' r='2013.25821'%3E%3C/circle%3E%3Cg id='Oval' fill-rule='nonzero'%3E%3Cuse fill='%23EE9808' xlink:href='%23path-6'%3E%3C/use%3E%3Cuse fill='black' fill-opacity='1' filter='url(%23filter-7)' xlink:href='%23path-6'%3E%3C/use%3E%3C/g%3E%3Cg id='Path-3' fill-rule='nonzero'%3E%3Cuse fill='black' fill-opacity='1' filter='url(%23filter-9)' xlink:href='%23path-8'%3E%3C/use%3E%3Cuse stroke='%23979797' stroke-width='1' fill='%23D8D8D8' xlink:href='%23path-8'%3E%3C/use%3E%3C/g%3E%3Cg id='Path-5' fill-rule='nonzero'%3E%3Cuse fill='black' fill-opacity='1' filter='url(%23filter-11)' xlink:href='%23path-10'%3E%3C/use%3E%3Cuse stroke='%23979797' stroke-width='1' fill='%23D8D8D8' xlink:href='%23path-10'%3E%3C/use%3E%3C/g%3E%3Cg id='Path-5' fill-rule='nonzero'%3E%3Cuse fill='black' fill-opacity='1' filter='url(%23filter-13)' xlink:href='%23path-12'%3E%3C/use%3E%3Cuse stroke='%23979797' stroke-width='1' fill='%23D8D8D8' xlink:href='%23path-12'%3E%3C/use%3E%3C/g%3E%3Cg id='Path-2' fill-rule='nonzero'%3E%3Cuse fill='black' fill-opacity='1' filter='url(%23filter-15)' xlink:href='%23path-14'%3E%3C/use%3E%3Cuse stroke='%23979797' stroke-width='1' fill='%23D8D8D8' xlink:href='%23path-14'%3E%3C/use%3E%3C/g%3E%3Cg id='Path-4' fill-rule='nonzero'%3E%3Cuse fill='black' fill-opacity='1' filter='url(%23filter-17)' xlink:href='%23path-16'%3E%3C/use%3E%3Cuse stroke='%23979797' stroke-width='1' fill='%23D8D8D8' xlink:href='%23path-16'%3E%3C/use%3E%3C/g%3E%3Cg id='Path-2' fill-rule='nonzero'%3E%3Cuse fill='black' fill-opacity='1' filter='url(%23filter-19)' xlink:href='%23path-18'%3E%3C/use%3E%3Cuse stroke='%23979797' stroke-width='1' fill='%23D8D8D8' xlink:href='%23path-18'%3E%3C/use%3E%3C/g%3E%3Cg id='Shape' stroke-linecap='square' fill-rule='nonzero'%3E%3Cuse fill='black' fill-opacity='1' filter='url(%23filter-21)' xlink:href='%23path-20'%3E%3C/use%3E%3Cuse stroke='%23000000' stroke-width='1' fill='%23FFFFFF' xlink:href='%23path-20'%3E%3C/use%3E%3C/g%3E%3Cpath d='M1801.556,3534.532 C1801.612,3321.453 1810.249,1977.948 1832.754,1813.221 C1855.26,1648.494 2208.999,1548.091 2334.086,1788.477 C2459.173,2028.864 2691.306,2429.676 2723.533,2461.94 C2755.759,2494.204 3046.002,1961.683 3208.727,1788.477 C3371.453,1615.271 3600.258,1728.107 3637.979,1813.221 C3714.744,1911.89 3653.541,2079.15 3594.946,2154.256 C3590.855,2289.149 3576.436,3274.636 3575.582,3543.139 C3574.727,3811.641 3120.385,3835.829 3097.918,3582.944 C3075.451,3330.059 3076.398,2904.648 3076.401,2788.989 C3076.405,2673.331 2852.987,3099.149 2723.533,3113.887 C2594.078,3128.624 2337.312,2630.623 2334.086,2788.989 C2330.86,2947.355 2310.963,3364.413 2289.978,3572.186 C2268.992,3779.958 1801.5,3747.612 1801.556,3534.532 Z' id='Shape' stroke='%23FCDB34' stroke-width='99' fill='%23FCDB34' fill-rule='nonzero' stroke-linecap='square'%3E%3C/path%3E%3Cg id='Shape' fill-rule='nonzero'%3E%3Cuse fill='%23EE9C0A' xlink:href='%23path-22'%3E%3C/use%3E%3Cuse fill='black' fill-opacity='1' filter='url(%23filter-23)' xlink:href='%23path-22'%3E%3C/use%3E%3C/g%3E%3Cpath d='M1524.619,3322.147 C1524.677,3100.079 1533.679,1699.899 1557.134,1528.223 C1580.588,1356.548 1949.25,1251.909 2079.614,1502.436 C2209.977,1752.963 2451.903,2170.683 2485.489,2204.308 C2519.074,2237.933 2821.561,1682.948 2991.151,1502.436 C3160.741,1321.923 3399.198,1439.519 3438.51,1528.223 C3518.514,1631.054 3454.729,1805.37 3393.662,1883.644 C3389.398,2024.228 3374.371,3051.287 3373.481,3331.116 C3372.59,3610.945 2899.082,3636.153 2875.667,3372.601 C2852.252,3109.048 2853.24,2665.691 2853.243,2545.154 C2853.246,2424.616 2620.404,2868.397 2485.489,2883.757 C2350.574,2899.116 2082.976,2380.107 2079.614,2545.154 C2076.252,2710.2 2055.516,3144.852 2033.644,3361.389 C2011.773,3577.926 1524.56,3544.215 1524.619,3322.147 Z' id='Shape' stroke='%23FCDB34' stroke-width='99' stroke-linecap='square'%3E%3C/path%3E%3Cpath d='M1524.619,3322.147 C1524.677,3100.079 1533.679,1699.899 1557.134,1528.223 C1580.588,1356.548 1949.25,1251.909 2079.614,1502.436 C2209.977,1752.963 2451.903,2170.683 2485.489,2204.308 C2519.074,2237.933 2821.561,1682.948 2991.151,1502.436 C3160.741,1321.923 3399.198,1439.519 3438.51,1528.223 C3518.514,1631.054 3454.729,1805.37 3393.662,1883.644 C3389.398,2024.228 3374.371,3051.287 3373.481,3331.116 C3372.59,3610.945 2899.082,3636.153 2875.667,3372.601 C2852.252,3109.048 2853.24,2665.691 2853.243,2545.154 C2853.246,2424.616 2620.404,2868.397 2485.489,2883.757 C2350.574,2899.116 2082.976,2380.107 2079.614,2545.154 C2076.252,2710.2 2055.516,3144.852 2033.644,3361.389 C2011.773,3577.926 1524.56,3544.215 1524.619,3322.147 Z' id='Shape' stroke='%23FCDB34' stroke-width='99' stroke-linecap='square'%3E%3C/path%3E%3C/g%3E%3C/svg%3E", + "reference": null, + "reference_hash": null, + "decimals": 8 + }, + "nvc.tkn.near": { + "spec": "ft-1.0.0", + "name": "nVCELKA", + "symbol": "NVC", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "testing-stuff.staderlabs-test.near": { + "spec": "ft-1.0.0", + "name": "NearX", + "symbol": "NearX", + "icon": "data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M24 12C24 18.6274 18.6274 24 12 24C5.37258 24 0 18.6274 0 12C0 5.37258 5.37258 0 12 0C18.6274 0 24 5.37258 24 12ZM17.1421 21.3847L21.3848 17.1421L19.3669 15.1243C18.5576 17.0302 17.0303 18.5576 15.1243 19.3669L17.1421 21.3847ZM9.4329 19.5792C7.45318 18.9089 5.82112 17.4847 4.87847 15.6484L3.24263 17.2842L7.48527 21.5269L9.4329 19.5792ZM4.63307 8.87568C5.4424 6.96973 6.96977 5.44237 8.87573 4.63305L7.24263 2.99995L2.99999 7.24259L4.63307 8.87568ZM15.6484 4.87847L17.3848 3.14209L21.6274 7.38473L19.5792 9.4329C18.9089 7.45318 17.4847 5.82112 15.6484 4.87847Z' fill='%232FA8AF'/%3E%3Cpath d='M8.00119 11.9921C8.00119 11.0268 8.00119 10.0615 8.00119 9.09612C8.00119 8.50505 8.16497 8.1743 8.56285 8.05781C8.97778 7.93628 9.40619 7.97917 9.79565 8.45228C11.3533 10.3447 12.9343 12.218 14.5092 14.0959C14.5692 14.1676 14.6117 14.3122 14.734 14.2626C14.8496 14.2157 14.7858 14.0805 14.786 13.9878C14.7904 12.6326 14.7898 11.2774 14.7868 9.92226C14.7868 9.83668 14.838 9.7162 14.7271 9.67372C14.6401 9.64029 14.5824 9.74185 14.522 9.79358C14.0492 10.1981 13.5804 10.6073 13.1088 11.0133C13.0208 11.089 12.9332 11.2118 12.8002 11.1012C12.6657 10.9894 12.7696 10.8872 12.8364 10.7881C13.3547 10.0186 13.8728 9.24898 14.3909 8.47919C14.6656 8.07085 15.0079 7.92282 15.4056 8.04141C15.786 8.15475 15.9986 8.48592 15.9992 8.97668C16.0007 10.0905 15.9996 11.2045 15.9996 12.3183C15.9996 13.2094 16.0003 14.1005 15.9994 14.9916C15.999 15.4826 15.8137 15.798 15.4512 15.9324C15.0256 16.0901 14.5767 15.9683 14.2734 15.6058C12.6823 13.705 11.0924 11.8029 9.50198 9.90144C9.46029 9.85161 9.42303 9.7961 9.37377 9.75489C9.28998 9.68487 9.21967 9.68108 9.21314 9.81797C9.20999 9.88273 9.21188 9.94791 9.21188 10.0129C9.21188 11.3496 9.21062 12.6862 9.2142 14.0227C9.21441 14.1186 9.15609 14.2557 9.26114 14.3038C9.38093 14.3587 9.45061 14.2178 9.52998 14.1503C9.98259 13.7651 10.4291 13.3728 10.8805 12.9859C10.9729 12.9066 11.0626 12.7651 11.208 12.8973C11.3402 13.0176 11.2213 13.1196 11.159 13.2127C10.6323 13.9989 10.1032 14.7837 9.57145 15.5663C9.32788 15.9248 8.9881 16.056 8.61085 15.9488C8.23739 15.8428 8.00498 15.5246 8.00287 15.0827C7.99761 14.0523 8.00119 13.022 8.00119 11.9917V11.9921Z' fill='white'/%3E%3C/svg%3E%0A", + "reference": "https://near.staderlabs.com", + "reference_hash": null, + "decimals": 24 + }, + "pixeltoken.near": { + "spec": "ft-1.0.0", + "name": "Pixeltoken", + "symbol": "PXT", + "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAANdJREFUWIXll70RwjAMhWUuNGwARVgEmuyQJRgo7AA7uGESGioaGlpTcK+w7nR+gcIyfJ1zys/7dHKSsO53SSqyqHlzEZFu7gm364Wq22z3VF07BpB8CANXn971JRP+Dejk8fSgLoz6kgm/Btjk58MqW4/TM6svmfBrQIOkSAiO92W2Hmc+gF8D6BV6h17qhOxUWPg18C16OizaN2AlxXTEFEWkxZ2QRe8DoJQctG8AIDH4vS8iFjY5aM8Au8Ox+DdgvRUBO+8W/g0AbUIf/5TqBsLf/x2/ADJHSOenTxC2AAAAAElFTkSuQmCC", + "reference": "", + "reference_hash": "", + "decimals": 6 + }, + "nearpunk.tkn.near": { + "spec": "ft-1.0.0", + "name": "NEARPUNK", + "symbol": "NEARPUNK", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "flct.tkn.near": { + "spec": "ft-1.0.0", + "name": "Falcon Token", + "symbol": "FLCT", + "icon": "data:image/png;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 0 + }, + "0d8775f648430679a709e98d2b0cb6250d2887ef.factory.bridge.near": { + "spec": "ft-1.0.0", + "name": "Basic Attention Token", + "symbol": "BAT", + "icon": "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 2000 1719' width='2500' height='2500'%3E%3Cpath fill='%23662d91' d='M2000 1716.64l-995.21-569.86L0 1719l2000-2.36z'/%3E%3Cpath fill='%239e1f63' d='M1005.11 0l-.32 1146.78L2000 1716.64 1005.11 0z'/%3E%3Cpath fill='%23ff5000' d='M0 1719l1004.79-572.22L1005.11 0 0 1719z'/%3E%3Cpath fill='%23fff' stroke='%23ff5000' stroke-miterlimit='10' stroke-width='25' d='M1002.75 695.67L591.9 1381.92h823.54l-412.69-686.25z'/%3E%3C/svg%3E", + "reference": "", + "reference_hash": "", + "decimals": 18 + }, + "farm.berryclub.ek.near": { + "spec": "ft-1.0.0", + "name": "Cucumber", + "symbol": "CUCUMBER", + "icon": "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='256' height='256'%3E%3Cdefs%3E%3Ctext id='A' x='50' y='180' font-size='180'%3E🥒%3C/text%3E%3C/defs%3E%3Cuse xlink:href='%23A'/%3E%3C/svg%3E%0A", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "metacoin.tkn.near": { + "spec": "ft-1.0.0", + "name": "Metacoin", + "symbol": "METACOIN", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "wafi.tkn.near": { + "spec": "ft-1.0.0", + "name": "Water & Fire Token", + "symbol": "WAFI", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 10 + }, + "ft.nekotoken.near": { + "spec": "ft-1.0.0", + "name": "NEKO(OLD)", + "symbol": "NEKO(OLD)", + "icon": "data:image/png;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 0 + }, + "ctzn.tkn.near": { + "spec": "ft-1.0.0", + "name": "Citizen Token", + "symbol": "CTZN", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "bones.tkn.near": { + "spec": "ft-1.0.0", + "name": "Chicken Bones", + "symbol": "bones", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "gear.enleap.near": { + "spec": "ft-1.0.0", + "name": "GEAR", + "symbol": "GEAR", + "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAaQAAAGaCAMAAAB34sfaAAAC+lBMVEUAAAAEAACvawoGAAAAAAIAAAP/yHsBAAAAAQACAAABAAUAAgAFAADckCIIAAAEAAMCAAL/yn0AAQUUAQAYAADakSH+s0cAAQcSAQDcjyPakCOvawbupT4QAAAABACtawkAAwMWAQD/7tXdkB/djyIVAACsaw0MAQD/8NYaAAD+79WwagmsbAXZkCgEAAWsbAqobBGvagvrpkT+8NIIAAX/yH3/yXn7y33/yXuwagudbSqsaxL/7dj9y3oBAQv/yIH/x3n+ynb+79j/7dD+yXn6tFLrpj/gjiP7yoH78Nn/yXbmpknVkif78dX+yX/djij9yH377tz/7tLdkRr+7NfZqGOzagPHk03akh3/xoD/xX3/tEv/7twFAQmzaAz/sUX48N7pt23npk36yYX8sVOzaAgEBACcbi/bqWf/sEz/7NSpaxb+8M7XkS3+7tTMkUkcAQD3tFLfjx38x4HEk0j98ODbkirrtW/np0XuzZbwypj/zIGobgrZkST9tEv/xnWfay8JBAD0yprWlCH+x4X/zH2wag/VkC3ikB7/7MP3yozjjSKsaRf6zHXSkiz4tUzaji76yHj47+PJlEYgAQD/7M0GBwavaBH/8dOZbCr/6r/ZjyHgjSjyzJKyawf+tEDclSbquHG7eBSwaAKwbw3tpzjWkTL3yX6jbCj5tUSkbRfzyoj8skjvtGzotXP/89rikyf/yXL1yI/Ykxn3zIb+xHnBdhLzzpmYbzTnqD6YcCsNAwmrZwXVjiCrejXyo0KebSLKkVPtpEnszaD4s1jWjSf97MrotmgHBBD99ecPBQHbp2okAQCkcDPZih/ClU/+zYe2ehvNkj7fji/669H37dmlaA/5zJfsyZDSl0e3ZwrwtHTPjy7/xW3GkD6zaRXVqmqmZwbiuXTcixvUkTjOmFHRjxuvcRm2bwvpuH3gqVvfuocqAgAZBwCqekC5lV++dh6bd0CQcUP3w3LroTzvtlTytl/2z6T0q0TBmGjelDjOq33916CIbkgIeSHuAACyN0lEQVR42uy9D1SbZZo+zOub8OZN0iQNaRNqg4SCARyiIwnBkT8h0BawhIA4FSRTEIa1DEUo0lrYwlLpaHGxBQvbaWVsz6xmutC/A6fjr9tvdqTSFh3tUdjWU/Vz64y71emZ8ztddb7fznfOd93PG/6Fjg5qlc9yx9LahpC81/s8z/3nuq87JGTBFmzBFmzBFmzBFmzBFmzBFmzBFmzBFmzBFmzBFmzBFmzBFmzBFmzBFmzBFmzBFmzBFmzBFmzBFmzBFmzBFmzBFmzBFmzBFmzBFmzBvi6TTf1JtnA15qHpdHKZXCaTCYIQIpfr9TLF3GzhCn4jICnlcjkDSZABJLkwN1u4gt80SEBJNgeAsAAXtsdvHiTZXDBaAOmbMoaQbOJyC4JqDobvlS9cwW8YJEEURVz6z30E4KFHJB4LIH0zIAkh7DSCxyCKHIc/fe5DMvZnsoXt7psFSS6InJpXz824BffuGwEJe5woyOWRMkFUd3cXfJHlzPi/sgWUvjmQVAhjCaRGd+HfYlH0ICtQL4D0zYDEBUDi+O6Couo52QJI3whIzF0QWa6B03QXpETNyRZA+oZA4tQMJD2BVOqunZMVLJxJ3yxIKrWmsdQdXzuXxwJI3yBIqgmQUmqj/oZHijvwWNjuvrKxLDXLJkxLWstl03PX7EwiHxyHEqcpSKmuhTuAfYx9LSKrnra7FRUF/rKIPa+66DogUXwrsMqUlGmazAuGLNSrJnGRYJlI82hlPqNR2ctzMK2WE0NkaT5eTekflaDTAR1REFAUEqlQIWoK3ImZmdVRsXnxUVHVtXk57oLGsSNjI3syM8fG8vLycnLc7rHSgqKi0qLMnszazNrZIMnkSvxUTvDJexEg91aJWpsNP1erVKJUJVMqZdK9g5+t0y2AJIHECTaf0WcX1bxknEKWlsardSEEklIpxUgKmQy/yeQ6TUEtA8mdk1NaWlpQVlbWOH5uZMeOHXtH9u4YGTlSNl4w3niu+1zjeGlmTWZiYVRKdzBIcqVSR6+q9Nlkxl5RreY1Gg2Pn6iUo544HSTlzbuspK0sUDNFOq5KlPWK/LmyshxccnxR6dPSdKJcLmWxKV83EyRsdEUp7pwCs9WKa6vRWK3DfRePd/T7/ReHzWaNpkoUqjj+XEFiTWJ8bW1KYzBIOp1Nh1S63GdU9Crt5xrzxunnlnUjFgtRhOiUE8DIbuY6R+C8kUDCcYDLJvJ82XieZDkqeZpRxBoKgBS8kuCBp6SUprgLrBoNNkisA9MW//mG8+mtGRXb4qy8uqqqSlXFNRYRSPHu0lkgyeU6dgMoZSqFUSwby0tkP7cMzomgUIjySWhuZpTYNoeDRjof9LhgIb3caFlOPC5pTk5eTlUE/kqhNMrpTOKw/wWB5HYTSPFlvJ4uNXYu05ZBf8NQcWhXRZNJIyrwxF7OWlCdmZmYl1MwCyRFZKRUzFCrFVWy3nFAFB+fmJhXpuF0VJknkCa5Efiz7uYFidYH3dV6fWQvLjSvKSiKhd9cWuAu4FVwFASlUYl/FETtLJBq493uoqLCHFGuUNErtZlPYCWlOzzO801hePJJzq6zW0szMzNr8saRYZ0FEgDCL/Wopgq/j4/g5Wr3MJCUSolHAWhU0noHRjcvSCwbJzCQ9KoIXS+vaTxSG4WzJiWlQMNzWGi+NCX+LUIVMutMik/Mi6+u7nHzSgHg2rHdbWtv8HR1ZWf7+0waZZrNbvNpNaWF1QCpoKB0lncnV8FpkKtxlml6lULOnmp47TU1AEkrbbFw+WRsP1TQe1UqZTcxSBzz8ggklCA01vEiuNSIbtwASSSQfEq90Xg9kBJr8hKrM3vieaVKJG+Qt2xrT/cCpPMVF8PUaWeNPrnS1lbUU1hIIM0OZnWcWoQXzlutomDkiwqrEVHV1CSWaWxpabSDyqRiIf7E3PWbFyTaVmgp6bC36NOMSi22sahMhJ5RtTlqQaFSiTa7VmZMU6l4WlcAST7l3cEfwIGTI6oiVAo8VWW96PF6vM72iooTVlxoY0REhKpqnE4agDQrThLg6+tkkRERkUJEhFJdWphZiI2RQPLhe5XYZCMJJhl2RGEBJHYuCSGRen2ajdd0NyKXUx0VtSdHHRkZGVFlt1s1RiNA0gSBhBC2FoEscnJsS4qIqBq92AWQms+3V5ww+2g1ACWAlAOXzZ0yKwsu2DVaLbyHSL1MFRGpKahG8SlzYiUBJJxLOjniWvJb8GZvUpAmrxZAgtsLs9t5a0FBbG1UitsdWyAajXqFiACzDdtdhECH13SQUqoRyqaUlnZraNdSGvWcqS+72TOUjA0PZ5LdZzup5jSa8caCnNqxsbHM8eDtThRtOrXgQwQtcrxm/Aglk3AmYZu12eArcm1tai2RMOkeuMlBQrIOELVpNKNtnIbXWBvdUYlRUXC03CZEqaMmQ5zB2qvEriQEg1RE7gXSDeaAhVkueD2u0Nbti70ddRaz2RJjCDOYS+HN12IDHRsPzoL36rQak9lkNZnDTBbzkbz4WjfOucQchMZtZGqcWTa5Ty672UEiNo8Op0N3d/d43pGcIwU5YzU1NVTvzhzZdrypadu2Cxeahq12VaSgCwapFJFsbVRRz/AJehaet63B4UoeCh0KdS3u7ztx4mJf//GLW/ZiB8NxU5sTzHHAZdeYh/suXLi45eK2puFMBMf4qfjpeePjFFCPd59rU+t8Sp8EkvymBYn8JxTD2zTdZY3umpqxMbqXJZB69ra7vBUNDSXF55ti7DJZb/BKcpeWYtElVu/o9+NZQ0ND5yuKXa2triFsealdTr/f2ZW02Nm/d0cNknw9hTndYhBIaUpNTJ+z2Ov0p7e3N9WMJdamRNGpRGkH+lqGiMnuQ5gm+Xc3J0ZwFsjzRqTKI8NWWlRbTZtX0Vgitruo6p69HZ6KwYrsZEdFk8WuU4jBINWyK1pTvWMwNb09O7u52en1JmVktA51+b2pqV3e9OwGR4n/4ggyCdU9PSN5ZcEg6fW8ua8rvb3Z6Ske6t9RUxOFskZ1JrZad15iPLLqZRpe6zOmKZnrcLOChKsujyRaSRXyDG46Y1BZwPKICoCUPQiQXK7sphg+UiFqWcYhBCwHUYbUREEt85gBUn+qpyE72+ncnrS4KyPDldzs93q2p4aWNKSnF58/PlKbhzOpp4dAkgVuDVZBkqfpq8wnnO0NfqenZHH/3pGaqCjGbYHXghMxJSVn3ErJB2VgKd2cpmNs7ohIvVHk8mqQZSglV2AMFSBcqczMvcez/f4u19AQQPKFRPp8Gk7RK/BWXhC0aoHDSoqKothmbz/8btji5NDQ0Kys0FD8OTk5OdThoKCpf28UUhOJqAuWccgPwklR21CbQO7b55OLYRed5xu8ySXe5n6cXVGZFKEhRIsHREUpeeNtaoUiEj4mvU/x5qzr2sQQRRUiHKNSx+WN1AKe2tixahw1SM+gdLfjOJZHV+vQkPOE2Rah8tl4PjKySq3hQwTEN2JZCrGFqgFSh8fjDXWFEkYzzBG6OAsgFRYiaxpVFFXAoaKrQgFebrTp8Ho+m4439fmzPUMuR7P/Io6uWgmkRATJ9OLuMl5EVi/SqI9QVCmqtDel06C02XqF3pDetDRt23hi0Vjp2J4RXKkibHh74ArvON6Q7Ux1uUL9W8y9EZQXYsGtgOtms8lU3Y1zBUmtlAsq1BYjI3V4PQXS3MLoRaff0zxUMnS+b6Q6Np5clhTESjU4FQsL87qtJ4Uq2dmzSrE3hCqBNyNIRqNPsONcUtq0mpx4ONR7RvCoxYmAPE5N3o4Oj9OfmuXwDF60InFTJXC9QCkSqYVIpU2l6i6dK0i8VkbFK7kxkuUnBJ22zXSiouI8dtTihgs9Ke68vET8dECFnS8qE/6glW8DpcKIqrCgTFPenCD5dG18G1KjSGDnxOIsyKwZqRmpRVWBEjk5Ix0OLxy24vaOYctJoVdrRxpHb9QjmRYpFyMichKj5giShqVylWln006eVLHX01iaKioaXK2517z9e8cKynLyiEHOgoDCzMSibo1VY6W3x/HIfhhvSpB8Z5FpQNkbaWjNEZSQ3IVYSXnnGssk6zkugZTuP2Ewm61mi8Fi4nvlSsZgVUXk1cwVJF4CyZh2FpkMer0wi+ECQFqc25rk7NhTWtaN2nl3d2NeItvuEt3ngBHRHjRtXJvyJgXJJp47V9bYWID/CuB/wbWLHYs9Il0X8EFMfekep9flyt3u/2x4y5YTF5uahoftbRqbEelPlYp5d3MDSScTKFvey0uvt+XilhN+L2X7tvvPnzBZWS8NbpoCYkSkwMcbayRDvDSOQDjy5gyUdG1l4+NHxtxF7iO1NSOFUaVj7rGcglFilSAYUpu3tWcDpNZj726v6Bj0+xucFf3DJsSXRiSpZWJBVNScHQccKwo44VeH+/F6Tqe/35/V6vU0hzb7B7eYNCzHi5SsVJhPqU2MLSoYix1D8ulIWRvS5TelxoDIlYFWUJuI5DOOgcxqxiop02hsWh3iXNHEQArFUnK1t3scJUOu0IptFivS20abTMHlFM4ZJLnk3vGmbRXnvQ5XbobT42oN9bqSupz9W6wilcvlqGiVUVUeacFEvLPEQmT0wOrjEUffjCAJnBogwdXNxGXEUV2Nu9dd0E2FAvDhBK2pCS641xGK69jeDoyGXK6GbWEa3g4Ko6jg3F8OJFSv+JhtDeklJUOtuQ6Hy+VKdiV1AqRRkZrblazsyLhitYUACASJTHx/jka8iUGKBwU4s5CiEtTMq6Pic8p4tVZJJXLOzEDyhmItFRcDq1BvQ0WTGYxWnU4mCurSojnHSSjiEc9Oa9rW4PE6hlpdeHVXVlIrVtJgk0mN2FqlRzm9ID4zE8unlu6CwsJqFAPjC25akLCx5GFnQe0uCtc7BQyDPQQSh/N9GkjJyVmU9PGmOrMrKrZY9QoV9kJUNxpTvgRIyP5FRipNfU5nl7erpKShwZuFlGxSlrNimwkhGxCUCTzYlCAmJ8bT26IMBLjMBRrdzdkYLYGEnCoVYpErK6rO3IP6AM9pZVSpVQMk5ORSU1PpixPHPIHUhjwaA4mbezCrZlSWSL3S3OfMht/gbWjI9ngBUmhXdgU2Ug51eL1cDIAUHx/F1ioR/2MpEL7JQSp0T4LEVpKSmOFqc5+EUerixVlZhFJ2dnZTG9gOIgd6uNg999zdFEhdeDmnx+NBdjAjd6jEm92+LYbISdThjvw6tjsCiRm9PwbSzVZHkugnak1OHhESC2uoJhqFXS8KIGm08BtAG0byEyAlZyUnO0JzcXx0wdML7bOmoV+WQFKVuWu/JEg20/Euj3O7Mysr2esESCXFXqwkOPdo5IDjQEWQ6iKwM+kdFQKkwprEAo1WvGnwIdIuLjKpKnBqDYEUK4E02cdfZjWbGGPBtPs4O5BQc3C5Wl0oQrhcQ8fNaXLkwBlIcDpYsWIHgeT9KyClAiRgFE85bVGSUdHbYjpaUcZI7XIBJU9WUkm619lwvI79VCt+cCO9ke7usgKESgCpOpHIKRoeb5ljtKaQ7/KiAg0ex7bAlaF3iOAooExqImh2mXtyiK2K1aPmRoe3bdvW1NfX13S8wjt5vV3syxCBpI9UKiNVIRRj5cXWxiPHN5gb6vB6HY5gkDzwsHP9O6LABHeDxlcWoWIgyQIgeZOTkpJQd0LhCf+X3dHXBEoF/hs2oT0KQS0aNfKQHkIlKn5KEIJ6LhBPUZuU+F0FSYG8m7oMLi76ivLIzUWWLAUgYTshQreWE0abKtrTs+kEavAGLQzESsfNxsgIOZ4q8ACpBqmbvIKRilz40t7iYJQc3uLiklz/Xvhp7qLMzLyyKhX1S8jlAMkFep43FCBNvbgDBxQIsHDzTTrK03E4FpHEpTbC+IKC+Cjm5sH7BH/sOw4SiuVKBhJoxG4CifgMM0AyE0geAskTBJKnoqJ9m9UoNc6q+bKcmp4eeGFFAMnhpQs8C6T09pKkir3VVMrDMwuQm9NSWzTOpKx0zyyQcD5RiRcgiUo9Wl8IpLzASsqJZy2dM0D6bhL4dWAGod9SXUYR/XSQKFgESAqZTctAQtWbfK+gi+4dHGzYZoWEA7KvVbymLAccICzJoh0VuV4vMJ31fI8nvTi5fwdSGtXVIz2ZpXDubToJJG8z3PvrgISYLBsgyRlIIjceAAnvlYFUy0BSMpC+o10WIOxiJemmgUQcBRCFa2MbESwq5DKtBFIxrSRP8PaV2ul39plF8ju0PIFEPcvVAGkwI9XZ1ZWaFXQkZXV2OrtS+3egN4yeWNSoRq6CQNKa+rzMH5xpyYjIQhlIIEMoqHMK5x54fYAmPj4AUh6BpGPZpe9o3EQygnq9yAdAIowCILm7NToVA0mUQEJ0NMsRSO7sTCWQROo05rDdEbkIrJEdHYRRZ0ZGUhBIGRJINeB0ASR3t6hC8g5kFE4CqTXY0YCz78hi250MIIkTIEVRYwC1fhYVxRNIUovZdxWkEGIHhQCkvEQGDVERC9mfcrpRNUWHvlYnmhhIyVlZs721LG/6NhOniAB3RQUfcTwnJwc3eeKOfopMnVlBGIUmtbocxcQCSowHqas2vozWMRwXuRq5u+ZQEF2DXXZHcTFzHMDjksuQQGS5xSLcStTOSanxWBZsi7qbAiSwrqnj1c0WUlRmbQGR7sHI13IcQEp3OJKz4FYHX8TQ4vZtYbwINz5SJajhyKPQkZhYQ6wiMFZmPRsglRSn9+/tyUykokNtmYAeCWAkqvEzspFgvQ5I6cUNCGt5ajdHJn4CJMAMjBA25KDlWv3dBklS5xbVUpyEDz0GnwHaC5ljjd2s0DcKUl1YU0Oxx5GUkTvroidnNVdsM1h5GTghvWrNOKqFyCT19Ow9XoFrjppDMEi5Sd7z/v4dIz3E/qmuLdDYYFo1x19t6j/vH3L8FZCakCBCsI2uitHxPBT93LGJNbE5jVAcwGO8G/xw1kb63ZQLpRhQgaIa5ATLGimgbzxXOwbnKXZPbUEZdfnjPw1v/ksD6hLXB8nbfiHOYDGPatAIYT7CRBvIOtI9hNFskLKGPNmD9IwdZCMxUibDfDXmL9ghPSWzlyqCJQ8Didcgw9vGHzlSswcdNmNoQiP2A6r9586JAZBU302QjEa5HDQuLWlakFk17j1j7uqxnsSccbBPusu6z3V377nYgNMoK+M6252juL39AnICTVtONJ3o6+8f7Ge/Br0uShm5Zp9JrSUOV9f5jg56XsXg4GAHEhkXTpxoulBxbXvXUHBclZSbSy6esy+zgL0ZgIIWjxHQAAsTwbwAZYbn2zh+lCOQSLXgOwqSUpmW5rOx3B0YH1brkTyUkwr37CkC26OgABomZeM1x1GMTcrKyJoNEtG7ENB6/H5/uj/bm5WVBccb6fFWFIRcyMPNBgluvAPkCG9XZ5Yr99ix3CyUPbJBmPAkXcu4NjRr5eXmZsGb7x8hhQKcPuPjY4kjidhTx+JzSCkFGFW1iWpBKYEk++6uJJBI0EWnQ7YZbXhEQ0F+tcdd6mZWWnBkRwcqsdcFKbUL6GRnDyHobB5q7kpF0c5B2RxPSYnXW1KCWmvQNyz2NDQUpzecby92OouLQ11JyUQRww7o77rW2dmZQRHsJEJJhBFA6oTTjrI5nO2cRveRkT01oJrFosqFMgbys20iOJVKOYH03SzUsl45tE0q4UHI4OMKdvh5jUWxuBDuI2O1UWMjUfAidvQTSKkZqcmzQOpE3c/f7Fp8bbv3PBLki4dKyABQMQEVnEUKTd7enN0wVNIFALu6kMbDM53O1Kwsr9+ZmgqQkmaDlIX4zNm/A4EBiagU1e6p2VEz1ljkBnVfqfedlVcJbVW4v77DIIWQvgiF69SjAOo8QvqynHFUAiDXVBQLjSb0eo0h6hlytWYBpFkLA94aLjX4KNu7SobS00uGoKrhdISmpiJLB8p4VrATntWV6mymAobL1dnpKXbguHF6s1wo8TUPDaV2SutwGkjIESFP6/R27EWrRg9WU2xUz0hNDTjq7rEyhE7gsOqrQkL0PsYM+y6AFFDfUpCe3MTfkBMuisQ+jVCRZIwI3l1B6VhhDbKkhZQsHamOGtvbkQwCz2IGUvKMR1LSUEk7eF2t6MxLLy5JL6EMX3JWJ84ZZ2pSbkZG1szng73QtZ3Oq9bczk6kGLBMFiehfOjwDqWXJIeWlEzlzSWEKNsHmBhIlJQtHEPfwEgp8hpo5SSMjApVlU5mJOr+5KQfiiqmtIemjWmYp0YrZGJ4B9oslTbwTCEiJ5ODVqjVyiXFaGRZJ4ZMiG3j4ylFAAc58agakK9xYaiEhzIf+CGhuPVnPJKTSorRb+nqQh0dVVpsX6nO1AlLzmJfZzykv0+W/s2bmpWb29qam+vwgNLib3BgsywuATyLF5PLkJHlJUZFKJKyxwESJCfRxlZYO5ZYyAQNy3itECK9bzDRZVS6hKQO4QNGbCThpxS01ACsZDaPk6/BIEH8JUKBzDP2cJy5+sAoHUlnhD2XL4NGJyoJUSkpxG/DBSliICUXO5LggicH2VBoOuKh1GYQUlBsIpdhbkZES5e3AYm+7IoGBxz0klBXbm4yliyOo+T0Boq2EM8CJGrtiKoeqXE35sRShSLnHApRVVPDSZAFFwJC8iQhISPiM+sgnABJNs9BmhIb1FHCn7fbbUq+Da1fiinhTmlPENvAkC+AY4eul6g9yJDNAImd6zOsGZQF/+BgP9xwWHZ2w9ysoqMD31kBnlCXBzmhVFAjsYKwYsHqc+FrejBImfEFcMPx5kDl52xARbr55JTZ04k6Efcf9B5ocSmZjoC03QXGnvz/ASTarBGVK9ooZuVIMrBKoOo1u/8EaecWBcSL3ecKiLF/JL42Fv1jRdU7jiO76mAgBYdJQ94M58Utw1Rfh23p2zY3A91/S9Pwtr6LFzu6kku24wxLzTiWkZHsgTtC+QpvEEhRtWNlgffX3S0oQ3qpe5YtFIKBEvEa1lpQhQySaBOqFCph5oE8b3NzUxDhPFKoIkh1swy9EzlldMtNgcQ+LCQ1gV/bKIAsyHGPTQcpFyAlzbTQZkfXoMFktRoMlhiTaXTU9DdamGSmUevo6KgZ/x93AdyT3GOdzBj1Eg3RGRmLg0CKb0TaV81bRzXqKpShQpQBC0zaEqUOnXGoiLapgVFgO5zESTf/QWJvN0Isy9tTk5MzPoZIQ6R/l6SEoGoKtwLOuNhG/SZML9INNaeZIGXNNO/QUNfxMK3WbrXaaeQLlU7n9FCTCBFJvBqOF1dUDLkoWOqEGwmDJ9g5CyT3eJtQBYFQQKWCNKI4gVFAchmfDZniWLS7jWs4bSSToJqEibLo89jHo0FF5POokKczCo156N1DTQH0QuWU38q2A6gBMVVPoQqX71wONAZnrKTc4DPJcz6764K5TSVAzRMFOZtNH6mby0On0fggugaUDceHkMyDp4CSezGMdldEssEgHSkjnTDUVkQVsiW6aerX7GTlcljFNjH+CCnkpbFSlYSSYt6LGNJewMZKUWSBu62np6jAHVs7bjdKH2FKw1gpF6vkRCcIQUl9nHpgPhckLxznC2bIqmp4JM6o826OE0x5uy9NEFGuMB1PB0gN7Qi32ttxIjkktsPslcTr4BQgN0Jetk49DSO4DQI3Tu8XUmGQoLIbmfhaQMSQuRDzGSTAY0QrML6ScJbQnZNZXQq1kzFKrOgRYzDDFVNQmkhgdTjom/DdObW4NDO3u+TFM8xzvqL9M6tWJfP5IiKQAgRIIXN6IM9hBFtJqTVdKPGjiwwxEcPIhfMoq6sZu95MkFIKeJFuNyVUwo1GaH0oSFevamJGIFcG/ZaUoijUxqw8DljgZJSU11QSkvO08MpCBTnyJkr6JZMBpPHqqMaCorHYRhTr9JIRSGRK7CASaDowFiSQMmecSTPCJK+/or3JIleehVRGhDEtMmKOeRkFRTT00/RXL5Rsv4YUrZf2OsIotXN7szc9GCT3JEhIDivVXC8wqqrC2UPbhF45AVJtaSPP9WLyltLoU7KOXubmzV+QcNGpE8sGbSvtSa0otI3nZfZAoOHI2LimbSJnopJ0HhVyppVPD62mMbY2EMxOuOBgFweVk5rTsZLOpum1PClCVkUEEJ4y4XMfcr0OJaEqFN+tx4eSsoaSIXFTwjACreiatyQ4TgJIOPyo9w+NS0oliOK90PIFSxl/Ra44V0Cl4drCxKJGCIRWKXpP2iCyMrmW5ilI5FxLkZxNZ6dZBsS3iS/MjHWjYXmcZ0RqCmWps1ExARJLT4gAKWoqLRTIOHhnmgOJoCYztcvyInHvOHFuA5vhb1HMporsHT1e0jzk6QL7yOugvg2k18+nNw/N3u4AEhJzJBNOIOn1RrlNpgenSYsw1ibJx0MnrGh8lG+D7jKPv5dhs6f9fP6upMAwDqq7qNFDbrej18edCaWRsdiic1YoIrD5h3RxabfDnY+zScbQRRNMLWUcpkBKcpCq03RrQMFui8VO8gukpm/VzHXyos1O34Uz0LplsMLv3I7ylJ/6nvyD6HMean036fNAQuJRqZf7ZL12OytZIj7PYf3vICE3ak7a7Sg481Ax1JHbJJu/GXIp4YNrPsozfQYqOTe6q91j1MJdylr/WYzOEY1aQQm8gEsuEoOImptBB5ZAKg5NclSg0j3TLl4cpjjWECeZwTKnB4y+yYDgdnh4+LOLfZAJgPVtuTg83HTh/DVk8a6z3SGywzQgBc3KkEGfkEqVE9V/N5P7AGvwHNPkAENDw7VxOptcPo/TQhPZEBH6DJjkAZYAFBiJaTI2htPmXCNrSoCxxSSj0SrkkBPLixhE8cEgdRjMwWap+/hy+YHDZJvPnCkv3zzz8YVG33hp8+GPd8dY0eNCv0ygtEDg07K77i9+53Uch0mQ9DqxVxDaRA6fDSwaGqbBmmqx3UHv4RweqP13d2NKDTm48xkklrgT1Eicgv0EnsCRvFiI2Y4dGSnMjBobd5OCOhp/wMSBYh3akwMgyYjhlgNaOBq9RwASStyOXFfxNjPm5CBToJMMDYA+q+XyJ5+sPH26vv50/c6dO1furFy5snLqy+cbvqP+9OnTlZWnD+y2+nxaipiwILAN+s7aTXUXO7JByfRSqYIpV6JHlDRUWP8E6wbRCb1IkEDjkqRtyNiYJnD6Et1jRSAC5BGdpg0HJkiygGl+xkmCjk00QNOIursM04uoo7yWNCtILJP2bkYCZerDOqKHqiWJQHKUtBijWJ0JEl0NQEpvyKbaXPs2k1YUJVYxGORIO8tlGsPlT1e2rF8/MLB+4OBBfF03sG7qy3r8w1/5RV8Gdu7Et65vqTy9OY73+cAot2Gfxc+w+WxaHlJQHtSeUp2eDoCEGBXdnqUaLoRkwZmDw05cHDzdSDNC/h84uWm0hTRRK5E+a6w7pwzZE7xbBGNQtZqXqwlRuAhFWVz/bhwxpCuIrsZS9MkFQEIXKupnpY00ZgA8Utxy9MEp8y9ijGJUYXVhDQOpIjvj2DFX+7AZu6KIAkeIgimIh8hD1JbDp1uWrl/3/PPr1g0MrAsy/AXDavov+ruBwP+0AMp1z7dUVm6OU9uMotqupZkyOp0Wo61E65bs5CT06HoJJJRmC1NSqt0aNRTcqUlXSwKKlEYgDjq1paeQvCT1wJHEZAoqubT4aimNTCDJiWijnZfunUwqXYYQBTixhuZ4FAIkahIm7jdpX6FXpToFzBs4QIwDSh8DCMjpo6MyS0/Z0UEqdxnHskizAZsdpWD0WpDE1TSfxbK5fmDpunVL8euh9Q8tnW7r132BLaXvfP75pS0rN4eR9qvMbqMGgkg5GmJEeHz+1CTK5DkAEhNTKyqCQjibSiZgMJqcNmfUwEA9TswsrGYOA43njCJRZbY7pqCptFutgp6enmJB1bxsMpPpJ5JzBBJhhL29NIWxBbAZEAJEZCgikHCJpFQsSyTpWEtYDW3vYHYXN2SnZmQ4ofajJReD8b+w2yGFHQGQVg4cXLr04NLnl64PAumL7aGHCKSBlvrDYUQKJ5FPkC0QrPKCqLQOZ6cmFUsgJUogpTQCJHqn6NJF/oRAkovss1FNnWQ4qE0dqqQEEpjt8fGl3aQVgYUkm69sIuS3aBaeXEbTlDG5hVZSACR4D262kLCScCaJLDlE7C5cfdoZOA2tPeh3U5symiqIDwJhDVwZHVJ8cqlAgLtTi5UEh+EgDCCtn4kB1srzn/NYx75DWklxNhwbUMeJRButzcapVRFK67YKb7IDxK+MwR1F8cQeL0KcBM0oXHJkzm1KTK7AG8F82xySgqfNHE1s9IGYDBEUL+MT47GV68hZJyGxSN08BUlOIGFdYOQ165CjvYC2OHizbrCkQAkCbMh0CZTA0+FsxQrRcpi+Qh89kdy7kb0d7VRC8JBEjU0pmywQymiWEm/YXA/b2QInAC4AbP20Xy0Dn/tooe/AtthSv7kOmg3YwkiVnQ3PAvxh29q9lMvzpvaPFMWiBiGtJOLNiDQHEl4RpYTVuJ2iGDmlmk22ANPJLWmZkxdB4S+BxNvSoJ44T8mPNEqH5rZ1Ew8KdyLt1/Q5cgrgvfVk1lCPK92ftIlxEtt4QmMOZ1JtYc/Ijr39g9nU1dzeASEZfroBSmvc4dP15EVX1tevXLly54xH/Rc94IID36Ut9Yd2k2iDmmd1Q2ypVTq7ue5CMXLioDEP9u1A+WEM809TGq0acirwTCQUSNSAKua4/wIgkbiY1BRDIGGrToS8DZSRBJqvgbU3H707gWd8aUo1NNJ4AjRcppQ2QjIzh2LYgh6pBwKdKDGsqE2BpPQ7VbR7qEeCPWELWR+16tcZZprFELf7yuGJwLR8ln1BJFtO4W/5oUOHNl/54+64OIuFyvBkYTExeOXPtlEvALoBhqkJg36NZMawt0fvb/INh2GxS20aI24Kl5jWAe3V5IlHxZpMlhiLpQ6jMjTz0QWH2g+Ch4KJNw2qbk9NoRsJNsqWqHnTcB91N3R0HO9ruo71Yaol/duW4TqwEUBgsI7GfXz48AwQzpQf/vg1JINwFSyGL2FSKgnfu/vjywc2AyxkLc4QtIfOlF/+2GKVgAirG8abGaQmDCbt0IR7Rvot8E7Zhzje10cCiXzgpsyhqjJEknb86bFHyda+8SfTfHTBSU4d2zJ0z6XlX5g5UlNYqrHpdShc6NQYikjqDEiSgjYXsGzpz4MVjEiHYN8/SB/dbsMhIXAx5afp/MGDNqud2N7qPz0ch7wqpSF4Da/mv8i4wEPNHjxlZnkbRtkiJD5dTwmKlpadK2n3HKj/5PKokqV+RczYHHQmo7kJZSYSBssOvEv2G0hhCBBS0ZpRMbjFqguo7yDAJY0kFC72PvbMpvxdL2548Z03LPNxiregLsBJivEqgYO0Fm180D2VQxwDfixnOtHhZ72tcNwaqPJQ7JX+r4Elu6kUAUncwf7hUbTgh6iYkwBcWna2SIajHwdRuQWz+6hrlVSzgmx2cSJk5oNmt9hQPeUs5fUAaGclvPgWHFSUM/rksok8CeqON2+hJF4SmClgtdJ4BaeTMJLea0V2F9pjAiDBLcdJrNPyBBLz+Pa+90xCwq4NCZvWPBvHi/MSJCasQC4pudMk6oQ5evKIiBA43BDrRM8ktZ54vVL7Q0kosYBZ25H0l4gkmcxmiJ5mU3L2uEPAqGVAinDwpWX9yvozFrsNh7gNmZxIzNxTzngEgxJcPo8AMwJldz1nKAdAA8gqwYkHSpWV6yvryw0aUG0jScNrixOlKxcDCcvbuzgV4IDeih4oh0QsQoavgmnvIXaSURNuN4lNwmoYSAkJyxZtfTbOPj9BwvQCEsak4I7SJbUEEuJFONxGgXJjiH/Iuw4FFxE9K6FsngTjAVFKtYQq2V5/kxWhI4InnSYA0sAAW0m4nC2VKzcbkHVD4k+nhHwNpqXPeARTuETVjAeVgQESYlfDofXrKQMhJZbwA9Y/tLO8DtkqaLqrBGsTvLxiB4gPSazvAgJE9M6zcknBspgWWagjHW4g3ikrMlMXMGTfKXga2fvmmoT8/Pzw/A2Pxtnno+MALUdycEpLAyDR6JQCCMyq4JUaVeYTDazji2louJgEyeLFkAtiHSikoIA/O1yOhm2jopoCfK1maiU99BBbSg+1EEhgwCkELM7ISd6dVic9wGSc8ZiwwMoStJjuCNYPRyAtXSdl/5AFXA+4WnZurkPLNNWLoSQRACmJQAJdPCmU3jXo/qi2g5Gcm+uixtD2JjNJTaqkVu08GsRe2LP3vTUbEp5bvTr/ybWG+endlbmJiJbCEo41mSTOhLgBF0mjUepV1hNQj0ZTC8TRqKUuiXFLGEhowcMOksW0zzwACWVonBxyXMqVlQMz0qgDK3G/C3pKzyD81AZvb7IvMJsWtG3I3nCGzZXILGF1Eki0qJ5fWr85jlUjEVhDRZm6BnMZSFj0DCSPN5fAcRTj92O5odAeKO4zUdYqhFJFyPqDgYcBQFhJaxJWP7160zOPWbh54jhMUp6Zl1NAuftAkYXiBpI+APsT/FSZXsROD3SSiIrK+h4ZEyiUoUTtrOBlZ2AMUnvFFjNKoAghRbXlEPlfAwPs8FhPGeyB0wfqrGoavw3PAmnRgH8QKDgh+6yc8Zg0OXsoCSRKv/HIpR882PIQ7aIHqYaBrbT+sIU5hKQkQSBRJ6HTGYptmbY32qXh8KGkz8ACSI5ix3ETOZCoXmoJJHT/ovVs73tPEkhPR695jLy7CfdFulbfCkSRMqIw9VbRvqNFpaWUlBbJZ4gdywM/KDalKC/HrEkzYqcXrJaLg86A3lKSJLyEEhuJAqanh7a+e8zvR04VPQ+DW8wY0Gazmq2asMOnqbxHqQWpardu4NMrr1l4ozSzHJIXs2+az3vISZdfpTx79mTd5U93HlxPLwkHvKWlvn79+tNXrMjLkX+vNV+gxAM8zkF/7rvUUgjBglS8TQjkedloJkk7pXhbGIaralAy9GloHuFYSiw0JZ59ctOm/KNPP7XmD5ZREmPjWSYfXH5Ba/tWUFJEgrnVKzBaBtX8U5AugXxITSLKySifj58rKDsSg/kSpLtQR+Xp4H7JrCS0gzcQd37oQlN/f1/TZ9u2DMchkjXUvbYbpXJWJy8/EEglIFdwpSnMqsXeScz/OU+rlBnl2J6MAMn68eWPrh26dOlQ+eErhw+dOXPg0qVLH181x8TVxVlMo5Zt0CHAnIQtF/9yrRXSn55QapChzpjUCQogO0E7dsfV4Rso9i6FJsV4Y87Y2I5Hd23ad/T1pza+8t4fYyyYhYF/N2uIgx6i+3aCW+zgdrUGZAYmrIg28kxSj06MzwkQM7DFaz6DCmR/X9/xCxcaFgf3skA/Hfs79YQ7L1CqCMKehjpkAy5fPrz50ObLH9chO4DEzWSGAR9Yc5IG6xBI8NPmmsGEeqta1GNIcG/b6FVkeiyU7DGBmWKOqXvtjx9fRn7jzJnLlz/eXRcGWhHdWOcXexuar1GrpwvODW6qgNGh6sp6bC0lF55d+8b/g1ygQJpH1ri3w++//8P9i47m/583/7B27dpnn30WuQdeb4xEUepbAQlLGKygsvE8xppBUpiBVBtf1KixYqyv2Kuqsn7Wkd3l8gylY3hl6yztDDRXkrgCOsOGzSAdKMST5pjXLn1Kie5K5ABMlCagtKak+0Bj3lANYZVSTqefO0hwQKEoiEFZNCkLS0orVoEJy/OqKuNJ0+5L2FoR2X7yyeU6Mysda8x1x/3NXc1ZDCQXORLYptmDyQkce+eZJ3ft2vXKk79fu9tq91EnsC3u0efu/9UTH259Pf+tV155550nX3nlmTffsGhAuIbb+K2cSeg46OWsqFQmTtb5iT0TT2TBXsQQeNejwx1+Tzp4otuPQSM9SAmyvd3rontyO0DS4AaPULXx5t2X/ozzHJmG+vIwqeYnzd2mnT0ikqaZY+IbIin5nAd80CB11MnRNKXi2rS+s0YgLyiN0M4TjMaTcZcqWygUq6w/Y7Djk4HPYI/bdt7f1QVwSHFF6iAoZg8KGrKOPbNmU/5bu3ZteGctYiyfqjdCoTX8dteiB0+d2pSf/9zqo5vINvx+rQVEAQiLfStFQEWvKjKkTYN+iMSoWHhysUxGGwoItY1WNPYoMJItxDp8PttL0cW1d4MxCvXidIY8DbynLkTvcqMqoiqCO7n7UuXAQbBMDq7cbKFlRNK2UvsZxEFpmDmapG12m04VMWcuOPwXqpSL6lEeSQvjWRpQDwFqm1qM1PviNqMiCF+vcuCMwRYRIWrBITIPX2nuTM0gLm1JCVqiWZ+M1CvjJZC2LgrPz9+14cW1JlGrVGEqpHh17a5Np57Yfyr/aPTq6I3R4eEJaxAx0eAmxbdTqYU0sbEXue8jFBsRdb1WkoCuATkfAwsjsHvZzSf815ydXecroE7SHqwEidmXGQTS4tCGE6a2KjFS0auwGQ6fpsrr889XXophDmzIZOsKZ9eguxizTMHFIpDm/H5VmEwHnS6oJvMnMaYPiTcZVqbS5xNDIswH6peitA6P71AM6RECxTTr8CC6zDIAiZeYgKGTzTiAKCPj2Iv5q59aHZ7w5IuPjUYqz4J9zFeZn31y/5InTh0NXwTv4amnnl4dvmnXo3EoLumktqVvwbkzKtkgG2DDRBwZSKB0x2P0p0zfq9dqNKYT2f6uTnR7e0rOzwLJSVcA+vZQzbgYg9MHudgImelK/cEASBY0cYNor4IqKD10YBhTETWECFNyYc6jXwESlewxFVMrYqWDka5SIrMYobf50PhqLq8Hq2gA3v7mGByAqNkpbSaQUzqJ1U8gUX5IypQ4KHoIgLQxPCFhw1pNpFHby9n5KtOzG7Y+uGTrvuglp/Y/uPGpp1YvCgdINKdG/y1Jr8kQH9qtBUWUVmUjbCSdfAijaexpyGTa7HzYxYoGhH+OYtcQfcwgzdMsmoLtKgkl3VOQ3fWgHHBx5TuB0PMEkgFHDyVO5dIDd7zPxnoIqctJx8118KtManelJiJwWtBgqQe5gqmzKDEd1XCG8fnAn9xs4Xgt6baIBFIX5YJIddzhTepKBUxMsi2JQHpmzYqNyADl579t9tns8G60XMwfdoU/9eCvgNOp/b/61a+WLNmasOtRE/HD5d/SgHtUirS8teBIIQMJX5iXF0WdbzYfQPJpEb0DJJpTRLJmjlk639T1jWy4n0AC1UOm4jR1h3YuBatu3frKzQZiuQIeJaOEEkhEByEPHC1CujmTD0klTK4Cp4na+VXUiAiQ6MiDV2bj4w61tIBNtHPn6c0xHG8jJxJarc5U0uQoRroeW9xiqIK5kha7JGt995knlqwme+49g9ZnR8Sh1Mb8dtfrH6xY8uD+U5v2PfHEE2vWrKETS0d1FK3s23HBoXMCpS0kF+NjY2MxGzYAkhudb+iowGYljl4kzbMMytd5gyWh6RgugbY99TVcHBWINgQWw25k7IhyuhLenZQcheoIa7wMYfL4MPTNAKU5K1rIpPnYCqaeg6qhHZjDRJxuUMJGfuMgUYl2riSvEq6EHKzWPqcXO0B7cQbJ8KIZMHVx6BAWfyuzd59ZEw6IVqxY9ObuUftJnjPK1VfXvnh0Y/TrR/OPHs1PePHFJ5955pnfvxHG2fBTvh3vLgRd8YLYdg5N8mWMH81mRyBeqj1CGpBcWxuSlRcxqQh1o4xj0O6etZKKqUrhcXYSSBBDxwGnsdZtRhEOmbrK+sthkv897UxRCUSGZ91NqjkP5yXi/WTXLtVT7SB2QcmEBtcalaYrBNI6eOFnwkQSp1EykBwl7cXtDnZ4Jnmasfkltea+GzACKXrF/Q+e+v1uQx3SCyZzWN3bT67YeDQ//63Xd739GILZx2B/MiNkEL+t8ekqzE5WUNhBoYtarWGT5YnnNOYuaARZf7y0CHLQGdtB3gVvODT4TIJuN/QuoD9HK8mMS6gTq+hsQEgJWnDlaUp5qlldSOIW4Qk4gHFOkdNH3NM5g8ROIEGHTRPnkg0bLNX4OJH0TRQmEJixzaIeQiDB6UMFAkO3F2Oza/d0dh7LdUFwD5/j3d+/g+XxJGzNmq0rVqxYsmTJ/iff/gMQeQyQvP3O/hUr9uVvemXT27uJRxNGHBYNvflvCyR8EhlqbyQBTXVRvmACJHSOFGE4NaZQ7B1MyshKb6CVVFJyHZAyKGcJBtcWk0giwaoqKm3vpPpEC4FEYdIkSKKcWPC4KUWWXp6ztxQACZQLH6miwfUQCCQUr2Q8L4Ztrmyho3B9y5kYHWNLi+TdLUahL92Ld4pQtrkr6dqxY4BozVbJlqxYARdh69ZNrwC4TZtQNF+zdcmpfeFHT6358L04jTQpJiA4oZLrvxXHAVoKvjSU4Iiqi8+qkUYhgn7LCn8g4BZBva4k1IHMAsIhx9As7w7OEskKOsi709G0xSqRMxxeSY7D88/vxJkkIJXCjiFqCMTPmdQbCegvBagMfyNIWh0T2yCxI6QrZAJUruWgsSohHgCQDrGyyHpyWNQ0lh3RmBneHSQ40rGSUlE5bmhoxjzVdwiJJYsWRUdHr3564wqA9Eo+YNkXjgpF/qZ9+/dv2pW/b8n+N+tsdFfpRHY/yUnV4tvwwfEhpXuSBN/wbng3pe7I3KVFUN9KKS2q2dtRnF7S3oDSM8TSZ4GU7GDajyWhHqja63HdI3W84VIlgsqBAEg0GkxGdFe5IHUDkLgAY52IUgsuNeuH/BWg6M6lgJU0tSYcB4EUqdgJwZJNQAJOZQg6PFC9YrX6lQAJURKCKa3SugX5hsWedE8qNFxLaEnhQHpmw9Z9i7CnbYT7/fRqbHdbN71+dOOKBzd+8NTG1ftPLdn/yq63Fq3Y97bFp6fJHKzjGtIIym8HpJBAW3Igw4yiXxSbU1gEQQBMMi9NSYnFlDBvicPZldw6WxEaooHbh8i98zZ3ZZ/QVCGXgOaeNrC9qfPo4MFPLkOonUFBHe26yVq4yGRvYPR/OOAhFkF7oUyun+XNnaRjU+mj5CbBzUZMCGznpFIhVqnSpgtB3gT95WLYmZ1Uqx/YWXnIwuTfRLHX2tfZ5enyNrSHXss41hrq8GRldB17EttcdPSSJdEbVzBbsiQcmC15cMWKD/ZvTdi3Pzz/lYT88H1vm3qnaqJ0G8+L7j8QUTBKCjwUKMuOjeyJLxjHloe+vWJsFklDqHEOzQKpCxU11D+7PM0Xw6BeU4X0tsZwqX7nwZaW5w9SrVSa/aWTK+XidJCoa0ZOdXCRGrYYSCSjFwySTwZhDMVJoz4CujjYe+SqCa4Xa03D70SMRpSESk+v6RJRkAHSys0xIqckcT7bKLy7a83OioYS17FjSSieQ4vy2IZlSySQohlGi8iWkK148Oi+U1v3vx6ecPT11Uveq+PmJzkyFqFSbWkpOQ0jiWNHGkshe9tQMtTVBa3o9POzRFWTu7zXFmMUyHZnxWdhJ628Alnwk3XI3bUMrHt+HUCixaKCOoSK7XbS9VXRtse2PoGSN9it9ISdYqKRZjpKvRF4+KD8QCPOdHLVpNGrSPsn2t5EUnewW64gZ0gx9Mpyg5raPhCNa4YrikOvgQx4viG1K72hOAikaMInHEa/A6/Vq48++OCpRcg2HF106lmDXTcfQSJiUx4mx7oL94zgAccBILWT4LMnvcF/3hssNxzavP28dzFSe/6KJgOa7CG+pjkZh4sFVty6pZWHLdSOKUqeHF3SAEoBfUpkswkkdGbI2chr+ay0Sy+iA5nc7lNCnkPNkTpT4GCbfKUIJtpFRSs+7Mqn5PmvX3n6cJyGRmEpbciC96e7MBe9vwLar+3XBSk8fBKl6Oee/uCp1/e//nr00dc3vfjbunlJ6RK7MeKDGOzjtSM1I0QGR3Nlf0VDA8l5Q8lnVmW2y+v3t0OYxFvRN2zRIHNXZT9pqjvwycGdRD84fTgGLjhrwBCpwznYiNujtVEopddHXpfzoFD0RkbKrODCwBnWYZqgOOMFwNRjq0iN2hKKfgc+OV2/HmWsTy/vNlt9SjnE5S1b/ENDxWiJSUfYjbstNAik8AmLZhaOxHd+/tHVrz/3yotv/snkm58gMZG+7sbGc3lYSVhOIyN7t4DafrGf5hD4U5ODJ4X5+z5runABDP5hMBusbaNmNDe8dgUsenAOLh1G+ZxaHsKo8cHCLPCbZAaMnjDhn0yj2JyoVXPWGaAKscmEUZMhDFwDViqf+maqydP3xlBnRZg5Lm73Hy+Xo2jPqPt/RByKJ8e9tnv4Yt+F42QXhhYTq/NzQVq0b/+KhDcffe/Nt0HY/9OfRuXzEiQuQEmxao5ApyZlLPbIkT3oEKGuFnSL9J8PntHn/wtoKsilmM2G1y4fOHCAsDlw+TVcIFAd6gx1//PAF9n77+PX/1jhPmDjmnUEyE7atJqw/6En/RV79dVX6evhVz964H1DmMXCBDx2X9m8+cBhsF8Oo9Ni1BrG+jE6OnGyTgNp69YJkKInbMWDH55CnuGq2XzVcPXqqNAbMg9BElheAChZRwtyMDen1J2HwYU4mfIwlqNnR3+2J2glnb9osusoHG4z15355JPTqOXUf3LAYkWISfoK5gfugz1+30x7fOrx+MMPP3zffR+9H6YFhUA1a/orFTe0mrr3P3r4vocffvnlx2EzXu1xeoGXH34c//qb/77vfauNFIvQL2Y4QG0cJPlwwCRP06PmbreHXezcDsdnFkiLwhdNgfSrJ55cW8erIiIVeCGUPechSGzMgSDTkYJFYyPxWKsz8/LQkFmQk0e0wY5ZgxH9IOqKCqMxokoTd6b+NLpbKlfuPAMisR6tMmLE6AN0HV+ii3v3lK2afNz9Muw3Lz/8qkVLjLpZRA8FYihZlel9vAo9M/C9U/bSSy/hH35zN37CquUACa6PGvlqn+UQa+6kGq1F1Wukhn8Og7iRDgZIWdNBgrdAjwm7f9+utXE8S/uBh8iJ8xUkanC18axfJwUTqOIx2xztSlDqIjma4Cy4BBLYO1UaQzn6hZBYJZDs8H+RwAFIhNFLq/6aLf8Ns5cfsfBUgxDE65T39SrTAwyk3/xmefD3AyR6Cfp91ar73jchc0F6lEbLIalXfT3KjiQZqUfXrLWP1WaDQVox06gKy1NaBB6NUs3NSx0HcpRplBU1/1LnW1Q8OeSMnFIzNtKXHXwmQfMEs4iQ5NRqwGxAfWLpupb6AwatMQ1CPqLWxECS8Jhm068yLY37HggTQ67PaBVQzIvBpnn3y3cvXz4B99QrMYjxKrgTXrrvfYNPxmbS2LCS0KQOIv/pwwY1JlrJ8F6sTQ1el8MlbXdblwVAmkSH4ll44/lvPVrHQ6sNRQFqqZ+3WmpIiEO2huScqPscIJGCPua11fbMAsnRvi0GvWAiWl3UlkunqRll3UOVl+rQHEit+3YLrQF2aRk2LyxftXzVdJReeuEF2rHue8CkIraWLrgICE8GdT2ARHvdcjx5Gkh4teUvEEh4tZdoT73vkTi7EAmQbDy6lyZAokw2ZFAYSF2toTNBWh09hdEysvxdtJJ45NY5bt4qogisqIZ6LMe4eEw1JIWN3YPERs/xWWcSQNKgNQaEfhLRYMSGdZWXdiOwIepWleWBh4FS0DqCTZ5LL7zwwqpVd7/8QBi2OklpL+jtiD6I4j5AB9Ly39BzJZDull4G3/0C/UaIvfT4w4/sNosRlLbW1JXXU78FgVSH6qUMxScdQHK1hiZJ290kSNGBlNCyZahXoHcMvCHUwGxUBsGOPT9VCaV4XoZjk/p1aqOY0i9bST01ACmY4+DNPmHitdipUMUNKyeQIIlReWgCJN7yyMOE0t0A6e7pEDEjbwIXGLvdw1hJAqe7TiZcAEhKbJq0krBmplyGwL6JMwlQLSdv4r6HX0W/BmvbI5DQAojkA1tJ4D35bKQ8RAPprgsSQUTtfQkbUCq38HYbqfHqI+etciSUO5FQYSDF0kaHgYXw7WpJA6qnIzgN7gW5WKsFhRp8iNHL9QdBMEAzV7kFc6vhl9msda9+9LAEk+TWSZ7Zy+Q9P0wP5oDjy6tmUjcRr0M+BPkjEu4HnoRjiT2dud7Sq61aBYfiN7SImL3PemZlkQJ5mqSdAuJQuQWMFJUKSIGB50Umn213+6ZAIi8cGEkQbVgDSnEYxkcSy0WvEr492ZoZm8rMntQQosMo0AeE3AMThQNAZZJ+HyyzgzW9SKR39kcCCdcgUgDXACDthEMFkM5YKHFmTPOdjEMYKsWhHz0sOd933/3wRw98RH/zyKuP4Nerrz7y/vuv/o8VRDybcD2GqE4R0Sa9xCOPvPr+I/S79HqPE0qP3wfkEMa+T6/zP204RbRyVYjdcGYn6RYdJKKzDP4hD2FSWknHUPGDJQCW6Gj6xdIM+L9lT74JYv6jzz77GJHzCSQZZdxV17l2MmmK1A1UaKVxQWzuzAxi6TR19MBbkcJapreKUqtE/xBM21gnIxWiM1oxTiwjNxXCNFpMIueqqkTT5dPMpXp+4FCcWmDS7LyVDZlgugtASdrrPnoNuQgLOiGQ0WEtF6S9wAU+++z3SzwMyDOwJ0NRw2KhHJP0evBCVgFzym8wLQ00p+nkjDmJ87GFaRCdPmzCJyZ1XdH6xptv/v6ZNQkJa9bkPxdOAIVHh1N1dgXVaN/cjXcE4VBQUTRqnpPgmC3USwveqKRBXzSR7QaRJVnp6nNBmtEeyWRsABcOUZlKgf45GlcEkJLACS1BNSk1u8nC6/U2XQTUt+gcIAEnAonowBDnp+S0iAKpWoPTiYG06vEH6iBQwkF7xaakBi2mu8tNjDC5Hkg4mHSBrgzKpXI0DXjy9eC+gwKspFnRIpMQgHCXTR1zaCXxM8Gy2GxBAh4RBS+a1oKetWbr6tVLQLWDux29mnLfrOaHxNCbYZHUoKXmpPqX1BhKOnEz20UjUawnjSyQd0KIUXjjQEJFQBa4KOIsm9n9zfrBEcWD1y+Kpj6w7EJdoBmShgNEHFKdFdvirGoZNbPwbItZjzOp8pABdJEQyGnKWAUV5CCOj5EuKjkJMUhoG/WMxc9KrDNZX38lLpC6MqS8+dTrrSKQDABJCBEFSeeB8uRiDBXSSfSr5dBusyZSocLfEX14K3EhlyzZuPH+B1eAqB8AaREYrI+aZOzVQcsPmaimMO1zVrdSTSn8c8jYIzQGlZDOvxsEUkhA1UI6kMTg6sEskGglTQcJxXIn6QQUF3uc3uzBE9A3QVpIL2oYSFAmaVnJQCLNUxldMFpJkxf1bjgJmPqC9jEVKwVNDPr520ASGW+H5La4sADoAZAkRXMCiro3qmI2VzKUlrZ8+pqZhAuRpIp5NmERiEHPPbd1BkgbCaS33no0TEE3I1OglYqUkRDcl02ANPFArwbq/YigqFql/Qaq6QH97xkmzNruaGQpprPggkNsox2EBgfmWTqys4tJKyB7cIvFyofojTY1gdQyARJPNTwUgrRSJQnyeYHtiUCyaDl8RIrIRO5vZQtN1MwJCrwnkZsAfTpI2BppMimeRSBhVcO9O1On8RnRFgOhm0fzV69elvDWWxsSVjOQpEof4tlF+bsIJNwClAuaMNZWrZxpAmMoqrTkout12m+AwH+9ozHI24OotJx6vpVsmh/1dCeTJIqjJDubJimXNPi3mNG5A2lCrcZSvnMAooFQdUSrvlagrUICAXecqJYu6n+vQjLVwBP5hFQ/ObXwt4AkCJNT6ojiL1dOvh65d9J2p2IbVQiJQ+I+t2yuXI8U68BBuOBo0IUaOIGUQNT85/IB0tNSzo7KsquBFNoqnrWw+1X5+RYo33NEaMfNoJPfIGAmbkvK0s0aQqAKNiqY0pwXkNxUitGmCicUlZyYCIvBo4yo79/SBmICDdvWmQ7Us14Kpqdgt9FNJ53BuPM56c6nzMPLSN4o8apau8+HzWtuK0mgkww/i+OmgWTRaOUMJAwBwc8Cs8EGTSOEsgwkE6IkRKdam+mxNegYC1+dv2HDc08/F77i/vvvB0rhz+WHI+GQ8J4FsgZ6ptmuY00GbPCQLlhHAgsMhQ+kA4lQSsSAGwWS9HHl0uYRtOcGG26diMhIjCaMIJCGK1JBek8G292Z7SWQSgASWFZET9SGHa4fIJAO1h+IszKQItjuhLAQ7cgmBhKyAwGQFJiEZJtz6wvJIkPXH68XFtjuAiAxV520imUKgGRHRn4AlHBU0g+P6iPAGefxDh57JmErFlD4mg2rn37uOQJpUfiK6Lfeyl/y4BMk9mRTMmLYdCeKCzCbJh4ibXQAXS0jdRzxBkVKDCRGd9cyh0D4AgUSLYlFy5FohOi52txUkYyuPtfQu60V/ZgRAcmris/M2lHEFVq7xnAFWfCWg8QwuKrR2IiLzdgiKnZRGUiUbHscLrMcewU1BOBOnBadfWGEx0wlvd7USnoEREil9C8KJtJu9CEj/8nOgcpK9Dhfsdra2si1toa98fv/k7/vwRX739n0wdNPP73x/vsfXBa+YsVz+QlLnljzzh8sVq3R6OOYGCYRW9o0bVybOsiR4kf5s0pwbdRaRs2+QStJSc4CtgWkpdQ0lPSLBnjwjAqt0bTxvJU3/6U9FDxWyAJ4+4YDOn/DBhOq5FdRn37t4ytQVThz4JErH1vbbDY5I1uxLNO0i4oUzpndxIE3WHaD2qBSfM0gcZwCW57G9DGUAg5tPlN+5eM69EnE1F2Nsez+09rfvvf2e28++9h7mz5YTb0U8B1WrMjPX0YM1vf+iAC7LkChMBjA1DdZJArF9EeM6aoQWQUGLTWxkYdyQ0GChLl4jjI/OZ9vlBYqwySogsYj7saafi8yX6Ty1xdjZWaue+3jw1DQOPPpGbAJMLuSpBVMGJCUBqEVAeByQSC99N/LH792iNmZyx9r9HNNjonC54FE8qSigIQUbwJvBe/HFPfa5TPlh64cPnzgMpgXlqvmsDCD+bX3NmxISID7jZhpawJUGzZu/OCtd55979lH/7D2jbXMHkOLxW/f+N0P/m6m/fp//79t5DigCxK7xI0i5emkM0mGbCYPjPLiE4OtcPoDKvV78jAyAHPvRjLHRvpdAZCarNiPiZ+vqcMmh2LswYOfXrFoIyLOgkygRYsggaTjJ0GacJmXU+mucufSP/8ZzKtPL1vnzMYJgDT5ehMghRALGSBpEY/K9WlKXtOG9nZBbQW9bGflaahMfnLGYOVkvRiCZr/62DsbEnblh69YvRHp8EUA6amnn359zRMfLnvlyXeg3AB78cUXf//i7//93nt/MuPxLz/435qIqiqtLS1NJ96w5swJkKB4RBMb4hnv+68bKWfXEkaxUYU9sTs6mGoauvtQNMdlwWbmi7nyaeW6hyDFVHkpToO33Ws/aZep4DLooeAol7a7qbiGKqnLqTP9oT8fPPjn8qtz7G9kLviM1wsCSUY9EDrqp0AHNfQpNea4w59Url+5k/LhBhwlWjskb+Le278MoWzCMngR4SCf/GpF+Ov5W5944sMn9m+asISEV17ZcMd/3fPPP53+uPfff20F/4FuQy3U5W7QjCWiuJOyn0/Lj47nJI5EpRTNeARZFEDaQyCNASNwWT0EEpDqM9kiqdAnytFdB02zg+B8XDJYbZgNDFlIoTeC44AR/HdyU1jwGQhmf4NQaWcL6PzIfx48FGbTzR2k6cEsFaOCQCJ+OabA2AglKO9cZUX9g0sHViKs5QTuJIlHPfvECkRMy7aiXh69GiAtyd/1ytYPP4QMyr59SLauYMnxZZs2/esv7php3//Pn5lU4ApQ2ym8wRsMErVNYn7sHtT1ZjyCLBFl88ScnKLqI4ljYzk1/X4vtWYme/usRuoGg5NK40H+/PzBP9dXbr4qCL2KXu1Zm5LqNyR/RqffTJDoWAJZZeChPz/055ZDBq0wxziJgaSdCVLcFEiUuyOQEPJEss4YtenyJ5RRhFDrAYsdUluKsz7t1fcIpASERwDpuej7H0Ty7v/k73/iw7eeoxxENM4qpMiXbUr4+c/vuGWG/fSffhAmp2wX2m801N5+Q0ASp4FUEE+TKAoT4+MloXkmulrLTimMd5HEzPEPiTiTomLHaqPGdnQAok70zzoBktFIwwfaYi6tHMBKglzxJRPGTlYpQKiSV5GIITwHqf1oOkhEU2ipfIg6+VsGDoXppOl0+BKQxIWnJ7CalmJmVvwLQJLT5itnIEGfF+ENqQ/BSQ7hANJDD2FojAQS/k5m5MKe/XAJSn3URgHmCRiRAOn1o+H79kOohlgPG9G3RJSHUz/+19tm2vf/6XdhNkwkFEkBkLtRILEMi0i7kFZTgAF8qI9X5+RUg8JAIIEelBIbT02YYOyP0FwAqV0pKnEMgn09e/v9TkiRZaFAYaYWOBmmJYCG+NC6pdi+IFEjCmzMn5zif5HVhwimIJBeWIUMH8MVeTVsd3ImzYBqBgoiHNwCmrJDclkKpmykmHWTzczdLZe2O6CLzne5MPkhA6R+/Fx6fw9hysXKA6QDSaq4nEXKPUQvIpAogYcvyLYuWxb+3HNH88EG/+Cp6KOvnPog+hf/9/dnrqTb7/2BgZFTsKmK0rihGwIS1fMQUAg6PgdyADSuOCdnTMKoJr4UKEEFqjoFgwKwuPKKYgklkinMKyKQkA1yELNhC6p0mB8Jpeapi1COiyAEb1/cBEgxE8HsqlXQEUSCGmuv3HCS2CfkJaH6AFPKSOBJirGAmXz2HFpRmPF6VPt4lUBSKHR0HAnBCdng94d1CtHRx57ZCnhWR0sgTbPVAGnZkhUbn85PeObU0Q/+65+CQLrzrp8h84iUAPlEim8KJIw0zysrw4QJTKDIRF8SKQxB4TOvEeiNjaFNicajoFepJi8HIF30fxFIwT9vNkgvPV5/mlLUlfUgiZh5Vk+i9BBlN43IF1HGiqYy4+S3zd5OgkBa9ddAmvi4fxtIiyYsOvoDqKitSdj1IhrUf3Xqh8Fn0rcFEnayPIx1YIMderCEMJKiYHx8vHRkZAcoQmygA5tAQb/6vwaQHn/4AOYXDB26tHnzld0oV1vY2AteIbBuSyMutEJPU8h98OW1ISFfciV9SZDQiv7Eh88+hjj2jTcee/v3//rPt8wHkKppCN+Ozy70Mzs+bGXDBjSaUdNnNM2Bpk+wr4MdfX0d568dy/pqIC1/YdXDj9RRH8ZVc91uJJJo2mU55legns6yu9A1pIVkVAkU6cwmkN6IlSQtIYnMunEJUq1hBkqehBl2//Lfb58PIBHvcWTv8QoPSZ5kePqsdNiiTGe39HmbmzGm2kkT4NM9XV3ZDQ2Od4/lfkWQlhM5X1MV2RsROWrafeXT05VsTuZhkMDECAkkDOw1UoqZR5Zc+CZW0jSQNq6O3vDYVTSVCAqfbLTu1/8yH0AiGQD0Hh1vdyC5nZXl6RutokgwLe2s+WInnO3tGLzR0N7uSe1CNqjd09qa9NVAWkUgGUDdIXqrBtkAjGCsRCB8yKAmyS6KvdSg9+ophY7/U93wM2nqMJI876dXo6sCs6T5KlT9Y372k/kAEnIMUZkEEgTzaUoIcnLUOoLcmxUgYXF1dnq9kKpP3p5FE10WY+zBV11JLxNIWqBQZSdRjnUPSdQVGkYKWEKYliDJFUaojF8M0vKvFaTVAOm5t35r4CGWDT/Gbv7dXbfNA5BqaTQpQMqmlZJNAzZEiGSj3iwb7e9c3NXampHhJfKJK5fkv2lO31c9k5a/DEqx1qaH4IMdFSjQEJDJazljqVIamTwUVlAbd5LE0fRpOJluwEqSXQ+kfcgxrI4mgcINa00Cj8Ek+iou7B/uvX3egLQXIHVmV2QPYlQNeuIoJ4VunlSvwyWBhL0QEzkWU8vpVwbphbsBEigcvZiuHncYnFcS5WgpRxwPiSOU6iGfjJnKJ3VEgcWVuAErSXb9lRS9L/p1MB9OPfOGVQGdmDSUQww/u3d+OA7uIswqP+4BGDSGr88ERRj07Nt4c9+1836PKyOLzXgB/YQwaviqIKHoh1YvgYNSMrQQ464hIc5mMZ+xYPmCoWdEJQpFtTZielCH/yzRwhu1ksKRFjoaHr1v65p33rBCLVeuxJI2/ew/75wXIBVVT4BEUlt9Zh0N1YFe7NUTJNXsgugTLR8MtoFCs/crryQ0EoFWj7yX0OvzmeM+IpBomsUhg09bVaW2+85CVgNddqMkOiNgNKnsG1pJR18/+vrrp8KXnVrzzGNXBbHKFqIQNDH/69/nBUjxtdU0UN7LQPIiu60ngorWbrU0+Z3XtkNiEcN2aAyHwwG181DvV3QcUP55+P0wnxqi8GlnbQaMqqchYqep1gMRIri+VnvaWWNkmyiJP8xu4vq6V9JE/9i+U5uWbdq6adnRo6eerRtlTc2Q5//dvPDuojAXlkByAiRyCzoMUlXcZIi7cB6c79Yh0LZQjs1CSzC0eVxf1btjK8lCEluRAAnzJmhqIoZZXHkNIyPALNi922A5C4dBpWZKjYJwo8+kCZAS9p/aSoW+8NdfefO1OIvZgumNcX/85b3zBCS23QEkTzpWSwOGSdL00W0X/1LR7ux0ocDn8NDEnXRS0se4g+SvnHEgMiOvRl1HHtlmheoCJDTCMNa0nKlklJ+5Emc/i2OJ0/p8+utlwW/QStq69Yc//MUvfvhfv/iv//r3/+vvfvZ3v/uHX//dL//tP//j+/Nku2NnUlYGtc/TtCqapdiQfd7fXtyVChFCyDSnZqSmNqTT1KGsOYMkBpW7ly9/nIGEhCqCIDt1SYgyGyKmT6AtUP8JmAivWc+eJXV8XxqBFBLo/Qg0xcgYx+ErrSTIFzKQiGCMM2kCpE2/+OHPf37rv95y2x0//cd/+fu7/vEff3LXf/zzf8yP3B2E06oRJzVgZqKDhgSgMSwjCyLFGFOIEfNZpHQOmXP4DOyfQue83dFHQX8kp46Z1qrCa4lnA7o48TORZeA4y+bTpAjaUknjsn3ICik4nxEKyFReo9iJxkRggBHkj4kcqZx6vVWTIIHaIJ/V3wSQyq8LUsISouov2xrw7dDp98Nbb/3ebXd+79Yf/+int9/+9/fee9ff//33vnfrfAGpkDIONKaPxm14k0nzl7gm2U4aUxgs+PQVQZoo0k2Uu6HToDeiER8gwdGjRuRy9H7rkW7gaGEQfqSyymYjMsadGATS1EoiMbwvBkl2fZDClxFIt91555233fGjH91z++2305+/d+utt85DkDwejMnNSkZfS7HHS9ORHF8vSNSqMoOTwPpjBJK4XUnt4gOkJK6moTrE6YewN6syoXWcRCbZ+JjrgBQ3ud19CZCYPkB0AKTbbrv9+7fc8aN7/une2++87bY77gguJ80LkJI9Ddle5MPh6Tm8oV8rSFOdeQwkGr7GaCo60rlTkQ4xxvIdBME+TMBsUyh9k8g7WJDI5xmN2oAWKAriEyBNdg5OgCT/MiAtC4AUHQ7HAcvm+z/9KVC656c/vf3OO2/9+Y9//OM75h9INJ2PJuXCeUhl257jq253rEGSWlUsj9w37UyaAIk4EAqEZpAXwPzEFhLmtEB0gbo0SHuD2A9ATMnY8+BOKGjtsa6KyddbxUD/8iAFlJ8kkG695Z57brvztlvv+P7td935vR/+8Mc/umM+OQ6eUBr4CZCKqRMWyVYnZMBxRn3tIK0KgMQOGSKqYP6EUgyDkjjGYmE84+Y4LZQxiPYAqgfpCDPxGGoAIeaL4usGCQpdi6jBOXwTA+nWO27BWYSv8BuwlH50zz3zAaTYGSBRmyXIQCASD2bnkiD91wrS8uuABK8NEy/VlsOfsmnzlfWHaGyb1O+MaEqg+cAaXq5kFQy0YQoSSNNfbzpIwlzPJMBEj4QEAumOW+lcgtfw43vu/cldd911773zg4gyAZJDWkkVxzFgsa8P3RJ9HqQXHMlfO0iIkySQJBccw2ZxdTnTxyiiY1Lj5vLLr0FVkGQmDcR/YAqRBhNvlNMMQN0skCCGMgWS/rpx0ueDlDBpEka33nb7T34J+wHsH375k3u/HZBCqANTMQlSbW3RdJCOxxErBJqbproLDRV+T9ZXBSlkEqTD9StpYm8L5emIRc06uxk3Ekhx6DMJI+nPmLqPL6N9ZnN5+cTI0zNgQITZmTq/QmoVm/56pNRgAH2YgSS7Hkhrn0H/8rLofRseQy9fMEgJPwzYzxlAKPHddu+/vWaJMVvNYRi3+cvbb5tHIKUDJOj8OpusSrplIUoYs61i0O/86iApJi7qgXo2A33lynJ01OonQMLnZZRINa8jvQi1DYzTnTsh+hgYHsxkb5EqUrLJWArFrNdrIfUgDsEuFEy+BEg4hQKPW28hiuott//jP9TZfUZSS7LG/WAeggRmqpV1IkNUJGxb+/nsxa6vCyR+8qJOgMTko6GvRwErOdp6PekVyEzQ18K0+YMtrIQB7RkwmC8ZfDQ/lPX4zn69AEjyLwfSbbcEHmSIZe+UQApR2Gw+08/uml8gOSSQzGD70pBepelCcYU/NTfp6wLJIF3UddNBoiOJeW8iyadANEBr46hvfB0iJvSxY6QB/gg68gEDirTEaUXpIuj1ANLmrwbSDLvzewDJgGKWIPhsadb/ddft8xEkE40toPvafNyb7Yc+zdcJ0ropkDDzTSa1D5DUEcJW2gBlGCFIs2LRxD6ARbQUc7LQhHtw5yGLnJEf8Myg10OOQgJJ9ZVBYiDc9r3v/eTXFmz4KpVNJzf/bN6B5MmaBEmujxztcDkx1OZrBmldMEiCxAVns+SQIlJq4i6dXnkQWNIgpKXrBqhTuuWQhQlQUTPNrNdb+rWCdOutd/7kZ2EcjwEZ0L0yzUeQnDQ8kZRKZATS0PkKz9d3Jl0fJKY9RP0XxNAX0JSO2UtIh+NpbO4bJmUBpPWH4mykScN4eF8zSBMZBTgQkt3+L79GeV9Lm6vG8nffUtEvRJpUBLETNnUsPr46kzFYvQ4vW0k61jAXIuJMam/wlNA4VppAnZrqIWnP5M8BCa0l4l8BSepumLbdKSdA0pJKG4ZrKxSS1IcYBu+Odjnq2cQsJEgx7ESjp53HEzH6UJBeTwnvbnPlQ1NnErZDmhT4xSBNliqWzQTplltvYRjdc/tPfgYZQ4CEdvs4onR9f/rj9rvwr5g2AzdHuIEgSeJYGDoVyZ0rKuxJHKsBE//iYLbTg7mrqX1mGzUzajTm3U0d57tQqkjt7ASny+v0V4AjmZUUDBL1/6z/PJBwi1OGh7t6hh30AytPn6njdRTMhkwIUU21iilCbGGXP90JcgrKS/AYKAWxEi64CeopdtQH7TYaq6mD4pzMcAggwbVYebo88Hrs5a4LUvQUSIIE0pMMJIxq/jn1WH5f2u8ocP3n2/7pd3XWNGMVLkGY4Xf/cfv3Zxj6kyxQ7jgJbzNSp79Rnc0SSBz07HtHi1jPBKYb/KX/fLYTHJPk5I44M1mY4bW4zzqyk5NaJZBKsjr9mECEcDfr80BSX0ciBGpXNE2GB0gIPgfYRSXBJoUwNT9qymRnNR9f/ujTQ5cOH8a4izObLx0+cAjN/XVsjAENQeRDSNMRjs3VQ3Rc7fyC15sAackUSCEBkNB7HgDpngBKAOGWO2/76S//CKJHDCgXcX/8t/+8Dki8BBINIL5RILHWKhIj462f9Q0OXuzr6+8472/AcFJvenp7xYUTfX1btgwPN53o9zc7u5qTco9lhJaQEKHT23rs2JcGiYt54HFqfYFM1wMG3Pl0Ua/TKSdTVmlMaLfYHUe6klByNJkN1H1Bc0Ign3H4YxOKTzLIPalMH/2GSSF//ut9DkhQcdgYnfDjnxNM0qaH3xEp/X/tvQ9Mm2eeLYyxHf/Fdm2zGDzGWGBbFthA5P4Bq0wqdUvUohIpaqBZmdW2C/QKIXwpYtsOnkJpoZowXCIQKCLD5WsYwjDfruhk0tIAGWgXTcSE0CZS2mTT0NwkTW5vSNu099uZjq70nfO8hgRIk2HmpqENj9WmTYLB73nf5/n9Ob9zxkOzs5WVk0P5s6N7hs85M/NufLW0VboxkRsMMtwU7a07scSwpAYDWnqv5e3fPgjbo61bD267H4fP/WTmP0sPnv37f/1rDLv8ZPdr+7ftBFVo086XHwdh6IGXX15NRLktSCoJJD1B+vpHv/xaEFGMSd9yUeNSu5ugl4rRJHAfoMSiT62QO2wRyBDALfu/UfbWiAaGQoD09WNQCb/N+90SpFqA1IfGXmb84skEkAYwctmG0mroZM7w8LkG51JFQrw8bZU21HEp9Mp6iTFwRx4l6KJpSTqEw57tvZ89C+oCuCcHHzqI04dcb1h1bXoUg8sgooB19/BP7n96J4j6T+/ExMWj4N1BRe0mIP3DLUBSxUBqskKAHRoOoukX257i1Kv/epNM3hQoOKKV1BNpgGsyBmHkiKzp74DS731BFMMBUprlM6EVfrv3+xaQYoFDgigL2WP1BhxLKIGfO+dpcXpOhgYGxgGZM8t+48vpybcpaSEkDDNRmdHeEZBQQsZ2B2f3JO+LcK/aeXDnpvu2sPzDI+m+J7c9vYkzMI/ufuCR116+bxPb6CAXC4PzLfA73vrXgqSH1v5i0w/bk/JbL+qMLAka+Uc4+mKmSn9cWFsR+T2oyP/IZwkgQRXNiGhdCLr/bvNt328VSOplIOE5si8WhRC95bZcHjh32Tk+EDp5zr5vX+Y5u3P5CyBBfICtfFjXQQ/sjoAEV3gqNqpS08yGF/dv/fGPn35154+3bTu47aFNeFIeR6pEksOjW2gOvukgByr4gO2E5SJA2vQ8RAn/GpAUot397mL73GAMf8tFVSCMSzqSdMRMdVgq1YbD4bhU27+ikPdTVND//l8isGQHSGozBN2hFP7Ybd5vFUjX86R0AVI5mq95uXkiKsjDKnMKItd4TsPA5R2nL4PSlXnjKzcXICVBWo75HZKBO7PdESD2rFPTCgwv7t52/49hPvoTuGJjpgUgvfk4SHcYHHvggS0v37dFMpAlDw/qaQDp0YfQXF8zSLpFkJ54V9L3vOGgX/XXteEjsCLBY64EX9wogwBNOFCROvN7yKLRQPa//ps1KHy645IA0hNU7r/1+30bSK0EabsAqZwBQa54YY0PZJ0bsOe2eBpA7irPRXCXt+zV0+jCLgQBC7DSWKi6QyCxE40ZpKQjjg8PQhMNg0nS2gYpyJcRxdEo+5FHgAgZ/EIj8sGfP/zAwYceeBgG6KsqDnqpqfb/ooaGioP8JiDBh091HaTrbKGbP0l0jUtl+SBgFNUIXVxFmm7mX9BY/3vJtzZAjQiNKex+7gX6Ivzu1u93M5DUiyClI5kV2x15W6yEx8fn5qF6l5VZ1oOgPLesJeRxLlXJxctzctYNHXRKFwWg3HGHdLqEuyTlYJOO2N7eD0PChyWItm7dClA27eYMpqDubwPNAWs30ljKDz55P3+FIcfNQWKWCpBk3w6Se/FJuuVFVUsiGVBADggNRzjI6jUVMJ5Hf+m//B1AskkyevAag38F1aT+RpAy46UWhbQ8HtKEnC3z4HSFuHI8y1eoatYiM4UVACmsZFRzR0CCiqiS+oqYM3G8TStFDmE+/6xYr776/PNPIg6XFn5jqwDvt/t/iz97/tmf/ezZLR9vWbndWQnSP/4KT9LvrbLVJQdud6q46yBtvh1IdCQFuwEkLo0kLgoNR9v/+P/+K4Yv/ss/o/ag1SEqN3gdXSCi/E4EDn89SAnR6gGBRRUZDYLU4PGI/xUrByTWnKpla3hy1AbfHkU4EGZj0HxHtjt6E6DJybqTxvAektZXPvzww1e4XoqtV25YL5Ht8OJHQiLylY/ee+/Dg6sGm2Ww7viHv/uHf8CT9NyC7CZnUpySIIG7/dRf+CQhEsSxgycQY7NmRSpkQGe8/+t//tPv0Un/D+hAgt7vsvowfvH7J3709R83b/4rQJLF8qT0ZP+gIDPk79lTmc9XI5kNjdAeHKUCYf7kZP4qVcJr3qYm1RGItREk5Z0DiQJn3WlmlddrMNA3kv4PtmWLBhPCdpT/MzMzAzNQqkK6Pty/aojMgotwrHeit3ewxCLTV9wMJHIkCdLmvwAkJcNalK7UHG2GGpsqSD8ZfGuXFYUaV9f//FcMy4Cw8m9fPSHJgv/1IIGn78eYi3QB+GH5X26L9NlZHCPZQ1yFG5bVbZDJgtojSGMUN7G3+78EEspekI/GCZ2kDMqhUyyXlnCM0EjK2Dyz4aRMvTi59LtG7DnQ1rZ99OwqkNx1Z4ozRvozUnAR9Dd/ktYAEn6sggKzdDAhVaKKfTBoSjPKUIGAZ4nB96//DG4e5i/+/d9hvfT15rWDpFsECa6YKf5Oa+zzG2JLrgcTCf8n5Gfl0r9v/PMZrwzMsiNm2iHcKZCEPCaiElkQ0peQlCDhWnIYiFloqMgYlWyv2REQRvCoUMDT2lwQtv36JmWhOl6E3t7e1jr4jWtW6nwDJEUMJGF1dTuQQCo2Sw0+krhouY02qQKhDjT7odjoY5wHFf9f/ervcSL9cvMLfwNIycn+6k4X9YoXJZ3BGcPzgVMxEKBDBC1PVqjbQwHdnKZRFSDLlhlFZ+uOgCRZRNAlBHeHKlWyzZC8gITPCaa+zeIu1gm3eOmHhFumHrxSx2/AE78upaYUUmp17fVUjotW11mFVLvJJKnC482Eh4yOtWko4j/F1POxJZDEd1xd6jPFVOzN7BlBnDHQDaVDvBHYDSh/ByL/Qifbn/7jf//VT7/++o+Y7lwEiW3MxU8RJ244MdWkkgGkaIL08yH6JC8M8moAqRh6dv7WEgqjCTrM0sJZqEnieWNCBJe0AgTYOsL6SqMASPicyjumwhonfnhRDFfdTJU75uFEoyX8kUyuUVfggNTI0xRa70fUjSShX4gSammtEznbPtF74EBzUetFN+wNUiuM+GTdZLNQlVlDcqQQb3cvJ+zHWueqm4SfwkUp5tAQcz5hSxDOmVB++BeE4v+Mzu1//xXsT+mWuQSSWiP5Bog5QFgJYY9Iw1AGnvT+0tLm5qL2zohBAx09U8BoKWmFAmtRtGiwxKrHD6hO0x5J6jZDRTdAcMUPoaYh0Ooqvbhz4xYvmuLuum4v2ikF9VSYAZOnKc4U8L69H6nTww9u2/kLQxLn91Xweumsru8nSB1T6FmqU9XotXSrK6ApTDsHzUp5z823A2lVCC/9NPz70E53/RNAIv/hV3987Os/fv3Hd2LzTmYJJHbgWeWXaSgAC+9ETZOl5Ex0ov8ApsovQs24IlVnNAZcddPwfmlOjA5O+QxMzWCpeUSRCokCU5x6uVpl3HpeMZCUR8IB7BAFSXGqCgXS3+efJhni6ad/4zUbcZJD59E1dWE6Gbfq9ImaLrrndRvD3cIaRcHrpFqlwXojSH+BOOZ1kHhyAiT0+Tht9qufUhj563dXgsREC1G8DCULkAcR+/imvunofb02o36wzmdQpOkq0AWxnq0v3LX9wPb04ppIUIUQQFtwJIw/ws2l/l6CVGBOU5uPFED/Qm60fSSoXz9+9elXvGJoRa0KuKcuQF422l//zVRETnLEWBB8qArWsG8mOb1S2HYNIKkESGjCg/zw0//2x8doA/z15mUgxTxRoMKqR0uKa8yKm6iXqp1n5txNCmW3KWgwuDonkmtLD2zfTpA0cJ4whhFDplbg9b0CafFYQrBlVmmPFAQNM4aFhV88+OijD29DaeIVB451FJeM3sjcYEdHx3TzxIWpLm9q6pgRF4fi7QUc14MbxQrx9hUS0WsESS8sd8B9+Pf//b9f+Pp3X7/w7gqQ8B313GkDjJkRbMgckbr25voT33RMX5iDbXFYaxzzGmwX26v9zQcOHPCXWAMgoiOIsnnTCJJaHfe9WrFnKc3cLZ+BqYDb4nJYf/YVOrTbtr766m9cXmR7EHywds3VXay5WHO2c+pPXTavxYF8z2EzQX2GiiaGRZBU3yK2vlaQHP/rP9BH/6f/+Lf/8f88s/mPP4LP8AqQjDhEkbAbbNaFBYoPRI7One3snJq6CNdLaETYLA6r29F1drCVIJX6a45CIBHGkD63CzkFpOfjvo9LVxFE+QjzMB++/dKLb+9/jVSUTSiev/gey0UvvvTKf3ZZoZMRWbBZuz6f6jx7sa5ubu7zBVkgzEgadID/KyDFODRA3SEsPyL4ls89gW78L1eARKIlBgWNjs/n6jo74TiBW8dq7YocddtckWt78idR6hk6NPnNsb17oZ2WceJCTU2dMKa4+PkC9COOJCm+lyCpgraPQDfevW3/+7/d//5BKNig1/Txy7+lNc/+/Vuf/0+vbAyJuhHh8RwcID5tbm4/O2eZMTCvEVbZy6x5HvsbQQLhDeKFSMO9kaeeENrINxiKYMST5rBpeJBcc2fai2jte2HK50U91qBUGlzQgXRmodR98tIx+CcVguIA76TijsHWVv49K/QjCsLfR5BwoQO2Fx/cTR0oYrLtgUeg5oCu7batwols59YXK2Aza8A5YHKVVKckwCyvv7WETmRxQv1RtdzkasmUihUC1Rqlz6XEiWadEOmw/uGZGEiLJlexGVy1Whsw+DpbExOYC52Zs/FGC6IH5KrMcZKnmhvyFBfuLU7fXproL961ay/+WkJie51PDp6WWqf6HqEj7mBeYTNBgljXFhAkH3x+20OiMHRwCwQE0K3def/WF5vMaQqWv42QRO/NgKVhQkcNQDLSiUwUnEzX7d1gsbxZXFStaA+v8YpIloOkJkNFzPWHZ37HJ3NzzC4OT5lJeIVhvsIEkPyJGQSpfW6G5SRjmiLgxiALRBrKyzy5sCxNKS09cCBaDD1PyLanpxeddcmMWjowfa+WFNDCmMP10tadQoiDEhzbRBOXqmtSZ/BZsMfB8ReR19ki2CH7o0WtJS54kyFlgR2sTDJeXBLbeGzRF1YlOL9rvm+XqiXiyaRPd8wdc/H9RKKkcZe0ihlLCKNZMPaJs1FlcGGQJbenp6wsNxNq+onbtx+AExn+I1oURRUPRSOUHnVx30OQEC3JLS9tfR56eA9sot3L/due3EpGBCW9gNTWZ19xeQ18kDRy31mInnd04CiocSHnp36D8O6lhakmZmG6ZDmqihMOy2sGCSO2Cs4oqQnSZhrfX7cwpWOzQurt0p1Z3DDtJT5wt2lOarAcygn1EKR4e3FCYikkwGFYkRJlyai4g+VXgvQ9yI1ugChmO4tajO3F3z67FdQHkog27RQlB5D37yfZC0/S21Yvqb9psLs6nrL3xIkOf31HjYuz0zrhTauhGfB1x+ZFG2wB0l9ht6ZD7EYZXZ0NndkYSD4JJG53QvmBAgI1HR3+4uSElPoakJDRd0QiDJB6ejyeXBDtklFyBRM8eS/8S0sPNEeLTwzW2eJUMbfmG5OQ78Fmx2eJID2/VaKn7N6GhwkDMNu2CberbQ89uPVtt8GkNqnSzPLI8WKAVOyvL14CKU6zwlZ70Qbb+Ndud1B9SBKBo+W5d5HJvvPY9feTPG1RYA3oJZCg0ZBcX9NF0VulSWUUIEFKI9O+g66l9JwtLMQZeoAuzh11NtpkL1YZVN8bkMRjoA9aXgLvYdvDm7a8+cjD0LJ5AGD9/OGXEdvhv34OQVANjD9laWkBa2d9sfC5KeR2JxPm9uybLTeoF3d+MLBoD7rWE0kjYy9Shvmk5979XSwQufH9qDgAZ1R3TXVRM4TS2NaTQYMXFSojRsJCPdlZmeU7dhQXRwFMcTKEwIFSYsquXcnHrQHpna8XftcxSNIsigmMbHSPHeicd/3mx09TC28LtIfAzgMyeFH3cwsEbgASBqoMcvRQLXXV/uT00tL+YnEmofeilXtFMx6yDNauz2JloRc+O8ouNRwabV75mvoxuHSQEsB8hRVyAkc/e1eK7p7B+1FcAD6LXrkACTwjW2drUVEUroqtOGs4KYOd15YPnokzK7OvfMcJnFeSXRxASk9M3rUr4/hRJOURvDPeRSOU/RXrFiR4RLAviN7Rex+9AhHJl37xCibMABIashRWe/TRx0l0fWgTDyZMYsBWGwoYqJNptba5dn8vcg9/a6ebsTtcQQzWP3/yySdPcQEjrMdeeOexJz577g/P4Xc++cOfvQXK2wOzFNOhU2n78yd/EF8svZ+QC33ms6eeeu4PWJ/8uckMljueJ6N70tOS17fDntWQ70LBDn6tsgpbY1sP+d6ZVN/KtEOC0L5jByz90hMT4Q1XfbyzpqamsxPlIxuGW3Rw14UNlG6dBgxBtIXTlAHHL/a/+uz7z259UlqSFNSWBzaRt49ftiG6k0CyBXnqwGB8Zq49BRliSscgQnC0/9KSMAH7h8+eeeaZJ3jAC4we2/wY8893332HV/cPttuWYZaBhJPtE/F+mxcXnsx3333ihSeeeIbrkxktQdKhaZ4fausp67Nn5VRa5bRjAnnBNtrWkhm/NPMvlIR2pEA3ko5k0Zg2SnX78TmMielViE3xTuvySZK8VuJIOvkF6qjvI/iWIFrU64LC2gNCyh0Dmo8+8vijW1+xBgPQwjfH6QBS4euwAy3umIpAm5j1BoP1OQkiBAw/ktQ9WW8D1+GX77yzefNTbk3c2p4k93MSRDyNHpPeT4xqvPAOUX/OakB4DvKnwZVfFeopA9G7rRIhOJQPYZVpG60qK18FUoIEEkRYJZjaL8y5YJWeJDot6zQahz827AkV2qDtpa2vPo+MaCVInJwFSI8+ymjvzUf2v2JFJx36w2qdra4VNgLba/d2oGlh0DNOlrueIkZLF1RYmAKlH+FfeAg+c8lUawTpqWcE6Sj2fr/83S+FKSq2PYD+zB8iBrJK2XeqhCxQZvlpgoTfSzWHAVIlQMr8NpBSYiC1XqhjLRDCEWIAZV32J1C55qQxzqQX0Sp/eLdEOb6ue3d/DK9HJZQe3v+2y5CWlgThDLmlrr1wF47iE+wsBcFpZ7v7KWAEJsISSrykuJ6/E530p9xrB4ksfb6Z9JYAHAMwtHN8AZMwkCcEowIUH707PyfbST3VUKNPTgtG0P9te0Ll3woSYSI1BfVWdHA1cSQrgSBgVK1PkEQHWmFyAKTdjzzy0M1A4v8+BO7+o+gtvWjTV+jM3GLAG0rBB8bHnKLwC+VT9Zh9wGb3zvXNCfDgsN8sGMcvPGXTrBmkF/hgit1OvONjPJQ2SyDBmQlcOFOA4XZ+gxPU+8y8UKNVRgcZMJcB0rdvdwQpmTSv4g6kv9gg0dxFSUy2PkFKU4AIAO1sbHf3b3kctGKuZVIO928TagHCuvn5Z9/zopZi0CsV3khnEXKTqL8eFeVgQRJR0giQxJMUW7j133nniScYQ7wDkEx/WeAgZQbIg2wSSLElnUh4lrjbIbh/ykHSojHNXGDLz86j3G1PqNESh90OM8J6Wz4ivtwVIEVTaIUgqYNDnDAjPRkgyXGbqmkAqV+XIMWlkRIFjAyuV579MWZhVoL0AGIGhnVidAkg/ew9L8a9kCcljXXVtLcX0bOwvc5lZOcNmayN290L77zwQiy+g6HIOyIWe3czfv3EbVStFSTxfiwISe/47u8ee+cJxor4vxeemkmC/a8A6VBDT0+Io697LGDEIOZTyFxDGDtyrgDJvwSSUPlM394LkytskKTnGaEdsW6a5LFrwEQbta9wQDjLL7z06/d3H0SAgGHZ69o1D7z8OEDa9ijge/llDJY9/f5HFr1KHjQlJTmOllyAt3vHhQtn5qxBYI102ICLivXCE4sLlxZ5zWcijn7is09AslrDrYofz/bJ8vd74l28zzPvPvYYYH/miacsIEijVKcM2w4NY24FIxHQN4Ef1JhRGx6zzobGB1aDBB1WSS2XQKUfaG4t4ZPUrRZ+Fbp1BVKsEiSHTQUE+WzuBdd//nrrg/dteegmID38EGYCPxbr5YMfRiiyEFmAs8PcxZK6ixenpub+ZHXNzLh8XV2RyJ+fWlrPPSf9ivQWmedTv3/ukz87gpo1gaTx/vmTp5YtpLDMbD9jMvvUJ1aLxUVZAUtktBLTEYcwL3HV4rCgtY86xdEhISR9a5BKP5041RVZcHgX8JlmVN3rBqTYs8SaleG9X7z99osvvv32S//5s69e233wJyukhSSQHnnzzQuD2Nra29urz5w6VVNz6mznxak/HY3YFpoMLkskcvXw4cNXr149fPXLCOcVpAkNVm4gmYGiDn/p8kXcBhDG1mZQzzoTpT+lMQhRC5qB3gNsUN1dXVeOjh6qbBwaOnRo9FpXBK4gINBEfF+O7gFglOxsG+eE2LeDhO0uobc/3X+85uxxfKiSzz9vUirWGUgsqXo/EjoOWzEx9pOHvnrkq50rBaC2bEEW+8ibHwOi3t7m5uYDpdPTJzpGCpOnz8xFZqiNXyG3dB3+4IMPvuC6apHLJJcddJVInQLdQCy45hnk3QVrBEmcTIjsaSFsQrtXLmd9BJGbSRkOwhP10HBV23xLDka9fI5gGAxag8P35fBwTmi+bB8KdwMDt3ySqDw9DVPt+umRwmPF098c/9wWXpcgvYSZvgcfvO9JOFx9xRbSSj1jqOfGQErcXooONIgn/dPVE6WlUfCq5ag3K/UYlbwKkN546623vjjsElOVcYKlLQ2CBihUzIkaTG6rdX9ps0J1PUWQqvPi/XC4m5ADGWhKAiaRdXQ4FF9WFqoaPuQ2UD8JpHv83rkGLM+lhvFz9tybg7TkR5axd9f51yf6jx3r7z82wlTCtA5BcgiQMM687bWHX8P87H33rwIJDdlH3/y4NZq+fft20AQOJE7UV0cPHJioPxuRgxWpxTDPjSCZaAmCcppOgKSSpNhNqhl1GIB2y9bYrFDrJJQEB4kFIJaDxRQoWMIy12ibB1STlhC0tIIauGBA5NBWeXKgYaCh4WQOBBouO28HUmHhyPnSiYyM6KcjhROd1vUFkioGEruwu9GI2H3fwd0P737y6fuXstfFLOlJzKQ//vGgHw0z9DYhdXWi40RvYn1RUadLjukmTKwY3FcvvfEGQHrjg6suihziopqU9J/QYMw5CVMtkLvrxrRYgaxpTSBRs5hmxVh8P7aNjUbOMqXpIDypqwAgLbj4A56cfIgrmjiSYXTPXurJHB8/WTUwfnmffXV0h/w1MXGp5pDQO9I70dx/vtBff6wwejayTvIkocejgSuEgkSFmRchqkaQHt/9JJ6Zp199GuJdmEq/X+Sv92/j/z14A0iFu0YKT+w9kZEBF69OlDchP6GSGayHP3iD64MPrjIoJkomE0xB0GWCSQirYooKHUiuSYhy1wiSjt1xGU45YZfEk44dYLMiYASTz7WnzcNRcqjSWVAHMoK0APPEk/Ony/tCJ52Xx3f0ja8ECUyUlJREprLCRSmxtz8abe5PLp6OFmf0nrJ18/oo4sRLfddGXVQK0KP1wSB2BuoDomJH9YbH33zz5w/9BHbaKAk98vPdDz5w/89+/WO4+8FuhGwhAVIGUSoEb20vTARAXmOmrtFpzaoKvSsGEp4kt1EsYQjC5JADKRyLEmKdZs1a71S1GC/Tkh3BITawAtGHAPBazLMZgr7GKo8TZiChnkYbJ2VI8JqpbCsrP90HbwOshobs2IYnIMokSP7qKKSgYLyIecX6iehEYj8epWjKSGnpRKctrMR7a5VmfDMMLiju3NDYLZemmyZThiALBLjhvS8+uGnTgzABfvPnu2mn/eT78Cjbfd/jB3/27MGXt9z/4+d3s+S6+2WCRBdqoFSYUVoqjTaiKYDtToWzgSC9xe3usEVqR0v3ooqThHgUNOJXcbys/SfmNJ5Gsq5QUjhGxclFIzr4mDqE0mNeWUtLzzxBMnELB0ihPEjTAKQdmfGrQcpI9hclpte+nlGcPHJserqo2u/Hs1QfRVp7oL8TMxcq6vkz7ME3i7tLIKm6MYuvlnuTzJCLNLBBsWnLw7t3Qgvg+Wff37r7weefh2DkwU2P7374zcdZYzhIMZuXCRJ7mslECh1zbOjN7SjxU6sap7ntKsKGL75A4HDVtnTuLQ7TQBkeWjSxqcu1ggQ+EIbATKRexSYoNWyJyDC3iTbqzCEAUl4OMbR8N6iOZhBSdajYxTtbIJ6B5lIZk9nlICXiZy/dDlb4CaYS3wxidRT3guQ5cr5/4uxRZAqc7dZzGpjtAeXdwCh1LA4jX6kOUhHoDhF55fmdW8gFenL/h5Bu+MVHUHP4zasHD371JsLuNx//GIUG1INe/vhj0BmQ+qWgFQv6WnNUAkm2BBIB+kJEdyph9BZTOhGhGVEKBExCjGytHxoTuSaFSRq8Vmj5NqoYSNAnSQVI8X0wBsn25GPMBSCBaWZj06IFSVLZ6dNlec6VIIHmgDA1PaX+TM3FszUlYO/XnOoYGYHDdnpv/akrR1FOARnDYjPwaNXdpXa6ulvXndp0jeoS+UNDjY2vPr2TAcOTz77tsjhs3hmv1wXXiq2vPfLVAy+/+fHgdFFRa3srGO7UQcCIvR8NzSiJqynSdoeoAIRIN0D6giC9ddjF4W6VaokitggVFYJM2vCatw+OS0vyAZzZgHIh3y6N87W6NB1YDGADQVmQIFHHFB6bYIB7suHSl10OkMpu8AchTPa+4r2FhSgGlRadOho5GnEtoHp05dR0QvpIcbR/ovUUcMPMRV3d5w5hqXqXQOpWwzDPOzpcVQUfmp6qqp1UIQR94Scf2cJGUwVs5OW2V57dv/+13U8efORNmEqWEpRoLxmgiFkFSFEwb2Jnkrh0OJMAkDiUDluEjJMmTnpuTCrd0qKefnjNGb3k7ZcqQNKIbUiG5jisRIC5xtLYhkMnXoCkV4BHgmAC51Qou4WOijtg1he/AqTMDnDvMhIx8lu3MCOHB0ST3NZV09FfmjJdX1Rf728dHGxF8at9zoLt03S3OA8BKMppHbMg34KAi4LKlp1w9UNt7pGPbEfQcsa1rYCa15M/ef55aOm+eSZaup0HELZxLhxGxbgVM9IZjRMkQdLXy9yHRWz31lsfHLYJoVKlCBhA+yJRhIPhEkjG4Jr14hhqMC6kW5kZxCAjWOcoLSBrhTKIdRIWVR6nPQsgGZOS8LQimMgPteSWgTaUBYE05wrriXg7Cif4HM1F1XWWuCZotqtVQetUa+IB3oqfFgEpsao7bTpOngfuTuBgCprCBY5GgARBvszsnC33Q76YIP3CVhA2wo9cner9cOd9oObv3/+Tx9ujpaI9li6BtB31LjHoA5BSpCeJIGlsUgguQJKpTPQ4UIora9ZCggwKVPRUhEcFykNrjRyEZAuoxJSXhKQCXdrlkMAogCK1Qe6ahD4dHposBA5GcTymaiz5nrzM030QSMvyeFaD1Ny8HezI5vbWi44KMFjNugqj7eJgb2lpL/KliX7UuxJpslQjQEK55G6AhB6ZrMLsrWyb78nNPH3a7nn8EaF49/CDH3kL4tSpFYGk1KaXnt69m5W8hz4+USys1ZLZHpNK+6g4FILXUNwbLYJOAtQbwjJZANHdB2+wLoToTvBKxV7HBVN1r7xJ6JcmUWd0zXs8VSHQ84WaDBSYENpBBySA/SAcHtNoUr2VVS192Q1ZnqpKt5wCqWmp3d78Bnvf6TIny3ehlRgBJDBZ96YUtRd12iqgWokEmYSaAwdqUcPbfmCkcNfruwoTkotrMIwtNoG7A1IFzpGZPVVtLc54xkVvCpAe3rb1ba+IbgvCaU1vv3rwUf7uay937CULAC/CxGw2YztyJDxOxf0ACWZTgloctomyENYXV11LUjYiXNBA+HFG09StMiEMV6rXPA/EZBYpHeTl5UHE8RpyGCE6hn0zgLlkx+ylsrLsbGihASTI2EJJAhFfg33f6dOQgmwAWT9vJUjRlBMn9mJEZuKUownviIanxlZSfWB77a5du7a/fh7/3lWYHK3HxJUcDiMYxborIDU1VWhshy5J1rdZDY8/SpQe2rb/bceYDJuRMpw289KrEPncvfvnX30MSR40m4WbJNFCsQGDWP7kvSf2Fk+gaR44AuHYiopg5DBiBrEOuyVt2qUyrrkb4aQO8Qhn16H+slaQWDWFh49mhq4I4TR1Wiq2TmPQ0ISUdszKbTvUNt/Whu0OvxGXZj5iGD2ZdXnf6Z4QWkm5N4YOQnY109+LELU3PfnEKTd17SFtAFGB6f7S9JHztf0w3sYHxSgadJM4aXW3aMfdJpO+yXXoZANVE+MbcmCJCTr+fU/+9iOHPCiriENRzPves0/vxJTL/tfe/GaadS7ReEHJCxbvCQeaEwnW3hE/xrVQBDfHparGug7HqkLIk0RXQuouMNBLokQxXLNBxjHynFrjnakQnEVKNQABCiFpMPWplgmVpECwa3a+paVtfn6+qtJKpRNM3RQ4RocbxuFF2kPPkNUg1dfXF1XXv17YcdGH2xUCFPpg19Q3kIab6E/w1yeP1HNVXyiB2otSd5dAUpgLjhzxumaH0S3DyskhdeGhbZu2/fbFhYXAEcQzQZvrvV/vf+j+9599/6uPsd1FMVBSiA4mVmJvaXpvL04l7Anno2fmXDisw5CkdB1l0++DL/DPYZfQJ7suRmYMgEkJKhGHYkw4/tcKkpD9hJAHpXEquqGeDsKWzgjudiq6fq7Kkzmwlm8DsyHiQKIkM3gXuhqHG/AoZeYx4gZIMTl9IoS8NrOjo/3Mmdbe5AtTkTGDHqwGDQg10/3N9UUpE5CnmMAfTk8L6rEWcYr6rhBTFJDgLjBErlWi74yVP0mCCVgmW/Z/GHFZkcxabL6u9957+6PfQEfy7fcH9xansOeSkYDYpzkaTUypLy5kbFfYGx282LXgWgC/wNZ19OrhLw9zoX0ulP6srGaI5bM4DMSJAkAyxV8DEhsf5qQwlAq9FgvcEiCZCFVB74wN3+rLQ4eg/JiP9jmMFHzo0qOnPtR2EiiBpA8f2cy8zOUghU7VlMyVlByvgZQAtA7w8y/4rpxKmWiewFPU8c3xUyUlJZ2dnSTxmwvMeP7vSusiVV1wJGhYkKpCLlfXnqqeHk4tXjo5lA+dS9AFZkcjYKa4bI4Zh+8UtrsEgpSyz56FM2xfeVm5ZKJr33F6/FTn8eOdF+em6i5GXE0zEfA5LAtXD69cV7+0GsISSNCVWytIUMNDHqsNGxb+z5ezs42zgCSfDIbRL2cbK790LJDwYMNPOocRCRZ5Tp3F5od+X3xeWTl+5Oz45SANdwmfVGpF/mmqBsIPnWfrTk2k93/af6y2t+jsFXp2Wn0ovsD9B4KbmrvDaFWn4m4ek8/EKYzck8CXbslz5s6XjQ+c81zC5jE8PFxpCwaNpiYEzL6z9ax11dbChNoupkjy5ssQEjZkZQ0ggqouSijtnQalq84XMJuDKE5WOMTGd329gSLEVZ9j7K8FSVlgZrXBZLRYvpysCs3Pt4VYKYHrEZII0LcwiWkAnSxs6WztqEaloHWiHqT9KtgZ0DAbuRJ/FUZJwCjX6Zm0cRuWa80VjrkzrdXtg9Wog6dj5Dn99dqEok63F1UtI2V7jQq2+k2Bu8R5ECJ+dIpHyiR3N4bixd6di3APjifoRA/D1gmSI2YQJiM1/gRRkEyM7ugTWs25PbmMCfHhMwVI6enR9sHWGp8xLs4IZJHWvkFopPWW+OeDqz4vKw0y0dhQKta0kPywbqdW6d2j6B0NID2lW3luS9l8eV7OIbdepUPOZOQ4ph+bcTEmeKXwGw8RMKKxYm4ZnF7g9ULDJJga4MLLKBLvwmwgipCJpQkZtdubS2t3ZfQX1XGgQBLCVMW6b3en6bdi/qcxxFA8j5+c3t9leR6CZNBLIHUCJKaxBCmXhp8eTzwwgjdKtvP0aX8UnYtEKN/VWFGMVAXoaX5YAPPW4iJIh60YnwTHxyi0UtYKklYn1VZdjW15WWD/2MvKUUtoKesDSPlWFKa0qGYJkBK3pxfuTS4+fTozS2h+O2klm5XdUsYBsj50mOJzQwBJgdQI5Q9rjb+5OQUUVjZfOFGbXFRUZ1kfDNaVk3SVMGZ35pXNAx0nBhexj9MgTS7TpSqpt1qUmIBENjkKZXpu6S0t4kHCl2RnlZ/2o5teW0qQXCZqyEBZElW8L65D9JZInw5jWtzEzYPCoqtX3K1eFH6FmAZ6X76hHrbynGggweYDhLrcFpiPgmqPsoYGM7Md0US0UdJ7E2HHjL+Qm9eTR5D44eDeYqdTUjzckGwcWocEqdZVg1AoAcdtBvXCUwoLE6J4ktbHVMUqkIZzQGsvwyNEansmzlpaDXJwT2k0WQBSOusNsA+IFw8Sdzs7iPEECRMKnEBtbvbXuFhMQMXGiHr4G1/ESuLSg/TGF4d9SJFEOVzokyvW9OJCK1kftA61cE/25JX3YXwvu2Egdx4gobusokqOqxO7HZUaeqMisEEay9OTW3ReHn5wO76iwZ7LrzDCMBpFRXdntPlAIeRsEBpxwiKDhS5rQLE+QWrDiBxGROySN0BWdigfSgg4t9BhA0iiVQ6Q7OLPPJgUxnhJz3yZMzsPxUregc1gU7tF3xWjI9bDb8T2O2nTQ5/prcMWSNRD4hBjttQKUq7lFSfJLGPuA808sB0bWDRFRRU/Ss88ngsV7Lm1BUkmVw0k9BNYGq3OxVlEkMrwBPFv5+V6GqijL4EEqx8kVGB4uDqLABJG0pFYYDoTnbLm5k5fcH2CVFXV1tOSh5I/Pjj2MYDUKECCBKscorPNpaw0JESdOIxZJUM9LFcCyeOEtEgUGVMRNYJNgrQadKMe/sVi4CCqeV98cRhzDuCNQE9aDHCsXKZbvcjikrGkrnSArRri5eZWx9ulB3UGB0a/VMqCJD2eJDzzqPh0dIRChDAXO3NWdk7Iac9rgd0BWrX4qnhML8n58GlhQlzS2lxaCDkoNjITo1B2AUltXYEUtzRawvZfGy59Tg4MurJ5m7YRJGUqDdsjne1MYeEg4PdU5Yjxn5wc3pV5udkNOZ6iaLW/FodSqxjHpIOOzLYiBCf5+KoLto8UvUb5LiBftQy3fBnpkWCEV6ZtdHIY7hJtPZye4PwE4tBRWxKruQG9IVLSGk0EOwYkprbhnAbJhqKhYbgKRJWetjZu506xS7hYtZKFg96uqVbGdMnSfDPAbR1EDSW8HkFyXEMfnY4NlZMhO/fveGcIbpFu0uJ9vivH24ua/eyVD06i3Z6fP5RfKbwehobyIfjXGq0vBkjR6lNXYFlAcwV35CbJ7NUut+S1gCxSkO/X8uJXCKp+BD/pHiay4geApUQ+fCR8YPPTziBy5Xh1FKVgVEcHhyrxs0nrUIwjMNQmzlzchJNH3fwKJKxHa1ohMpaB/fHCcdQY0DYvQZ0hsO7077jjeXntOPtwdCinIasP8YGnahITCfyMjUNV8fYd9JP0DB218ko7OOLggvIn8EA5hXRQdNMT/fyYkEWYmvq8S1xa39JF5hjKKEsES5d3rYt3xyQQOXrdY8NioaCHFVKeJTU1Qo3heAeIqYjuEquPX0FZilMXMU8OB+wmjk7mZEsGcaEhFsPwfvmTIOZBLaW8rGXoqM+C+gumP2xin193IKlIX2ISDrdiglSOGw718by8kLRyGZaDMtVIZSxkOSaO86FnEA7IvJGajsJC7OjIT5gW+qsHB6HHyP1Lbljcy2Q6GOM09szDoIjnmachZ80Lljk4hXLyuxz4MfW0lZNRuwjeGo6uztZq6IQV4yxKLkxOQes4Ea1ItBkRlMvYX8f3VyCNcu0BSPH0scoNoR6LsaXsBvDycHR5EAYN+bzaJI2wqpCtz/FzdhUodhUGgSPbThYUSw95uaEcUYBogX0aAr9QowssEp77ZJPiQiEpRT3ixN5CTgmjbCQmuatbW+vc4IdIvVkpLECXztaIZoKHVzqbh75zLS8PLmko24muUWMkiNgDwk8qzPOjVQ6da7mvpqPa30F9I/RP/ACpNj16PILUmVxXIxXdkEaFx+S+SSS2ECfkj4DgJ9TC0NzOQzg7C5/NB2V6DeMatEXWI0ZxIANLrQAbaw8ECR8Fdx1ibex0ZRg6zcUn8uS72L1GsKUV9h+wilQYrTUgpeD6sKUuOk5CEpBOJSqlWuqea5WpsEzEk9TjETxFxIYrG9rLjQ5XviAqyJ+EIFkDShWNMlHSAd0hQM8Fa8kgRYNIpEMAAE5gbWG0k5PwqMqmmijWpdKZwmPByFA8uUMMC7MQHyKalcp5HFjPJkjgXxjDaKiYlesRI5Xgh7IW4MhHNJTHupCHftPUiSsvbwE3Cp/ECY9IYaZB6gL8LPQwrFQm2Tr9go6XwDo5Bi6QpVR3Wlj2Ui+WFhTqijitrRI7XUtLHiwpsX/mrVxlt3zhq+IZUufssWnprYeZF2SiSlMYDFaYhwzSzQVFAzYlqaQGhroLgwHsM0J1X3D2AsGAC6zWTO4RTLCciM5RzssUTUA7QRLTIUl0n1mnIl0aYzggQLIRpAFIiORKEImbLZfbEw/cfFsauAX0dMG/wPcPmtRKWyePomQhqESQEgmSm81zjkPEaj6QYnKDroiqBp4Zvu9y98nbrcx48E5xZXNy9syozWZxP6VxqzNp4a9uLWn3kyiDBj+zOTLUO0psScysoeSgB7NfrYMdYBL0ujy5BAlbHJ7dPFEYZ+koL9OenVPphlA2HDoVbO2uQ4hIPBROYBqlpRE5eTZUFvv482fj2sQ7Y+aEnpaeIVsaSzTC7R45a9CIUoDtOPeaDNLx0sFuBcs6CqHPGDkyxj7FgI3BV1nVkJ0XTyac3R6/3H3ydgv7UTnueqRm+RY1eHfowqXqcFtRs8po8OFJIh21VFLeSk6BZhgYc5w6M5kgJM+uu0we1DpAPc5meQibQyabYaz8s6CM//VU7bHpSVE2qyg3oFqXIKFbStcCI6rMOQ0tmXYJHadk3o5gTLhGtjXaVNBCjSNI3CKNCtyjtk6IBCcLkKAGKECCrjFDupjHmVA2RhSI+iCgZsUii6HjWhY2KCeCFxDw8xdwKfm+OtjFy9TQBAt7u2oGiwVIpQAJW14i6MN1Ftr6aCBDDWMebncI9SAgkOPh6Yb9k58Qpyz2uWyqrOWFhkfdBmoLKUR1Yz1GdzGfV23AhqbacGi+p2U8dOlc9gB2AkzQnfvgJOnIHuT2VgOPVY0Gkzs4ZBUQJpRbazqKeR6kU74iWUzO+Wt8GEuQSA6SGxt6qlbUCi7Re7Jqtftk1ZIx5besBrYh8XNVVWKMWtaEuobeMAb7iSZ1QdjadWqCfooAKDZemZiISrbJCNteNpnACNSmpiqCMzZ8NsHpQBCEmxD1kuzL45fw2TzZ8aHJUasjCFYgWRjrUxFlWXu6Eu1p1BSGTiJf6pm3jzdc2jPLVHIof/SazQBPLgGSWamXgWmlNCAALuaUfWwxCE85fhS1B1+M3kB5ACT3kWuH9sBnki6U+Xsqb76k36dj5aFlL5YNRikDUPkl39AiyQ5EfD7HgsN19MqZkYTlS7QbAuA1h8MgHROkbrPJi892aA85HZPDDZAKb2nJzj73wfDs7OieycnG0f9jMZgoo8YNYF0K7q8kelAhITI5sOM0QMoamDzKIgPqBjavXrjKoZypk3S9mKSWiFLM0pAwk6VBMjluWFMot3wOowmCRXaBcKGUnCil5RKcA3fMpBLUgxUvi9vl45e7XX+amyq5KGYeSBaBYcjc1NkTxzJuDhLYeogeOGqTpg3DFNVBcEFt6BrOxtRZLkKRySsRtwP1Fqh7djP4JgHtbk32rZUyBa61dc/JfeXz8+MNkMo0IDgNs7oPMie62DKOcOqolY/oCVlKtHQFSP7W1jOLq5VrenqwxEcNB8EtCIRlsbV4aHH/0sf+RZVduWz5y4g6r9drhL/g3BkMfLXTZwL/mv4Uv1w4c2LvCpAglOsSdoAaRIA6ThkGjQEjvKBi39IxSZAQjjTMRmxjYaXZJGyFgBF+ANrHKNbnmbSMfAhbTEOk8pIzs6cnu+FkfgSEFTLlQbpXSu7Wcr2SNpa0v7ZODfoTbgSJqRK5heJf9fX99f39Ca+nY/AeQiN06VMKZ+IlY0qxlDcudJC0y1/iBMQ0F5LtOvjy9fcWFvb394NXlg55b7AcO1KWgwTNLSsGZ8WUno5fTMliMP6PoKaAuwAKkzmYsc2Od57Mh745LM3FQ9fdXUEXU5N5fYJ0ncYL9mcSaLwag9c6m3NuYN5zDpSUBQwD8U4LBxSClGoMkKKCupgerYybgZRCEmVvqVjbMfaIclrK2QXMmiWl6VIJ90qSg9a8uGI1ihUL1QMlPfjSLCXfHDtfex5Vd3yD5NrXwa//tHfavxokFybM2DRCkA6UwwGTkYbD+M70kwVIeWCP53ou7QGNE6kENAzU3eC5xEBKW5cgXSfEI6vF7AgMeK9Mhjzj5X0D4IUusPvCZqqwnOIer9Nht0fxUqMOYrtrLk1cBpLQeaiV1utYtekHJnBvy0F1TdKlEilNbLvTx9aSZnyMmKxaudSC0hUIuqe+mdg+QsFoeE0k1O4a4RRE/4HEFdtdawkqE8iR5DJaDOrUYJ1U6NJgwlOgkkDKLt/hzG7pQXaEIiPMfuXyMVl3N1VO9dzF12XFYeVoia7C6xvynBvo68vOqRq16YX5BAeSF2crwdszw5HVhOGrklbM/y0HKSEjvZav7TGk0puL4P0HDhWpWWlJqRWab1kqkaVcP6tiSybMOmG1Y4Ch4qelxzKIEQTAMca2q7aWfLkVgUP1nA13EU5Rk6jz6MwaTnMm8SbhGBuml8rLs7PL5ttGvVpMNUL+bUbepNFwHteoUa1Tg5HFIS2tNKSlLCgI2oZQss51DoTaZn1BDo6S+IYjmI9RqrobHGkzAqikYKSm/tjr6cuvEk6lFIozYvUKzeCi9sGLUMjTsGsg7IhXs4XYgBROl0JBSLfshXuduy2n+mr8E829SMfYHDlQimG2vZhSKVwZOFRftEEIiqVFnC8VKH2IEWul9FgpkryHhltQnTx9uqfRgemkoBEzSgFO4XLgjWod67JVsWLcEZ9Na9mDrNMzcO4kuDW4vaShYtyFAqUKVQDZeZA2eqBOnj+/AqTE6NLC6BwiCIRiJe4mjegtoQkkX3kR0jAwLglGSZZWq0AKMm4JQmTqlH/i0/4UgpRCJyQ/SvC79q4EyV+PmXg4vGM4UxtgI0a9OFhNNw2FGdPCoZ4cD6rqswAJY1O0zeZIbhp1W4zrVN5zxeCwpjut2zI6nHPu3ABS/VEH9bVwFnHf0et5ZqXqmryabiMYOt6jNdUsN9x4jdKZ0ibySertB0jT09NoMkGDiFt+UOikGFesgEmA1xRrEuplKxZ1Q3HNg2Ouzv7+5v5PwV4qBC0YoR2oFxhmS16x3bWf7ZpRYVMNJxnHMLio47gunXrEe2tkGIwBOSIHul6jXrEviMl2fnzKnwRMpnW53a0YwQcpUua4VrlncmhyFrMKTWrK+kAElFLFMk7a6Zocbh9yXlhasH0uSkI3gJSevHjV+idEJI5xklMQZnQxl7UhX7a5ly8rhiOWRjA4kLF8WRzepiYYc9ocXaeKJvo/fR0s1V2FIL+AIINGVvFKkHrbT8HJAk1+5OWOJtx/aXhQVKLtKkDyXhvFEAa4D6PXDBUVEPVcnI1Xq8Us9vrsJ90gZgH7lICmQjXmgq0Iai4Wi1df0Q15C5EpMZdizaHC8KepuYtQjiyp+aZ4JEPIN1+HiCBJKzp9ece+fftQdt5xbvLQHjFoMzrKy7NsNeYPoYCAUoLgKuA/Vi5cToy35A9VDl3oqD82cj6dw1GYmvILwmrCCozgn3Tm1EXBfJia+pOjyZRmFiCJ4FGJpNDoxdwMKx0OBybIujVjNE+nFohWZILr06tipSyMSq2B9bFRV4GbnoIJnL9WMKhYBElmmzt+obU/sciPg/t8b+9KkBYDiPppYJSZN4BmADZObDGYhWhbXUgNhQYuQDqhtbWaq7Wjo3r5GgyFQOQCYfacZ3C6uPD8SHrCLgQMLG6Ah075gpUVh+rpM4Nn6kHRugCVYoXoQAgbe0mzAGPrZEoY5V6DpiLNNCaMhMMIHii1Qh2X9dn1WxJY0mrFk6IKBsJ0H8IxkZQUZpdajaa5liFSkhYbYqTmG3DjDzQ3k1jY3y8px0mbXPoNq7dX0H2d8QMtqDnbMQwenxfvYad3+cqyF00XTSDM4EKokbJ8+cvIskAXPzu73T8yciwR/G0ozLA5QorzgZV5UsKxkdqRiaKJCZj0lPhQT1CJ7gqCV0GGpdQXqhE4fhAvglHbXaGRHiTk6uzLKtbldhcnSZWphFQZdgacpYowQz3tGA9fyeKXnl9SlUUm97pO+Tv8/aXNE4XQLa3vRawAjFgLzxBa6OmS3AMiCIKE1vtAj6evb18fR9A4w5qZ5Vz2stuLwAkj1ixSJCamL1sJKRDc6isHaS4rq8ifcT4dIOGvUGg0XSibACRawaWgP0zqfUICc1zIt3zaPFF90WXkVkeTU5GPc6hWxcEfSOdpGckUJCkkP2ESA8RWpzCt0yeJxZnYf0hZS6xgoxL/weEvqJaBPY25bxjzBt2n/P76vRm9/RmFr4/AgO08Gucjx3YlJIL7TmJK7OqOpOzY12d3jnPGDi1wu2DnoHEdb1/+yrTjdEkUrSBitOKMSU7JjI32j/f567HBvZ7em34sHT2+BN4Y6XyGkxmWp9RCfwG5c8axkWMJGecRozdD80SkDyrcfN240aBgt5iXiY+nuv65v5e2zTdCiB4SQNJrk1hUBmILZ4ug/ru3t3/7+e2vHysuHJno708eKZQ88yhpI0Q5ko/hTGIH9Hb9cYCElh2ewgSClJycvLwa6LcLUiOa+lBP7aWYIJ8XzFeL8gY22Aw27hFG1L4OMgxAK57AcOIIpGInOqZcsgrsDGOBpG7otcrAdTZ/r6x/14CRoGfIABJ2bpTIg9bOieKRvXt7cR22H6j3J0Le+NPmjEKhPpS+GDqA7juyQxquW7HWDFI8Z13BSdhXX49oMiOjl9mYVIQiSPimdKyK4oupiI3jzd/f+2n/gdL6jinfmEwlG0NNQQ3xNaGHp9L8MEFSSubV3MNRETNg+q8o4fzI3v7STw982j+N4Xqg1LzrvKQ+lC7UZ7kFTdTv67scT87o3w4SCSuX7fXTE70caMsY6cWdsAgSSTAcXYFCS3N/f3V1P4ZYenHETfi/mTrqxU8sHwuyIqmBQIFCqZH9EB8lVZDatphghL6FAabMsrEIZpa2jxzzT4yktJ+prp6on65und61q5a6SsKETURo/vr6fZiuA0hkzsUWOVprBQncJT6N8c5xCHHW+/neqApKTxLjFIYOeJ4SwZ5t9VOIoRdC7HuPjST2T9ccRfl9DMG2vjuJgmEQRl67ANX3AiRB51Ym6W3Q76MFgevK2eYD27f3Y6Cio6YEbgjoj9ccP3G+djsJitFYvw/KcdOX9zk5+v23gySYgPED09XV9dPEaaL/BpAYjGOP9Z9CHowMtubUmW9gfrv3WOJE0fErXRESAmCPoC5IotST7ocJUpyUxBodn8/VdZJgcPFsdf/r50c+7Z/oOHUUehXuBfhDXDlb34wwuBgFCCZHqDTs4yjxQHzeuCR2IW10i8IXawApZUef9DU8l8Z37Li8b9+OyxMTiTHFI4lvl5FMQECjcPl87itnW6eLEeP1o/Zw9mzJxbOdc3OfL2A2imnED3O7YwUWdYega+5Me3UHagPTkISrLUwpam7uqDnqQG9Tm2T0ui5y2AzxeHoikiG7mPYe7xuPH8/LWwIp/m8EaWC8z943vq9v3459OHJ6F0EixzkjhbMUmPowGfVex8X2+t7XzyejCk9KLfRJIUJjmwFXj6Uv0w8RIuFAIA0vdpyA0XkHNAmx/ARpCmPA+NhwX/J1YrY2hQF4CmoMzH5ieOQCGDJGhVytkKpdM0hCfoVPkn1x7YhGl54kqocJkHwGhZIMW42trqg/fVdtQpTxJn6mvcUdF6Z83jG0KZE0/SCfIxUdXAhSjZ/aXMX80MmcSmpuBqUYIKGpqZFZz+JKp+D3M/yS0eGSok/8EkbO+Njl/ptBsl8HifrKOJvAEfLJTWmCxyRAqq1NETkBBcWS6wenfIjDTaSG/yBBiqPoAUr9GBz2J4u0EQWC2tpigCRECfV6DAHJIHVRjFH72lqCtDyBjWHEoSfnXwMSNBiczlhCuxIk/m3xNbRkgDYKnyS9q6S1HpRjiGPXQl0wyqHy9hIbWpYk3SgVP0iQtNTY0VW4O6uBDqot8Fos3V6bHAMJhBvMnXME5cQJTPzVJogKwSqMSPvPlp6lNYIUXYRo6UlcDhK/CHN+eKrFlIAWvhlTg/X4U4gXcLIcPy5+0jqbjhU8xuGKHyZIKAVp9O4asFUBEgSoS6GFWVgchXi7G4ZWnHzUWQBSR/QApyEXUVi69+PF7Jgg39+sSHS7ENwpzXV4ROiBkCTemRkDSaKQMTcrqh7kNAeaQmFMWkxdqKfVb0rtrr0Y+09BSba50wWSC0BK+oGCpKFStEzvLhksYrka24cEErRmSyzQW6UqgtpGkKBdcSC6CiSILnkoKsCBWU6nrRmk2Fe3iCgeiS1BSlwCiSLl0JcfnHKDuMnClSECkEg3jtbuKkZ3CqdnFIotlAhTA6IfZgSuI5s/oLJNXWhvp7EDdz2UMSHe3jplDZIbrEnTzdQNQpERIA5eyL0BJLGkiyz6ewQqd40gZYsvpHxaC+faloEk9Beqq0k4RjEVJApU6w2+zmqS84qa02HKzp+4fbBjypJkQrkE0y0/SJDIAQAzSOdF0xxt7qmpkuP0li0uhr1szVF6KoLt4Fj4HNl+XR1VAqjy7BST3k5x5GO2qI16AxSLGBoKrXqUMjNFHQkUoBTRPFwGEvQjhiWdAGoxcFYQb2y3+6XmoN8/eJz6C1AngDSBG1qCVC/oOl5ExSo899XHKc4AoUg00guwz6kVd0v49s7nssL1SWZziakT8EYms+P3ncbUZl7oOBUUOOTwuY9qCS6KXgyLiTq4Jwv/Ihhdl5dVHYUEhNuNAYorw6vLQiKRYsjOZkSCaOEJy2upF378Cm4E0FVclq4hKIgNiJy4vA83QN+OPqpLuPhtra6uOaHLiX+OZ7O/iE5w9vBRsBnEj20zBLjRCUWwHyZIIl2K8UvBzbLkh/Iyd5RD66EPFc+O6lZpOwGdSG80OCKTHip1c9JbgIRpoLIhK/RoMRSJ82Jo9XaXKW2NubnlfQApndteDCSEba01Ea+cYo6BApcEEsVuy8udGKW0O3MqfQZKFgXlAZyZg63V/uqO1mrcGVnxACkn32eIUwo+s2DIXv80P9C1yNYGQ846BK1JuuHQRxxSPv6ieurdoTSmTQrDzqNtHiD18TJy+tYTqgo1wkxbQ0YBzT48NxuMXQESzybkqQSpxKpXkBioMtuGMODcAhmnXKjAxgPsrAYITXtpUgKQLATJT6uTE+V9/M7xodBQhGKdEnNZ9cM8jW4KElACSM6sPgzt2+2JiaxB9EaLEQADJFCUw9bKtp68bMjfUM9M+FbmQP3eyB48xANdlVXfCpKzr0/a7tJjIIH1TTKJUYnx3AqN2jaUG1MJA0iZLS0wwByGGjhKCWE8TUinO5AkwPDkxOlygNSXh2HsiJBGEXZVmnsApLhFHrBG7qIoRxbHguH7wKoLuL01VoxDYEZaaYQ0mweKbFl2yrJlC5W5HChjQX4bJHCV7VCO5yYAiVTVKZ1JGcmUFkxYBAnbHejoMrleFQMJciYACVIteRJIwhqDFZHqDrgBlJb6O8rLoH5SDko+RDSMAUXsB4+Lu3dAgkVofgjCPFR3yGpuZk01sR8gyQXrWi2zVOZkQ/7TDv08oJQLMwKAhEtZgeqSTmW5BUiLgUPGDSAVASQDRFBI94daLEwWexCKI9KAUG4L3xnpNJ3PVHKpbIWgI1pNZgVEQyBZ6JLT9/QeAmmxnR6w5FPxroVqrUUQmsUREsXJIRfjFxrM/4SoMgJ9OQjfxEN4ty8P+nleGb05dLAcrbo1SClk8Em+CxJIJVYMUat1eJjcjW0tFO2EtCoe0RaEJjk5h2zSSB/GcDr9KRlMbpubs/gEQwyzbdRGg9uYLPG9BRLs2KpCbT2QTrEXNWfUwmm76Mwc9YpxuTQGERpAsAkaRSH47ZWX9UHO1uflRJdZIQOE3wJSvAjBgRIEX9PTE66D5KItnBpFXEhOU4ehp8dJPcTccphpAyQVW3kQo0KzJCWjsDhZgERrhLKWqlFLeIlHd6+AJEhrqjELfS4gnV6ed3k6ZVctKG5FFy5aLV5Km5qCbgrvevAkXT53CW4EkO04OfmlyyDncK5S7mv8FpAgep3Ztw+t8d76+glMZBwrXnqS5PjGOJRmHF9SOdLTcq4BGvOXcqF7lDP8pWMMQjZqpdHr62ylEW5G+sinA9BnGK4a8Ax9aYGommrJf+YeAkm+cA36B6Oz0C0cvjBxLAON9KIzdVeEpJ/NAmlDyoAimT13aU9l/uQkZRiueeWaOAWYlbcCKTPz8uXp6XqwGPz9Kb3FSyD5DPAHRLIjgxaDkI6cnBwaPhnKPV2eG7o0ecUmdArdVI6EpwbUUY59M9yInw8CEKPXIJB3r4EkIZWmmoGHCAoMPuvRSUQI4B30xV+ahIcEtDQgisHiDRUahw8teCnX4IZYQvgIxpNpo+nLX+UNxso4017U5cb7BDcCut47jonAITEGEgjQ5iTdjBfflzKXXdCBHIDz5b7ygeGhIaFy2TjUSq5DQmlpM2oUkJ0Acl55BaY/7zF8YiB1q5oqupUwPjTQqSibnAMxNyEmJnpa+kQrNd4z/KW3oqkC7PEmDJyBdA2DPChE5N8kcFj0gKVkFtgrmXjDffXQw1kECdsZDjR4ZVU0NSE3RVVjz8lz9rJ9l/t27Lvs7Olheb2tJZpO2vGB0qKLERAaFAFZULg96u5BjMDAw5ijAhPhqoomTgQO7GMdL/tcA7WiICPcQMND1oPOHXJAYANT6jp1WlJ3BRwQksLymySzok2EBTWjgXForOfG913G6XRsESSeSWJwKBVUYbmmCX3GyOwljxNlhayBrOxzUB/CN812ogSfQlON6SnrmFHDGT+4PXZDAkB1D4I0FgCFDeIoqSqNZfTSpdx9l8vLBpjdIjtqEBjRdXyHfWCPzci+raoiDXZxKsxFwnzTNXozkERvEJ4skL8bQHFuPCsLlOJFkFxGjOBh7r0bo4hyb4VKZhizzbZlg8DfR0eKAembYjajyB+FcmT6NyVu1IkAUWqaohvDV/cUSEsVBxnGYjCWqZc1+WDxYc8av9wTAt1KSIHC4xqq9qF5xOeePbYCDtgFjdojcRVNap25ICyDYO1KkATpC5vdQF5Lrke0n+IH7H3U0RMgdbpk+FKt0aRSQxXfqIGyjmJhzyWaoCBy8IwzZ8rDN99Bpd6E9NpkSKlpKYPTpFEeMY51LyXh9xZIchWYAiaABNO5tr592KfmW8Yv76MdfFk5zT6QRM2XZeZUOrTQV4E2XVjbzUku+PfKYqrC1+kPguFK+wuKSnoGPPGecXTZx/um66n/hQJrnUWAhHkiGM1Cl8VsMgYMozl8eMrm50MDmfZcpGynT5ej/xfFjFJytNMG9p3cgIloPPUKXdw9WHFQSepN0JEJj7krQ6dP77DD8os24/wFgtW5qNdBvtV58pAF4W8QQ/ccBQKd3ExW0Z4ciAxSH9keCxdoHB3q23fZPj4wcG7A6RkYGA+F7H3108mC3kd1ZFxgBcVuaOsTF6eXh72HxLY60DIPDxonQgfeHR1UDoA1z7FTlu60NPkYLH10UDXW3YvRXZxKFP8pXhO07snBRR44N54JkDDPh+J0TwggIVHK9cCiQA4pgYAMPlE6uGJwtkkeA0noIwtpYScGNNtCmATMGodXyLkWz0Be7qWccTtyJaJUDA0IunSrJUUiBJcQ6TXCtaIhPmtgHLfDONDuEeLEcLfiMFn9CTjQQPcoSAUUWGvdkyBxdpFyaiCDeimamXNSaEL2tISEwqonhHIQlLzn2ya/tKHqhqHOFSDlZkoeP0JEnXG7JzQ+bs+6PDAw4IGq+nhLqOrkyYFphAGw14oOrgRJMRYcw/dtazuJenhVThZVVGnPZcdMBRgpRWA7WAqgZBykZk0woL43QQJ3zcRZYXWF3HsNE/+ze2b3HJqsOpkjQAq1DZPQAK8B1BnCsAHWrAQpT1xUTxXtCCqpGTA57Mk+d3l83Dl+cnYW5YTG2cpDkxda24t6S3v9q0GCTJX3WmXjLL9v/lDOOGR02TbxHKcbAgQL5/5kMHenapqgXw6/07h7creLE9LtWOGCI2MOG5L7BceCxTd0KeTJgth7z9BRVoesEZ9lRpmUSpRWgVSORwnsBMhBsqLj6Jo82TAwfrkv6xIZCzYQGqDjMcnuO2oZocoVIKkrdAXdBgfsSrscsC+ZDIHqgKo730+8oavL1VTAQVmokCqNxnsYJHZpA0eOHDF4g2NjMuSsltmqnhYQRMpoxxan1kDtcaYiCRerCce+AEm2tN1BHh5Z0ZA1GBQqK95IfmjAiScpCxKIXmh9aJq8TbZZyuqDTlKF91sOEgdxkNKOjcmDKhnMgOOFL5lnyOrlIGLA4HAozKl0yxbaefcmSApJP1CnCYePFFSoCuBfBHdq22wPvW9aIN9sA51XB3V3uaqgABo3cs0KkGhCgKH/IXe4gFqO8DEa6nGOzyMh9uT7IJNMQcGgG++XB1qleL8VTxLtTBSwGDV1p8lcsz1Oyf9i0iEJHZg03eZuTDMDJIaD6nsTJEnpEVteIBCmZy0a4xVpDoKU66TGtk2Ppw1/aCJbD+JpNwMpN7NsyAFVOk0FlJ0isz0tA+O82EO2cAAVOrlMSwuSFrjCrgYJIbgsrA2Ycd6AEGiF97lHcC7zbWYte79mIc4FVQYhcKC+N0ES8u20nJeEjdPMiiYkTV7QT3qys3bY0dAOGoUMKFQTzNTHUq04kzy5gtKaP5MqCS8pHY2I1Dx5A57QrEVeUcEaXZq3EaEfSBTw4FsZOGgZt0BNWq6HyKFtdn6+DKY/bRCXB91EhXIdNFAwaG5Sii8DZ/CeTJMojmI2U9RLKEoqjUGNKm1mFJZz5Ag1ACS5kPVSYhooLU1pWgFSFdQO0Tmtynfo1EIhK9UCV0FQvZ0tl/Z0Ye/EO6emzgiQkOuGVoIE/z60+aCAJDfiyy0kkLUgam9rdFXo9SYlUwNsopBzwjeGVJDiHgVJZoLsrDkNmsaCzxYIgxBu23Mpx8MqABraEF/kZsO7Hcqpi8ns4nYHPDgnkZNvaQpAwxbvYM0PNZw8OZ837plFJ1WvSgOX0dZ4iRjtsK8CSZEUID1LrQofSUqDCcoleBNnCUYSXK80dA1PhTAx3lopxEjvWZA06A/xXBKkVgQQAegNVZ5kP3bAMwyQKNEovEcwiwIOPUHSXQfJw7ANBohWXElytWas+aAVgTMRf6lyAaJ0YaoRuBtP0r5pR+aqEBw65gAWZr7Q5lToHIdOopAEXlIOmEFGLQUoObwMf0cxa65TxcXdo2cSqKpmIaumVphkEJMuCEKkelgafgBIdJMVnFMdtNC1Ks1ykOAPjaK1HV62XoR3siBU/WdRiZufLx8/uQfa+JTWC87g/QhSXzz5QCu2uwLK4aelQrwuTWcQHhTCS8Nl0JrFSQmSptAb10kn4j0JkopnkUkApVZCgi3NXGA0LFyrPHSIsoOV17yyAAwIBEjgHUPfYkV0Bz+ZciSpMDt0oL3uoiki9smWntN9A5MRB7veXof1CsoQoBqVe1aBBI8alMNR86lQI9afIe+BJhjw0pDjpMQ30suYIVDhTplmpEvQvQgS7lA4Bshk0tNEIb+kcJMhAi1GclEsDvQItLQhoNg7omy4XC2P7rJJ4QcdC8Yl4vrO7rmUO24fyDtdnnVykvqS+ZWzMIk5B9IWQFqdJzEohBSaAkOGTWmqBQeHNeilAbkW6tUZ5fCSQ09S6BcH1qvw7R0HiUpdBEkLMXYzNrZUFPPGDGOg4wdpC6GHZRLaoWlwt8J2x0RFwYFOCPsg1bQAJHsmNAaR23CurArV1EsoCdlRKL3cdw7RRwvZ4+fQtaAVWq6UJ2mWgcS40ijsMTUKtPU4zIERPzor4QgyBYwCpFQhIh1YrxLS38mWJ8ShsfeI2En0izS0n8Dvij9aynyFECBFdiFbLMMVtommn9DdWnK7CvUgQCMdRZpQF78vhmzxrxxRFtIIm8BYXip+lb4Pv4FGFfPhXPI4RqFB/FWkSAqV6p7FaC0LICWFkcEoZHq0/Wyr2+c3o+GJIWa0nEISSLRGiFPfq9WD76YgC1qXjIExpMThG3gbr0WO/QmpDqp14DHL3wDpuwBJRRne1FSNBkL5YIrfxrJUeAoiZCABbwOk7xCkJOjyp6pQpwj6Jm9n/ottLj5XshjNJF0CIKk0G0fLHQ8yQAGDSZEOdQr5wmTD7Wy1b3TPRHu9cgOk7wakAiqOK7UFAb2FrIi/wJE+JvJeNTwsQLrHxovuQngXR58OJazoUC6auUZLg9su+mTGfr3m2ADpuygj0RuUpvVgz+ltqErc+iXUIhb/G3wH+bK9bmPfu0MhON1k2F5gGclAq+C/+CUHXVizAdJ3UuvTCXsflG1QjA0bFaZbvhgn0IdGxAuimnEdGNVGBHEHQUI3nWS9VIThWoXyli8Uc4SRkUKUlZRKxQZI30V0p1MGwhiXUQgHYbNCfcuX4HyD+GMmi2QDpO8MJJBHkCrRNx2FPIhs3u4Ve5JEAV2p2ADpO8CIdTvRJlWgEA4lVJNSeiluvuJAX4gT1XVOUa8YWtkA6Y6BRK8LbHQKNJuAkeLWS7V6bYD0HWx3cdJjsSJS21gba2NtrI21sTbWxtpYG2tjbayNtbE21sbaWBtrY22sjbWxNtbG2lgba2NtrI21sTbWxtpYG2tjbayNtbE21sbaWBtrY22sjbWxNtbG2lgba2NtrI21sTbWxtpYG2tjbayNtbE21sbaWBtrY/0A1v8Pnml4wIwd4KgAAAAASUVORK5CYII=", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "gachi.tkn.near": { + "spec": "ft-1.0.0", + "name": "gachinuchi", + "symbol": "GACHI", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "nativo-token.near": { + "spec": "ft-1.0.0", + "name": "Nativo Token", + "symbol": "$NTV", + "icon": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/4gIoSUNDX1BST0ZJTEUAAQEAAAIYAAAAAAQwAABtbnRyUkdCIFhZWiAAAAAAAAAAAAAAAABhY3NwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA9tYAAQAAAADTLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlkZXNjAAAA8AAAAHRyWFlaAAABZAAAABRnWFlaAAABeAAAABRiWFlaAAABjAAAABRyVFJDAAABoAAAAChnVFJDAAABoAAAAChiVFJDAAABoAAAACh3dHB0AAAByAAAABRjcHJ0AAAB3AAAADxtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAFgAAAAcAHMAUgBHAEIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAABvogAAOPUAAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAJKAAAA+EAAC2z3BhcmEAAAAAAAQAAAACZmYAAPKnAAANWQAAE9AAAApbAAAAAAAAAABYWVogAAAAAAAA9tYAAQAAAADTLW1sdWMAAAAAAAAAAQAAAAxlblVTAAAAIAAAABwARwBvAG8AZwBsAGUAIABJAG4AYwAuACAAMgAwADEANv/bAEMAAwICAgICAwICAgMDAwMEBgQEBAQECAYGBQYJCAoKCQgJCQoMDwwKCw4LCQkNEQ0ODxAQERAKDBITEhATDxAQEP/bAEMBAwMDBAMECAQECBALCQsQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEP/AABEIAGAAYAMBIgACEQEDEQH/xAAdAAABBQEBAQEAAAAAAAAAAAAHAAQFBggDCQIB/8QAPhAAAQMDAgUBBQUFBgcAAAAAAQIDBAAFEQYhBxITMVFBCBQiYXEVMmKBkSMkocHxCRYzQlJTY3KCg6Kx0f/EAB0BAAICAwEBAQAAAAAAAAAAAAYHBQgBAwQAAgn/xAAzEQABAwMCAwYFAgcAAAAAAAABAgMRAAQFITEGElEHQWFxgZETFCKxwTKhIzNCstHh8f/aAAwDAQACEQMRAD8A9U6VKuUmQxEZVIkuJQ2jcqPYelZAkwKwSEiTtSkR25TK2Hc8q0lJwcdxigdqXjS1wq1DK03cGp08Nhs8y1DCCdyR6kEEUazdrYlHUVcI4TjOS4Meaw7xmu41Bru8z2JHXaclKQ0sdihPwpx8sCizhTHNZC4W1dCW4nprOn5pddoPERwNo1cWqwHCqBsdIM6e1ax07xf0RfYzdwTfobSpB6aGVPArUoeE5z/ChLr/ANoS5cN+NsqOuWm+aek29htMKM6P3Z3m3V2/xNlbeqVp8Cs1POSYbKExApDmclxP3k/TxXGNbLkXEzXQtRCwvnVuQrPc0b2XB2OtXVuLVzoUkjlPpBB3BEb70pr7tfv7q3Q2hIbWlQPMDvAMyk6GZ2On3rR2sIUXUwk3aLHSES2HVJQry43gAH03I/IVmrUnDsWrUhiLf5IiilYOcqCD3+tafgsOtsMx+zXTXygegynA/IZFCjiXGC731A3ypbISpQOxJHb8sGkF2BcY5FOcvMQ85LYK48pBSdSdfqPvHdTR7ZbRFthGcqwIc+mfYhXpoPDSaEdpgyoFwC47v7Vl34FAeDtRn0nxR4o2SaiQ3qOYr4eTovK6jQT8kq2FR1p0tawhqW5+1W58WQdqtrdjR7sHGkAlGCMjOBVm8rkra8+h5AV3agGkTh8nkG1h9pZTsdDr+1aT4S6ru2r9L/aF5U0qS28ppSkJ5cgAEEj8/SrtVB4MW8wdIhRa5Ou6V5x970/lV+pF5MNpvHA0ITJgVa3Auuv41h14yopBJNKml1gi5W6RCJwXUEA+D6fxp3SriSSkgipRaEuJKFbHSsp6+buFtmvw5PUZcbJQtPMR/WglrKYbPFF2UR7uw+37yVbBLKlBKlZ/Dzc30Br0DvelNPajaU1ebUxIyCOZScKGRjII3z86xRxi0azaL1fdDzUdWG6hbCVHcqZcT8JPzwf1FHWIzBfSWkCFAVWDtF4Vu8A+3fOK+JbrXBjcA6wRtJEwR3juquGGTuRsO1PIMJxyQywM/G4lIH1NQnCe5v6l0pbk3J/9+iJXAmrWccz7Cyy4o58qQVfQiiQ/ZVaeUqfIVhthsrUcbg4IGPnkipa/zosbJy7cMBKFK9AJpVY3hjK5PNNYlpoqJdS1I7yVhOnnV+Vc2WVxI3MnqOBzlz8gP/oqi68trbsHnbIUoOBSldsk9yaoWo+IEtnWlqisS0JQIspzmKvhKSpkBQ89zt5qzKvoutrcQpfMpQCk579xvVPOy/I3GO4nEJgPOSf7Y99dOs+X6GdsvZ6tngd2+kqKGVFI8pPf3wBvrpG+hjLXKkwVpZW6otjsKKnD20XzVsow7YzzhtIU44pWEtpJxk5/9DehP7wWlFBbBz60ZeDFp1jPeVddLPe7toIZfcUpPLv6FJ7/AKVcDJXq0sqUIB6naqD8E21xdZRpl1DikE6pR+qPCdPPwnatI2m3t2q2xrc2QUx20ozjGcDvTum1uTPREQi5LaW+kAKU3nCtu+9OaWaySokmTV3bcJS0kITygAQD3eFKonU11l2S1ruUWOh4NEFaVE7J87VLU0uymUWuYp8BTaWHCsEZyAk+lZbjmEia+3EqWkpSYJ76q0Ti3op90R5dxMJ0DKhITypGB/q7Gs98d9b2TXmoG4tltJD1uWphU8LB66c9sD0B7HPqa+Liww6FqkjnK89Md8eKiLdp2TPuAiQ42cjJJ2AHmjSxxjFov44mR12qEzHDmQzVobS4A5DqdOm2+3mKpvArQom8SdZ6blyCylqRB1A0lAGS3JbU2ofk5FUT/wA9GL2gGo9q0a+0yCX5CUJTgfEpIcRzAfkTVesdqlaO496Wuj7OY+obHcbCVIGAp9pTcpoH6IblY+p81Ee01r2LHvcC0rCwxb3lxZ61IKktplMDpnHqcJeIH4KCuNr5QxzzJOiwUDyXv7JJPpRR2d8C21vnbZ0NyUFLhPUt/p91AD1rJUu93F3XLEVbmRDhgtBR5sdRZzt/2x/StG8ONPS5+mpF2edUpWOYE75SDgq+nNkA+QrxWYrBIt0nX+pr1drg21bre81Ey0sFSghtKihruASpavKU57nbO9/ZptSrnw6ev10goQLy8QxHA+FiKgBLbYz9CT65UcknelTwRi/ls2y8R/LE/tv7mP8AlWO7ZrtnK8KuY4CA59J8fqmPYSfY70PI9pfeeSlaRjOArFaQ4BxrNarO9EaCk3B5ZLhycLSPu7fLemrfD3T6GUpaYUFN5KN+577+ab2KzPQri1GZBbcK/U7gegx5qwN7dovmS2DFUzwXA7WEuRdMpBIHtPSjbSptb23mYbbb6iVpG+e9OaEyIMUaV+E4BJ9Kz1qC/XCVJlD3yQsOnLg6pSk7+orQ1Au/abfsuqZMNwF0SSXYwbQVFSCT3A9R/KpvCKbStfPvAj80S8N/ALjgdEmAR6b0Prow6zy9RIWTgfD5q3aFt7yip5bYDePv+TUDcrxFjXMsONhxaFY5eXOKnoOokuthmGhDaD6JolulLWyEgb99Gl3aKXbgJbie+o3i4pNtkaJ1LGUA5ZtWQE/IomKVBX/4yifqBWQPa21n0OMWrLHNccLD0aKW+/I0620FoWkA7q5VlJznCVLwMkVrDjIiZK4V6kchIUuZFt7k6IEjJEhkdVoj5haEkfOsZ/2imk7hCXbuL9ja6tvvUFuI862nITKA/ZKUf+IgpAx/tfPdecT45d2xyN6wUk+vMk/iuvhotYu4Fy5tCh7cqvxQC4Xuy7wthLDK5Em83BTkeOkZU6txw8hIHyKQBXsjw709/cjQNk05JUOtCiIQ+R26pGV/xJrF3sI+ypddKw7dxa4j2xcZ5llP2JbpKMOIyMe8OIO6Tj7iTvvzYHw1sq+XN9CeQnmz2OcADya5OHMJ8BxdwrQr28BWvijJHOLas0GUtjXxVEGPL81bYATJd5irkbSCpThBwkAZya56WYTfL5ImOJUmPE6bsdaUcvWznCtxkjaqdpzVS4chakvtyozhDT7YVzBQPf8Ahmi/bJNnSw1DtjjKW0JAQ232SPFEl2g2oIiZ2PTrQHkmF48KSUzzDQ9Ovr+KkKVKlURQ3SrmY7BeEksoLoTyBfKObl8Z8V0pV6sgkbUD+OWhG4SXdZ2dKEnIM1od9zgOAfXY/r5oMW+5zTObebJGFJyM45vlRr9payzfsyBqiM+rpRVGM+1nYhW6VY+oI/SgBY7wpNwSmU3yJG4z/mqMveLDjHPlnT79KefCCV3eFS4tQWRI8QB/Sevn0IohQr1JmTZkSfHw28wpjpk5BBBH86oMxab/AMPuDXDgKYLs/UNqiXAuDmwLKhc17b8TttS0c/7tXGLJZW6HEADI7+KHml0TGOMc0lhxmLpWLNENS2yUOquz7L6nEn/UhcZ9J+T2O1cY4pZcdC1K0gj7RWq+x3zLC0NCDKT6CQfuK0ncb03AjlbuCnYYqmalviJ8lptmQlhlttS3CsgE/hH86ax5Uy7KDS3+snqAEehPoP1rjqXhhA1pd7e3dLvNtLEcdKQloAEZI87Dv+lb2+JAr62ta4bCytLF4fNK5d5IExp03NDKLrmem6vw0FMYB4qShB/zedqOfCG66n1Df4UeRIeEaNzLeUE5StPhX6Yz6Zq0SuAHCy4T7ApEd9Ldrj9FpuOtKWpIHxczqkjJUc5zkZooW212+zw24FshtRo7QwhttOABU4nIXT8h2I8Na4eJeMMZeWoas2DzqBBKgBy7iRvJI18OulO6VKlWulZSpUqVer1VnXmimNcWtu2vzFsBpzqDAylRxjcUKNZcJNBWOye5omSFXppIUFJ7LJPqOwGPnR9qpas001Ok/aGE5KQkgjckUO57GtXDK3kthSyIk9w6jxokwebubJaGPilLYMwO89D4GgFp+yOMh6M8gqQ1jkWR57ioyfYJqdQLmRkhoS2EsLUe6i2VKQAPOFuH8qM7em223VpDeOYAnb1r6kcNpk2I3Oa5Qtt0OpbwCopTnIGdsqGU/wDVS3Xh7t5r4bCSSnXTeAf8aUaHiZttwuKMTQwsNinWlsLceX1HVBSuUbpxuMfmKaag1reX50yMxGVDemK5UPOIwGiTjnwe4A81pO0afszNsbioZbkBIOXigZUTncHxucUw1RpC3aucRClx2UNRuVRc5AVq/CD3H9Kn3uF75qzSLR6FaQnedNRzTpGuv+qjGeLbZy7K7pqR16ajujXYaVVtORYGk9K2rS7WrzeLuZIk9UOhZK1bnYZwnfYGiknPKOY5ON6q2mdD6O0/Mcds8dK5bWylLc51Ng+nyq1UaYdh5ln+MEjYAJJUABpqTuetB+Wum7p4qQSSSSSQASTrsNAOlKlSpVL1FV//2Q==", + "reference": "https://nativonft.app", + "reference_hash": null, + "decimals": 24 + }, + "elixir.l2e.near": { + "spec": "ft-1.0.0", + "name": "LandtoEmpire.com game ELIXIR!", + "symbol": "ELIXIR", + "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAU4SURBVHgBxVddbFRFFP5m7tzdu7+03W0XFOyWBmkL6mLREnkARU0gMZb44E+ixZAYeDDwbiLw6JPwYOKToYkkECHyQBMS1ELig0SrxcTYQlsWI7CYpWxL9+f+zXjuWqos2+6CVM9mM3fuzD3nm+/MzDmHoU5JJpMNum70MoZNAEsxxpKAavhrlOWUUmlqh5WS52y7dDKdTufq0ctqTejo6EgqxfbQ1B1/G6wt9M1hzuWBkZGRNB4EgLdivz+wjx734l8JP2ia+QPzMVIVwOyqBz0ceDiSZkw9X40NXvmiq6sr9ZCNe1Je0KpVq1KVA3cxsAgrr5R7mJhjwPP5Ihsvm/FseLbuATC74ZLVvtrZ+Aa+fXUA7/e8h1qygXfjZLgfgx8MoMforgrC7w/tu9Mpu2CW+svzKT3m/xSPPrIUYlsEGz7ZQqgZXlKteBGP4VEVKmv5XRVxRt7A1sDb6N7yJKLJJbjSP4HeYl9VneSKNs8VmteJx1s+piY1HwCpiKHpMAZGTiGTv4GPrLfwjrUG7TKGZgTRghBWyhZsdp5BuOjgh9FrKA2ZMISOo+6X1XVKxiYns6dZMpmi827eQh0Sd5vw4R970WEkECpNg3EHwqfA/S5cQd4MBMG5haKZw1nTwUDwG5xXQ/Opy5lmsU0YRqmX6K9pnNFvd7YPQSMG6eqQjp8Mx6DpMfCQC61JQiWIqmIewSkdTdM/47wztJDK8tVOsPkm1CGp4hNolss86mByASecAAu1wAn6cGPNbXy340cYu5PwPb0MvvhSbAz3IMXbF9TpxRUupUrVA6A7vw62CxRcE3nmoCgESroDy+dgyc0mJBt/g8VGwHtC5BpGG1Vhm7u2BgCeErNRrSaA1dYKmiYx4V5DVI+QsSL5WyctAnAZbl7qQmw8BNV5BlxEyRUmViqjRrhTSVFvhIu4YUwTZ45ykZczCJBiToAAB9ziaB1sh6NbEDNRqOu0oFIeDXBrqW0QtWa0BBN4fek2tDZGaPP5kLsyg7xTQEjq4IwAKB2ixMpnlSuFYiYI/+08NEdhWli11EN4ycR8LLQFVmKXthPPXWyD0SJh9ISReCGBwSO/oGCbYLYkP8qyC0IWow3qQL9pwZI2ZJjhJ226lv2c8DIZYrbqRtyaeRlhEQAz/FCuC/Z4GEajixUrorg4OgnJ6DgyGnMEsUEukRKOkNAdDY4dwOnApRr2WdrbAxe8FKvacKzQjGLARkE4YDM6ikdzUO3XYdyyMeXMwISOKK3a5r7y0dRoM3ON7gMC8b0xjku4uqB5St+GBec4S67rq85PDtzUMMEzaFUJ+IvA7SsuZiwJ16ZnVUKJjmWBG4jyAPxcgyAqJgNT+Ewcr3m4yO45LRxenhZC7qK+UTnB1mx0FjpRkCatOE//Iq7SNUvOIDAR5DAFm6y40sWUWwBTPsgmhY3b18OdkBiSFxYEYFmld7VcLlOKx+PLqL+hckJGZJDVs4hbzdBsgTF+GcdjJ3A8eIqOv0msxLBcLYFB92len8TXka+wnq1D0DGwNt+Bz90vFli9Ojw+PnasrnB8P/Ka8wp6Ss/iQmgYR9iJeefdCcdz99Tq1Z0HqdmD/0YOjY7+Ws625zIi0/TvpyaNxZc0heH9dzpzANLp4ZyXMC4yiHJS+s8a4a60vJwiaWz7IoEo666sDf73wkSrNjubzeYikeX9QrgBVDme9ymHyOdvjo2NZaoN1lWcUrOfGOlD3eIFOLefco2DD1ycVopXTBiG0UuPmykte6p6ea6G6Wo/VyrVX57/Cf5KRyMZzZM5AAAAAElFTkSuQmCC", + "reference": null, + "reference_hash": null, + "decimals": 0 + }, + "linear-protocol.near": { + "spec": "ft-1.0.0", + "name": "LiNEAR", + "symbol": "LINEAR", + "icon": "data:image/svg+xml,%3Csvg width='40' height='40' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M30.74 28.78c.21-.36.32-.78.32-1.21v-6.33c0-.24-.06-.46-.17-.66-.12-.21-.28-.38-.48-.49l-16.86-9.77c-.35-.2-.73-.31-1.13-.32-.64 0-1.24.26-1.69.72-.45.45-.7 1.07-.71 1.71v6.39c0 .24.06.47.18.67.11.21.28.37.48.48l16.82 9.71c.36.22.77.32 1.19.32.41 0 .82-.12 1.19-.33.36-.21.66-.52.86-.89zm.32-16.27c0-.42-.1-.84-.29-1.21-.2-.38-.49-.7-.85-.93-.36-.22-.78-.34-1.21-.34-.42 0-.84.12-1.21.34l-4.97 2.81c-.04.02-.08.07-.1.12-.03.04-.04.1-.04.14 0 .06.01.11.04.16.02.04.06.08.1.1l8.05 4.62c.05.02.1.04.15.04.05 0 .1-.02.15-.05.04-.02.08-.06.11-.11.02-.04.04-.1.03-.15l.04-5.54zM10.05 27.5c-.01.43.08.86.28 1.23.2.38.49.7.85.93.36.22.78.34 1.2.34.42 0 .83-.12 1.2-.34l4.92-2.85c.04-.02.08-.06.1-.11.03-.04.05-.1.05-.15 0-.05-.02-.11-.05-.15-.02-.05-.06-.09-.1-.12l-8.05-4.6c-.05-.03-.09-.04-.15-.04-.05 0-.1.01-.15.04-.05.02-.08.07-.11.12-.02.04-.04.09-.04.14l.05 5.56z' fill='url(%23paint0_linear_186_370)'/%3E%3Cdefs%3E%3ClinearGradient id='paint0_linear_186_370' x1='11.135' y1='11.152' x2='30.145' y2='30.457' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%231BB3CC'/%3E%3Cstop offset='1' stop-color='%23824ACC'/%3E%3C/linearGradient%3E%3C/defs%3E%3C/svg%3E", + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "6f259637dcd74c767781e37bc6133cd6a68aa161.factory.bridge.near": { + "spec": "ft-1.0.0", + "name": "HuobiToken", + "symbol": "HT", + "icon": null, + "reference": "", + "reference_hash": "", + "decimals": 18 + }, + "token.cheddar.near": { + "spec": "ft-1.0.0", + "name": "Cheddar", + "symbol": "Cheddar", + "icon": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI1LjMuMSwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCA2NCA2NCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNjQgNjQ7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5zdDB7ZmlsbDp1cmwoI1hNTElEXzE2Xyk7fQoJLnN0MXtmaWxsOiNGRkU5NTk7fQoJLnN0MntvcGFjaXR5OjAuMjt9Cgkuc3Qze2ZpbGw6IzQyNDI0Mjt9Cgkuc3Q0e29wYWNpdHk6MC45O2ZpbGw6dXJsKCNYTUxJRF8xN18pO2VuYWJsZS1iYWNrZ3JvdW5kOm5ldyAgICA7fQoJLnN0NXtmaWxsOnVybCgjU1ZHSURfMV8pO30KCS5zdDZ7ZmlsbDp1cmwoI1hNTElEXzE4Xyk7fQoJLnN0N3tvcGFjaXR5OjAuOTtmaWxsOnVybCgjWE1MSURfMTlfKTtlbmFibGUtYmFja2dyb3VuZDpuZXcgICAgO30KCS5zdDh7ZmlsbDp1cmwoI1hNTElEXzIwXyk7fQoJLnN0OXtvcGFjaXR5OjAuOTtmaWxsOnVybCgjWE1MSURfMjFfKTtlbmFibGUtYmFja2dyb3VuZDpuZXcgICAgO30KCS5zdDEwe2ZpbGw6dXJsKCNTVkdJRF8yXyk7fQoJLnN0MTF7b3BhY2l0eTowLjk7ZmlsbDp1cmwoI1hNTElEXzIyXyk7ZW5hYmxlLWJhY2tncm91bmQ6bmV3ICAgIDt9Cgkuc3QxMntmaWxsOnVybCgjWE1MSURfMjNfKTt9Cgkuc3QxM3tvcGFjaXR5OjAuOTtmaWxsOnVybCgjWE1MSURfMjRfKTtlbmFibGUtYmFja2dyb3VuZDpuZXcgICAgO30KCS5zdDE0e2ZpbGw6dXJsKCNTVkdJRF8zXyk7fQoJLnN0MTV7ZmlsbDp1cmwoI1hNTElEXzI2Xyk7fQoJLnN0MTZ7b3BhY2l0eTowLjk7ZmlsbDp1cmwoI1hNTElEXzI3Xyk7ZW5hYmxlLWJhY2tncm91bmQ6bmV3ICAgIDt9Cgkuc3QxN3tmaWxsOnVybCgjWE1MSURfMzFfKTt9Cgkuc3QxOHtvcGFjaXR5OjAuOTtmaWxsOnVybCgjWE1MSURfMzNfKTtlbmFibGUtYmFja2dyb3VuZDpuZXcgICAgO30KCS5zdDE5e2ZpbGw6dXJsKCNTVkdJRF80Xyk7fQoJLnN0MjB7b3BhY2l0eTowLjk7ZmlsbDp1cmwoI1hNTElEXzM0Xyk7ZW5hYmxlLWJhY2tncm91bmQ6bmV3ICAgIDt9Cgkuc3QyMXtmaWxsOnVybCgjWE1MSURfMzZfKTt9Cgkuc3QyMntvcGFjaXR5OjAuOTtmaWxsOnVybCgjWE1MSURfMzdfKTtlbmFibGUtYmFja2dyb3VuZDpuZXcgICAgO30KCS5zdDIze2ZpbGw6dXJsKCNTVkdJRF81Xyk7fQoJLnN0MjR7ZmlsbDp1cmwoI1hNTElEXzM4Xyk7fQoJLnN0MjV7b3BhY2l0eTowLjk7ZmlsbDp1cmwoI1hNTElEXzM5Xyk7ZW5hYmxlLWJhY2tncm91bmQ6bmV3ICAgIDt9Cgkuc3QyNntmaWxsOnVybCgjWE1MSURfNDBfKTt9Cgkuc3QyN3tvcGFjaXR5OjAuOTtmaWxsOnVybCgjWE1MSURfNDFfKTtlbmFibGUtYmFja2dyb3VuZDpuZXcgICAgO30KCS5zdDI4e2ZpbGw6dXJsKCNTVkdJRF82Xyk7fQoJLnN0Mjl7b3BhY2l0eTowLjk7ZmlsbDp1cmwoI1hNTElEXzQyXyk7ZW5hYmxlLWJhY2tncm91bmQ6bmV3ICAgIDt9Cjwvc3R5bGU+CjxnIGlkPSJMYXllcl8xXzFfIj4KCQoJCTxsaW5lYXJHcmFkaWVudCBpZD0iWE1MSURfMTZfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9Ii0xODIxLjEzNTMiIHkxPSI5ODMuMTc0MyIgeDI9Ii0xODIxLjEzNTMiIHkyPSI5OTguMDU0MyIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgtMSAwIDAgMSAtMTc5MC4yNzUzIC05NDYpIj4KCQk8c3RvcCAgb2Zmc2V0PSIxLjk3MDAwMGUtMDIiIHN0eWxlPSJzdG9wLWNvbG9yOiNGN0JDMDAiLz4KCQk8c3RvcCAgb2Zmc2V0PSIxIiBzdHlsZT0ic3RvcC1jb2xvcjojRkNENzNFIi8+Cgk8L2xpbmVhckdyYWRpZW50PgoJPHBhdGggaWQ9IlhNTElEXzY4XyIgY2xhc3M9InN0MCIgZD0iTTUyLjMsNDAuMnYxNC4xbC00MC4yLTYuMWMtMS41LTAuMy0yLjYtMS4zLTIuNi0yLjNjMC4xLTMuOC0wLjEtNy41LDAtMTEuMQoJCWMwLTAuNywwLjEtMS41LDEuMi0xLjdjMC43LTAuMSwxLjYsMC4yLDIuMywwLjNsNC45LDAuOGMwLDAuMSwwLDAuMywwLDAuNGMwLDEuNiwxLjcsMyw0LDMuMWMyLDAuMSwzLjYtMC44LDMuOS0yLjJMNDAuNiwzOAoJCWMtMC4xLDAuMi0wLjIsMC40LTAuMiwwLjVjMCwwLjcsMC45LDEuMywxLjksMS40YzEuMSwwLjEsMS45LTAuNCwxLjktMS4yYzAtMC4xLDAtMC4xLDAtMC4yQzQ0LjEsMzguNiw1Mi4zLDQwLjIsNTIuMyw0MC4yeiIvPgoJPHBhdGggY2xhc3M9InN0MSIgZD0iTTkuNSwzNC44YzAuMy0xLjItMC40LTIuNiwzLjUtMS41bDQuOSwwLjhjMC40LTEsMi0xLjYsMy44LTEuNGMyLjIsMC4xLDQsMS4zLDQsMi41YzAsMC4xLDAsMC4yLDAsMC4zCgkJTDQwLjUsMzhsMCwwYzAuMy0wLjMsMS0wLjQsMS43LTAuNGMxLDAuMSwxLjksMC41LDEuOSwxLjFsOC4yLDEuNkwzMC44LDI3LjVjLTItMS4yLTQuNS0xLjctNi43LTEuM2MtMi4yLDAuMy01LDAuOC03LjEsMS42CgkJYy0yLjUsMC45LTQuOCwyLjQtNi4yLDMuNmMtMC4xLDAuMS0wLjYsMC41LTAuOSwxLjFDOS41LDMzLDkuNSwzMy44LDkuNSwzNC44eiIvPgoJPGcgY2xhc3M9InN0MiI+CgkJPHBhdGggY2xhc3M9InN0MyIgZD0iTTI1LjQsMjdjMS42LDAsMy4zLDAuNCw0LjcsMS4zbDIxLDEyLjV2MTIuNmwtMzguOC01LjljLTAuOS0wLjItMS43LTAuOC0xLjYtMS40YzAtMi4yLDAtNC4zLDAtNi41CgkJCWMwLTEuNSwwLTMuMSwwLTQuN2MwLTAuMSwwLTAuMiwwLTAuNGwwLDBjMC0wLjUsMC4xLTEuMiwwLjMtMS42YzAuMi0wLjQsMC41LTAuNywwLjYtMC44YzEuNC0xLjEsMy42LTIuNSw1LjgtMy40CgkJCWMxLjYtMC42LDQtMS4xLDYuOC0xLjVDMjQuNiwyNywyNC45LDI3LDI1LjQsMjcgTTI1LjQsMjYuMWMtMC40LDAtMC45LDAtMS4zLDAuMWMtMi4yLDAuMy01LDAuOC03LjEsMS42CgkJCWMtMi41LDAuOS00LjgsMi40LTYuMiwzLjZjLTAuMSwwLjEtMC42LDAuNS0wLjksMS4xYy0wLjMsMC41LTAuMywxLjItMC40LDEuOWMwLDAuMiwwLDAuMywwLDAuNGMwLDMuNywwLjEsNy41LDAuMSwxMS4xCgkJCWMwLDEuMSwxLjEsMi4xLDIuNiwyLjNsNDAuMiw2LjFWNDAuMkwzMC44LDI3LjVDMjkuMiwyNi42LDI3LjMsMjYuMSwyNS40LDI2LjFMMjUuNCwyNi4xeiIvPgoJPC9nPgoJCgkJPHJhZGlhbEdyYWRpZW50IGlkPSJYTUxJRF8xN18iIGN4PSItMzA0NS4xOTg3IiBjeT0iMjA0Ny40NDY5IiByPSI2Ljg2ODciIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLTAuNDI1OCAwIDAgMC4zMjI1IC0xMjc5Ljk4MTMgLTYxNy4xODk5KSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgoJCTxzdG9wICBvZmZzZXQ9IjguMTMwMDAwZS0wMiIgc3R5bGU9InN0b3AtY29sb3I6I0RFN0YxNCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuMzM4OSIgc3R5bGU9InN0b3AtY29sb3I6I0RBN0QxMiIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuNTk5MyIgc3R5bGU9InN0b3AtY29sb3I6I0NFNzYwRCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuODYwMiIgc3R5bGU9InN0b3AtY29sb3I6I0JBNkMwNSIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuOTg3IiBzdHlsZT0ic3RvcC1jb2xvcjojQUQ2NTAwIi8+Cgk8L3JhZGlhbEdyYWRpZW50PgoJPHBhdGggaWQ9IlhNTElEXzM1XyIgY2xhc3M9InN0NCIgZD0iTTE4LjQsNDMuOGMwLDEuMi0xLjMsMi4xLTMsMmMtMS42LTAuMS0zLTEuMi0zLTIuM3MxLjMtMi4xLDMtMkMxNyw0MS41LDE4LjQsNDIuNiwxOC40LDQzLjh6IgoJCS8+CgkKCQk8cmFkaWFsR3JhZGllbnQgaWQ9IlNWR0lEXzFfIiBjeD0iLTMwNjQuNDI3NSIgY3k9IjIwMTUuOTU3IiByPSIxNC4xMzIxIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC0wLjQyNTggMCAwIDAuMzIyNSAtMTI3OS45ODEzIC02MTcuMTg5OSkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KCQk8c3RvcCAgb2Zmc2V0PSI4LjEzMDAwMGUtMDIiIHN0eWxlPSJzdG9wLWNvbG9yOiNERTdGMTQiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjMzODkiIHN0eWxlPSJzdG9wLWNvbG9yOiNEQTdEMTIiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjU5OTMiIHN0eWxlPSJzdG9wLWNvbG9yOiNDRTc2MEQiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjg2MDIiIHN0eWxlPSJzdG9wLWNvbG9yOiNCQTZDMDUiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjk4NyIgc3R5bGU9InN0b3AtY29sb3I6I0FENjUwMCIvPgoJPC9yYWRpYWxHcmFkaWVudD4KCTxwYXRoIGNsYXNzPSJzdDUiIGQ9Ik0xNy44LDM0LjRjMCwxLjYsMS43LDMsNCwzLjFjMiwwLjEsMy42LTAuOCwzLjktMi4yaC0wLjFsLTAuMy0wLjFsMC40LDAuMWMwLTAuMSwwLTAuMiwwLTAuMwoJCWMwLTEuMy0xLjgtMi40LTQtMi41Yy0xLjgtMC4xLTMuNCwwLjUtMy44LDEuNEMxNy44LDM0LjIsMTcuOCwzNC40LDE3LjgsMzQuNHoiLz4KCQoJCTxyYWRpYWxHcmFkaWVudCBpZD0iWE1MSURfMThfIiBjeD0iLTEzMjguMjIwMiIgY3k9IjM0ODEuNzQ3MSIgcj0iNy4xMDIiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLTAuMzA3OCAwLjIyMjggMC4yNDA5IDAuMTkwOSAtMTIyMS41MjUxIC0zNDAuNzk4NCkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KCQk8c3RvcCAgb2Zmc2V0PSI4Ljc1MDAwMGUtMDIiIHN0eWxlPSJzdG9wLWNvbG9yOiNEOTk5MTQiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjQwOTgiIHN0eWxlPSJzdG9wLWNvbG9yOiNENTk2MTIiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjczNSIgc3R5bGU9InN0b3AtY29sb3I6I0M5OEQwRCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuOTg3IiBzdHlsZT0ic3RvcC1jb2xvcjojQkE4MjA3Ii8+Cgk8L3JhZGlhbEdyYWRpZW50PgoJPHBhdGggaWQ9IlhNTElEXzMyXyIgY2xhc3M9InN0NiIgZD0iTTI2LjgsMjkuNGMwLDAuNS0wLjksMS0yLDAuOXMtMi0wLjYtMi0xLjJzMC45LTEsMi0wLjlDMjYsMjguMiwyNi44LDI4LjgsMjYuOCwyOS40eiIvPgoJCgkJPHJhZGlhbEdyYWRpZW50IGlkPSJYTUxJRF8xOV8iIGN4PSItMzA3OS41NTMiIGN5PSIyMDQ0LjQxMSIgcj0iMTUuNjcyNSIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgtMC40MjU4IDAgMCAwLjMyMjUgLTEyNzkuOTgxMyAtNjE3LjE4OTkpIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CgkJPHN0b3AgIG9mZnNldD0iOC4xMzAwMDBlLTAyIiBzdHlsZT0ic3RvcC1jb2xvcjojREU3RjE0Ii8+CgkJPHN0b3AgIG9mZnNldD0iMC4zMzg5IiBzdHlsZT0ic3RvcC1jb2xvcjojREE3RDEyIi8+CgkJPHN0b3AgIG9mZnNldD0iMC41OTkzIiBzdHlsZT0ic3RvcC1jb2xvcjojQ0U3NjBEIi8+CgkJPHN0b3AgIG9mZnNldD0iMC44NjAyIiBzdHlsZT0ic3RvcC1jb2xvcjojQkE2QzA1Ii8+CgkJPHN0b3AgIG9mZnNldD0iMC45ODciIHN0eWxlPSJzdG9wLWNvbG9yOiNBRDY1MDAiLz4KCTwvcmFkaWFsR3JhZGllbnQ+Cgk8cGF0aCBpZD0iWE1MSURfMzBfIiBjbGFzcz0ic3Q3IiBkPSJNMzUuMSw0My40YzAsMi4xLTIuMiwzLjUtNSwzLjNzLTUtMi01LTRjMC0yLjEsMi4yLTMuNSw1LTMuM0MzMi44LDM5LjYsMzUuMSw0MS40LDM1LjEsNDMuNHoiCgkJLz4KCQoJCTxyYWRpYWxHcmFkaWVudCBpZD0iWE1MSURfMjBfIiBjeD0iLTMwNzYuMzYxNiIgY3k9IjIwMTEuMTY0OCIgcj0iMTAuOTExOCIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgtMC40MjU4IDAgMCAwLjMyMjUgLTEyNzkuOTgxMyAtNjE3LjE4OTkpIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CgkJPHN0b3AgIG9mZnNldD0iOC43NTAwMDBlLTAyIiBzdHlsZT0ic3RvcC1jb2xvcjojRDk5OTE0Ii8+CgkJPHN0b3AgIG9mZnNldD0iMC40MDk4IiBzdHlsZT0ic3RvcC1jb2xvcjojRDU5NjEyIi8+CgkJPHN0b3AgIG9mZnNldD0iMC43MzUiIHN0eWxlPSJzdG9wLWNvbG9yOiNDOThEMEQiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjk4NyIgc3R5bGU9InN0b3AtY29sb3I6I0JBODIwNyIvPgoJPC9yYWRpYWxHcmFkaWVudD4KCTxwYXRoIGlkPSJYTUxJRF8yOV8iIGNsYXNzPSJzdDgiIGQ9Ik0zNS44LDMzLjFjMCwwLjgtMS4zLDEuMy0yLjksMS4yYy0xLjYtMC4yLTIuOS0wLjgtMi45LTEuNmMwLTAuOCwxLjMtMS4zLDIuOS0xLjIKCQlDMzQuNiwzMS43LDM1LjgsMzIuMywzNS44LDMzLjF6Ii8+CgkKCQk8cmFkaWFsR3JhZGllbnQgaWQ9IlhNTElEXzIxXyIgY3g9Ii0zMTAyLjMwMzUiIGN5PSIyMDU5Ljc2NjgiIHI9IjUuOTI4NSIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgtMC40MjU4IDAgMCAwLjMyMjUgLTEyNzkuOTgxMyAtNjE3LjE4OTkpIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CgkJPHN0b3AgIG9mZnNldD0iOC4xMzAwMDBlLTAyIiBzdHlsZT0ic3RvcC1jb2xvcjojREU3RjE0Ii8+CgkJPHN0b3AgIG9mZnNldD0iMC4zMzg5IiBzdHlsZT0ic3RvcC1jb2xvcjojREE3RDEyIi8+CgkJPHN0b3AgIG9mZnNldD0iMC41OTkzIiBzdHlsZT0ic3RvcC1jb2xvcjojQ0U3NjBEIi8+CgkJPHN0b3AgIG9mZnNldD0iMC44NjAyIiBzdHlsZT0ic3RvcC1jb2xvcjojQkE2QzA1Ii8+CgkJPHN0b3AgIG9mZnNldD0iMC45ODciIHN0eWxlPSJzdG9wLWNvbG9yOiNBRDY1MDAiLz4KCTwvcmFkaWFsR3JhZGllbnQ+Cgk8cGF0aCBpZD0iWE1MSURfMjhfIiBjbGFzcz0ic3Q5IiBkPSJNNDIuMyw0Ny43YzAsMS0xLjIsMS44LTIuNiwxLjdjLTEuNC0wLjEtMi42LTEtMi42LTIuMWMwLTEuMSwxLjItMS44LDIuNi0xLjcKCQlDNDEuMSw0NS45LDQyLjMsNDYuOCw0Mi4zLDQ3Ljd6Ii8+CgkKCQk8cmFkaWFsR3JhZGllbnQgaWQ9IlNWR0lEXzJfIiBjeD0iLTMxMDYuODA4OCIgY3k9IjIwMzAuMDM0MyIgcj0iOC44NDA4IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC0wLjQyNTggMCAwIDAuMzIyNSAtMTI3OS45ODEzIC02MTcuMTg5OSkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KCQk8c3RvcCAgb2Zmc2V0PSI4LjYwMDAwMGUtMDIiIHN0eWxlPSJzdG9wLWNvbG9yOiNDNzczMTUiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjM3NzQiIHN0eWxlPSJzdG9wLWNvbG9yOiNDMzcxMTMiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjY3MTgiIHN0eWxlPSJzdG9wLWNvbG9yOiNCNzZDMEYiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjk2NjkiIHN0eWxlPSJzdG9wLWNvbG9yOiNBMzY0MDciLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjk4NyIgc3R5bGU9InN0b3AtY29sb3I6I0ExNjMwNiIvPgoJPC9yYWRpYWxHcmFkaWVudD4KCTxwYXRoIGNsYXNzPSJzdDEwIiBkPSJNNDAuMiwzOC41YzAsMC43LDAuOSwxLjMsMS45LDEuNGMxLjEsMC4xLDEuOS0wLjQsMS45LTEuMmMwLTAuMSwwLTAuMSwwLTAuMmwwLDBjMC0wLjUtMC45LTEtMS45LTEuMQoJCWMtMC43LTAuMS0xLjQsMC4xLTEuNywwLjRsMCwwQzQwLjMsMzguMSw0MC4yLDM4LjMsNDAuMiwzOC41eiIvPgoJCgkJPHJhZGlhbEdyYWRpZW50IGlkPSJYTUxJRF8yMl8iIGN4PSItMzExOS4yMjA1IiBjeT0iMjA0OC44OTk5IiByPSI0LjM5ODUiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLTAuNDI1OCAwIDAgMC4zMjI1IC0xMjc5Ljk4MTMgLTYxNy4xODk5KSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgoJCTxzdG9wICBvZmZzZXQ9IjguMTMwMDAwZS0wMiIgc3R5bGU9InN0b3AtY29sb3I6I0RFN0YxNCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuMzM4OSIgc3R5bGU9InN0b3AtY29sb3I6I0RBN0QxMiIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuNTk5MyIgc3R5bGU9InN0b3AtY29sb3I6I0NFNzYwRCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuODYwMiIgc3R5bGU9InN0b3AtY29sb3I6I0JBNkMwNSIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuOTg3IiBzdHlsZT0ic3RvcC1jb2xvcjojQUQ2NTAwIi8+Cgk8L3JhZGlhbEdyYWRpZW50PgoJPHBhdGggaWQ9IlhNTElEXzI1XyIgY2xhc3M9InN0MTEiIGQ9Ik00OC43LDQ0YzAsMC41LTAuNiwxLTEuMywwLjljLTAuNy0wLjEtMS4zLTAuNS0xLjMtMS4xYzAtMC41LDAuNi0xLDEuMy0wLjkKCQlDNDgsNDMsNDguNyw0My40LDQ4LjcsNDR6Ii8+CjwvZz4KPGcgaWQ9IkxheWVyXzFfMl8iPgoJCgkJPGxpbmVhckdyYWRpZW50IGlkPSJYTUxJRF8yM18iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iLTIxMjYuNTcyIiB5MT0iMTAyNi43NzYxIiB4Mj0iLTIxMjYuNTcyIiB5Mj0iMTAzOS45Mzc5IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC0wLjc2NTIgLTEuNjc0MTIzZS0wMiAtMS44Nzk5NDdlLTAyIDAuODU5MyAtMTU3Ni4yMTU3IC04OTMuNDA4NSkiPgoJCTxzdG9wICBvZmZzZXQ9IjEuOTcwMDAwZS0wMiIgc3R5bGU9InN0b3AtY29sb3I6I0Y3QkMwMCIvPgoJCTxzdG9wICBvZmZzZXQ9IjEiIHN0eWxlPSJzdG9wLWNvbG9yOiNGQ0Q3M0UiLz4KCTwvbGluZWFyR3JhZGllbnQ+Cgk8cGF0aCBpZD0iWE1MSURfN18iIGNsYXNzPSJzdDEyIiBkPSJNNDcsMjdsLTAuNCwxMC45bC0yOC41LTUuMWMtMS4xLTAuMi0xLjgtMS0xLjgtMS44YzAuMi0yLjksMC4xLTUuOCwwLjMtOC42CgkJYzAtMC41LDAuMS0xLjIsMC45LTEuM2MwLjUtMC4xLDEuMiwwLjIsMS43LDAuM2wzLjQsMC43YzAsMC4xLDAsMC4yLDAsMC4zYzAsMS4yLDEuMiwyLjMsMi43LDIuNGMxLjQsMC4xLDIuNi0wLjYsMi44LTEuNgoJCWwxMC41LDIuMmMtMC4xLDAuMS0wLjIsMC4zLTAuMiwwLjRjMCwwLjUsMC41LDEuMSwxLjMsMS4yYzAuNywwLjEsMS4zLTAuNCwxLjMtMC45YzAtMC4xLDAtMC4xLDAtMC4yQzQxLjEsMjUuNiw0NywyNyw0NywyN3oiLz4KCTxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0xNi41LDIyLjRjMC4yLTAuOS0wLjItMiwyLjUtMS4ybDMuNCwwLjdjMC4zLTAuNywxLjQtMS4yLDIuOC0xLjFjMS41LDAuMSwyLjgsMS4xLDIuOCwyYzAsMC4xLDAsMC4yLDAsMC4yCgkJbDEwLjUsMi4ybDAsMGMwLjItMC4zLDAuNy0wLjQsMS4zLTAuNGMwLjcsMC4xLDEuMywwLjQsMS4zLDAuOGw1LjgsMS4zTDMyLDE3Yy0xLjMtMC45LTMuMS0xLjMtNC44LTEuMWMtMS42LDAuMi0zLjYsMC41LTUuMSwxLjIKCQljLTEuOCwwLjYtMy40LDEuOC00LjUsMi43Yy0wLjEsMC4xLTAuNCwwLjQtMC42LDAuOEMxNi42LDIxLjEsMTYuNiwyMS43LDE2LjUsMjIuNHoiLz4KCTxnIGNsYXNzPSJzdDIiPgoJCTxwYXRoIGNsYXNzPSJzdDMiIGQ9Ik0yOC4xLDE2LjVjMS4yLDAsMi4zLDAuNCwzLjMsMWwxNC43LDkuOEw0NS45LDM3bC0yNy42LTQuOWMtMC42LTAuMS0xLjItMC42LTEuMi0xLjIKCQkJYzAuMS0xLjYsMC4xLTMuMywwLjItNC45YzAtMS4yLDAuMS0yLjQsMC4xLTMuNmMwLTAuMSwwLTAuMiwwLTAuM2wwLDBjMC0wLjQsMC4xLTAuOSwwLjItMS4zYzAuMS0wLjMsMC40LTAuNSwwLjQtMC42CgkJCWMxLTAuOCwyLjYtMS45LDQuMy0yLjVjMS4yLTAuNCwyLjktMC44LDQuOS0xLjFDMjcuNSwxNi41LDI3LjgsMTYuNSwyOC4xLDE2LjUgTTI4LjEsMTUuOGMtMC40LDAtMC42LDAtMSwwLjEKCQkJYy0xLjYsMC4yLTMuNiwwLjUtNS4xLDEuMmMtMS44LDAuNi0zLjQsMS44LTQuNSwyLjdjLTAuMSwwLjEtMC40LDAuNC0wLjYsMC44Yy0wLjIsMC40LTAuMywwLjktMC4zLDEuNGMwLDAuMSwwLDAuMiwwLDAuMwoJCQljLTAuMSwyLjktMC4xLDUuOC0wLjMsOC42YzAsMC44LDAuNywxLjYsMS44LDEuOGwyOC41LDUuMUw0NywyN0wzMS45LDE3QzMwLjgsMTYuMywyOS40LDE1LjgsMjguMSwxNS44TDI4LjEsMTUuOHoiLz4KCTwvZz4KCQoJCTxyYWRpYWxHcmFkaWVudCBpZD0iWE1MSURfMjRfIiBjeD0iLTM5OTEuOTUyOSIgY3k9IjI0MDEuOTY1MSIgcj0iNi44Njg3IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC0wLjMwMzcgLTQuMzQ2MjA4ZS0wMyAtNy41ODc3MjFlLTAzIDAuMjQ4NCAtMTE3Mi42NTQ4IC01ODUuMTI5KSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgoJCTxzdG9wICBvZmZzZXQ9IjguMTMwMDAwZS0wMiIgc3R5bGU9InN0b3AtY29sb3I6I0RFN0YxNCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuMzM4OSIgc3R5bGU9InN0b3AtY29sb3I6I0RBN0QxMiIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuNTk5MyIgc3R5bGU9InN0b3AtY29sb3I6I0NFNzYwRCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuODYwMiIgc3R5bGU9InN0b3AtY29sb3I6I0JBNkMwNSIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuOTg3IiBzdHlsZT0ic3RvcC1jb2xvcjojQUQ2NTAwIi8+Cgk8L3JhZGlhbEdyYWRpZW50PgoJPHBhdGggaWQ9IlhNTElEXzZfIiBjbGFzcz0ic3QxMyIgZD0iTTIyLjcsMjkuNGMwLDAuOS0xLDEuNi0yLjIsMS40Yy0xLjItMC4yLTIuMS0wLjktMi4xLTEuOWMwLTEsMS0xLjYsMi4yLTEuNAoJCVMyMi43LDI4LjUsMjIuNywyOS40eiIvPgoJCgkJPHJhZGlhbEdyYWRpZW50IGlkPSJTVkdJRF8zXyIgY3g9Ii00MDExLjE4MTYiIGN5PSIyMzcwLjQ3NTMiIHI9IjE0LjEzMjEiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLTAuMzAzNyAtNC4zNDYyMDhlLTAzIC03LjU4NzcyMWUtMDMgMC4yNDg0IC0xMTcyLjY1NDggLTU4NS4xMjkpIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CgkJPHN0b3AgIG9mZnNldD0iOC4xMzAwMDBlLTAyIiBzdHlsZT0ic3RvcC1jb2xvcjojREU3RjE0Ii8+CgkJPHN0b3AgIG9mZnNldD0iMC4zMzg5IiBzdHlsZT0ic3RvcC1jb2xvcjojREE3RDEyIi8+CgkJPHN0b3AgIG9mZnNldD0iMC41OTkzIiBzdHlsZT0ic3RvcC1jb2xvcjojQ0U3NjBEIi8+CgkJPHN0b3AgIG9mZnNldD0iMC44NjAyIiBzdHlsZT0ic3RvcC1jb2xvcjojQkE2QzA1Ii8+CgkJPHN0b3AgIG9mZnNldD0iMC45ODciIHN0eWxlPSJzdG9wLWNvbG9yOiNBRDY1MDAiLz4KCTwvcmFkaWFsR3JhZGllbnQ+Cgk8cGF0aCBjbGFzcz0ic3QxNCIgZD0iTTIyLjQsMjIuMmMwLDEuMiwxLjIsMi4zLDIuNywyLjRjMS40LDAuMSwyLjYtMC42LDIuOC0xLjZoLTAuMWgtMC4ybDAuMywwLjFjMC0wLjEsMC0wLjIsMC0wLjIKCQljMC0xLTEuMy0xLjktMi44LTJjLTEuMy0wLjEtMi40LDAuNC0yLjgsMS4xQzIyLjUsMjIsMjIuNCwyMi4xLDIyLjQsMjIuMnoiLz4KCQoJCTxyYWRpYWxHcmFkaWVudCBpZD0iWE1MSURfMjZfIiBjeD0iLTE3NjcuOTQ2NSIgY3k9IjQ1OTMuOTUyMSIgcj0iNy4xMDIiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLTAuMjI0OCAwLjE2ODUgMC4xNjczIDAuMTQ5NSAtMTEzNy40NjU2IC0zNzEuNjE3OCkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KCQk8c3RvcCAgb2Zmc2V0PSI4Ljc1MDAwMGUtMDIiIHN0eWxlPSJzdG9wLWNvbG9yOiNEOTk5MTQiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjQwOTgiIHN0eWxlPSJzdG9wLWNvbG9yOiNENTk2MTIiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjczNSIgc3R5bGU9InN0b3AtY29sb3I6I0M5OEQwRCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuOTg3IiBzdHlsZT0ic3RvcC1jb2xvcjojQkE4MjA3Ii8+Cgk8L3JhZGlhbEdyYWRpZW50PgoJPHBhdGggaWQ9IlhNTElEXzVfIiBjbGFzcz0ic3QxNSIgZD0iTTI5LjEsMTguNGMwLDAuNC0wLjYsMC43LTEuNCwwLjdjLTAuNy0wLjEtMS4zLTAuNC0xLjMtMC45YzAtMC40LDAuNi0wLjcsMS40LTAuNwoJCUMyOC40LDE3LjYsMjkuMSwxNy45LDI5LjEsMTguNHoiLz4KCQoJCTxyYWRpYWxHcmFkaWVudCBpZD0iWE1MSURfMjdfIiBjeD0iLTQwMjYuMzA3MSIgY3k9IjIzOTguOTI5MiIgcj0iMTUuNjcyNSIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgtMC4zMDM3IC00LjM0NjIwOGUtMDMgLTcuNTg3NzIxZS0wMyAwLjI0ODQgLTExNzIuNjU0OCAtNTg1LjEyOSkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KCQk8c3RvcCAgb2Zmc2V0PSI4LjEzMDAwMGUtMDIiIHN0eWxlPSJzdG9wLWNvbG9yOiNERTdGMTQiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjMzODkiIHN0eWxlPSJzdG9wLWNvbG9yOiNEQTdEMTIiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjU5OTMiIHN0eWxlPSJzdG9wLWNvbG9yOiNDRTc2MEQiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjg2MDIiIHN0eWxlPSJzdG9wLWNvbG9yOiNCQTZDMDUiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjk4NyIgc3R5bGU9InN0b3AtY29sb3I6I0FENjUwMCIvPgoJPC9yYWRpYWxHcmFkaWVudD4KCTxwYXRoIGlkPSJYTUxJRF80XyIgY2xhc3M9InN0MTYiIGQ9Ik0zNC42LDI5LjNjLTAuMSwxLjUtMS43LDIuNy0zLjcsMi41Yy0yLTAuMi0zLjYtMS42LTMuNS0zLjFjMC4xLTEuNSwxLjctMi43LDMuNy0yLjUKCQlDMzMsMjYuMywzNC42LDI3LjcsMzQuNiwyOS4zeiIvPgoJCgkJPHJhZGlhbEdyYWRpZW50IGlkPSJYTUxJRF8zMV8iIGN4PSItNDAyMy4xMTU3IiBjeT0iMjM2NS42ODMxIiByPSIxMC45MTE4IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC0wLjMwMzcgLTQuMzQ2MjA4ZS0wMyAtNy41ODc3MjFlLTAzIDAuMjQ4NCAtMTE3Mi42NTQ4IC01ODUuMTI5KSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgoJCTxzdG9wICBvZmZzZXQ9IjguNzUwMDAwZS0wMiIgc3R5bGU9InN0b3AtY29sb3I6I0Q5OTkxNCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuNDA5OCIgc3R5bGU9InN0b3AtY29sb3I6I0Q1OTYxMiIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuNzM1IiBzdHlsZT0ic3RvcC1jb2xvcjojQzk4RDBEIi8+CgkJPHN0b3AgIG9mZnNldD0iMC45ODciIHN0eWxlPSJzdG9wLWNvbG9yOiNCQTgyMDciLz4KCTwvcmFkaWFsR3JhZGllbnQ+Cgk8cGF0aCBpZD0iWE1MSURfM18iIGNsYXNzPSJzdDE3IiBkPSJNMzUuNCwyMS4zYzAsMC42LTEsMS0yLjEsMC45Yy0xLjEtMC4xLTIuMS0wLjYtMi4xLTEuM3MxLTEsMi4xLTAuOQoJCUMzNC41LDIwLjIsMzUuNCwyMC43LDM1LjQsMjEuM3oiLz4KCQoJCTxyYWRpYWxHcmFkaWVudCBpZD0iWE1MSURfMzNfIiBjeD0iLTQwNDkuMDU3OSIgY3k9IjI0MTQuMjg1MiIgcj0iNS45Mjg1IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC0wLjMwMzcgLTQuMzQ2MjA4ZS0wMyAtNy41ODc3MjFlLTAzIDAuMjQ4NCAtMTE3Mi42NTQ4IC01ODUuMTI5KSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgoJCTxzdG9wICBvZmZzZXQ9IjguMTMwMDAwZS0wMiIgc3R5bGU9InN0b3AtY29sb3I6I0RFN0YxNCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuMzM4OSIgc3R5bGU9InN0b3AtY29sb3I6I0RBN0QxMiIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuNTk5MyIgc3R5bGU9InN0b3AtY29sb3I6I0NFNzYwRCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuODYwMiIgc3R5bGU9InN0b3AtY29sb3I6I0JBNkMwNSIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuOTg3IiBzdHlsZT0ic3RvcC1jb2xvcjojQUQ2NTAwIi8+Cgk8L3JhZGlhbEdyYWRpZW50PgoJPHBhdGggaWQ9IlhNTElEXzJfIiBjbGFzcz0ic3QxOCIgZD0iTTM5LjYsMzIuN2MwLDAuOC0wLjksMS4zLTEuOSwxLjNjLTEtMC4xLTEuOC0wLjgtMS44LTEuNnMwLjktMS4zLDEuOS0xLjMKCQlDMzguOSwzMS4yLDM5LjcsMzEuOSwzOS42LDMyLjd6Ii8+CgkKCQk8cmFkaWFsR3JhZGllbnQgaWQ9IlNWR0lEXzRfIiBjeD0iLTQwNTMuNTYzIiBjeT0iMjM4NC41NTI1IiByPSI4Ljg0MDgiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLTAuMzAzNyAtNC4zNDYyMDhlLTAzIC03LjU4NzcyMWUtMDMgMC4yNDg0IC0xMTcyLjY1NDggLTU4NS4xMjkpIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CgkJPHN0b3AgIG9mZnNldD0iOC42MDAwMDBlLTAyIiBzdHlsZT0ic3RvcC1jb2xvcjojQzc3MzE1Ii8+CgkJPHN0b3AgIG9mZnNldD0iMC4zNzc0IiBzdHlsZT0ic3RvcC1jb2xvcjojQzM3MTEzIi8+CgkJPHN0b3AgIG9mZnNldD0iMC42NzE4IiBzdHlsZT0ic3RvcC1jb2xvcjojQjc2QzBGIi8+CgkJPHN0b3AgIG9mZnNldD0iMC45NjY5IiBzdHlsZT0ic3RvcC1jb2xvcjojQTM2NDA3Ii8+CgkJPHN0b3AgIG9mZnNldD0iMC45ODciIHN0eWxlPSJzdG9wLWNvbG9yOiNBMTYzMDYiLz4KCTwvcmFkaWFsR3JhZGllbnQ+Cgk8cGF0aCBjbGFzcz0ic3QxOSIgZD0iTTM4LjQsMjUuNmMwLDAuNSwwLjUsMS4xLDEuMywxLjJjMC43LDAuMSwxLjMtMC40LDEuMy0wLjljMC0wLjEsMC0wLjEsMC0wLjJsMCwwYzAtMC40LTAuNi0wLjgtMS4zLTAuOAoJCWMtMC41LTAuMS0xLDAuMS0xLjMsMC40bDAsMEMzOC40LDI1LjMsMzguNCwyNS41LDM4LjQsMjUuNnoiLz4KCQoJCTxyYWRpYWxHcmFkaWVudCBpZD0iWE1MSURfMzRfIiBjeD0iLTQwNjUuOTc0NiIgY3k9IjI0MDMuNDE4MiIgcj0iNC4zOTg1IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC0wLjMwMzcgLTQuMzQ2MjA4ZS0wMyAtNy41ODc3MjFlLTAzIDAuMjQ4NCAtMTE3Mi42NTQ4IC01ODUuMTI5KSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgoJCTxzdG9wICBvZmZzZXQ9IjguMTMwMDAwZS0wMiIgc3R5bGU9InN0b3AtY29sb3I6I0RFN0YxNCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuMzM4OSIgc3R5bGU9InN0b3AtY29sb3I6I0RBN0QxMiIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuNTk5MyIgc3R5bGU9InN0b3AtY29sb3I6I0NFNzYwRCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuODYwMiIgc3R5bGU9InN0b3AtY29sb3I6I0JBNkMwNSIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuOTg3IiBzdHlsZT0ic3RvcC1jb2xvcjojQUQ2NTAwIi8+Cgk8L3JhZGlhbEdyYWRpZW50PgoJPHBhdGggaWQ9IlhNTElEXzFfIiBjbGFzcz0ic3QyMCIgZD0iTTQ0LjMsMjkuOWMwLDAuNC0wLjQsMC43LTEsMC43cy0xLTAuNC0xLTAuOWMwLTAuNCwwLjQtMC43LDEtMC43CgkJQzQzLjgsMjkuMSw0NC4zLDI5LjQsNDQuMywyOS45eiIvPgo8L2c+CjxnIGlkPSJMYXllcl8xXzNfIj4KCQoJCTxsaW5lYXJHcmFkaWVudCBpZD0iWE1MSURfMzZfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9Ii0yNDIyLjUxNzMiIHkxPSIxMDA1LjY1NDYiIHgyPSItMjQyMi41MTczIiB5Mj0iMTAxNC43NjQzIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC0wLjYyODcgLTMuOTI5MDMwZS0wMiAtNS4wNDc5OThlLTAyIDAuODA3NyAtMTQ0MC42ODE1IC04OTIuMDUxMykiPgoJCTxzdG9wICBvZmZzZXQ9IjEuOTcwMDAwZS0wMiIgc3R5bGU9InN0b3AtY29sb3I6I0Y3QkMwMCIvPgoJCTxzdG9wICBvZmZzZXQ9IjEiIHN0eWxlPSJzdG9wLWNvbG9yOiNGQ0Q3M0UiLz4KCTwvbGluZWFyR3JhZGllbnQ+Cgk8cGF0aCBpZD0iWE1MSURfMTRfIiBjbGFzcz0ic3QyMSIgZD0iTTQwLjYsMTcuMmwtMC42LDcuMmwtMTYuNy0zLjhjLTAuNi0wLjItMS4xLTAuNy0xLTEuM2MwLjItMS45LDAuMy0zLjksMC40LTUuOAoJCWMwLTAuNCwwLjEtMC44LDAuNS0wLjljMC40LTAuMSwwLjcsMC4xLDEsMC4ybDIsMC41YzAsMC4xLDAsMC4yLDAsMC4yYy0wLjEsMC44LDAuNiwxLjUsMS41LDEuNmMwLjgsMC4xLDEuNS0wLjQsMS43LTEuMWw2LjIsMS41CgkJYy0wLjEsMC4xLTAuMSwwLjItMC4xLDAuM2MwLDAuNCwwLjMsMC43LDAuNywwLjhzMC44LTAuMiwwLjktMC41di0wLjFDMzcuMiwxNi4yLDQwLjYsMTcuMiw0MC42LDE3LjJ6Ii8+Cgk8cGF0aCBjbGFzcz0ic3QxIiBkPSJNMjIuOCwxMy43YzAuMi0wLjUsMC0xLjMsMS41LTAuN2wyLDAuNWMwLjItMC40LDAuOS0wLjgsMS43LTAuN2MwLjksMC4xLDEuNiwwLjcsMS41LDEuM2MwLDAuMSwwLDAuMSwwLDAuMgoJCWw2LjIsMS41bDAsMGMwLjItMC4yLDAuNC0wLjMsMC43LTAuMmMwLjQsMC4xLDAuNywwLjMsMC43LDAuNWwzLjQsMUwzMiwxMC4zYy0wLjgtMC42LTEuOC0wLjktMi44LTAuOGMtMSwwLjItMi4yLDAuNC0zLjEsMC43CgkJYy0xLjEsMC40LTIuMSwxLjItMi44LDEuN2MwLDAtMC4zLDAuMy0wLjQsMC41QzIyLjksMTIuOCwyMi44LDEzLjIsMjIuOCwxMy43eiIvPgoJPGcgY2xhc3M9InN0MiI+CgkJPHBhdGggY2xhc3M9InN0MyIgZD0iTTI5LjgsOS45YzAuNywwLDEuMywwLjMsMS45LDAuN2w4LjQsNi43bC0wLjUsNi41bC0xNi4xLTMuN2MtMC40LTAuMS0wLjYtMC40LTAuNi0wLjgKCQkJYzAuMS0xLjEsMC4yLTIuMiwwLjMtMy4zYzAuMS0wLjgsMC4xLTEuNiwwLjItMi40YzAtMC4xLDAtMC4xLDAtMC4ybDAsMGMwLTAuMywwLjEtMC42LDAuMi0wLjhjMC4xLTAuMiwwLjMtMC40LDAuMy0wLjQKCQkJYzAuNi0wLjUsMS42LTEuMywyLjYtMS42YzAuNy0wLjMsMS43LTAuNSwzLTAuNkMyOS40LDkuOSwyOS42LDkuOSwyOS44LDkuOSBNMjkuOSw5LjVjLTAuMiwwLTAuNCwwLTAuNiwwYy0xLDAuMi0yLjIsMC40LTMuMSwwLjcKCQkJYy0xLjEsMC40LTIuMSwxLjItMi44LDEuN2MwLDAtMC4zLDAuMy0wLjQsMC41Yy0wLjEsMC4zLTAuMiwwLjUtMC4yLDFjMCwwLjEsMCwwLjIsMCwwLjJjLTAuMiwxLjktMC4zLDMuOS0wLjQsNS44CgkJCWMtMC4xLDAuNSwwLjQsMS4xLDEsMS4zbDE2LjYsMy45bDAuNi03LjNMMzIsMTAuM0MzMS40LDkuOCwzMC42LDkuNiwyOS45LDkuNUwyOS45LDkuNXoiLz4KCTwvZz4KCQoJCTxyYWRpYWxHcmFkaWVudCBpZD0iWE1MSURfMzdfIiBjeD0iLTYzMDAuMDcxMyIgY3k9IjMxODQuNDk5MyIgcj0iNi44Njg3IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC0wLjE3OTYgLTYuODIyNTU0ZS0wMyAtMS4zOTA2NjJlLTAyIDAuMTY1NiAtMTA2MS43Nzg2IC01NTIuMjIzMykiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KCQk8c3RvcCAgb2Zmc2V0PSI4LjEzMDAwMGUtMDIiIHN0eWxlPSJzdG9wLWNvbG9yOiNERTdGMTQiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjMzODkiIHN0eWxlPSJzdG9wLWNvbG9yOiNEQTdEMTIiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjU5OTMiIHN0eWxlPSJzdG9wLWNvbG9yOiNDRTc2MEQiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjg2MDIiIHN0eWxlPSJzdG9wLWNvbG9yOiNCQTZDMDUiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjk4NyIgc3R5bGU9InN0b3AtY29sb3I6I0FENjUwMCIvPgoJPC9yYWRpYWxHcmFkaWVudD4KCTxwYXRoIGlkPSJYTUxJRF8xM18iIGNsYXNzPSJzdDIyIiBkPSJNMjYuMSwxOC41Yy0wLjEsMC42LTAuNiwxLjEtMS4zLDFjLTAuNy0wLjEtMS4yLTAuNi0xLjItMS4zYzAuMS0wLjYsMC42LTEuMSwxLjMtMQoJCUMyNS43LDE3LjMsMjYuMiwxNy45LDI2LjEsMTguNXoiLz4KCQoJCTxyYWRpYWxHcmFkaWVudCBpZD0iU1ZHSURfNV8iIGN4PSItNjMxOS4zMDAzIiBjeT0iMzE1My4wMDk1IiByPSIxNC4xMzIxIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC0wLjE3OTYgLTYuODIyNTU0ZS0wMyAtMS4zOTA2NjJlLTAyIDAuMTY1NiAtMTA2MS43Nzg2IC01NTIuMjIzMykiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KCQk8c3RvcCAgb2Zmc2V0PSI4LjEzMDAwMGUtMDIiIHN0eWxlPSJzdG9wLWNvbG9yOiNERTdGMTQiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjMzODkiIHN0eWxlPSJzdG9wLWNvbG9yOiNEQTdEMTIiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjU5OTMiIHN0eWxlPSJzdG9wLWNvbG9yOiNDRTc2MEQiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjg2MDIiIHN0eWxlPSJzdG9wLWNvbG9yOiNCQTZDMDUiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjk4NyIgc3R5bGU9InN0b3AtY29sb3I6I0FENjUwMCIvPgoJPC9yYWRpYWxHcmFkaWVudD4KCTxwYXRoIGNsYXNzPSJzdDIzIiBkPSJNMjYuMywxMy43Yy0wLjEsMC44LDAuNiwxLjUsMS41LDEuNmMwLjgsMC4xLDEuNS0wLjQsMS43LTEuMWgtMC4xaC0wLjFoMC4yYzAtMC4xLDAtMC4xLDAtMC4yCgkJYzAuMS0wLjYtMC42LTEuMy0xLjUtMS4zYy0wLjgtMC4xLTEuNCwwLjItMS43LDAuN0MyNi4zLDEzLjUsMjYuMywxMy42LDI2LjMsMTMuN3oiLz4KCQoJCTxyYWRpYWxHcmFkaWVudCBpZD0iWE1MSURfMzhfIiBjeD0iLTI4OTUuMTQ2NyIgY3k9IjcyMzAuOTM4NSIgcj0iNy4xMDIiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLTAuMTM5NSAwLjEwOTUgOS4zMzg2MjdlLTAyIDAuMTAxOSAtMTA0OS4wOTQyIC00MDkuMzQ3OCkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KCQk8c3RvcCAgb2Zmc2V0PSI4Ljc1MDAwMGUtMDIiIHN0eWxlPSJzdG9wLWNvbG9yOiNEOTk5MTQiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjQwOTgiIHN0eWxlPSJzdG9wLWNvbG9yOiNENTk2MTIiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjczNSIgc3R5bGU9InN0b3AtY29sb3I6I0M5OEQwRCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuOTg3IiBzdHlsZT0ic3RvcC1jb2xvcjojQkE4MjA3Ii8+Cgk8L3JhZGlhbEdyYWRpZW50PgoJPHBhdGggaWQ9IlhNTElEXzEyXyIgY2xhc3M9InN0MjQiIGQ9Ik0zMC4zLDExLjJjMCwwLjMtMC40LDAuNC0wLjksMC40cy0wLjgtMC40LTAuOC0wLjZzMC40LTAuNCwwLjktMC40CgkJQzMwLDEwLjYsMzAuMywxMC45LDMwLjMsMTEuMnoiLz4KCQoJCTxyYWRpYWxHcmFkaWVudCBpZD0iWE1MSURfMzlfIiBjeD0iLTYzMzQuNDI1OCIgY3k9IjMxODEuNDYzNCIgcj0iMTUuNjcyNSIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgtMC4xNzk2IC02LjgyMjU1NGUtMDMgLTEuMzkwNjYyZS0wMiAwLjE2NTYgLTEwNjEuNzc4NiAtNTUyLjIyMzMpIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CgkJPHN0b3AgIG9mZnNldD0iOC4xMzAwMDBlLTAyIiBzdHlsZT0ic3RvcC1jb2xvcjojREU3RjE0Ii8+CgkJPHN0b3AgIG9mZnNldD0iMC4zMzg5IiBzdHlsZT0ic3RvcC1jb2xvcjojREE3RDEyIi8+CgkJPHN0b3AgIG9mZnNldD0iMC41OTkzIiBzdHlsZT0ic3RvcC1jb2xvcjojQ0U3NjBEIi8+CgkJPHN0b3AgIG9mZnNldD0iMC44NjAyIiBzdHlsZT0ic3RvcC1jb2xvcjojQkE2QzA1Ii8+CgkJPHN0b3AgIG9mZnNldD0iMC45ODciIHN0eWxlPSJzdG9wLWNvbG9yOiNBRDY1MDAiLz4KCTwvcmFkaWFsR3JhZGllbnQ+Cgk8cGF0aCBpZD0iWE1MSURfMTFfIiBjbGFzcz0ic3QyNSIgZD0iTTMzLjIsMTguNWMtMC4xLDEuMS0xLjEsMS44LTIuMiwxLjZzLTIuMS0xLjEtMi0yLjJjMC4xLTEuMSwxLjEtMS44LDIuMi0xLjYKCQlDMzIuNCwxNi42LDMzLjMsMTcuNSwzMy4yLDE4LjV6Ii8+CgkKCQk8cmFkaWFsR3JhZGllbnQgaWQ9IlhNTElEXzQwXyIgY3g9Ii02MzMxLjIzNDQiIGN5PSIzMTQ4LjIxNzMiIHI9IjEwLjkxMTgiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLTAuMTc5NiAtNi44MjI1NTRlLTAzIC0xLjM5MDY2MmUtMDIgMC4xNjU2IC0xMDYxLjc3ODYgLTU1Mi4yMjMzKSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgoJCTxzdG9wICBvZmZzZXQ9IjguNzUwMDAwZS0wMiIgc3R5bGU9InN0b3AtY29sb3I6I0Q5OTkxNCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuNDA5OCIgc3R5bGU9InN0b3AtY29sb3I6I0Q1OTYxMiIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuNzM1IiBzdHlsZT0ic3RvcC1jb2xvcjojQzk4RDBEIi8+CgkJPHN0b3AgIG9mZnNldD0iMC45ODciIHN0eWxlPSJzdG9wLWNvbG9yOiNCQTgyMDciLz4KCTwvcmFkaWFsR3JhZGllbnQ+Cgk8cGF0aCBpZD0iWE1MSURfMTBfIiBjbGFzcz0ic3QyNiIgZD0iTTMzLjksMTMuMmMwLDAuNC0wLjYsMC42LTEuMywwLjVjLTAuNi0wLjEtMS4yLTAuNC0xLjItMC45YzAtMC40LDAuNi0wLjYsMS4zLTAuNQoJCVMzMy45LDEyLjksMzMuOSwxMy4yeiIvPgoJCgkJPHJhZGlhbEdyYWRpZW50IGlkPSJYTUxJRF80MV8iIGN4PSItNjM1Ny4xNzYzIiBjeT0iMzE5Ni44MTkzIiByPSI1LjkyODUiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLTAuMTc5NiAtNi44MjI1NTRlLTAzIC0xLjM5MDY2MmUtMDIgMC4xNjU2IC0xMDYxLjc3ODYgLTU1Mi4yMjMzKSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgoJCTxzdG9wICBvZmZzZXQ9IjguMTMwMDAwZS0wMiIgc3R5bGU9InN0b3AtY29sb3I6I0RFN0YxNCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuMzM4OSIgc3R5bGU9InN0b3AtY29sb3I6I0RBN0QxMiIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuNTk5MyIgc3R5bGU9InN0b3AtY29sb3I6I0NFNzYwRCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuODYwMiIgc3R5bGU9InN0b3AtY29sb3I6I0JBNkMwNSIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuOTg3IiBzdHlsZT0ic3RvcC1jb2xvcjojQUQ2NTAwIi8+Cgk8L3JhZGlhbEdyYWRpZW50PgoJPHBhdGggaWQ9IlhNTElEXzlfIiBjbGFzcz0ic3QyNyIgZD0iTTM2LDIwLjljMCwwLjUtMC41LDAuOS0xLjIsMC44Yy0wLjYtMC4xLTEuMS0wLjUtMS0xLjFjMC0wLjUsMC41LTAuOSwxLjItMC44CgkJQzM1LjYsMTkuOSwzNi4xLDIwLjMsMzYsMjAuOXoiLz4KCQoJCTxyYWRpYWxHcmFkaWVudCBpZD0iU1ZHSURfNl8iIGN4PSItNjM2MS42ODE2IiBjeT0iMzE2Ny4wODY3IiByPSI4Ljg0MDgiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLTAuMTc5NiAtNi44MjI1NTRlLTAzIC0xLjM5MDY2MmUtMDIgMC4xNjU2IC0xMDYxLjc3ODYgLTU1Mi4yMjMzKSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgoJCTxzdG9wICBvZmZzZXQ9IjguNjAwMDAwZS0wMiIgc3R5bGU9InN0b3AtY29sb3I6I0M3NzMxNSIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuMzc3NCIgc3R5bGU9InN0b3AtY29sb3I6I0MzNzExMyIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuNjcxOCIgc3R5bGU9InN0b3AtY29sb3I6I0I3NkMwRiIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuOTY2OSIgc3R5bGU9InN0b3AtY29sb3I6I0EzNjQwNyIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuOTg3IiBzdHlsZT0ic3RvcC1jb2xvcjojQTE2MzA2Ii8+Cgk8L3JhZGlhbEdyYWRpZW50PgoJPHBhdGggY2xhc3M9InN0MjgiIGQ9Ik0zNS41LDE2LjFjMCwwLjQsMC4zLDAuNywwLjcsMC44YzAuNCwwLjEsMC44LTAuMiwwLjktMC41di0wLjFsMCwwYzAtMC4zLTAuNC0wLjUtMC43LTAuNQoJCWMtMC40LDAtMC42LDAtMC43LDAuMmwwLDBDMzUuNiwxNS45LDM1LjUsMTYsMzUuNSwxNi4xeiIvPgoJCgkJPHJhZGlhbEdyYWRpZW50IGlkPSJYTUxJRF80Ml8iIGN4PSItNjM3NC4wOTMzIiBjeT0iMzE4NS45NTI0IiByPSI0LjM5ODUiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLTAuMTc5NiAtNi44MjI1NTRlLTAzIC0xLjM5MDY2MmUtMDIgMC4xNjU2IC0xMDYxLjc3ODYgLTU1Mi4yMjMzKSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgoJCTxzdG9wICBvZmZzZXQ9IjguMTMwMDAwZS0wMiIgc3R5bGU9InN0b3AtY29sb3I6I0RFN0YxNCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuMzM4OSIgc3R5bGU9InN0b3AtY29sb3I6I0RBN0QxMiIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuNTk5MyIgc3R5bGU9InN0b3AtY29sb3I6I0NFNzYwRCIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuODYwMiIgc3R5bGU9InN0b3AtY29sb3I6I0JBNkMwNSIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuOTg3IiBzdHlsZT0ic3RvcC1jb2xvcjojQUQ2NTAwIi8+Cgk8L3JhZGlhbEdyYWRpZW50PgoJPHBhdGggaWQ9IlhNTElEXzhfIiBjbGFzcz0ic3QyOSIgZD0iTTM4LjksMTkuMWMwLDAuMy0wLjMsMC40LTAuNiwwLjRjLTAuNCwwLTAuNS0wLjMtMC41LTAuNnMwLjMtMC40LDAuNi0wLjQKCQlDMzguNywxOC41LDM4LjksMTguOCwzOC45LDE5LjF6Ii8+CjwvZz4KPC9zdmc+Cg==", + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "pw.tkn.near": { + "spec": "ft-1.0.0", + "name": "Portis Wallet Token", + "symbol": "PW", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 10 + }, + "1f9840a85d5af5bf1d1762f925bdaddc4201f984.factory.bridge.near": { + "spec": "ft-1.0.0", + "name": "Uniswap", + "symbol": "UNI", + "icon": "data:image/svg+xml,%3Csvg width='32' height='32' viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Ccircle fill='%23FF007A' fill-rule='nonzero' cx='16' cy='16' r='16'/%3E%3Cg fill='%23FFF'%3E%3Cpath d='M12.261 5.767c-.285-.044-.297-.05-.163-.07.257-.04.865.015 1.284.114.977.233 1.866.828 2.816 1.885l.252.28.36-.057c1.52-.245 3.067-.05 4.36.547.356.164.917.491.987.576.023.026.064.199.091.383.096.637.048 1.125-.146 1.49-.106.198-.112.26-.041.43a.416.416 0 00.372.236c.322 0 .668-.52.828-1.243l.064-.287.126.143c.692.784 1.235 1.853 1.328 2.613l.025.199-.117-.18c-.2-.31-.4-.522-.658-.693-.464-.307-.955-.411-2.255-.48-1.174-.062-1.839-.162-2.497-.377-1.121-.365-1.686-.852-3.018-2.599-.591-.776-.957-1.205-1.32-1.55-.827-.786-1.639-1.198-2.678-1.36z' fill-rule='nonzero'/%3E%3Cpath d='M22.422 7.5c.03-.52.1-.863.242-1.176.056-.124.109-.226.117-.226a.773.773 0 01-.055.204c-.103.304-.12.72-.049 1.203.09.614.142.702.79 1.365.305.311.659.703.787.872l.233.306-.233-.219c-.285-.267-.941-.79-1.086-.864-.097-.05-.112-.049-.172.01-.055.056-.067.138-.074.529-.012.608-.095 1-.296 1.39-.108.21-.125.166-.027-.073.073-.178.08-.256.08-.845 0-1.184-.141-1.468-.966-1.956a9.046 9.046 0 00-.764-.396 2.916 2.916 0 01-.374-.182c.023-.023.827.211 1.15.336.482.185.561.209.62.186.039-.015.058-.129.077-.464zm-9.607 2.025c-.579-.797-.937-2.02-.86-2.934l.024-.283.132.024c.248.045.675.204.875.326.548.333.786.772 1.027 1.898.071.33.164.703.207.83.068.203.328.678.54.987.152.222.05.327-.286.297-.514-.047-1.21-.527-1.659-1.145zm8.905 5.935c-2.707-1.09-3.66-2.036-3.66-3.632 0-.235.008-.427.017-.427.01 0 .115.077.233.172.549.44 1.164.628 2.865.876 1.001.147 1.565.265 2.085.437 1.652.548 2.674 1.66 2.918 3.174.07.44.029 1.265-.086 1.7-.09.344-.367.963-.44.987-.02.006-.04-.071-.046-.178-.028-.568-.315-1.122-.798-1.537-.549-.471-1.286-.847-3.089-1.572zm-1.9.452a4.808 4.808 0 00-.131-.572l-.07-.206.129.144c.177.2.318.454.436.794.091.259.101.336.1.757 0 .414-.011.5-.095.734a2.32 2.32 0 01-.571.908c-.495.504-1.13.782-2.048.898-.16.02-.624.054-1.033.075-1.03.054-1.707.164-2.316.378a.488.488 0 01-.174.042c-.024-.025.39-.272.733-.437.483-.233.963-.36 2.04-.539.532-.089 1.082-.196 1.221-.239 1.318-.404 1.995-1.446 1.778-2.737z' fill-rule='nonzero'/%3E%3Cpath d='M21.06 18.116c-.36-.773-.442-1.52-.245-2.216.021-.074.055-.135.075-.135a.73.73 0 01.189.102c.166.112.498.3 1.383.782 1.105.603 1.735 1.07 2.164 1.602.375.467.607.999.719 1.647.063.367.026 1.25-.068 1.62-.297 1.166-.988 2.082-1.972 2.616a2.53 2.53 0 01-.288.143c-.014 0 .038-.133.117-.297.33-.692.369-1.366.118-2.116-.153-.459-.466-1.02-1.097-1.966-.734-1.1-.914-1.394-1.095-1.782zm-10.167 4.171c1.005-.848 2.254-1.45 3.393-1.635.49-.08 1.308-.048 1.762.068.728.186 1.38.604 1.719 1.101.33.486.473.91.62 1.852.06.372.123.745.142.83.11.488.327.879.595 1.075.425.311 1.158.33 1.878.05a.981.981 0 01.236-.074c.026.026-.336.269-.592.397a2.014 2.014 0 01-.983.238c-.66 0-1.208-.335-1.665-1.02-.09-.135-.292-.538-.45-.897-.482-1.1-.72-1.436-1.28-1.803-.489-.32-1.118-.377-1.591-.145-.622.305-.795 1.1-.35 1.603.177.2.507.373.777.406a.83.83 0 00.939-.83c0-.332-.128-.52-.448-.665-.437-.197-.907.033-.905.444.001.175.077.285.253.365.113.05.115.055.023.036-.401-.084-.495-.567-.172-.888.387-.386 1.188-.216 1.463.31.116.221.129.662.028.928-.225.595-.883.907-1.55.737-.454-.116-.639-.241-1.186-.805-.951-.98-1.32-1.17-2.692-1.384l-.263-.041.3-.253z' fill-rule='nonzero'/%3E%3Cpath d='M6.196 3.35l.096.117c3.708 4.54 5.624 6.896 5.746 7.064.2.278.125.527-.219.723-.191.109-.585.219-.781.219-.223 0-.474-.107-.657-.28-.129-.123-.65-.901-1.853-2.768a188.53 188.53 0 00-1.712-2.633c-.049-.046-.048-.045 1.618 2.936 1.046 1.872 1.4 2.533 1.4 2.622 0 .18-.05.274-.272.522-.37.413-.535.877-.655 1.837-.134 1.077-.51 1.837-1.554 3.138-.61.762-.71.902-.865 1.209-.194.386-.247.603-.269 1.091-.023.516.022.85.18 1.343.138.432.282.718.65 1.288.318.493.501.859.501 1.002 0 .114.022.114.515.003 1.179-.266 2.136-.735 2.675-1.309.333-.355.411-.551.414-1.038.001-.318-.01-.385-.096-.568-.14-.298-.395-.546-.957-.93-.737-.504-1.051-.91-1.138-1.467-.072-.457.011-.78.419-1.634.421-.884.526-1.26.597-2.151.045-.576.108-.803.274-.985.172-.19.328-.255.755-.313.696-.095 1.139-.275 1.503-.61.316-.292.448-.573.468-.995l.016-.32-.177-.206c-.254-.296-2.355-2.614-6.304-6.956l-.106-.115-.212.165zM7.91 19.732a.566.566 0 00-.174-.746c-.228-.152-.583-.08-.583.118 0 .06.033.104.108.143.127.065.136.139.037.288-.101.152-.093.286.023.377.186.146.45.065.59-.18zm5.524-7.176c-.327.1-.644.447-.743.81-.06.221-.026.61.064.73.145.194.286.245.666.242.744-.005 1.39-.324 1.466-.723.062-.327-.223-.78-.614-.98-.202-.102-.631-.143-.839-.079zm.87.68c.115-.163.064-.34-.13-.458-.372-.227-.934-.04-.934.312 0 .174.293.365.561.365.18 0 .424-.107.503-.219z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E", + "reference": "", + "reference_hash": "", + "decimals": 18 + }, + "caxap.tkn.near": { + "spec": "ft-1.0.0", + "name": "CAXAP", + "symbol": "CAXAP", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "hooba.tkn.near": { + "spec": "ft-1.0.0", + "name": "HOOBA", + "symbol": "HOOBA", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "a4ef4b0b23c1fc81d3f9ecf93510e64f58a4a016.factory.bridge.near": { + "spec": "ft-1.0.0", + "name": "1MILNFT", + "symbol": "1MIL", + "icon": "data:image/svg+xml,%3Csvg version='1.1' id='O' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 146 146' xml:space='preserve'%3E %3Cpath style='fill:%23ff00c6; stroke:none;' d='M0 0L0 31L31 31L31 0L0 0z'/%3E %3Cpath style='fill:%23df01ae; stroke:none;' d='M31 0L31 31L32 31L31 0z'/%3E %3Cpath style='fill:%23000000; stroke:none;' d='M32 0L32 32L0 32L0 38L32 38L32 70L0 70L0 76L32 76L32 109L0 109L0 114L32 114L32 146L38 146L38 114L70 114L70 146L76 146L76 114C82.7843 114 102.446 110.653 107.397 115.603C112.241 120.448 109 139.378 109 146L114 146L114 114L146 114L146 109C139.378 109 120.448 112.241 115.603 107.397C110.653 102.446 114 82.7843 114 76L146 76L146 70L114 70L114 38L146 38L146 32C139.378 32 120.448 35.2414 115.603 30.3966C110.759 25.5518 114 6.6225 114 0L109 0L109 32L76 32L76 0L71 0L71 32L38 32L38 0L32 0z'/%3E %3Cpath style='fill:%23459f00; stroke:none;' d='M38 0L38 32L70 32L70 31L39 31L38 0z'/%3E %3Cpath style='fill:%236fff00; stroke:none;' d='M39 0L39 31L70 31L70 0L39 0z'/%3E %3Cpath style='fill:%230d2000; stroke:none;' d='M70 0L70 32L71 32L70 0z'/%3E %3Cpath style='fill:%233f0180; stroke:none;' d='M76 0L76 32L108 32L108 31L77 31L76 0z'/%3E %3Cpath style='fill:%237f00ff; stroke:none;' d='M77 0L77 31L108 31L108 0L77 0z'/%3E %3Cpath style='fill:%232f0060; stroke:none;' d='M108 0L108 32L109 32L108 0z'/%3E %3Cpath style='fill:%231d4101; stroke:none;' d='M114 0L114 31L115 31L114 0z'/%3E %3Cpath style='fill:%236fff00; stroke:none;' d='M115 0L115 31L146 31L146 0L115 0z'/%3E %3Cpath style='fill:%239f017c; stroke:none;' d='M0 31L0 32L32 32L0 31z'/%3E %3Cpath style='fill:%23459f00; stroke:none;' d='M115 31L115 32L146 32L115 31z'/%3E %3Cpath style='fill:%2300f0ff; stroke:none;' d='M0 38L0 69L31 69L31 38L0 38z'/%3E %3Cpath style='fill:%2300d2df; stroke:none;' d='M31 38L31 69L0 69L0 70L32 70L31 38z'/%3E %3Cpath style='fill:%23be0094; stroke:none;' d='M38 38L38 70L39 70L38 38z'/%3E %3Cpath style='fill:%23ff00c6; stroke:none;' d='M39 38L39 69L70 69L70 38L39 38z'/%3E %3Cpath style='fill:%23200018; stroke:none;' d='M70 38L70 70L71 70L70 38z'/%3E %3Cpath style='fill:%23007880; stroke:none;' d='M76 38L76 70L77 70L76 38z'/%3E %3Cpath style='fill:%2300f0ff; stroke:none;' d='M77 38L77 69L108 69L108 38L77 38z'/%3E %3Cpath style='fill:%23015a60; stroke:none;' d='M108 38L108 70L109 70L108 38z'/%3E %3Cpath style='fill:%23400032; stroke:none;' d='M114 38L114 70L115 70L114 38z'/%3E %3Cpath style='fill:%23de00ad; stroke:none;' d='M115 38L115 39L146 39L115 38z'/%3E %3Cpath style='fill:%23ff00c6; stroke:none;' d='M115 39L115 70L146 70L146 39L115 39z'/%3E %3Cpath style='fill:%23df01ae; stroke:none;' d='M39 69L39 70L70 70L39 69z'/%3E %3Cpath style='fill:%2300d2df; stroke:none;' d='M77 69L77 70L108 70L77 69z'/%3E %3Cpath style='fill:%2354bf00; stroke:none;' d='M0 76L0 77L32 77L0 76z'/%3E %3Cpath style='fill:%235f00be; stroke:none;' d='M38 76L38 108L39 108L39 77L70 77L38 76z'/%3E %3Cpath style='fill:%230f001f; stroke:none;' d='M70 76L70 108L71 108L70 76z'/%3E %3Cpath style='fill:%23388000; stroke:none;' d='M76 76L76 108L77 108L76 76z'/%3E %3Cpath style='fill:%2354bf00; stroke:none;' d='M77 76L77 77L108 77L77 76z'/%3E %3Cpath style='fill:%232a6000; stroke:none;' d='M108 76L108 108L109 108L108 76z'/%3E %3Cpath style='fill:%23003d40; stroke:none;' d='M114 76L114 108L115 108L114 76z'/%3E %3Cpath style='fill:%2300b4bf; stroke:none;' d='M115 76L115 77L146 77L115 76z'/%3E %3Cpath style='fill:%236fff00; stroke:none;' d='M0 77L0 108L32 108L32 77L0 77z'/%3E %3Cpath style='fill:%237f00ff; stroke:none;' d='M39 77L39 108L70 108L70 77L39 77z'/%3E %3Cpath style='fill:%236fff00; stroke:none;' d='M77 77L77 108L108 108L108 77L77 77z'/%3E %3Cpath style='fill:%2300f0ff; stroke:none;' d='M115 77L115 108L146 108L146 77L115 77z'/%3E %3Cpath style='fill:%230f2000; stroke:none;' d='M0 108L0 109L32 109L0 108M76 108L76 109L108 109L76 108z'/%3E %3Cpath style='fill:%23001e20; stroke:none;' d='M115 108L115 109L146 109L115 108z'/%3E %3Cpath style='fill:%23810064; stroke:none;' d='M0 114L0 115L32 115L0 114z'/%3E %3Cpath style='fill:%23398000; stroke:none;' d='M38 114L38 115L70 115L38 114z'/%3E %3Cpath style='fill:%23800063; stroke:none;' d='M76 114L76 146L77 146L77 115L108 115L76 114z'/%3E %3Cpath style='fill:%23200041; stroke:none;' d='M114 114L114 146L115 146L114 114z'/%3E %3Cpath style='fill:%23410080; stroke:none;' d='M115 114L115 115L146 115L115 114z'/%3E %3Cpath style='fill:%23ff00c6; stroke:none;' d='M0 115L0 146L31 146L31 115L0 115z'/%3E %3Cpath style='fill:%23df01ae; stroke:none;' d='M31 115L31 146L32 146L31 115z'/%3E %3Cpath style='fill:%2354bf00; stroke:none;' d='M38 115L38 146L39 146L38 115z'/%3E %3Cpath style='fill:%236fff00; stroke:none;' d='M39 115L39 146L70 146L70 115L39 115z'/%3E %3Cpath style='fill:%23ff00c6; stroke:none;' d='M77 115L77 146L108 146L108 115L77 115z'/%3E %3Cpath style='fill:%2360004a; stroke:none;' d='M108 115L108 146L109 146L108 115z'/%3E %3Cpath style='fill:%237f00ff; stroke:none;' d='M115 115L115 146L146 146L146 115L115 115z'/%3E %3C/svg%3E", + "reference": "", + "reference_hash": "", + "decimals": 18 + }, + "shmeks.tkn.near": { + "spec": "ft-1.0.0", + "name": "Schmeckels", + "symbol": "SHMEKS", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "uniqueone-appchain-token.near": { + "spec": "ft-1.0.0", + "name": "Unique One Network", + "symbol": "UNET", + "icon": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzOTAgMzkwIj48ZGVmcz48c3R5bGU+LmNscy0ye2ZpbGw6I2ZmZn08L3N0eWxlPjwvZGVmcz48Y2lyY2xlIGlkPSJMYXllcl8xIiBjeD0iMTk1IiBjeT0iMTk1IiByPSIxOTUiIGRhdGEtbmFtZT0iTGF5ZXIgMSIgc3R5bGU9ImZpbGw6cmVkIi8+PGcgaWQ9IkxheWVyXzIiIGRhdGEtbmFtZT0iTGF5ZXIgMiI+PHBhdGggZD0iTTc5LjU5IDE1MS43NGgyMzR2NDdoLTIzNHpNOTAuODUgMjE2LjA5djQ2LjU2aC02LjA4di00Ni41NlpNMTAxLjM1IDI2Mi42NXYtNDYuNTZIMTA4bDE0Ljg1IDIzLjU2YTEyOS41MyAxMjkuNTMgMCAwIDEgOC4yOSAxNS4xM2wuMjEtLjA3Yy0uNTUtNi4yMi0uNjktMTEuODgtLjY5LTE5LjE0di0xOS40OGg1LjY2djQ2LjU2aC02LjA4TDExNS40NSAyMzlhMTM2LjE2IDEzNi4xNiAwIDAgMS04LjY0LTE1LjU1bC0uMjEuMDdjLjM1IDUuODcuNDIgMTEuNDcuNDIgMTkuMjF2MTkuODlaTTE1NyAyNjIuNjVsLTE1LjI3LTQ2LjU2aDYuNTZsNy4zIDIyLjkxYzEuOTMgNi4yOCAzLjY2IDExLjk1IDUgMTcuNDFoLjE0YzEuMzEtNS4zOSAzLjE4LTExLjI3IDUuMzItMTcuMzVsNy44OC0yM2g2LjQybC0xNi42NSA0Ni41NlpNMTg5IDI0OGwtNC44NCAxNC42NGgtNi4yNmwxNS44OS00Ni41NkgyMDFsMTUuODkgNDYuNTZoLTYuNDNsLTUtMTQuNjRabTE1LjM0LTQuNy00LjYzLTEzLjQxYy0xLTMtMS43My01LjgtMi40Mi04LjQ5aC0uMTRjLS42OSAyLjY5LTEuMzggNS41OS0yLjM1IDguNDNsLTQuNTYgMTMuNDdaTTIyMy42NCAyMTYuMDloNi4wOHY0MS41MmgxOS45djVoLTI2Wk0yNjIuMzMgMjE2LjA5djQ2LjU2aC02LjA4di00Ni41NlpNMjcyLjgzIDIxNi43OGE3Ny4yNSA3Ny4yNSAwIDAgMSAxMi43OC0xYzguNjQgMCAxNC43OSAyLjA3IDE4Ljg2IDUuOHM2LjY0IDkuMTkgNi42NCAxNi43Mi0yLjQyIDEzLjgyLTYuNzEgMTguMTEtMTEuNiA2LjctMjAuNjUgNi43YTk3LjQ1IDk3LjQ1IDAgMCAxLTEwLjkyLS41NVptNiA0MS4xOGE1MS42OSA1MS42OSAwIDAgMCA2LjA4LjI3YzEyLjkyIDAgMTkuODMtNy4xOCAxOS44My0xOS43Ni4wNy0xMS02LjE1LTE4LTE4Ljg2LTE4YTM0LjYgMzQuNiAwIDAgMC03LjA1LjYyWiIgY2xhc3M9ImNscy0yIi8+PC9nPjwvc3ZnPg==", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "firerune.tkn.near": { + "spec": "ft-1.0.0", + "name": "FIRE RUNE", + "symbol": "FIRERUNE", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 9 + }, + "pixiv.tkn.near": { + "spec": "ft-1.0.0", + "name": "pixi", + "symbol": "pixiv", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "gza.tkn.near": { + "spec": "ft-1.0.0", + "name": "Gazua", + "symbol": "GZA", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "sol.token.a11bd.near": { + "spec": "ft-1.0.0", + "name": "Solana", + "symbol": "SOL", + "icon": "data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjEwMCIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHdpZHRoPSIxMDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxsaW5lYXJHcmFkaWVudCBpZD0iYSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI1MCIgeDI9IjUwIiB5MT0iMjciIHkyPSI3NCI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjMTRlNmFkIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjYTk2NGRlIi8+PC9saW5lYXJHcmFkaWVudD48Y2xpcFBhdGggaWQ9ImIiPjxwYXRoIGQ9Im0wIDBoMTAwdjEwMGgtMTAweiIvPjwvY2xpcFBhdGg+PGcgY2xpcC1wYXRoPSJ1cmwoI2IpIj48cGF0aCBkPSJtNTAgMGM5Ljg4OTEgMCAxOS41NTYxIDIuOTMyNDUgMjcuNzc4NSA4LjQyNjUyIDguMjIyNSA1LjQ5NDA4IDE0LjYzMTEgMTMuMzAyOTggMTguNDE1NSAyMi40MzkyOHM0Ljc3NSAxOS4xODk3IDIuODQ1MyAyOC44ODg3Yy0xLjkyOTMgOS42OTkxLTYuNjkxMyAxOC42MDgyLTEzLjY4NCAyNS42MDA4LTYuOTkyNiA2Ljk5MjctMTUuOTAxNyAxMS43NTQ3LTI1LjYwMDggMTMuNjg0LTkuNjk5IDEuOTI5Ny0xOS43NTI0LjkzOTEtMjguODg4Ny0yLjg0NTNzLTE2Ljk0NTItMTAuMTkzLTIyLjQzOTI4LTE4LjQxNTVjLTUuNDk0MDctOC4yMjI0LTguNDI2NTItMTcuODg5NC04LjQyNjUyLTI3Ljc3ODUgMC0xMy4yNjA4IDUuMjY3ODQtMjUuOTc4NSAxNC42NDQ3LTM1LjM1NTMgOS4zNzY4LTkuMzc2ODYgMjIuMDk0NS0xNC42NDQ3IDM1LjM1NTMtMTQuNjQ0N3oiIGZpbGw9IiMwMDAiLz48ZyBmaWxsPSJ1cmwoI2EpIiBmaWxsLW9wYWNpdHk9Ii45MiI+PHBhdGggZD0ibTMwLjM4MDYgNjIuNzg4OWMuMzEzMS0uMzIzNC44MzQ5LS41MzkgMS4zNTY3LS41MzloNDYuMjMwN2MuODM0OSAwIDEuMjUyMyAxLjA3NzkuNjI2MiAxLjcyNDdsLTkuMTgzNiA5LjQ4NjRjLS4zMTMuMzIzNC0uODM0OC41MzktMS4zNTY2LjUzOWgtNDYuMTI2NGMtLjgzNDggMC0xLjI1MjItMS4wNzgtLjYyNjEtMS43MjQ4eiIvPjxwYXRoIGQ9Im0zMC4zODA2IDI3LjUzOWMuMzEzMS0uMzIzNC44MzQ5LS41MzkgMS4zNTY3LS41MzloNDYuMjMwN2MuODM0OSAwIDEuMjUyMyAxLjA3OC42MjYxIDEuNzI0OGwtOS4xODM1IDkuNDg2M2MtLjMxMzEuMzIzNC0uODM0OC41MzktMS4zNTY2LjUzOWgtNDYuMTI2NGMtLjgzNDkgMC0xLjI1MjMtMS4wNzgtLjYyNjEtMS43MjQ4eiIvPjxwYXRoIGQ9Im02OS41MTUgNDUuMDAxOGMtLjMxMzEtLjMyMzQtLjgzNDktLjUzOS0xLjM1NjctLjUzOWgtNDYuMjMwN2MtLjgzNDggMC0xLjI1MjIgMS4wNzgtLjYyNjEgMS43MjQ4bDkuMTgzNSA5LjQ4NjRjLjMxMzEuMzIzMy44MzQ5LjUzODkgMS4zNTY3LjUzODloNDYuMjMwNmMuODM0OSAwIDEuMjUyNC0xLjA3OC42MjYyLTEuNzI0OHoiLz48L2c+PC9nPjwvc3ZnPg==", + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "fud.tkn.near": { + "spec": "ft-1.0.0", + "name": "Fudlow", + "symbol": "FUD", + "icon": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/4gIoSUNDX1BST0ZJTEUAAQEAAAIYAAAAAAQwAABtbnRyUkdCIFhZWiAAAAAAAAAAAAAAAABhY3NwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA9tYAAQAAAADTLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlkZXNjAAAA8AAAAHRyWFlaAAABZAAAABRnWFlaAAABeAAAABRiWFlaAAABjAAAABRyVFJDAAABoAAAAChnVFJDAAABoAAAAChiVFJDAAABoAAAACh3dHB0AAAByAAAABRjcHJ0AAAB3AAAADxtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAFgAAAAcAHMAUgBHAEIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAABvogAAOPUAAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAJKAAAA+EAAC2z3BhcmEAAAAAAAQAAAACZmYAAPKnAAANWQAAE9AAAApbAAAAAAAAAABYWVogAAAAAAAA9tYAAQAAAADTLW1sdWMAAAAAAAAAAQAAAAxlblVTAAAAIAAAABwARwBvAG8AZwBsAGUAIABJAG4AYwAuACAAMgAwADEANv/bAEMAAwICAgICAwICAgMDAwMEBgQEBAQECAYGBQYJCAoKCQgJCQoMDwwKCw4LCQkNEQ0ODxAQERAKDBITEhATDxAQEP/bAEMBAwMDBAMECAQECBALCQsQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEP/AABEIAGAAYAMBIgACEQEDEQH/xAAdAAABBAMBAQAAAAAAAAAAAAAHBQYICQACAwQB/8QASRAAAQMDAgQDAwgFBREAAAAAAQIDBAUGEQAhBwgSMRNBURUiYQkUIzJCcYGRFheCobEkJcHS8CZDUlNWYmNkcnN0dZOUs9Hh/8QAHAEAAQQDAQAAAAAAAAAAAAAABgIDBAcBBQgA/8QAMBEAAQIFAgUDAgYDAAAAAAAAAQIDAAQFESEGEiIxQVFxFGGBBxMIMkJikbEjJKH/2gAMAwEAAhEDEQA/ALTdZrND7jXxrsrgVZUq9b2nLbYbV4MWMx0qkTJBSSllpJIBUQCdyAAlRJAGspSpaglIuTHoeFwXHQbTpEq4LmrEOlUyC2XZMyY8llllHbKlqIA3IH3keuoQ8aflO7Xokl+jcFbaVcMlvqQqq1QuRoiF42KGBh10d91eF22z5Q55g+ZniRzGXGZtzT1Q6LHcJp1EiOK+axh26jnBccI7uKGdz0hKcJAsYggY8Y5x6DRjT9ONpAXN5PboPPeFJSVGC7fvOPzK8RlBFU4oVWnRkqKkRqIr2agE9wVMdK1p9A4pWhPVarcNwS1T63U6jU5KhhT82Qt90/AqUST+J10SlCB0pAGvuBokak2WBZtIHiHvsRwpVTuG35aKhQ6lPpspI6Q/EkLZcSPgpBBGixYPONzJcNz4VH4pVmoRuoExq057RbIHlmR1rQP9hSdC/Wq0JWMKSDrz0o0+LOJB8i8ZLXaLDeDPyoNtVmQzRuOFsCgPLCU+2KUFvxOonBLjBy40BkbpLnnsAM6m/bly0C7qNDuK16xEqtLnN+JGmRHkusupzjKVJJB3BG3mDqglyEDu0MH0PbRP4A8yvErl0uP2jac5UqlSHOqo0OS4fmkwYO/Y+E56OJGQQOrqTlJG6hpxCrrlcHtzHx2hlaSk5i7rWaYHBLjbY3Hmxo18WROUtlxXhS4j2EyIL+xLLqQThQyMEEggggkaf+g9aVNqKFCxEIhOuK4KRadBqFzXBPahUylRnJkuS6cIaZbSVLUfPYAnbf0zqlvmZ5g7j5ieJMu5pi3GKNFK4tDpxIxEi9XdQHd1eApZ33wnOEpxMf5TzjTIolq0XgrSH+iRcKvatW6XMKTDacww2QPsrdBVn/VwPM4rkgtAfSke8f7HRhpynhLfq1jJ5ew7/MKSNxjqxHS2nH2vM6dln8O7rvY+LSISWoSF9Dk6SotsAjuAcEqO/ZIJHnjI134Z2am9bkTDmLUinRECRMKVYUpGfdbSR2Kj5+iVEbjUoqfQ6guGhukUN8woiAy0iHGJZaSkYCEBAxt6Dtvo1YYSob3FbR7wA6y1q5QXBT6aje+Rc4uEjxm5/qAo1y6KSnpl3uz4p/xFNUtA/aU4kn8tItw8B7spLCpNHmRK4hvKlojgtPhI7kNqO/7KlH4aP5909JGCNj8NemLS6tPbW9T6dLfQ2cFbTKlBJ/Ad/h31sXJSXSm6lW9zyisZL6j6lExfeHP27MH24QCPN4hcpK21qadSUrSSFJUMFJG2CPI6VKDatx3Q661b9JemFgAulGAlGe2VKIAO3bfzO2NGPjZYseo0x28YEYNVCHj5/hPSZDWyesgD66dsk493ufdxrpy7jrtWorRsVVE4z/uUf+9D9WWunNKcTnlb5jpP6dTstrtSMlH5gsDJSpIuRnmD0MDP9UPEj/Jlz/uGf6+kO5bJuW3Gm11+iPQvFJDTi1JUlRxnGUkjPng6tQvbhFwpsx9YfsS8J8SPFMt+XEkFTLSU9XUCSobhKM49CPu1CPmPMdVqNGIlaY5qqPBC/rBHhu4B+OND0jW3Zt9Lakixg7VQaTO056ck1Of4xfiCLH2wbwOOW7j9c3LtxJh3dSvEfpT6kxq3TQfdmxcnIHo4jJUhW2+QT0qUDdRa9z0S87fp112zUGp9Jq0ZuZClNZ6XmXEhSVAHcbHcEAjsd9UFTGMpDo2Ixn4+h1Yl8l5xsdqdDrnA2tvjrouaxRSt0lRjOrAkMpBGyUOrSsHOT46thjOm9RU/e2ZpsZTz8GK9ULGIk849+ucReZS9as0hSI1PqCqHGQVZwiH9ApQ+CloW5+2dC0IDbYAG6R+/WlYq8y47imV+orCpVTluSnyBsXFqKlH8SSddTsNEkmyGWktDoLQ41yg58v0dn9G6rMQ0lMh2cGlrI3wlpCk/l4ivzPrqzLgrB4eVLhlSJNMj02UGoaETy6lC3GpAQPEQvP1cKzt28x3zqtPl+Tm1Kl/zRf8A4GtEdcJpSlKCnE+IAHEoWUpdA8lAEdX3f/NTanQhW5Ntvft2m/KKBndUnTeqp6YLe/dZPOxFgOvboRDz4sSrYl8RK09ZbyH6UHw2y40fo1uISEudKvMdYUOrzwTk99Sw4CwuHVV4YUp+jxoEpaGA3P8AGbQpxuSB9IhQP1cKzgbDGD551FuzuCXEa9aCa9b9CQaf7wYU6+lsvgEjDQPcbYBOAfInTIqVDkU6oSoFSiPQ5jSixKZUpSVZH2VDz/h9430zO0qVrUsinszHE1a/6vbIuI01Ir05pqecqz8rwv3I/SMm/CbEW6Q6+NAtWpX5cUW1lNvUh4qj+I2vrQ4S30O9J9OrrTnzxoFcup/uVqBXv/OJzt3+hb8hojKSllnCSEIQnAAwAkaYnAWkVSkWnINUhOxPncsyGQ8OlSm/DQArpO4Gx7gaj6jZRKU9ti9ymwF+tiIu78OUy7U6/OzSk8KuIgcklQWLf1Es+Mt2X1e96tUu1oF0wUPUoNu0r5q6yt4eI71rLSkBRSQQM4xsR5aiTzEsusWhGYdbUhxuqNoUlQwUkNu5B1Y1LptSlcxlNuKNBkOUs230GYhpRY6vFWQnxMdOcKBxnVefNC6h6jvOtKCm11wqSoHIIKXtAlIV/stJ8R0BIzrbtCflWkJSAylRIybkqFj/ABi8RpUgLbII7jGiFyrcS0cI+YKy7unEiCaiilzsEpwxL+gUo48kFaXCOx8MZ0P/AC/DSZIBDqulRScnBHcfEfuP4aPZlkPtls9RaKqdFo9lSpMugXBMoVRbDcumzHob4Hk42tSSPzB13Jz29f6dFHnGsFXDfmSvajt9So8+pKrkZRTgFuZ/KCkD0StxaM/5nrnQtSoLSkp+1jA1iTeD7aXB1AP8wlvGIPPL+tKLSqSlHAFUWT/0WtE8qSoDG4yDkfx0DeHlfRQOFtwzkoS46iapTSFZCVktspSM+mTop0y4WZllMXE51NtqgfOXMd04b6iPv8tFUspP2kpJza/xHL+tZJ9damJkJ4FObAf3bQbebHrBih8xXEWm06m0iBFjtxKZFZiMJjy1toUhtISCUjuSBvnO/wANtNK6buqN9XDNuirsR2Zk0o8VDBykFDaUDJ8zhIJ+Oh7w0uVdy2qxUXmW4zyXHG3G0q6gnpUe3rtg/jrhw9u39JJVbZLKGhEmqS0QvJcaJwlZ9CSDt8NRJSmSEk996XQApV8/9iFU5yvTzC5SeUSiXIChjhIO0crdcQvXRMqcOiyJFGQpUxktrSlKQo46xnI9MZ+OuXD+9Y190T2uwylJQ6WXgDkFfSFHbuNlDY/me+kCnXsw7xArVBdQlLUVhBQ8CSVLGOrt5DrSM+udJ3LkGxbFRBykGp9SvUAst7/u0O6ulULaE0OYuPmOmPw1VOoU96YoryAEKCXRji4k7gbjngDGcxPar8O5kFSuElr8abiZqnsz2hHp0wMqaVGCujpDqW0uJ7YBCiUjyxtqCvMQy5Gs+NHebLbjVTbQtB+yQ26CNTnr3GPg/DvQ8ToNxTKrVWKUaXEpbDPuLUVqV1qVj3frYySABvvtqDPMfMdn2s1Mdx4j9WQ6sDsCpt0n+OgelEmbRjrF009M0iiThfQQkoBupISSu/EBgFQtaI6+X4aTJBUXlBtJUrqIAHc/2/p0pKV0tknyGn9ytcNkcXOYSybQlpJhKqSapP8AdzmNEBkLQQPJZaS3ntlweo0ezLwYbLiugvFWum8TQ+VA4MyaxbVF43UaL1O0DFKrAQ2SoxHV5YdJHYIdUpJGP7+PIHVc8NwkeEdiDlJ1ftctuUa7qBULXuKnNTqXVYzkSZGcz0usrSUqScbjIOMjB1SxzKcALj5dOJUq06j4r9Jklcmh1JQGJkXI7+jiOoJWNsHBx0rQSMacqG5HpVnI5eD08iGUq2mGKiq1JqmrozUoogOuB5bQSn3ljsc4z5DbPlp+U69PA4QS6P8AO2kSg8qKhBUOstqWCQE5zjpJGceWhqzIS6keSsbjW/SCvrKBn10ZtTCmrkZuLRqapp6Tq6G0qG3a4lzA5lPfzygjcMbxTbduXBEcmMtFCPnMdtxQClr6CAE5O+6UjAz9Ya8fCC5UW9cUpMuYwyzMjEKW+6EJ60EEbnb6vUe/l8dMRTaVKSooBKTsfTWOIS4OlSQoemlomlpKDb8sQJrRspNonUk29TtvjltAGPm6vJhWduWrJr8u4aZMMaRKddX1dAUAhZ3TggjHb8hr3Wdf1bsZMhFNUstyekrAShQKhkZIUkjt5jHnpvDWYHfGokw2mZQUOZBzBjSVqoTyZiS4VpAFwBeyRYDPaCN+v+7P9J8P5Mz/AFNIN3cSa/e0ZiFU+sMMLLoBQhAKsEZwkDOxxk6a+uL7yGk746j2GoDdMl2FhwDI94387qyrTjKpd93hUM4GR2vHKc8Ep8FPdW51YZ8lvwWkQKVXuPFZjJQauFUShlbSkrMZtwKkvAnulbqG0D/h1eRGobcu/AW5uYriXDsuih1iA0USa5VNumBEycqwe7isFLaR3USSClDmLr7Ttah2RbdNtG2aciBSaRGbhwoyCSGmUJ6UpySSTgDJJJJ3JOtJqOobG/TNnJ5+IFFK3GFbQ/43cEbG49WNKsi+IKnGVq8eJLawJEGQAQl5pRBwoAkY7KBIOxOiBrNByVKbUFoNiITFIXH7lv4k8utzml3dTVv0p9ZFNrcdB+aTU9wAcnw3AO7St9iQVJwojNmdkYe2x9rHf8NX6XPa1vXnRZdtXZRYdWpM9vw5UKYyl1l1OcgKSrI2IBB8iAdQf41/Je0SrvvVngbdXsVxYUpVGrK3HopUD7qWpA6nGkgdQwsO7kYKRnJjT9RNqARNYPfmDCkqKYr1S4hQ2Uk/cdbaI1/8o3MjwycBr3CiuS2VEhMqjMmpsqx3JMbrWgehWlOhfUIFboslUKr0+dBkI+uzJZW0sfgoA6JGZpp8XbUD8w6Hbc49WtVLQke8sD8dcKbBrValJgUinzZ0lYylmKypxZ/BIydEywOUzmP4nOK/R7hJX47LZHVJrUc0prBOMgyuguAefhhZx5ay7NNMC7qgPJEeLt4GT03HuMpyo+eiJwF5duJPMVcvsay6cW6ew5iqVuS2TEgJxkdRyPEcOBhpB6jkE9KT4gmNwV+S4pUKQzWuPF3CrKSlC/YdDW41GKgckOyVBLriTjGEJbx/hEHU5rVtG27IokS2rSokKkUmAgtxoUJhLLLSSST0pTsMkkn1JJO50NVDUbaeCWye/SGlKKoaHAjgTY3L/YseybKiO46/nE+dIIMmoSSAlTzykgAkgAAAAJAAAGNEbWazQctanFFazcmEx//Z", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "mbga.tkn.near": { + "spec": "ft-1.0.0", + "name": "Make Blockchain Great Again", + "symbol": "MBGA", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "dcity.tkn.near": { + "spec": "ft-1.0.0", + "name": "Decentricity Social Token", + "symbol": "DCITY", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "hongdou.tkn.near": { + "spec": "ft-1.0.0", + "name": "hongdou", + "symbol": "hongdou", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "ngmi.tkn.near": { + "spec": "ft-1.0.0", + "name": "N.G.M.I.", + "symbol": "NGMI", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 10 + }, + "socialmeet.tkn.near": { + "spec": "ft-1.0.0", + "name": "SOCIALMEET", + "symbol": "SOCIALMEET", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "nearkat.tkn.near": { + "spec": "ft-1.0.0", + "name": "NEARKAT", + "symbol": "NEARKAT", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "token.jumbo_exchange.near": { + "spec": "ft-1.0.0", + "name": "Jumbo Exchange", + "symbol": "JUMBO", + "icon": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCIgdmlld0JveD0iMCAwIDQwMCA0MDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxjaXJjbGUgY3g9IjIwMCIgY3k9IjIwMCIgcj0iMjAwIiBmaWxsPSIjMTMxMzEzIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMzI0LjcyMSAxMTAuNzM0QzM0My4yNSAxMjkuMzQ4IDM0My4yNSAxNTkuMjQ0IDM0My4yNSAyMTkuMDM3VjI5MC43ODVDMzQzLjI1IDI5OS41NjggMzM2LjEzIDMwNi42ODcgMzI3LjM0NyAzMDYuNjg3QzMxOC41NjQgMzA2LjY4NyAzMTEuNDQ0IDI5OS41NjggMzExLjQ0NCAyOTAuNzg1VjI1OS42MTVDMzExLjQ0NCAyNTAuODMyIDMwNC4zMjUgMjQzLjcxMiAyOTUuNTQyIDI0My43MTJDMjg2Ljc1OSAyNDMuNzEyIDI3OS42MzkgMjUwLjgzMiAyNzkuNjM5IDI1OS42MTVWMjkwLjc4NUMyNzkuNjM5IDI5OS41NjggMjcyLjQzOSAzMDYuNjg3IDI2My42NTYgMzA2LjY4N0MyNTQuOTYxIDMwNi42ODcgMjQ3LjgzMyAyOTkuNjM5IDI0Ny44MzMgMjkwLjk0NEMyNDcuODMzIDI4Mi4yNDkgMjQwLjc4NSAyNzUuMiAyMzIuMDkgMjc1LjJIMjMxLjc3MUMyMjMuMDc2IDI3NS4yIDIxNi4wMjggMjgyLjI0OSAyMTYuMDI4IDI5MC45NDRDMjE2LjAyOCAyOTkuNjM5IDIwOC45NzkgMzA2LjY4NyAyMDAuMjg0IDMwNi42ODdIMTk5Ljk2NkMxOTEuMjcxIDMwNi42ODcgMTg0LjIyMiAyOTkuNjM5IDE4NC4yMjIgMjkwLjk0NEMxODQuMjIyIDI4Mi4yNDkgMTc3LjE3NCAyNzUuMiAxNjguNDc4IDI3NS4yTDE2OC4xNiAyNzUuMkMxNTkuNDY1IDI3NS4yIDE1Mi40MTcgMjgyLjI0OSAxNTIuNDE3IDI5MC45NDRDMTUyLjQxNyAyOTkuNjM5IDE0NS4zNjggMzA2LjY4NyAxMzYuNjczIDMwNi42ODdIMTM2LjM1NUMxMjcuNjYgMzA2LjY4NyAxMjAuNjExIDI5OS42MzkgMTIwLjYxMSAyOTAuOTQ0QzEyMC42MTEgMjgyLjI0OSAxMTMuNTYyIDI3NS4yIDEwNC44NjcgMjc1LjJIMTA0LjU0OUM5NS44NTQzIDI3NS4yIDg4LjgwNTUgMjgyLjI0OSA4OC44MDU1IDI5MC45NDRDODguODA1NSAyOTkuNjM5IDgxLjY3NzcgMzA2LjY4NyA3Mi45ODI3IDMwNi42ODdDNjQuMTk5OCAzMDYuNjg3IDU3IDI5OS41NjggNTcgMjkwLjc4NVYyMTkuMDM3QzU3IDE1OS4yNDQgNTcgMTI5LjM0OCA3NS41Mjg2IDExMC43MzRDNzUuNTk2OSAxMTAuNjY1IDc1LjY2NTUgMTEwLjU5NyA3NS43MzQyIDExMC41MjlDOTQuMzQ3NiA5MiAxMjQuMjQ0IDkyIDE4NC4wMzcgOTJIMjE2LjIxM0MyNzYuMDA2IDkyIDMwNS45MDIgOTIgMzI0LjUxNiAxMTAuNTI5QzMyNC41ODQgMTEwLjU5NyAzMjQuNjUzIDExMC42NjUgMzI0LjcyMSAxMTAuNzM0Wk0yOTUuNTQyIDIxMi41NDNDMzA0LjMyNCAyMTIuNTQzIDMxMS40NDQgMjA1LjQyMyAzMTEuNDQ0IDE5Ni42NEMzMTEuNDQ0IDE4Ny44NTcgMzA0LjMyNCAxODAuNzM3IDI5NS41NDIgMTgwLjczN0MyODYuNzU5IDE4MC43MzcgMjc5LjYzOSAxODcuODU3IDI3OS42MzkgMTk2LjY0QzI3OS42MzkgMjA1LjQyMyAyODYuNzU5IDIxMi41NDMgMjk1LjU0MiAyMTIuNTQzWiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "06a00715e6f92210af9d7680b584931faf71a833.factory.bridge.near": { + "spec": "ft-1.0.0", + "name": "Chronicle", + "symbol": "XNL", + "icon": "data:image/svg+xml,%3Csvg width='35' height='25' viewBox='0 0 35 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath d='M25.1462 18.6539L0 5.4231V11.2692L25.1462 24.5V18.6539Z' fill='%2300E1C8'/%3E %3Cpath d='M8.9788 18.6536L34.125 5.42285V11.269L8.9788 24.4998V18.6536Z' fill='%2300E1C8'/%3E %3Cpath d='M26.9453 0.5V4.91154L17.0664 10.0385V5.62692L26.9453 0.5Z' fill='url(%23paint0_linear_8994:18781)'/%3E %3Cdefs%3E %3ClinearGradient id='paint0_linear_8994:18781' x1='17.0664' y1='6.65385' x2='39.2191' y2='6.65385' gradientUnits='userSpaceOnUse'%3E %3Cstop stop-color='%23D06CFF'/%3E %3Cstop offset='1' stop-color='%235900B9'/%3E %3C/linearGradient%3E %3C/defs%3E %3C/svg%3E", + "reference": "", + "reference_hash": "", + "decimals": 18 + }, + "meta-pool.near": { + "spec": "ft-1.0.0", + "name": "Staked NEAR", + "symbol": "STNEAR", + "icon": "data:image/svg+xml,%3csvg width='96' height='96' viewBox='0 0 96 96' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3crect width='96' height='96' rx='48' fill='white'/%3e%3cpath fill-rule='evenodd' clip-rule='evenodd' d='M48.0006 20L41.2575 26.7431L48.0006 33.4862L54.7437 26.7431L48.0006 20ZM37.281 30.7188L30.7144 37.2853L47.9998 54.5707L65.2851 37.2853L58.7186 30.7188L47.9998 41.4376L37.281 30.7188ZM26.7384 41.261L19.9953 48.0041L47.9995 76.0083L76.0037 48.0041L69.2606 41.2611L47.9995 62.5221L26.7384 41.261Z' fill='%23231B51'/%3e%3c/svg%3e", + "reference": "https://metapool.app", + "reference_hash": null, + "decimals": 24 + }, + "ynp.tkn.near": { + "spec": "ft-1.0.0", + "name": "Yashannapolis", + "symbol": "YNP", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "wst.tkn.near": { + "spec": "ft-1.0.0", + "name": "Wolves Token", + "symbol": "WST", + "icon": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAARCABgAGADASIAAhEBAxEB/8QAHQAAAgEFAQEAAAAAAAAAAAAABwgGAAIEBQkDAf/EADkQAAEDAwMDAwIEAwYHAAAAAAECAwQFBhEAEiEHMUFRYXETIggUMoEVFkIlM1KRocFTY3Ox0eHx/8QAGQEAAgMBAAAAAAAAAAAAAAAAAgQAAQMF/8QAIBEAAgICAwEBAQEAAAAAAAAAAQIAAxESBCFBMSITgf/aAAwDAQACEQMRAD8A6p6V38U99V6ZcdKsazqnKD0cF+Q3BkKZdD39IUtJGEgc/Omi0oF6xnaX1Uvm45SC9+WdAZ4JISUJOBjnxpblE6YHsZ4oG+T5Nd0+/Elf1gV0UTqI5NqUNZAU3MUFPNjtuad43fCs59Rpu7auih3dSmK1QKg3KjPpykpPIPkKHcEeQdJmhqhdXrTTMdimOslQaWeVsrH+3qNQW1b0vbpLdYiRqgpuVDUQlJWVMvpI7KT2OR2PcaVr5DU4DdqY1Zx1uzr0wnRvVaW2yfxTR7iSU1AJiTSo/VZI+1AGcY+dTqB1tp/1BHflx3Cjuo5Tu/f9xp5b0YZBiTUWKcEQsarQpqHWynJcMZmTHbUo4BB3be3nt66gl8fijYtxnbAcTJm7h9FoJ+1ecZz8ajXIoyTItFjHAEPtx3NQ7Tpb9Yr9QaiRmE7lKUeT6ADuSfAGlH6jfiWvi+q6KD02XNp0VtRCRFIS+6P8TjnOweye3k6GF33ze3Ve6UxJU9TsyYoI2BW1phAzgAdhgE5Pfk6nSYlE6RWk5PTGMl1IH13Rwt5Z9D4HoNJWchrul6EcTjrT23bHyTv8Ll9XHBuyp2VedVmKdmAPMtz5SnnPredilE5BHPHppptJzaiHKv1IsG44qXGFS5QbcKQQQnYpQBz/AJacbTPFJ0wfItygN9h7LVnahSvQE6AdzUNia/V525Sn5rynlqxnPG3GD4x66PqgCkgnAxoQ1kx01CV9J0raDivuUck+utLRkQKfsVui3Ovplc38jV5EFilvqL0We4+poYUTwrcNmc+hSNfOtkJh5+izIiEGQ8tSd6AMqRgEcjxrA6sUuBcN4TmZ6BIisJQ2yCo5TxkkEHg5OtBUKyuJS4VHmTWizT21Nx8MpDgQcYSduBgY74GfPPOuSTgFD88nXVckOPswE03fKk1APKbTklsoXt5HnPzryjXvcsJwD+IKeSleSl0BWceM+movWLrW2doeypr9KNv08j2IGtO3dQLivqM5QSCk+RzyD/rzpb+oBwIwKyR3CDKvm5ZrpAnlhK15CWgE4Hpnvq9ynH68aoreU6AoFwrXu5PnPzodu3SA4kMtfYFEqPnGeMa29IutS1YL2FucKRtLnHvkasWA/ZP5kDqGnorBYRUq1Llto/MMlIStSRkJOSSCfga9LhupzqNcf8gW6mBJpySHJc9D6nQAk8gBI25z2ySPjUPpdbcfp02lwZzSW6gyGZG5lKnNnOUgKyMHOMkH/cbvpdSqfbt3U9FObEeO9uaf+4kryDgkk8nIGt1OQEHz2LsuCXP3yMpbNBjwzSJhKg9AkNyG1bcYwkpxgeMHxpgW1b20r/xAHQgpAjuTYocc2tFafuBxj050YEgBIAOQBwc669QwOpyLjkiY1SmMQIEiZJUEttNqUo+2NKXd3VGJFdkswXytaioJabOUoznGT50wHXKtP0PptVHojikyH0pjtbUFRKlEDGB7aR64GVUNKWpTpfqb6fqCGykrWkHysj9PxydL8u0qcCMcSoN+jMKtVduK1IqlQfQlRytSlHG5R8aElXuKVW5am2FpCXPKhjOva4Z1ar01cdGVtIVjCSdqT6En/tojdLeh1QqzCKvWZKWIUhJKC0pJcV7jg8fOPjXIJa5tVnX/ADSNmg0jW1vb3SnFJc75Scj/AF1mu0GE+3hbYS5txuSMZPrjTFt9AqClpxSpNSWhafscOBsI7ngYP7jQyvfp5VrMWH3lpkQXXChp9I84yAoeD3+cHRHjlBkiAvIVzgGQFigQmGxhsKd243K5GfXGsOTbQS2VRnVKdJySTgaJFldP6tebqnI6ksQmlhDr6x24zhI8n/yNE9fQKgqZbKZNSSlAy46MHfnt3GANWvHLjIEjXqhwTFlpNwTKJLS0+tOG/wCpIyRotUSrtTo7FTgvoUoYVlBztUPGsbqj0Mn0yMurUSSl+JHTuc+spIcT7nAHHxk+2hnQZlboE1DKyW2VqAwonar4I0H6pbVof5tXZY4NpdUIskx48+R9NaSkKacOEr9cHxpt6TMj1CmxpkVQLTraVJI9Ma5z0BC62FMMLLFSaTv/ACjqShawPLZP6j7cHTu9Aa7JrvTWnrmlRkRFLjOFSCk5SeO/tjt/611uJYWODOTy6go2EDvXzq7H/npdqUOnvV6q05P00QoaiUsqPdTqj9qD49caBd2211svVl1qZPpNEhPf3kSO+cqHo4tAJV8Zx7aNFV6fybBu+6JsiM0lNeqSpTABKllJ/qW4f1FXKyBwndjUutuDTTT8NttObv1Hbx8DWTVtcx3OJojrUBoIslrdCam/KhUx+twHEqWhCkMKUXFDPISNuAdNG+3J6TWs6m1bZZrM2G0jbDEkxx9Md0pO1WSB7c+usul0elUupoqbENAcSoHOOw841Jbip6pTX8Qj5w42N+O444OtqaFqBI+zO642MA3yR+P1TtGvz4tIpVy0qXPkwxLcpiHUrdbRgBe4YBBBODnUJuej02Y5Kp0mO3IgyM/YsZBTnt8g+fbWJLpVDolxN3FNpUVFTYCm0TUthLqkqGCCodwffV0OrRqnIXTkOD6qDlg+HAe6fnPI1RbYYb7KVNexPa2aJTIBjUyHGbjQWMZQjgBPn5J9e51PXOpln0CpOUes3TSKdKaiGU1T3XUocW2OEkDlRyRjjOdDudVY9LfRT3FgPOnL3/LT4SfcnGrWKXQ69cSrhi0mI7U1pQyZimwtxCEjgBR/SB7aitqMLLdduzJlBXL6s2w2LqtdmizJiFgRTJMgFojgLO1PJHjHHrpYLt6EVKLPnUyPWYLSEuKQht9Sg4gZ4B+3B+dObbdOXHaTPkE7Wm/sJ7njk6jtXpFJq9Ucqb8RKnFHgnyPGdXbSLQCZKbjWSF+RUrStXrZZLLbVPqNJrMFk/ZDkvkhP/TUsAo/Y49tHfoF1ajJv1FqXDTHrfq1TR9MxJThDchQ7KaUPtcPj1xqR3FBpqaeUuNNtgcA7ePg6hkPp7M6iXJbSojLQFDqjcx/JKVbEcn6bg5SrsR4JxnWK1tSw0P+TR3W0HcYht632zNrFA/P05kOOxuXCT/dsgFSiB3JJCRoLW/c35RYQoBJSMHdgfPx8abMgKBSoAgjBB86hV29J7XuZtx1EFqLMUPtebG3B4GTjvgDgdtOWVEnZYpVaFGrSBwZ7NQa+ozk44PBAzqc0wCRSmkuDhaNpHt20Mhal02C+4ahDU9TioBLzQCuCcDdgcYz/mffU5tOssTYwZS6FA4U3z4wPt1SE/DCs7GRI5eluRlIUyB9QoRvSVDkjyDoM1aJ/Dp2GSUpOFoweRpi7oiJEaRUXFYDbWEgeT76We+7liQKgmOAHHUIGRuwBnnk6xvAXua0Et1MylxTUp2H1KUOVuEnk6Mll25HShDWPpqcRvJSOw8AaBljXNEnVIx1ANuOIISN2Qcc8H9tMzakRKosaotryFN7VA+DgalABOZfIJXqbWckRqW4hocNt4HPjUGmzmYDX1XiQDwOCef21JrrrDMGMWi6E4BU5z4weP31BHLWuu+n2k02AtqnEnL7qQkYCtpIyOc88e3trZz4JhV0MmRO4boElxSRg5BA24P/AN9wdGvojbT1HthNRmtIEidhaVJJ5aPKQQexG4jWdbHSC0re+m85CRMkoGC48N2Vcjdg9spOCOx9NThKUoSEISEpSMAAYAGrrqIOzSrbQw1WfdVqtVreLy1aErSUrSFA+CNCy97VXaIVcdvNlMELC5bCezQycrT7cgY9tFXVjrTT7amXm0rQsYUlQyCPfQsuwhK2pg2kvKuO1X/yxC3VtHGPJGuNXUvrVWz1LqsOvVeZDqCpzzSWNxSGylZARt8dtduIVjMUuoSpNNmLajyRv/Lq+5KXMklQ9M57aC/VP8D/AEG6n3C9eF22UF1aSMvyoEl2OXF+FqSggFXnJHzoQvrCEW8UzlRYnWyss9QqbFolZmSai3MaQWQokLJWBt2+e+uzVNdct60Y65gDbyWgVJP9Kjz/AKaHHTH8DHQPptcEa77Wsr+1YeFMSZ8p2Rsc/wCIErJAV5zj40bJ9jMVaVFdqc1bkeOStUdI2pWvI2knvxjt51CvqyBvGMiNkWw7eK03FXkbqcHSuMwrn6+D+pXtwePOiqhCG0hCEhKR4AwNfGWWmG0ssNpbbQMJSkYAGr9Eq6iCzbGVqtVqtFBn/9k=", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "avrit.near": { + "spec": "ft-1.0.0", + "name": "Avrit fungible token", + "symbol": "AVRIT", + "icon": "data:image/svg+xml,%3c%3fxml version='1.0' encoding='UTF-8' standalone='no'%3f%3e %3csvg xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns:cc='http://creativecommons.org/ns%23' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns%23' xmlns:svg='http://www.w3.org/2000/svg' xmlns='http://www.w3.org/2000/svg' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' inkscape:version='1.0 (4035a4fb49%2c 2020-05-01)' sodipodi:docname='splash_small.svg' viewBox='0 0 512 512' height='512' width='512' id='svg64' version='1.1'%3e %3cmetadata id='metadata70'%3e %3crdf:RDF%3e %3ccc:Work rdf:about=''%3e %3cdc:format%3eimage/svg%2bxml%3c/dc:format%3e %3cdc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage' /%3e %3cdc:title%3e%3c/dc:title%3e %3c/cc:Work%3e %3c/rdf:RDF%3e %3c/metadata%3e %3cdefs id='defs68' /%3e %3csodipodi:namedview inkscape:document-rotation='0' inkscape:pagecheckerboard='true' inkscape:current-layer='g4889' inkscape:window-maximized='1' inkscape:window-y='27' inkscape:window-x='40' inkscape:cy='586.54655' inkscape:cx='446.38408' inkscape:zoom='0.24134228' showgrid='false' id='namedview66' inkscape:window-height='1016' inkscape:window-width='1880' inkscape:pageshadow='2' inkscape:pageopacity='0' guidetolerance='10' gridtolerance='10' objecttolerance='10' borderopacity='1' bordercolor='%23666666' pagecolor='white' /%3e %3cg transform='translate(0%2c-3)' style='display:inline' inkscape:label='Layer 1' id='layer2' inkscape:groupmode='layer' /%3e %3cg transform='translate(0%2c-3)' style='display:inline' inkscape:label='bulb' id='layer4' inkscape:groupmode='layer'%3e %3cg style='stroke-width:0.174311%3bstroke-miterlimit:4%3bstroke-dasharray:none' transform='matrix(1.2353856%2c0%2c0%2c1.0656391%2c296.4241%2c64.717261)' id='g4889'%3e %3cg style='stroke-width:0.174311%3bstroke-miterlimit:4%3bstroke-dasharray:none' id='g4831' /%3e %3cg style='stroke-width:0.174311%3bstroke-miterlimit:4%3bstroke-dasharray:none' id='g4833' /%3e %3cg style='stroke-width:0.174311%3bstroke-miterlimit:4%3bstroke-dasharray:none' id='g4835' /%3e %3cg style='stroke-width:0.174311%3bstroke-miterlimit:4%3bstroke-dasharray:none' id='g4837' /%3e %3cg style='stroke-width:0.174311%3bstroke-miterlimit:4%3bstroke-dasharray:none' id='g4839' /%3e %3cg style='stroke-width:0.174311%3bstroke-miterlimit:4%3bstroke-dasharray:none' id='g4841' /%3e %3cg style='stroke-width:0.174311%3bstroke-miterlimit:4%3bstroke-dasharray:none' id='g4843' /%3e %3cg style='stroke-width:0.174311%3bstroke-miterlimit:4%3bstroke-dasharray:none' id='g4845' /%3e %3cg style='stroke-width:0.174311%3bstroke-miterlimit:4%3bstroke-dasharray:none' id='g4847' /%3e %3cg style='stroke-width:0.174311%3bstroke-miterlimit:4%3bstroke-dasharray:none' id='g4849' /%3e %3cg style='stroke-width:0.174311%3bstroke-miterlimit:4%3bstroke-dasharray:none' id='g4851' /%3e %3cg style='stroke-width:0.174311%3bstroke-miterlimit:4%3bstroke-dasharray:none' id='g4853' /%3e %3cg style='stroke-width:0.174311%3bstroke-miterlimit:4%3bstroke-dasharray:none' id='g4855' /%3e %3cg style='stroke-width:0.174311%3bstroke-miterlimit:4%3bstroke-dasharray:none' id='g4857' /%3e %3cg style='stroke-width:0.174311%3bstroke-miterlimit:4%3bstroke-dasharray:none' id='g4859' /%3e %3cg id='g903' transform='matrix(0.3486723%2c0%2c0%2c0.3486723%2c-112.61033%2c16.147529)'%3e %3cpath style='display:inline%3bfill:none%3bstroke:%23e90000%3bstroke-width:10%3bstroke-linecap:butt%3bstroke-linejoin:miter%3bstroke-miterlimit:4%3bstroke-dasharray:none%3bstroke-opacity:1' d='M 853.11575%2c438.49715 Z' id='path892' inkscape:connector-curvature='0' transform='matrix(0.80946386%2c0%2c0%2c0.93840401%2c-239.9446%2c-60.730937)' /%3e %3cg id='g4917' style='display:inline' transform='matrix(0.80946386%2c0%2c0%2c0.93840401%2c-239.9446%2c-60.730937)'%3e %3cpath inkscape:connector-curvature='0' id='path890' d='m 479.6787%2c1053.4367 -3.06994%2c-117.42538 -17.65218%2c-22.2571 -2.30246%2c-69.07373 -11.44112%2c-10.15203 -0.0678%2c-9.63283 -22.38619%2c-47.21442 -1.62808%2c-77.60531 -9.15797%2c-37.85294 -107.66479%2c-224.69375 c 0%2c0 -104.5966%2c-307.28253 179.77532%2c-387.601316 284.37192%2c-80.318786 449.35105%2c175.833016 369.03226%2c388.569256' style='fill:none%3bstroke:%23e90000%3bstroke-width:10%3bstroke-linecap:butt%3bstroke-linejoin:miter%3bstroke-miterlimit:4%3bstroke-dasharray:none%3bstroke-opacity:1' /%3e %3cpath inkscape:connector-curvature='0' id='path894' d='m 853.11575%2c438.49715 -112.88046%2c251.81025 1e-5%2c79.2334 c 0%2c0 -1.89944%2c32.83301 -21.97913%2c54.26945 l -1.35674%2c12.75332 -8.41176%2c12.48197 -1.08539%2c63.49526 -20.89374%2c23.60721 -1.08539%2c119.39279' style='fill:none%3bstroke:%23e90000%3bstroke-width:10%3bstroke-linecap:butt%3bstroke-linejoin:miter%3bstroke-miterlimit:4%3bstroke-dasharray:none%3bstroke-opacity:1' /%3e %3cpath sodipodi:nodetypes='cc' inkscape:connector-curvature='0' id='path898' d='m 685.42315%2c1055.5408 c -66.40573%2c35.6948 -153.27535%2c49.3817 -205.74445%2c-2.1041' style='fill:none%3bstroke:%23e90000%3bstroke-width:10%3bstroke-linecap:butt%3bstroke-linejoin:miter%3bstroke-miterlimit:4%3bstroke-dasharray:none%3bstroke-opacity:1' /%3e %3c/g%3e %3cpath style='display:inline%3bfill:none%3bstroke:%23e90000%3bstroke-width:10%3bstroke-linecap:butt%3bstroke-linejoin:miter%3bstroke-miterlimit:4%3bstroke-dasharray:none%3bstroke-opacity:1' d='M 488.50479%2c1062.6465 H 673.85264' id='path900' inkscape:connector-curvature='0' transform='matrix(0.80946386%2c0%2c0%2c0.93840401%2c-239.9446%2c-60.730937)' /%3e %3cpath style='display:inline%3bfill:none%3bstroke:%23e90000%3bstroke-width:10%3bstroke-linecap:butt%3bstroke-linejoin:miter%3bstroke-miterlimit:4%3bstroke-dasharray:none%3bstroke-opacity:1' d='m 476.60876%2c936.01132 209.89978%2c0.13669' id='path904' inkscape:connector-curvature='0' transform='matrix(0.80946386%2c0%2c0%2c0.93840401%2c-239.9446%2c-60.730937)' /%3e %3cpath style='display:inline%3bfill:none%3bstroke:%23e90000%3bstroke-width:10%3bstroke-linecap:butt%3bstroke-linejoin:miter%3bstroke-miterlimit:4%3bstroke-dasharray:none%3bstroke-opacity:1' d='m 448.80835%2c839.00569 268.09108%2c-2.44212' id='path906' inkscape:connector-curvature='0' sodipodi:nodetypes='cc' transform='matrix(0.80946386%2c0%2c0%2c0.93840401%2c-239.9446%2c-60.730937)' /%3e %3cpath style='display:inline%3bfill:none%3bstroke:%23e90000%3bstroke-width:10%3bstroke-linecap:butt%3bstroke-linejoin:miter%3bstroke-miterlimit:4%3bstroke-dasharray:none%3bstroke-opacity:1' d='m 456.65412%2c844.68049 257.53184%2c-2.41863' id='path908' inkscape:connector-curvature='0' transform='matrix(0.80946386%2c0%2c0%2c0.93840401%2c-239.9446%2c-60.730937)' /%3e %3cpath style='display:inline%3bfill:none%3bstroke:%23e90000%3bstroke-width:10%3bstroke-linecap:butt%3bstroke-linejoin:miter%3bstroke-miterlimit:4%3bstroke-dasharray:none%3bstroke-opacity:1' d='m 458.95658%2c913.75422 248.4457%2c-1.21342' id='path910' inkscape:connector-curvature='0' transform='matrix(0.80946386%2c0%2c0%2c0.93840401%2c-239.9446%2c-60.730937)' /%3e %3cg id='g4829' style='stroke-width:0.174311%3bstroke-miterlimit:4%3bstroke-dasharray:none'%3e %3cpath id='path4819' d='M 151.245%2c222.446 C 148.054%2c237.039 135.036%2c248 119.5%2c248 c -4.142%2c0 -7.5%2c3.357 -7.5%2c7.5 0%2c4.143 3.358%2c7.5 7.5%2c7.5 23.774%2c0 43.522%2c-17.557 46.966%2c-40.386 14.556%2c-1.574 27.993%2c-8.06 38.395%2c-18.677 2.899%2c-2.959 2.85%2c-7.708 -0.109%2c-10.606 -2.958%2c-2.897 -7.707%2c-2.851 -10.606%2c0.108 C 184.947%2c202.829 172.643%2c208 159.5%2c208 132.757%2c208 111%2c186.243 111%2c159.5 c 0%2c-4.143 -3.358%2c-7.5 -7.5%2c-7.5 -4.142%2c0 -7.5%2c3.357 -7.5%2c7.5 0%2c32.215 24.119%2c58.884 55.245%2c62.946 z' inkscape:connector-curvature='0' style='stroke-width:0.174311%3bstroke-miterlimit:4%3bstroke-dasharray:none' /%3e %3cpath id='path4821' d='m 183%2c287.5 c 0%2c-4.143 -3.358%2c-7.5 -7.5%2c-7.5 -35.014%2c0 -63.5%2c28.486 -63.5%2c63.5 0%2c0.362 0.013%2c0.725 0.019%2c1.088 C 109.23%2c344.212 106.39%2c344 103.5%2c344 c -4.142%2c0 -7.5%2c3.357 -7.5%2c7.5 0%2c4.143 3.358%2c7.5 7.5%2c7.5 26.743%2c0 48.5%2c21.757 48.5%2c48.5 0%2c4.143 3.358%2c7.5 7.5%2c7.5 4.142%2c0 7.5%2c-3.357 7.5%2c-7.5 0%2c-26.611 -16.462%2c-49.437 -39.731%2c-58.867 -0.178%2c-1.699 -0.269%2c-3.418 -0.269%2c-5.133 0%2c-26.743 21.757%2c-48.5 48.5%2c-48.5 4.142%2c0 7.5%2c-3.357 7.5%2c-7.5 z' inkscape:connector-curvature='0' style='stroke-width:0.174311%3bstroke-miterlimit:4%3bstroke-dasharray:none' /%3e %3cpath id='path4823' d='m 439%2c223.5 c 0%2c-17.075 -6.82%2c-33.256 -18.875%2c-45.156 C 422.034%2c172.236 423%2c165.918 423%2c159.5 423%2c128.626 400.848%2c102.841 371.606%2c97.171 373.841%2c91.6 375%2c85.628 375%2c79.5 375%2c59.943 363.117%2c43.113 346.194%2c35.839 317.999%2c13.383 287.162%2c0 263.5%2c0 250.347%2c0 238.683%2c6.468 231.5%2c16.384 224.317%2c6.468 212.653%2c0 199.5%2c0 175.838%2c0 145.001%2c13.383 116.806%2c35.839 99.883%2c43.113 88%2c59.943 88%2c79.5 88%2c85.628 89.159%2c91.6 91.394%2c97.171 62.152%2c102.841 40%2c128.626 40%2c159.5 c 0%2c6.418 0.965%2c12.735 2.875%2c18.844 C 30.82%2c190.244 24%2c206.425 24%2c223.5 c 0%2c13.348 4.149%2c25.741 11.213%2c35.975 C 27.872%2c270.087 24%2c282.466 24%2c295.5 c 0%2c23.088 12.587%2c44.242 32.516%2c55.396 -0.343%2c2.852 -0.516%2c5.73 -0.516%2c8.604 0%2c31.144 20.315%2c58.679 49.79%2c68.063 12.821%2c21.942 36.175%2c35.437 61.71%2c35.437 27.995%2c0 52.269%2c-16.181 64%2c-39.674 11.731%2c23.493 36.005%2c39.674 64%2c39.674 25.535%2c0 48.889%2c-13.495 61.71%2c-35.437 29.475%2c-9.385 49.79%2c-36.92 49.79%2c-68.063 0%2c-2.874 -0.173%2c-5.752 -0.516%2c-8.604 C 426.413%2c339.742 439%2c318.588 439%2c295.5 439%2c282.466 435.128%2c270.087 427.787%2c259.475 434.851%2c249.241 439%2c236.848 439%2c223.5 Z M 167.5%2c448 c -21.029%2c0 -40.191%2c-11.594 -50.009%2c-30.256 -0.973%2c-1.849 -2.671%2c-3.208 -4.688%2c-3.751 C 88.19%2c407.369 71%2c384.961 71%2c359.5 c 0%2c-3.81 0.384%2c-7.626 1.141%2c-11.344 0.702%2c-3.447 -1.087%2c-6.92 -4.302%2c-8.35 C 50.32%2c332.018 39%2c314.626 39%2c295.5 39%2c286.801 41.256%2c278.486 45.561%2c271.121 56.757%2c280.992 71.436%2c287 87.5%2c287 91.642%2c287 95%2c283.643 95%2c279.5 95%2c275.357 91.642%2c272 87.5%2c272 60.757%2c272 39%2c250.243 39%2c223.5 c 0%2c-14.396 6.352%2c-27.964 17.428%2c-37.221 2.5%2c-2.09 3.365%2c-5.555 2.14%2c-8.574 C 56.2%2c171.869 55%2c165.744 55%2c159.5 55%2c132.757 76.757%2c111 103.5%2c111 c 26.743%2c0 48.5%2c21.757 48.5%2c48.5 0%2c4.143 3.358%2c7.5 7.5%2c7.5 4.142%2c0 7.5%2c-3.357 7.5%2c-7.5 C 167%2c125.858 140.698%2c98.257 107.579%2c96.145 104.577%2c91.127 103%2c85.421 103%2c79.5 c 0%2c-13.369 8.116%2c-24.875 19.678%2c-29.859 0.447%2c-0.133 0.885%2c-0.307 1.308%2c-0.527 C 127.568%2c47.752 131.447%2c47 135.5%2c47 c 12.557%2c0 23.767%2c7.021 29.256%2c18.325 1.81%2c3.727 6.298%2c5.281 10.023%2c3.47 3.726%2c-1.809 5.28%2c-6.296 3.47%2c-10.022 C 171.983%2c45.87 160.124%2c36.596 146.467%2c33.311 165.609%2c21.631 184.454%2c15 199.5%2c15 213.009%2c15 224%2c25.99 224%2c39.5 v 97.051 C 217.261%2c131.205 208.75%2c128 199.5%2c128 c -4.142%2c0 -7.5%2c3.357 -7.5%2c7.5 0%2c4.143 3.358%2c7.5 7.5%2c7.5 13.509%2c0 24.5%2c10.99 24.5%2c24.5 v 180.279 c -9.325%2c-12.031 -22.471%2c-21.111 -37.935%2c-25.266 -3.999%2c-1.071 -8.114%2c1.297 -9.189%2c5.297 -1.075%2c4.001 1.297%2c8.115 5.297%2c9.189 C 206.8%2c343.616 224%2c366.027 224%2c391.5 224%2c422.654 198.654%2c448 167.5%2c448 Z M 395.161%2c339.807 c -3.215%2c1.43 -5.004%2c4.902 -4.302%2c8.35 0.757%2c3.718 1.141%2c7.534 1.141%2c11.344 0%2c25.461 -17.19%2c47.869 -41.803%2c54.493 -2.017%2c0.543 -3.716%2c1.902 -4.688%2c3.751 C 335.691%2c436.406 316.529%2c448 295.5%2c448 264.346%2c448 239%2c422.654 239%2c391.5 c 0%2c-2.109 -0.098%2c-4.2 -0.281%2c-6.271 0.178%2c-0.641 0.281%2c-1.314 0.281%2c-2.012 V 135.5 c 0%2c-13.51 10.991%2c-24.5 24.5%2c-24.5 4.142%2c0 7.5%2c-3.357 7.5%2c-7.5 0%2c-4.143 -3.358%2c-7.5 -7.5%2c-7.5 -9.25%2c0 -17.761%2c3.205 -24.5%2c8.551 V 39.5 C 239%2c25.99 249.991%2c15 263.5%2c15 c 15.046%2c0 33.891%2c6.631 53.033%2c18.311 -13.657%2c3.284 -25.516%2c12.559 -31.782%2c25.462 -1.81%2c3.727 -0.256%2c8.214 3.47%2c10.022 3.726%2c1.81 8.213%2c0.257 10.023%2c-3.47 C 303.733%2c54.021 314.943%2c47 327.5%2c47 c 4.053%2c0 7.933%2c0.752 11.514%2c2.114 0.422%2c0.22 0.86%2c0.393 1.305%2c0.526 C 351.883%2c54.624 360%2c66.13 360%2c79.5 c 0%2c5.921 -1.577%2c11.627 -4.579%2c16.645 C 322.302%2c98.257 296%2c125.858 296%2c159.5 c 0%2c4.143 3.358%2c7.5 7.5%2c7.5 4.142%2c0 7.5%2c-3.357 7.5%2c-7.5 0%2c-26.743 21.757%2c-48.5 48.5%2c-48.5 26.743%2c0 48.5%2c21.757 48.5%2c48.5 0%2c6.244 -1.2%2c12.369 -3.567%2c18.205 -1.225%2c3.02 -0.36%2c6.484 2.14%2c8.574 11.075%2c9.257 17.427%2c22.825 17.427%2c37.221 0%2c26.743 -21.757%2c48.5 -48.5%2c48.5 -4.142%2c0 -7.5%2c3.357 -7.5%2c7.5 0%2c4.143 3.358%2c7.5 7.5%2c7.5 16.064%2c0 30.743%2c-6.008 41.939%2c-15.879 4.306%2c7.365 6.561%2c15.68 6.561%2c24.379 0%2c19.126 -11.32%2c36.518 -28.839%2c44.307 z' inkscape:connector-curvature='0' style='stroke-width:0.174311%3bstroke-miterlimit:4%3bstroke-dasharray:none' /%3e %3cpath id='path4825' d='M 359.5%2c240 C 343.964%2c240 330.946%2c229.039 327.755%2c214.446 358.881%2c210.384 383%2c183.715 383%2c151.5 c 0%2c-4.143 -3.358%2c-7.5 -7.5%2c-7.5 -4.142%2c0 -7.5%2c3.357 -7.5%2c7.5 0%2c26.743 -21.757%2c48.5 -48.5%2c48.5 -13.143%2c0 -25.447%2c-5.171 -34.646%2c-14.561 -2.898%2c-2.958 -7.647%2c-3.007 -10.606%2c-0.108 -2.959%2c2.899 -3.008%2c7.647 -0.109%2c10.606 10.402%2c10.617 23.839%2c17.103 38.395%2c18.677 3.444%2c22.829 23.192%2c40.386 46.966%2c40.386 4.142%2c0 7.5%2c-3.357 7.5%2c-7.5 0%2c-4.143 -3.358%2c-7.5 -7.5%2c-7.5 z' inkscape:connector-curvature='0' style='stroke-width:0.174311%3bstroke-miterlimit:4%3bstroke-dasharray:none' /%3e %3cpath id='path4827' d='m 335.5%2c328 c -2.89%2c0 -5.73%2c0.212 -8.519%2c0.588 0.006%2c-0.363 0.019%2c-0.726 0.019%2c-1.088 0%2c-35.014 -28.486%2c-63.5 -63.5%2c-63.5 -4.142%2c0 -7.5%2c3.357 -7.5%2c7.5 0%2c4.143 3.358%2c7.5 7.5%2c7.5 26.743%2c0 48.5%2c21.757 48.5%2c48.5 0%2c1.714 -0.091%2c3.434 -0.269%2c5.133 C 288.462%2c342.063 272%2c364.889 272%2c391.5 c 0%2c4.143 3.358%2c7.5 7.5%2c7.5 4.142%2c0 7.5%2c-3.357 7.5%2c-7.5 0%2c-26.743 21.757%2c-48.5 48.5%2c-48.5 4.142%2c0 7.5%2c-3.357 7.5%2c-7.5 0%2c-4.143 -3.358%2c-7.5 -7.5%2c-7.5 z' inkscape:connector-curvature='0' style='stroke-width:0.174311%3bstroke-miterlimit:4%3bstroke-dasharray:none' /%3e %3c/g%3e %3cpath style='opacity:1%3bfill:%23ffff00%3bfill-opacity:0.941176%3bstroke:%23fe0700%3bstroke-width:0.306994%3bstroke-linejoin:round%3bstroke-miterlimit:4%3bstroke-dasharray:none%3bstroke-opacity:1' d='m 451.1187%2c832.5224 c -0.54998%2c-0.54998 -0.99996%2c-3.19803 -0.99996%2c-5.88455 0%2c-2.88034 -4.40331%2c-14.10739 -10.73138%2c-27.36164 l -10.73138%2c-22.47704 -0.87216%2c-38.00258 c -0.81169%2c-35.36744 -1.19853%2c-39.38628 -5.57888%2c-57.95722 -4.58925%2c-19.4566 -6.06346%2c-22.78961 -59.06689%2c-133.54255 -56.95472%2c-119.00936 -57.49659%2c-120.31998 -64.25076%2c-155.401 -7.01672%2c-36.44467 -9.06643%2c-91.67013 -4.63721%2c-124.94067 C 307.842%2c164.85798 367.39535%2c94.464606 468.5384%2c60.942502 c 87.87554%2c-29.124816 172.20745%2c-26.753993 242.50445%2c6.81753 32.77263%2c15.651124 67.99038%2c43.365448 90.9833%2c71.598608 61.99046%2c76.11843 81.87104%2c183.87304 51.58273%2c279.58323 -2.57023%2c8.12186 -30.51376%2c72.46459 -62.09675%2c142.98386 l -57.4236%2c128.21682 v 42.71098 c 0%2c33.58477 -0.50781%2c44.67066 -2.37657%2c51.8824 -3.19496%2c12.32981 -8.47579%2c23.77809 -14.3034%2c31.00827 -2.77575%2c3.44382 -4.80963%2c7.75143 -4.80963%2c10.18643 v 4.21921 l -41.82799%2c0.90336 c -71.15822%2c1.5368 -218.59845%2c2.52299 -219.65224%2c1.4692 z M 524.43047%2c556.508 c 20.57721%2c-4.35926 41.27159%2c-16.77903 52.5074%2c-31.51238 l 5.66688%2c-7.43092 4.09781%2c5.65688 c 6.86446%2c9.4761 19.83873%2c20.05474 31.33088%2c25.5458 37.73392%2c18.02961 83.51056%2c10.74259 111.62986%2c-17.76997 7.2439%2c-7.34521 12.68023%2c-11.37879 18.1235%2c-13.44707 17.98017%2c-6.83193 35.34935%2c-21.39866 43.43876%2c-36.43011 4.89356%2c-9.09305 8.81193%2c-24.45168 8.84407%2c-34.66577 0.0221%2c-7.02779 0.23504%2c-7.35 8.46728%2c-12.81425 29.55906%2c-19.62018 38.98612%2c-53.91572 22.89984%2c-83.3094 l -5.30819%2c-9.69943 3.1402%2c-4.41002 c 15.20194%2c-21.34915 12.55071%2c-53.96161 -6.0251%2c-74.11399 l -6.28817%2c-6.82186 1.79982%2c-11.57687 c 1.53713%2c-9.88724 1.4229%2c-13.10425 -0.78273%2c-22.04207 -6.07832%2c-24.63103 -24.17234%2c-42.61011 -51.64964%2c-51.32154 -6.60198%2c-2.0931 -8.34457%2c-3.29235 -7.99381%2c-5.50136 2.3186%2c-14.60199 1.99735%2c-23.20575 -1.18073%2c-31.62323 -3.91492%2c-10.36898 -14.61151%2c-22.15803 -24.72009%2c-27.24478 C 728.69814%2c104.0986 719.96719%2c99.155528 713.0262%2c94.991053 695.11712%2c84.245915 674.16627%2c74.625878 658.10743%2c69.773909 646.44075%2c66.248975 641.30926%2c65.577861 625.10553%2c65.457812 604.49548%2c65.305113 600.1139%2c66.567615 587.241%2c76.367995 l -4.86262%2c3.702014 -7.09834%2c-5.418277 c -9.10906%2c-6.953103 -19.91617%2c-10.110349 -34.49281%2c-10.076906 -24.96529%2c0.05727 -57.44527%2c10.945362 -86.83106%2c29.107909 -5.90964%2c3.652586 -14.11373%2c8.305925 -18.2313%2c10.340745 -10.7133%2c5.2943 -23.00869%2c17.50506 -27.17325%2c26.98622 -3.32396%2c7.56741 -4.29773%2c19.80328 -2.62517%2c32.98631 0.38906%2c3.06652 -0.82023%2c3.94286 -9.53172%2c6.90737 -21.0676%2c7.16929 -35.99778%2c19.63273 -44.70441%2c37.3184 -4.05538%2c8.23766 -5.1026%2c12.44474 -5.6383%2c22.65117 -0.36184%2c6.89397 0.0374%2c15.05256 0.88715%2c18.13018 1.4512%2c5.25583 1.2227%2c5.90734 -3.76225%2c10.72727 -2.919%2c2.82239 -7.85341%2c10.2763 -10.96535%2c16.56428 -5.39754%2c10.90627 -5.65806%2c12.14961 -5.65806%2c27.00318 0%2c15.01361 0.21047%2c15.98515 5.88462%2c27.16412 l 5.88462%2c11.59363 -3.85638%2c5.91738 c -10.34867%2c15.87937 -11.4719%2c40.19673 -2.68147%2c58.05263 5.50613%2c11.18454 16.51573%2c23.15344 26.89032%2c29.23336 l 6.75414%2c3.95818 0.0761%2c9.91801 c 0.14045%2c18.30045 5.78009%2c31.78777 19.47883%2c46.58404 9.07242%2c9.79931 21.05045%2c17.86075 33.34077%2c22.43899 5.03977%2c1.87735 10.82615%2c6.20907 18.41966%2c13.78907 22.18853%2c22.14907 55.29603%2c31.42245 87.68573%2c24.56073 z' id='path4961' inkscape:connector-curvature='0' transform='matrix(0.80946386%2c0%2c0%2c0.93840401%2c-239.9446%2c-60.730937)' /%3e %3cpath style='opacity:1%3bfill:lime%3bfill-opacity:0.941176%3bstroke:%23fe0700%3bstroke-width:0.306994%3bstroke-linejoin:round%3bstroke-miterlimit:4%3bstroke-dasharray:none%3bstroke-opacity:1' d='m 648.941%2c540.36726 c -26.85192%2c-4.77005 -48.13008%2c-22.34096 -54.75574%2c-45.21579 -0.74056%2c-2.55674 -1.33339%2c-69.50579 -1.3174%2c-148.77567 0.0287%2c-142.41039 0.0664%2c-144.18745 3.16348%2c-149.19863 4.22488%2c-6.83601 11.74779%2c-11.20545 22.22969%2c-12.91143 4.78591%2c-0.77892 9.66527%2c-2.21596 10.84302%2c-3.1934 3.61867%2c-3.00323 2.62763%2c-10.22173 -1.80182%2c-13.12402 -3.47583%2c-2.27744 -5.14083%2c-2.363 -14.04763%2c-0.72186 -5.55744%2c1.024 -12.03755%2c2.86146 -14.40024%2c4.08326 -2.3627%2c1.2218 -4.67548%2c2.22145 -5.13953%2c2.22145 -0.46404%2c0 -0.84371%2c-16.26663 -0.84371%2c-36.14806 0%2c-38.544431 0.3664%2c-40.752823 7.93371%2c-47.818384 8.79719%2c-8.213897 20.52784%2c-9.889073 40.44326%2c-5.77543 15.10095%2c3.119185 42.18637%2c13.383665 42.18637%2c15.987237 0%2c0.489717 -3.40631%2c2.100207 -7.56957%2c3.578867 -9.29334%2c3.3007 -21.55948%2c12.78097 -26.15267%2c20.21292 -4.09858%2c6.63163 -3.24881%2c12.42995 2.18447%2c14.90552 5.51089%2c2.51092 10.65494%2c0.48445 15.16748%2c-5.97514 6.89511%2c-9.87019 21.48784%2c-17.29646 33.98782%2c-17.29646 21.56455%2c0 40.92338%2c18.74267 38.80165%2c37.56665 -1.11441%2c9.887 -4.64248%2c14.6224 -10.8943%2c14.6224 -2.78213%2c0 -8.81015%2c1.10198 -13.39562%2c2.44886 -29.34506%2c8.61944 -51.17135%2c32.43277 -53.22971%2c58.07571 -0.96589%2c12.03295 0.62908%2c14.68905 8.82068%2c14.68905 7.28624%2c0 9.45232%2c-2.60534 10.87358%2c-13.07866 1.56894%2c-11.56161 6.89602%2c-21.32353 16.35259%2c-29.96631 12.13795%2c-11.0934 21.93106%2c-14.41931 42.61504%2c-14.47281 15.80354%2c-0.0409 17.53842%2c0.26606 27.09418%2c4.79341 23.63354%2c11.19718 36.12505%2c34.68681 29.87647%2c56.18118 -3.72715%2c12.82098 -3.34135%2c14.48616 5.11841%2c22.09222 10.55189%2c9.48705 15.84765%2c20.77961 15.95258%2c34.01682 0.20859%2c26.31709 -20.85279%2c47.00974 -51.84719%2c50.93945 -13.66622%2c1.73271 -16.21713%2c3.19925 -16.21713%2c9.32341 0%2c5.14943 4.84717%2c9.10892 11.15105%2c9.10892 12.7842%2c0 40.10409%2c-8.84204 48.27663%2c-15.62465 3.36653%2c-2.79397 8.67125%2c11.41814 8.69663%2c23.29951 0.0399%2c18.65454 -10.69816%2c34.47214 -30.56261%2c45.02014 l -9.16472%2c4.86644 v 15.34972 c 0%2c13.37725 -0.51977%2c16.45825 -4.04491%2c23.97628 -7.50922%2c16.01493 -21.40059%2c28.17138 -39.36491%2c34.44862 -8.46005%2c2.95615 -11.34921%2c5.01374 -19.10237%2c13.60415 -5.02412%2c5.56666 -12.06467%2c11.83825 -15.64566%2c13.93685 -14.95348%2c8.76332 -36.18889%2c12.8046 -52.27135%2c9.94766 z m 0.14613%2c-52.3815 c 0.94848%2c-0.75565 2.20023%2c-4.96003 2.78167%2c-9.34306 1.63549%2c-12.32899 6.45721%2c-21.71227 15.60081%2c-30.3599 10.20835%2c-9.65464 22.36194%2c-15.21853 35.75676%2c-16.36939 12.48381%2c-1.07259 17.04741%2c-3.63295 17.04741%2c-9.56424 0%2c-5.92055 -3.59629%2c-8.4953 -12.08762%2c-8.65409 l -7.09952%2c-0.13276 -1.09236%2c-8.70073 c -0.6008%2c-4.7854 -2.96877%2c-12.68568 -5.26216%2c-17.55619 -5.02321%2c-10.66789 -19.5403%2c-25.55773 -30.75416%2c-31.54384 -15.61666%2c-8.33639 -42.4379%2c-12.88936 -48.74824%2c-8.27511 -3.04225%2c2.22454 -3.74948%2c9.50982 -1.17327%2c12.08603 0.88794%2c0.88793 7.6001%2c2.57293 14.91591%2c3.74442 7.31581%2c1.17149 17.01376%2c3.88618 21.55101%2c6.03264 17.06431%2c8.07271 29.80153%2c25.72803 29.82048%2c41.33478 l 0.009%2c7.67486 -10.35539%2c5.30245 c -12.82075%2c6.56483 -26.26281%2c19.8777 -31.72169%2c31.41684 -5.28408%2c11.16961 -7.86137%2c24.70539 -5.63462%2c29.59257 2.72169%2c5.97346 11.01119%2c7.64427 16.44567%2c3.31472 z m 99.19989%2c-155.05303 c 3.35711%2c-3.96741 3.34731%2c-4.74783 -0.11313%2c-9.0213 -2.05996%2c-2.54396 -5.31028%2c-3.80044 -12.30601%2c-4.75717 -12.04137%2c-1.64675 -19.9629%2c-5.686 -26.7877%2c-13.65924 -8.58126%2c-10.02529 -8.3339%2c-11.39299 2.46387%2c-13.62324 29.28657%2c-6.04904 53.36004%2c-29.57688 57.65524%2c-56.34848 1.87253%2c-11.6713 -0.11067%2c-16.51468 -7.03726%2c-17.18616 -8.02112%2c-0.7776 -10.76046%2c1.70198 -11.94452%2c10.81185 -2.37324%2c18.259 -13.67311%2c33.2308 -31.4787%2c41.70776 -9.36035%2c4.45632 -11.06886%2c4.75005 -27.62949%2c4.75005 -16.02538%2c0 -18.47795%2c-0.38686 -26.61258%2c-4.19775 -4.92823%2c-2.30875 -11.02518%2c-5.93512 -13.54878%2c-8.0586 -2.61171%2c-2.1976 -6.52142%2c-3.86085 -9.07551%2c-3.86085 -4.88074%2c0 -10.62703%2c4.66052 -10.62703%2c8.61906 0%2c6.94953 23.22671%2c20.64751 40.5982%2c23.94285 5.53073%2c1.04916 10.06262%2c2.61347 10.07086%2c3.47623 0.0403%2c4.21385 8.10723%2c18.13324 13.81976%2c23.84576 10.7522%2c10.7522 33.92936%2c19.51546 46.02915%2c17.40357 2.11059%2c-0.36839 5.04622%2c-2.09834 6.52363%2c-3.84434 z' id='path4963' inkscape:connector-curvature='0' transform='matrix(0.80946386%2c0%2c0%2c0.93840401%2c-239.9446%2c-60.730937)' /%3e %3cpath style='opacity:1%3bfill:%23ff00ff%3bfill-opacity:0.941176%3bstroke:%23fe0700%3bstroke-width:0.306994%3bstroke-linejoin:round%3bstroke-miterlimit:4%3bstroke-dasharray:none%3bstroke-opacity:1' d='m 490.56016%2c540.31213 c -18.76792%2c-3.29722 -34.88411%2c-12.76363 -45.04633%2c-26.45957 -4.1857%2c-5.64119 -7.0677%2c-7.79474 -13.04726%2c-9.74941 -22.59301%2c-7.38548 -36.96504%2c-19.96866 -44.35514%2c-38.83439 -1.85785%2c-4.74278 -2.64949%2c-11.00881 -2.60398%2c-20.61129 0.0376%2c-7.92971 -0.65721%2c-14.66752 -1.63383%2c-15.84427 -0.93456%2c-1.12609 -4.69363%2c-3.372 -8.35349%2c-4.99093 -10.17676%2c-4.50166 -21.0722%2c-15.60904 -25.9306%2c-26.43501 -3.69273%2c-8.22849 -4.13019%2c-10.7819 -3.48027%2c-20.31429 0.40884%2c-5.99655 1.97106%2c-13.42703 3.47159%2c-16.51216 l 2.72825%2c-5.6093 9.3793%2c5.10947 c 15.8367%2c8.62722 38.60518%2c13.41808 47.08208%2c9.90683 5.87458%2c-2.43333 7.55629%2c-8.3399 3.5229%2c-12.37328 -1.99129%2c-1.99129 -6.64909%2c-3.39624 -14.60289%2c-4.40467 -22.70644%2c-2.8789 -40.05289%2c-14.6177 -48.10096%2c-32.55119 -3.67941%2c-8.19881 -4.13185%2c-10.8163 -3.51142%2c-20.3143 0.8864%2c-13.56953 4.67015%2c-21.30479 15.84329%2c-32.38899 4.60834%2c-4.57167 8.37881%2c-9.29393 8.37881%2c-10.49394 0%2c-1.20001 -1.03611%2c-4.66159 -2.30246%2c-7.69241 -3.04505%2c-7.28781 -2.92334%2c-21.65124 0.26307%2c-31.04649 3.6454%2c-10.74861 18.19609%2c-25.04876 30.43636%2c-29.9123 7.70882%2c-3.06302 11.96696%2c-3.66655 26.1268%2c-3.70311 16.03412%2c-0.0414 17.44689%2c0.21721 27.07126%2c4.95527 18.0739%2c8.89776 29.10383%2c23.34686 31.43128%2c41.17469 1.26912%2c9.72127 2.72145%2c11.38782 9.924%2c11.38782 4.61096%2c0 6.46921%2c-0.84349 8.42106%2c-3.82236 2.14089%2c-3.26742 2.26014%2c-5.20963 0.82138%2c-13.37759 -3.72048%2c-21.12153 -18.24981%2c-39.73498 -38.64652%2c-49.50984 -9.60083%2c-4.60107 -15.38985%2c-6.32169 -31.56931%2c-9.38304 -5.75377%2c-1.08869 -9.48641%2c-14.55982 -6.74617%2c-24.347 8.12567%2c-29.02203 51.13958%2c-35.67645 71.3312%2c-11.03522 6.76825%2c8.25975 11.48531%2c10.05641 16.9691%2c6.4633 6.221%2c-4.07616 5.11233%2c-9.99152 -3.67449%2c-19.60572 -6.93315%2c-7.58596 -13.82664%2c-12.09514 -25.50116%2c-16.68084 l -4.60492%2c-1.808789 9.20983%2c-4.179803 c 38.75737%2c-17.589701 67.61884%2c-17.991329 78.80429%2c-1.096616 l 4.08419%2c6.168848 0.43925%2c54.07385 0.43926%2c54.07385 -8.88161%2c-3.65221 c -10.66206%2c-4.38435 -24.99988%2c-5.03967 -28.72658%2c-1.31296 -3.09258%2c3.09257 -3.0978%2c8.92269 -0.0107%2c11.4851 1.32099%2c1.09632 6.21738%2c2.5111 10.88086%2c3.14395 11.0547%2c1.50016 19.85607%2c7.33655 23.64345%2c15.67852 2.76419%2c6.08834 2.91749%2c11.44295 2.94945%2c103.02877 l 0.0338%2c96.60666 -4.22117%2c-3.96001 c -7.48042%2c-7.01762 -21.33347%2c-14.87448 -33.32235%2c-18.89901 -10.20603%2c-3.42605 -12.21603%2c-3.6716 -15.85293%2c-1.93662 -2.79813%2c1.33482 -4.32733%2c3.39891 -4.65965%2c6.28953 -0.65161%2c5.6679 1.78955%2c8.33698 9.49956%2c10.38654 10.03744%2c2.66825 23.07322%2c10.26548 30.95676%2c18.0415 21.99611%2c21.69616 22.51481%2c52.81819 1.25901%2c75.54235 -4.04012%2c4.31922 -10.32979%2c9.60193 -13.97707%2c11.73938 -14.08699%2c8.25552 -36.32069%2c12.35405 -52.03848%2c9.5927 z m 9.62533%2c-35.76014 c 4.16887%2c-3.58591 4.18055%2c-3.6526 2.45999%2c-14.03586 -0.95083%2c-5.73804 -3.58746%2c-14.23184 -5.85919%2c-18.8751 -5.50126%2c-11.24417 -19.04173%2c-24.49826 -31.73179%2c-31.06065 l -10.31949%2c-5.33651 0.009%2c-7.67486 c 0.0278%2c-22.89117 22.75193%2c-43.39017 52.44608%2c-47.31058 9.88654%2c-1.30528 12.74567%2c-2.28391 14.50151%2c-4.96367 3.07452%2c-4.69231 0.4709%2c-11.00834 -5.11595%2c-12.41055 -6.31155%2c-1.58409 -26.16755%2c1.7646 -37.59945%2c6.34111 -24.37182%2c9.75668 -44.20754%2c35.12247 -44.20754%2c56.53226 v 5.5936 l -7.66009%2c-0.17257 c -8.95605%2c-0.20178 -12.29454%2c1.98556 -12.29454%2c8.05525 0%2c5.82339 4.54611%2c8.5017 16.1172%2c9.49538 14.099%2c1.21076 25.67374%2c6.29862 35.92899%2c15.79318 9.87379%2c9.1414 14.75942%2c18.40816 16.65707%2c31.59415 0.93374%2c6.4882 1.93974%2c8.5158 4.99113%2c10.05964 5.33965%2c2.70158 6.9%2c2.48454 11.67671%2c-1.62422 z M 469.23083%2c340.79801 c 12.38248%2c-4.71238 27.04217%2c-18.99256 30.93287%2c-30.1321 l 2.76627%2c-7.9201 9.13452%2c-1.7971 c 16.13977%2c-3.1753 38.07833%2c-15.04062 40.2063%2c-21.74529 1.43467%2c-4.52023 -0.60149%2c-8.49616 -5.36061%2c-10.46745 -4.85016%2c-2.00901 -5.97673%2c-1.6234 -17.37147%2c5.94609 -11.60203%2c7.70715 -20.40399%2c10.14056 -36.44076%2c10.07449 -17.49001%2c-0.0721 -28.2602%2c-3.70157 -40.43679%2c-13.62705 -9.5568%2c-7.79 -17.89214%2c-22.60381 -17.89214%2c-31.79843 0%2c-4.40394 -1.03661%2c-7.11215 -3.76765%2c-9.8432 -4.40229%2c-4.40228 -7.96909%2c-4.7447 -12.96597%2c-1.24474 -3.3098%2c2.31827 -3.5429%2c3.34544 -2.87375%2c12.66351 1.92505%2c26.80686 25.57431%2c51.48149 56.87879%2c59.34492 11.3541%2c2.85207 11.71102%2c4.09908 3.88925%2c13.58824 -5.84518%2c7.09122 -16.84722%2c12.72071 -27.51921%2c14.08094 -4.54798%2c0.57969 -9.47785%2c1.67644 -10.95526%2c2.43725 -3.46836%2c1.78607 -3.52122%2c9.4308 -0.0889%2c12.86309 3.51378%2c3.51378 19.4486%2c2.30206 31.86455%2c-2.42307 z' id='path4965' inkscape:connector-curvature='0' transform='matrix(0.80946386%2c0%2c0%2c0.93840401%2c-239.9446%2c-60.730937)' /%3e %3cpath style='opacity:1%3bfill:%23ffccaa%3bfill-opacity:0.941176%3bstroke:%23fe0700%3bstroke-width:0.153497%3bstroke-linejoin:round%3bstroke-miterlimit:4%3bstroke-dasharray:none%3bstroke-opacity:1' d='m 463.81639%2c897.99976 c -0.26537%2c-5.74293 -0.71183%2c-18.78791 -0.99212%2c-28.98883 l -0.50961%2c-18.54714 3.37763%2c-0.40131 c 2.89395%2c-0.34384 197.86771%2c-2.10477 226.90791%2c-2.04935 l 10.16919%2c0.0194 v 19.0658 c 0%2c10.48619 -0.22425%2c23.7415 -0.49833%2c29.45625 l -0.49831%2c10.39045 -62.24366%2c0.4669 c -34.23401%2c0.25679 -87.66563%2c0.59348 -118.73693%2c0.7482 l -56.49327%2c0.2813 z' id='path4967' inkscape:connector-curvature='0' transform='matrix(0.80946386%2c0%2c0%2c0.93840401%2c-239.9446%2c-60.730937)' /%3e %3cpath style='opacity:1%3bfill:%23ffccaa%3bfill-opacity:0.941176%3bstroke:%23fe0700%3bstroke-width:0.108539%3bstroke-linejoin:round%3bstroke-miterlimit:4%3bstroke-dasharray:none%3bstroke-opacity:1' d='m 474.53546%2c924.92181 -4.61317%2c-5.83397 13.68848%2c-0.12591 c 23.94391%2c-0.22026 211.76765%2c-1.13686 211.87454%2c-1.03397 0.0564%2c0.0543 -2.45924%2c2.96276 -5.59033%2c6.46326 l -5.69289%2c6.36456 H 581.67537 479.14864 Z' id='path4969' inkscape:connector-curvature='0' transform='matrix(0.80946386%2c0%2c0%2c0.93840401%2c-239.9446%2c-60.730937)' /%3e %3cpath style='opacity:1%3bfill:%23ffccaa%3bfill-opacity:0.941176%3bstroke:%23fe0700%3bstroke-width:0.108539%3bstroke-linejoin:round%3bstroke-miterlimit:4%3bstroke-dasharray:none%3bstroke-opacity:1' d='m 488.47128%2c1054.3544 c -2.84589%2c-2.4292 -3.37685%2c-3.169 -3.60296%2c-5.0199 -0.14586%2c-1.1939 -0.76853%2c-23.7836 -1.38371%2c-50.19922 -0.61518%2c-26.41565 -1.26394%2c-50.32168 -1.44168%2c-53.1245 l -0.32317%2c-5.09604 99.50512%2c0.40066 c 54.72781%2c0.22037 99.59414%2c0.4861 99.70293%2c0.59051 0.1088%2c0.10441 0.0156%2c25.00386 -0.20716%2c55.3321 l -0.40499%2c55.14229 -4.80191%2c2.4116 -4.80191%2c2.4117 h -89.4514 -89.4514 z' id='path4971' inkscape:connector-curvature='0' transform='matrix(0.80946386%2c0%2c0%2c0.93840401%2c-239.9446%2c-60.730937)' /%3e %3cpath style='opacity:1%3bfill:%23ffccaa%3bfill-opacity:0.941176%3bstroke:%23fe0700%3bstroke-width:0.108539%3bstroke-linejoin:round%3bstroke-miterlimit:4%3bstroke-dasharray:none%3bstroke-opacity:1' d='m 557.53835%2c1081.5715 c -13.32755%2c-1.0908 -26.86778%2c-4.1464 -37.98862%2c-8.573 -3.88026%2c-1.5445 -7.90977%2c-3.2779 -8.95446%2c-3.8519 -1.88239%2c-1.0343 -1.29329%2c-1.0436 65.66604%2c-1.0368 l 67.56546%2c0.01 -2.70096%2c1.0951 c -4.81543%2c1.9524 -22.5931%2c6.8571 -30.9461%2c8.5377 -19.18788%2c3.8606 -36.66518%2c5.1295 -52.64136%2c3.822 z' id='path4973' inkscape:connector-curvature='0' transform='matrix(0.80946386%2c0%2c0%2c0.93840401%2c-239.9446%2c-60.730937)' /%3e %3c/g%3e %3c/g%3e %3c/g%3e %3c/svg%3e", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "pixel.tkn.near": { + "spec": "ft-1.0.0", + "name": "Pixel Token", + "symbol": "PIXEL", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "kongztoken.near": { + "spec": "ft-1.0.0", + "name": "KONGZ", + "symbol": "KONGZ", + "icon": "https://i.ibb.co/H2jc1Bk/kongztoken.png", + "reference": null, + "reference_hash": null, + "decimals": 8 + }, + "tipjargon.near": { + "spec": "ft-1.0.0", + "name": "Jargon", + "symbol": "JAR", + "icon": "data:image/png;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 7 + }, + "koro.tkn.near": { + "spec": "ft-1.0.0", + "name": "Korosenai Coin", + "symbol": "KORO", + "icon": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/4gIoSUNDX1BST0ZJTEUAAQEAAAIYAAAAAAQwAABtbnRyUkdCIFhZWiAAAAAAAAAAAAAAAABhY3NwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA9tYAAQAAAADTLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlkZXNjAAAA8AAAAHRyWFlaAAABZAAAABRnWFlaAAABeAAAABRiWFlaAAABjAAAABRyVFJDAAABoAAAAChnVFJDAAABoAAAAChiVFJDAAABoAAAACh3dHB0AAAByAAAABRjcHJ0AAAB3AAAADxtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAFgAAAAcAHMAUgBHAEIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAABvogAAOPUAAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAJKAAAA+EAAC2z3BhcmEAAAAAAAQAAAACZmYAAPKnAAANWQAAE9AAAApbAAAAAAAAAABYWVogAAAAAAAA9tYAAQAAAADTLW1sdWMAAAAAAAAAAQAAAAxlblVTAAAAIAAAABwARwBvAG8AZwBsAGUAIABJAG4AYwAuACAAMgAwADEANv/bAEMAAwICAgICAwICAgMDAwMEBgQEBAQECAYGBQYJCAoKCQgJCQoMDwwKCw4LCQkNEQ0ODxAQERAKDBITEhATDxAQEP/bAEMBAwMDBAMECAQECBALCQsQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEP/AABEIAGAAYAMBIgACEQEDEQH/xAAdAAABBQEBAQEAAAAAAAAAAAAHAAMFBggEAQIJ/8QAPBAAAgEDAgQEBAQDBQkAAAAAAQIDBAURAAYHEiExE0FRYRQicYEIIzJCFUORCRYkgqElMzVSYnKSscH/xAAcAQACAgMBAQAAAAAAAAAAAAAFBgQHAAMIAQL/xAA3EQABAwIDBQUFBwUAAAAAAAABAgMRAAQFITEGEkFRYQcTInGRMoGxwfAUFUJiodHhIyQmcrL/2gAMAwEAAhEDEQA/APyq0tLS1lZS0tStl2tuDcUkcdmtc1UZJPCXkHTOMn7DzPYdM9xo17K/DnR03JW70qxUydCKSnYiNf8Aufu30GPqdQrrELezH9RWfIa0zYDshi+0a4smju8VKySPfx8hJ6UHbBs253zwqh3hoKCRwhrKqRY0AzgleYgvjzxn31OwbOoYWnipLRU3oQsjGseo+Dp1VumCrqCxznqr4OR9NaljstoiECpa6QfCxiKDEK/loP2r06D2Gnqmhoq2nelrKOCeCQcrxyRhkYehB6HS8vH1LV7OXn9H9QKuS17IWLdqFPAr5lMzloAZSBP5VHkRWa6TZ9jr6KKSn/ulBLFzqYqqvqUeXDY5urKe4I/T7a4Jdi0dZCJKentzN+nNBdQhYjvyxVIBbz7N5dNaCq+H9jMwmtFFbra2QZOS3Qt4i56r1HQEdNCfiHw9tNiq6qZLTUGGpb4pqs0oMSvggxKY3UoOuQApz741ItcRD690KI5TJ+Y+NB8d2LXhlt3q2EKAyUUwnhkR4VRpnkOh5jqbYtTURvJY6v4uWNS0lDNEYKtQDg4jbpJ/kJ1WJI5InaOVGR1OGVhgg+41dKeW9Wi5LYqOlkn8RlBt1Ywf8zuTFIMFG9xyMM4Ocavd/wBoWTeFslvT1cyzRRCKSaVOWpoJR+ysXu6Dt4mOYDqcgZ0UN4bdQDuaTofr68zSEjZxGLNLVYjccRqk6GNYJzECJnSZIQnOgfpa777Yrjty5y2q6QhJoiOqnKup6hlPmpHUHXBoilQUApOhpOeacYcU06CFJMEHUEcKWpjaW2q7dt+pbJb4wzzOC+WC8sYPzNn2HsdRCI0jqiKWZiAAB1J1p/ghswbask1VUtFJU1LqSygnkGOwOcHv3HcY1AxK9FkwVj2jpTXsTsyrafFE26smk5rPQcPM6dNavO3dv0O3LbFQUUKJyKOYouAT54HkPYalNLS0gKUVkqUczXXjLLds2llkQlIgAV4SFBZjgDqToPbt49i2XlqDblBBW00B5ZZpWIDt58mPIevnr3jNxJ+Eik2nZJ8SuOWrmRv0qf5Yx5nz/poFMR5nvplwrCErR31yNdB86o/tA7R37W5+7cFcgoPjWIOY/CJkZfiPPLgZ0DYvxA7drSsV8t9Rb3P8xPzY/wDT5h/Q6mKfiXb6rcjU8FZT1tsnp1NMIXAYvn5+bIyGHkpwD698Zztm37zenlS2W+WbwI/GkPRQqZAzk49R201LSV9quUlDUOaWpp2w2CcjzBHbyIOiP3JahW8ke7UfXvpIX2o4+7bi3dcEgg7wG6rLgYyIPLdrQ+9OGFp3VSNuDZkrW28I5mikw8IZiCCHTsC3KRzAdeXuRqi22e6Pehe6ymakvFvZ6Ktp1jAWYheizHPKYmHTnx8pYH9IGOfam9tyWtqemTclVKJ5AoWcoYyeg6lgSBjHnor73s9NNY59wijWaqgpuafwAMzxrhiv/UOh6ehOOuNQblKrFYZWZSrIcxzBnhTfgLrO1NqvEGAUPtQpwABKFkSUrSBosAZkATmI0oPb2tds3BT26isdxLRtHM9LT1DDxaOsLnxKFjjPKeT8snoST19BM6PG7RyKVZSQykYIPodFm3VlmlvdbaaYVPg34yRGWeAxtDJGS1PMegZ25gylR1JRj3OqNvWirFuRu9TSR04r2cNGgxyTRnklDL+0lgWx6OOui1msoPdHTh9evpPGkDaW1Tct/b0EFUwqNABAHSACmIy8W6PYrj21TxyXNKuepFPFRlZ2kZcjIYBR7ZJH+utfbQoKu3WKCCtZGmctM5XzLksc/QnH0A1l7adna47UuIA5nqbrb6OBCv6nYuSQfIgDH+bWt4E8OFI/+VQP9NBNoHd4pQOZ+A/erP7H8PLLbtyoapSQfNSwf+AR505of8VOIsW1Le1ut0ge5Tp+3r4KH9x9CfLRA1S9xcKNu7mq5KuuqK2MyMWZYZFAJP1U6EWBtkPb9zoOHM1Yu1rWM3GHm3wSA4vIqJjdTxI68OmozrOm17Yu99wtaazcFPaZahHeKoqY3kjeQHPKxUEqCMnOD21f7bs3hTPZ6uyUu547lfWUCluMSTQxRVCt1GW6PGwyB0DZwR5gxm6eH+3qGumstLBLQ1FO0i/FNK0gcc2UJHl8jJnA88geRGlTSVNtqpKSZGSaJirAHz+urCbcQtsKSNfhXHN7ZPW9wplxcFOWXMa5kT7suOs0XLnPaOHO5KmyLFc4paaSSjqZ55hIalenVQAMKe+MnHTrq+z8Ltkb7vs/EH4yprLfdWD0tOB4IVIwIuVwCWz+X6jv76zMk7iYTTuxYkZJOSf66O/Bribt6ltn917pOtJIsvPTTPkK/NnmVj2BBxg9B1PtodiqXhbqXbkg9OVOXZ8cMOMtM4whKkKEAq0CuBOcZ6ZyM6u29dl2Co2bUUNNaUiFBE01KtNEOZXA8gO+ex9frof8Kd33X+OnZG5a6WKmemKUsFTFyF8jIUEjOOUnGT1GjgCGGQcg6pHFHYI3fbErra3gXm2/m0kq9CxHXkJ+o6HyP30q2l2lSDbv6K46wef71f20Ozjzd03jWFZLaABbT4Q6kGd0kEcPZBBGQByoM7qsF0+OuUNT8S81vlqSJ8CASMpaRJSw6H5I274OT075198VbVEaN66FQCfhLhgy8zos8XIykdSfmhQ8xPdj665Kq/TXSvN3uMxpLw0jUlSoKqFKwMpZg3VeYg55egKkEHmGn7vdKm5bDL1Ntj62qKJagS87KIqiHHY4GfEGegwenlpjSHELbJ8vWJ+FU085ZXNteJbnxAqBOeSAd2ciQfEJk6jXl5tCspFsmzqakgIc7pVqlihGXAj5fm7Ho3b6/fTy9sayVs2rkTb1RKiNIbHdaS7FVGSIslJGx7YjzrWVPMk0Uc0ZykihlPqCOmgmOo3XB5n5H51Z3ZVcB6zc/wBWyB0AUj4oPrTuma2rgoKSauqW5YYI2kc4zhQMnpp7TNZbku9LLanUstWhgIHc83Tp/XQZsJKwFaTVmXinUW7imI3wkxOkxlPSdaz7ujiFZa/dS11RY2NDIRHUgyYkK45Cykdjy8p+qj3zybj20Lre22tZrjarjFDTfG/xNiEalhVSeV3H6mwAqqSc8ygAHtK7x4Z7WttPUW+j3LDcbuuFULLJGJHJxiNTDyPjz/M+YDpquNTUm2aNrVT1Jl+bmlk7eI+MZx6emrFbaDUBByAiPh9ca4sur5V6lxy4SC4te9vaETO8IGRBMH8sZa1Bnb9spfy5A0z+bMcZ+w7am9r8IrzvyWop9iK1XdqaIzLbVy006juYx+7HTI7gHJ6AkRD1ccjkgknUhYb3XWS80d1tFdNSVtJOk0E0LlHjdSCGVh1BGt4oUTRU/D5cblVber6KteUxUdSEhSQnMeVyy4PYA+Xvoq6FW8Kir2BxEh3uIWprbuOTkucPLyqkzdS3L5HHzfZvXRSeeFITUPKoiVecuT0C4znPppDxREvd8nRfxGRHrXXWwt0EYaMMdJ7xiAZ4oV4kKHQpMRwII4Vn/j9ZaK3biprzQ0cTPUQtJWow+ViMqrY9T1BPry+eoy+zWui4JW54Kxamvrqj4SRwMMiB/EZCM+Xhx9fPpqSrb9R8SN5TUtrppKt6itgj5ZGPgfARt8/MO6l25D07hR11w8R+DW7qC13beu17Jca3ZdrrGhq62NC8NFP+SrCQjoo5540VjjJ5lGeRtMFogqDVu4SFJ8XuHA+v6VTm0Ny2y5f4xZJSpl8loZxClZlSeBkJk8QVVRdiXqmst/QXH/h9fG9DWjP8mUcrH7dG+2tJ8LL1JPaJdr3CYtcbA/wknMeskP8AJkHqGTHX21kxWKsGXuDkaKOyd01kUVJdqFhJfqGPwE5jiO4Uw6mmf0lUAFD5gADOMa+8XsvtDe8NfmNPdqD7jwqN2dbTHB7oNOZpzy5pMbwHNQICkjj4kjNYrTQOdc9y3ANr0M15SGeSeFcUwiA/3p7ZJ7ADJz5Yz5Y1D7Q3pZd52/421zkSRnlqKdxiWB/NWH/3sdV/jNNeINsrNTSAW9JQaoIhLhuyMTj9GSR9SPbS1hzH96ht4RB0PSru20xX/F7i9w5W+FJgKTnkogE9IBM8qqF+4pX+ua4fxm6YjqmTw6COollgg5BjmUSO3Kx9j0++h7VXCnqHZ1QuT5nUM7CWQu03Nk51PUu0N01Fpe70G3a2op16CQREBj7Z/V9s6fRHGuRCah5rnTwsYzCC+OgGnbHS3G+3ejtlBSvNW1k6QU8MQy0kjsFVQPMkkDUTNRXKlmLXK3VEJzli8TL/AO9EfgmKqPiVt+5Wd0NTRztWIW/aYY2kJ+oCEj3A14tQQgq5Vutbc3Vw2wnVZA9TFFLjPRyV/DmqlrSjVNIYJsg9OdSFOPsWH31Rpt4Vu5OHlr2/SU9RJHiOmr5UcI8nK4CwR5I53ZQpIB/SfU6s3H2pvsW0hDQLGtvldVrHIJfuCgHkBzAZPftjz1TODN3s1l/xG5QtJDNXU9DDdqiCQ0dI8ueZpWRWKgBOboC2AcDvpZsmlO2XegbygqQPOB/P61e+0t+xYbS/d5c7lpTAbWojUCVSMjOXh0zJKRGtXjhzw6k2tRSX2+VdFQ19YYlmuNVSzSU9njlZIw0xhWRxGrPGvRcZIGeudefic4m2DaO26b8P/Cx7ja6QxJNvmla6S1kEt5SXM0Ufig8qiSJZC0ThJD4eVBjABI/ENx4sHARbxwq4R3u23q919AbbeLmKOOojpWYoZfClliV1kDLLGVXmidPh5QVdeuG6qqqq6pmra2plqKiodpZZZXLvI7HJZmPUkk5JOjdjbLZSXHs1q16cgPKqt2pxq3xFxFnhwKbZqQgHVRPtLV1UfQADKmtP09bVUqSRQzOscoHOgYgMR+kkDzB6j00xpanETSslRQZSYq77N3zTWerimrZJqKrBP+06TLyn2njY8sy/0I75zo5W/fdlv9ino9wVlJVUNTC0U1ZQhmQIwwTJFgyRN7YYDvnGsraehrKqCQSRVEinAX5XIyvp08tDbnDGblYWZBHL6/jpTng23WI4NbqtWwlSFZEKGRByMiYMjUxvHiojKt0fhT4Q8FqvctwvDxW3cRoKD4il+Oq1dIpjKiq3KAVDAFsc4PX3GRceNdhL1rzU1IYAexVfDP8A5IeUj7awJHvR6hjLe7TT11Ry8q1ccj01SnXJbmjIVm79XVic6OGwvxlVHDvhlBw3tWwqS5LTXP8Aicdwu8/xU5xNDMlM2FUNTloWDp0LCQkEcozuYYcbTDiiTzNA8bvbXELrvrNpLSIA3UzExnr16nzoq7M2tV1dUCIZH8P5nJCuFHqSV7fXRjq+BUddSUAsGwadN0XKnkq4quG2EStb4wniyDwkLylmlhChFZivP5azBL/aJcU6R6z+7209v0iV9HFS1JrPGrZJys8kjSSO7jJKTSwLgAxxPhCrBWUa7o/Fpx03T/DVqt+VsKW5hODSRw0cktR4Ag8WSWnRJJXESrGryMzBVxk5JOx5gPNltRyPKomE3y8Jvm75sBSkGQFTE8CY5HPzFaw3fszgXte2U9J+IfddzobPebLFdaV6CBfEadnUfC/Ds61BkQFixKIqPC6NnIzmPix+JK27n2RDwx2Dw+29YbO1ut1HdrhBbI4qq8T0qJ/iJFGUjbxFcq6gSBZHVmPO2QdV1tXXzGprqmSomYktJIxZmJJJJJ6k5J76Z1ltatWjfdtCBUrG8dvdobo3l+veXEaAAAcABwEnrzpEliWYkk9STpaWlqRQev/Z", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "288f5c0fc03d073378d004201129bc145a4a82fc.factory.bridge.near": { + "spec": "ft-1.0.0", + "name": "GREATWANGJING", + "symbol": "GWJ", + "icon": null, + "reference": "", + "reference_hash": "", + "decimals": 18 + }, + "zod.near": { + "spec": "ft-1.0.0", + "name": "Zod Fungible Token", + "symbol": "ZOD", + "icon": "data:image/svg+xml,%3Csvg version='1.1' id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' width='280px' height='280px' viewBox='0 0 280 280' enable-background='new 0 0 280 280' xml:space='preserve'%3E %3Cimage id='image0' width='280' height='280' x='0' y='0' href='data:image/png;base64,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 NA/EY22mynBlyWBQkRUFmVX1uLwaUo4nlMMRQQxkBSfVjMftlENvOVy1/NXv+j/OrtGP43X24b3M 1nf+hb+yud0c3mxvPMfy+mWOTw+5vFpx4lRHpQ2B2gUIvht+LIR+0BLl0eQAqKJdKRGviSWNkLgo UImS3QrREsgYS1UNGA2HkGU4H8jyjMnmNpubm4RygEewwwmXR3s8fVJztGy5cbS49Td+9Pu2Xuzz d7b+YNdZgPkEWX/n8/9EMN4xqSxVaGluXaU9PaEclOAczeKUw9Yz955Tp5q2LQrEblttE2domTT3 GlA2DIwHQ4bTMSEE2tWKu+57gM3zFzkIOQetcETOUci5frK81dTtG4KVj3zTj/7AR17s83G2Xph1 FmA+gdc3/7Ev/YZvefPP/BDAt37Bn/y0rc3J28s8p4y8lqZu8N5TZpbMGkLrKDKDN1ZZtsbiioqA YFY1zghH2ejWX/7h7z7LRM7W2TpbZ+tsna2zdbbO1tk6W2frbJ2ts3W2ztbZOltn62ydrbN1ts7W 2TpbZ+tsna2zdbbO1tk6W2frbJ2ts3W2ztbZOltn62ydrbN1ts7W2TpbZ+tsna2zdbbO1ou//j/P aQVx+37BdwAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMS0wNS0xMlQxNzoxNToxNCswMDowMNoGto8A AAAldEVYdGRhdGU6bW9kaWZ5ADIwMjEtMDUtMTJUMTc6MTU6MTQrMDA6MDCrWw4zAAAAG3RFWHRp Y2M6Y29weXJpZ2h0AFB1YmxpYyBEb21haW62kTFbAAAAInRFWHRpY2M6ZGVzY3JpcHRpb24AR0lN UCBidWlsdC1pbiBzUkdCTGdBEwAAABV0RVh0aWNjOm1hbnVmYWN0dXJlcgBHSU1QTJ6QygAAAA50 RVh0aWNjOm1vZGVsAHNSR0JbYElDAAAAAElFTkSuQmCC' /%3E %3C/svg%3E", + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "ft.soundsplash.near": { + "spec": "ft-1.0.0", + "name": "SPLASH", + "symbol": "$SPLASH", + "icon": "data:image/png;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 8 + }, + "taliban.tkn.near": { + "spec": "ft-1.0.0", + "name": "Taliban Token", + "symbol": "TALIBAN", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "nearbit.tkn.near": { + "spec": "ft-1.0.0", + "name": "NEARBIT", + "symbol": "NEARBIT", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "gold.tkn.near": { + "spec": "ft-1.0.0", + "name": "Gold", + "symbol": "GOLD", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 10 + }, + "token.sweat": { + "spec": "ft-1.0", + "name": "SWEAT", + "symbol": "SWEAT", + "icon": "data:image/svg+xml,%3Csvg viewBox='0 0 100 100' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='100' height='100' rx='50' fill='%23FF0D75'/%3E%3Cg clip-path='url(%23clip0_283_2788)'%3E%3Cpath d='M39.4653 77.5455L19.0089 40.02L35.5411 22.2805L55.9975 59.806L39.4653 77.5455Z' stroke='white' stroke-width='10'/%3E%3Cpath d='M66.0253 77.8531L45.569 40.3276L62.1012 22.5882L82.5576 60.1136L66.0253 77.8531Z' stroke='white' stroke-width='10'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='clip0_283_2788'%3E%3Crect width='100' height='56' fill='white' transform='translate(0 22)'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E%0A", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "slush.tkn.near": { + "spec": "ft-1.0.0", + "name": "Slushie", + "symbol": "SLUSH", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "token.stlb.near": { + "spec": "ft-1.0.0", + "name": "SeatlabNFT", + "symbol": "SEAT", + "icon": "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' version='1.1' x='0px' y='0px' width='32px' height='32px' viewBox='0 0 32 32' style='enable-background:new 0 0 32 32;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0%7Bfill:%23050035;%7D .st1%7Bfill:url(%23SVGID_1_);%7D%0A%3C/style%3E%3Cg id='Layer_1'%3E%3Ccircle class='st0' cx='16' cy='16' r='16'/%3E%3C/g%3E%3Cg id='Isolation_Mode'%3E%3ClinearGradient id='SVGID_1_' gradientUnits='userSpaceOnUse' x1='6.2375' y1='16' x2='25.7625' y2='16'%3E%3Cstop offset='0' style='stop-color:%2300C2FF'/%3E%3Cstop offset='1' style='stop-color:%230067FF'/%3E%3C/linearGradient%3E%3Cpath class='st1' d='M14,6.1c-0.3,0-0.5,0.1-0.8,0.2L8.1,9.4L7.8,9.6L7.2,10c-0.5,0.3-0.9,0.6-0.9,1.7v4.1c0,0.9,0.3,1.6,0.9,1.9 l6.2,3.8c1,0.6,2.3-0.1,2.3-1.3v-2.9c0-0.7-0.4-1.4-1-1.8l-2.9-1.8l3-1.9c0.5-0.3,0.8-0.9,0.8-1.5V7.6C15.6,6.7,14.8,6.1,14,6.1z M14.7,10.4c0,0.3-0.2,0.6-0.4,0.8l-3.4,2.1l-1.8-1.1c-0.5-0.3-0.8-0.5-1.1-0.8c-0.3-0.3-0.2-0.8,0.2-1c0,0,0,0,0,0L13.7,7 C13.8,7,13.9,6.9,14,6.9c0.3,0,0.7,0.3,0.7,0.7V10.4z M24.9,14.3l-6.2-3.8c-1-0.6-2.3,0.1-2.3,1.3v2.9c0,0.7,0.4,1.4,1,1.8l2.9,1.8 l-3,1.9c-0.5,0.3-0.8,0.9-0.8,1.5v2.8c0,0.9,0.8,1.6,1.6,1.6c0.3,0,0.5-0.1,0.8-0.2l5.1-3.1l0.4-0.2l0.6-0.4 c0.5-0.3,0.9-0.6,0.9-1.7v-4.1C25.8,15.3,25.4,14.6,24.9,14.3z M23.8,21.6C23.8,21.6,23.8,21.6,23.8,21.6L18.3,25 c-0.1,0.1-0.2,0.1-0.4,0.1c-0.3,0-0.7-0.3-0.7-0.7v-2.8c0-0.3,0.2-0.6,0.4-0.8l3.4-2.1l1.8,1.1c0.5,0.3,0.8,0.5,1.1,0.8 C24.3,20.9,24.2,21.4,23.8,21.6z'/%3E%3C/g%3E%3C/svg%3E", + "reference": null, + "reference_hash": null, + "decimals": 5 + }, + "neir.tkn.near": { + "spec": "ft-1.0.0", + "name": "NEIR", + "symbol": "NEIR", + "icon": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAARCABgAGADASIAAhEBAxEB/8QAHgAAAgICAwEBAAAAAAAAAAAABwgFBgAJAgMEAQr/xAA4EAABAwMDAgQEBAUDBQAAAAABAgMEBQYRBxIhAAgTIjFBFEJRYSMyUoEJFTNDcRYYYiVTY4LR/8QAFgEBAQEAAAAAAAAAAAAAAAAAAAEC/8QAFhEBAQEAAAAAAAAAAAAAAAAAABEB/9oADAMBAAIRAxEAPwDan1nWdRtyXJQbPoM+6Loq0Wl0mlsLkzJklwIaZaSMlSifToJEkAZJwB0v+qnevpLp/WZFlWo1UtQryjqDblDtloSFRlZxmTIJDLABICtytwz+XpZdYe47UzuUl/yazXKrZmlUpS2Iy2dzFWucjGQ6oELhRFDJzwtaSASNxCZ7T6z6PaNCp1u21SIdPYaSFIhst4Zd91uOLznek8jJ85JJ+4Ttwa/d4d5PNuURqw9NIMnZsiqZcr1SYB9VOrJaY/ZCV4PGT69cU2v3CV1hMmt9118LlkZK6bDp1PjD64abYUrH0yvI9+rhTbcLqm1JWp5CUZU481hafT8RIBwV8cJ+3VuptMnRaatuQVJQyncFx0filPJ3qHpvPuPv0ApgWb3Cxy5NtvuqvuKtIRtbrEam1Jv77gqOkHPttII9+pyhajd7NoOrfntWDqnTmEb1Rm2HaDUnU4+RYU8wVfYpCT+tPV8bRGTGKgjKHHUhTSDllsEeqVeu4kkKHt0S7MthiG0ibtQUqSNgIz4Y58qD7J59+goOn3d7p1c9ci2Pf1LrGmt5SleGzRboYDAlq45iyklTEgHPG1e44/KOjoCCMg5B6qd+aZ2Hqbbcm0b7tWnVqkyx+LGlMBac+ykn1SoYBCkkEEAgjpfZUrVLszf+Ncl1fUDRFKsPtPKXLrlpM8hKm1HK5kNPAKVEutpGQVAEEGv6zqMtq5aBeNAgXTa1WjVSk1RhMmHMjOBbTzShkKSR1J9B8JABJOAOtaHdFro/3JanP6f0Kck6XWTMIfQ2sEXJVGVEKd/8kSOsbcZ2qcGfNgbWc7+9cJ+jeg8uDa0xyPdt7SBbtEW0MrYW6kl6RxyPDZSshQ9FlH1611t1Cm6UaasMwmymYhhLcFoDcp1xeOAocpSFqypPqpRJJ9+rgOlNuiiWlDQaxUkGU+0EvFLoAioIyHHsnHhEnGQM7uiLbd3UifARIg1BDSVkLEp0D4dKcnG7HqV/Jz/npStLe2+89bqiir1eV/MH9qXZaps1UZoNn5UbUKKgOAE4Hr9ji1KoVxdtd/ptKvKki25z6IsqI+oPKhuL/pOtYwHEKGSFADgKBGR0Ds27V35SmlMIeQnAWWljc4sYxs+yj6g/cdSkyrOR5CoakOvNKAVhtW1aAMgNKyOV85z9+g5pleVSgS5lnS3PDnIdLrAcc3jao4Cd+fT0OfbP26MUOFIuB4raUgPNKS28v8vhuj0QD8+R6K6g+fFSZkpmmwoxaSshS3ByiSSOEtjghST+Y+/RytlUhunohymwhyOAhXOSo+pV9gSeB7dDu2KLElvQ3kRXkhpwobklIC3VpPmBSOEgex4z1e6/WYtBiZQhxcmUrCEJGFLwOTn244yffHr0E45JjsqSl11KSo4GT/n/AOHriHIk5lSUrafbUMHBCgft0m+qt9XJq/eJ0jtOsTIFt0R5pquz46FIllTnCUN4OXFhWUhvHJ3KOcADtunt7q+mlLYumxqnc9vToeFJqTc5MpWQkFPxDQGwBakhLmApHI59upILKiOezjVBhVPKmtFNQakGX4uPwLRrj6/K8g/24UlZCVJ4S26oEbQvHTUgggEHIPS+6c3Zb3dhonWrM1EojDMx5t+hXDT0uhaUPYwHGzwoZBStJ9UqGASU7jJ9pd8XBW7CqOm9+zlyr00xqblrVt9YwqYGgFRZY9yHo62l5OMq3/TqhOu/m75d6d2lBsPe25TLBt9uX4RSDiZOcKnFE+x8FhkA+2VD5ulp1xS5To1rRGi6Yc2ovSZiSrPiS0Da0onHkwkkBPvyeiNrlcIq3elq2/LUEus1ePCb2HJcbYhsNJbc9ggcqBHO4nPUTdlnN37Q3KSJC250dfxsJ0EfDuO5Ay8TyHAMhIAwUqV1cBL7cdQ3qe0zBkrU0YkhSmQRtJdPBAGRuUU/KeMde/u1vu39SnqtcbSnUu2zS4NJhORynxHqgXlrO0e4Q2pYV+k5+3QMoD1+Ucu0+4tL65OnqQGEvRnlJRuP5XUkJIDmOM8jB9PXom2dpVdN01aLX72gNUqBS1FVOo0JWV7wMqeecGcrO0FR5JOANoGOgsNgmvtw6M4ucpmbIhsxn32ykYKikrIODkpA830OemR09qyqdHQxU6k3UFREpKPFV4a5Cf1te3hjgeh56FkGLDckoqjaG4aGCvwQy2lLO4Y3bcjIUffI5ycdU9GsM+1NWqRZDtqvS4tfaW+Ko64paWGtxAaaPoEjByDjkj6jIPTbsNmrSWZ0ZEyE+62nLYG5LeAohThJzg+wHv8AY9c74pk6WoMpmSBLjMF9MjwcsqVnAQoD6kjH/t9QOgh/ucm2frLb2kCrMmVGjVCL4k6ssqVmCFAlG842lIIxyRj0ySQCy9PqkWrxCll/C0ubApafUHkD9xjn69QIVoneNNoKFX5VXlJuZu75L1xMyxhaiGXENNJHolzc46oEgDCVZPHTkL1Vt2dbz8iqsBUQxVqloWAcIKfOlQ9MgE5HQT1t7Xrlp13T9UdGI0Oauqtr/nltylYanqzuC0LJ8iyrnOQUnkepHQErzmo8lUe2KBohe7EhtTaRTZEh1VMD4UCElZQPEZT7HcEnA59+gJfaXWpH+4i9I1OcaKH6JGfluJTtZeUlQDaQBylaUqIUccqBx69GFSzp93u0/wCEShinauWbITLQE48aqUd1Bbdz+r4aWpB+obR+nqn9u2htc0rfk1u6FTZdw3M540uUGMpj4BV4Kx8iRkgKHBJA+wuuv6E0bUzt/uvxsyo19Ko+9eBlqdTJjaxx7lSGvTjKR6dBrn7g4Crf769V6dPStJlVCPOjrTwEfEQ2lpcUPmTyUkfX/HVesm8Z8mozGgPhp0F4ssvO4WhtGPxApsHzqUchKjynB6MP8Ta0ZVgd1NsanrYSmkXtQkQlvD1TMhr2r4+vhOskZ9cKHt0AV1Zi2K29VIVPL9NnOhc0tKCZDY/UzkFJKhnIVj6bk53DWA/0W9JkpxbEp9SYm0JKFOeI4tj5m9/yKznz+w6m5dzeO00w5IJjqbEZDfibFJYBUUtqWOSc+q/fpeGe4axKEXXlR5Evy7kRI7KgkqH9pwuYIQrA3H1+g65SdUtSK9R6jWLVo9Np8JpTRebccS68yh3G0MqPlLaQpJ5GQc+o6BnKJHclznqlPccjvuMBbz6nfBbWgeVACCDtxn1xz+/VqpdoW3U5bAbuyK2y9IS9IDjqN7kkf0zlQHhq/wCGefXpYJ1hahVmuVK1hqhMf+GpDVVanoaLbkguKKAy+kEEISpKsYUflIwTgDs2Rcs60rfrn+qar/1SoJiVGP8AFuFAJCtjuQoHxAEkc5ByORggyDZrTKDbjsyM9U61BjpiFTzRkPISVPA84GcqXx+T04z0aqPSabKgpkUC4WJDrZJCWn0uhO7PBAOM+o59OcdamqNpVXGbiuShO33XhFpsBMqkPqmuhaX3EkpON2N3lIyMDH0PVo08o2tVPRaLlp6qVCLKuV11ElS/xXIQbQVlSSvO7KQdwyMkgenPSDad/NKhSUCPL8RppKiA6U+XH1JPsPf/AD+/X2t3EP5aJdMdYOFjxUuYClN55IHvx0jlg9yPc3Q2HWLjZod80Zupu0ptcg/AyXy2hRU4FpygJ2p90euRjohWB36dsV0OvQK9VpNs1OBuBiVFgk5SAFoaW3uSvCiQEjCleyfYID1cGp7lu2w3XpFNkOOPVGLSmo7TWVI+IeS2l5eOAjkKJ9hk9UDWGZIuHULt+tmQkKlTb5VW0oIxsZhUyYtefuFLb5HHI/fot24XtWbmh1Jy2ZNJtmlbZkKNNaKJkkLTgSX+SBwVpQz+ZKSSrkhCOq25DOp/etGkUlAXRtIrPfRIXyA3Vas4hKGx9SI0QqKsn+oBxnqD0fxD+3+Trz28VJNvQVybqs90V+iIb/O8tpJDzA+viNFYA91hH061S2bXadX7fbdlFx9GwIXHQra+o/8AEn0287vqOt+5AIIIyD1qH7/+1qd276gTNabEpalad3bL8WoMsp2t0SpOK8wITylh0kqSQNqVnZwCnNwKtcVnUtiQ7Cqc9trxHCYdWayWPMQSh4ckJGcBQ9P258ao8+2n5FMrKJkRp+M4PiIshaWZDgOW3UBJCduMADGOP2BAhpoleiHdLRIiPIwFqAC1DHn8g90+36uvFJkVe1UCPHTHrlGdAKKfUEBYLHoVhQ5bX/xz9+RgDQ5UC9wKxFlt3RWY65VIEeS2JCVracQThSlqSQUK3uEIGCMpOeMdddH1CqkK2bYjM1yU07Dqi2I5cS0tCI53lSVIKfOpRUkhefKOB69SUKqdulaieFcFArlnz3ElDyGQqTGj49HGVjcpalHhSVpSkD8p9upqiaYaHVhhtyHr5S4rJJUtyZHU2/FODtbShaU7kqz5jkbfoeoOqZqXWBXL2aRcUptuRRExlkIaUVNDcC2k7fKrJT5/Ufv13UK/kU+faDUm86wIcCmuq8FuQ22Gl7NrYK0IyTjcOc54xg89WBjRLQSKl16u9yNBYJT/AE4DXxJdV/2zj0HvnB59upRodn9sNoFJbuzUKoOICgy1Gdhs7iMeHlXhgIB5B5VnoKDGnVu5hAt612bjuGuP/ETC18W+fDlrUA28tJXhO1JI3EjIVjPt0b+2bt9pNDvH+e1J2n1i4G3iqqPsMg06iObsqjoOAFyAfIEp8iMKzkgJTliUa8rwSKVT7bp+n9uY8SUxSVKM+YFHlL8ralWBklISE/nOc4yTxZjtp21QVxKGqPCp9KQiMtlvDbbiwOFOjAy6AOMcYx1AU751GtTTK0ahcdWqHhQqLCdllxPzEDKkN/rcPA2fcY6svZtptW7O0xk3ve8BUW8tR6gu5q2yv80XxEhMaL9g1HS0kg5O4r+vQA0asx/u71GiXZUYritI7HqIktFzli46yyo7UtoP5ozKsKWvlLjiQkZCVdPyAAAAMAdQfeo25LboN4UGfa90UmLVKTVGFxpkOS2FtPNKGFJUD6jqS6zoNP3db/D51F7ep82/9Doc+6tPipUh6nNbnqjRUDlQIHmfZHJCwCpIHmBxuKx0rUei1QeFUQsFa/z44SPdK/dSifm4x7jr9DhAIwRkHpYe4L+Hd266+SJVfdoT1o3TJV4i63QClhby/q8yQWnc+5KQs4/MOrRqzix7UqMVLhlMKDPmJUnIkJP9pofI6OSVHgjqftmhWmtRK3Y7zCQd8ZO1Lzqj6FCzwlKfmHv7dFa//wCE93J2nKcGmV723eNMRy18U6umTD9UqQd7R/yHBn6DoWP9nXfHa0rwJmildkhPoqDLhykK++5t0n/GcdBdKNQrNAPjv0x1xJw2+2lKUIc9nCg8qQPdPqerLS4dgQ3mVIkRPGQolx3ZvbW6M/iJT8rZ4wj26H9B7VO9ipPmNA0RuJkq/vTpMGGEg/Nlb3qPoAei5Y/8NXuhu+WyrUa8rasunFP4pYkOVWaT9kJDbW4+mfEwP0noPHduutg2PSXGRK3MrUCxFW4Ctpfzb3D/AFArHlQBlPV00R7aNUe6Exbh1HptRsPTA52Qzui1WuxVYIZAByzHUQCp1YDq0kJTtSSostoX2AaCaKyolxSaZJvO6YqvEbrNwKS8WF8csMJAZZxjIISV88qPTKgADAGAOmiOtu26DZ9BgWva9JjUyk0xhEaHDjNhDTLSRgJSB6dSXWdZ1B//2Q==", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "elt.tkn.near": { + "spec": "ft-1.0.0", + "name": "Extemporaneous Life", + "symbol": "ELT", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "padthai.near": { + "spec": "ft-1.0.0", + "name": "Padthai Protocol Token", + "symbol": "PADTHAI", + "icon": "data:image/png;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 8 + }, + "dojos.near": { + "spec": "ft-1.0.0", + "name": "DOJO", + "symbol": "DOJO", + "icon": "data:image/png;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "berryclub.ek.near": { + "spec": "ft-1.0.0", + "name": "Banana", + "symbol": "BANANA", + "icon": "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='256' height='256'%3E%3Cdefs%3E%3Ctext id='A' x='50' y='180' font-size='180'%3E🍌%3C/text%3E%3C/defs%3E%3Cuse xlink:href='%23A'/%3E%3C/svg%3E%0A", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "9aeb50f542050172359a0e1a25a9933bc8c01259.factory.bridge.near": { + "spec": "ft-1.0.0", + "name": "oinfinance", + "symbol": "OIN", + "icon": "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 974.66 974.66'%3E%3Cdefs%3E%3Cstyle%3E.cls-1%7Bisolation:isolate;%7D.cls-2%7Bfill:%235a8dff;%7D.cls-3%7Bfill:%23fff;%7D.cls-4,.cls-5%7Bfill:%231b57f6;%7D.cls-5%7Bmix-blend-mode:multiply;%7D%3C/style%3E%3C/defs%3E%3Cg class='cls-1'%3E%3Cg id='图层_1' data-name='图层 1'%3E%3Ccircle class='cls-2' cx='487.33' cy='484.76' r='473.82'/%3E%3Ccircle class='cls-3' cx='487.33' cy='484.76' r='358.99'/%3E%3Cpath class='cls-4' d='M487.33,98.08c-213.55,0-386.67,173.12-386.67,386.68S273.78,871.43,487.33,871.43,874,698.31,874,484.76,700.88,98.08,487.33,98.08ZM368.59,297.83a9,9,0,0,1,12.71-.14,287,287,0,0,0,137.53,75,110.56,110.56,0,0,1,51.78,28.2,9,9,0,0,1-12.49,12.93,92.54,92.54,0,0,0-43.3-23.61,304.9,304.9,0,0,1-146.09-79.66A9,9,0,0,1,368.59,297.83Zm216.7,197.36a9,9,0,0,1,17.93,1.3c-1.86,25.6-15.92,49.6-38.58,65.86-18.31,13.13-40.08,19.87-63.28,19.87a130.41,130.41,0,0,1-32.7-4.3,9,9,0,0,1,4.52-17.4c29.91,7.76,58.67,3.23,81-12.78C572.48,534.61,583.82,515.45,585.29,495.19Zm-9.7-47.57a15.39,15.39,0,1,1,12.8,17.6A15.39,15.39,0,0,1,575.59,447.62Zm-244-118.07a9,9,0,0,1,12.71,0,335.48,335.48,0,0,0,163.36,90.53c30.07,6.9,50.7,33.19,48,61.16-1.64,17.07-9.08,30.42-21.52,38.59-8.23,5.41-18.1,8.14-28.9,8.14a76.36,76.36,0,0,1-23.39-3.91,9,9,0,1,1,5.52-17.1c14.54,4.69,27.64,3.93,36.9-2.15,7.73-5.08,12.39-13.82,13.49-25.29,2-20.88-15.76-37.71-34.1-41.92a353.42,353.42,0,0,1-172.1-95.35A9,9,0,0,1,331.59,329.55Zm-30,41.34a9,9,0,0,1,12.71-.23c36.29,35,81.18,62.68,133.43,82.22a9,9,0,0,1-3.15,17.41,8.89,8.89,0,0,1-3.14-.58c-54.58-20.41-101.55-49.38-139.62-86.11A9,9,0,0,1,301.56,370.89ZM452.39,512.8a15.39,15.39,0,1,1-12.8-17.6A15.38,15.38,0,0,1,452.39,512.8ZM278.9,429.48a9,9,0,0,1,12.54-2.07c38.33,27.47,67.76,43.32,105.66,61.43a9,9,0,1,1-7.75,16.21c-38.8-18.53-69-34.79-108.38-63A9,9,0,0,1,278.9,429.48Zm-4.46,60.34A9,9,0,0,1,287,487.67c45.31,32,91.6,55,137.57,68.37a9,9,0,0,1-2.5,17.62,8.76,8.76,0,0,1-2.51-.36c-47.9-13.9-96-37.78-142.94-70.95A9,9,0,0,1,274.44,489.82Zm18.28,73.95a9,9,0,0,1,12.38-2.89c44.19,27.46,93.91,45,123.06,51.75,27.43,6.32,56.78,9,65.69,9,77.91,0,141.29-63.38,141.29-141.29,0-65.78-46.6-123.81-110.81-138L516,340.57l0-.24a257.48,257.48,0,0,1-100.58-53,9,9,0,1,1,11.69-13.66A239.17,239.17,0,0,0,528.3,324.87l8.22,1.9,0,.16c68.06,19,116.62,82.18,116.62,153.46,0,87.82-71.45,159.27-159.27,159.27-9.61,0-40.9-2.87-69.72-9.51-30.5-7-82.46-25.38-128.52-54A9,9,0,0,1,292.72,563.77ZM493.85,688.36l-9-.07c-5.35-.12-10.74-.42-16.1-.9a302.94,302.94,0,0,1-109.22-31.85,9,9,0,1,1,8.2-16,284.85,284.85,0,0,0,102.64,29.94,225.63,225.63,0,0,0,23.34.87l7.29-.11c101.46-3.78,182.84-87.49,182.84-189.86,0-89.16-63.2-167.31-150.26-185.83l-.12,0-.11,0a206.73,206.73,0,0,1-49.14-18.68A9,9,0,0,1,492.69,260,188.85,188.85,0,0,0,537.56,277h0c95.18,20.37,164.23,105.85,164.23,203.35C701.82,595.07,608.53,688.36,493.85,688.36Z'/%3E%3Cpath class='cls-5' d='M144.68,484.76c0-206.19,161.39-374.67,364.73-386-7.27-.41-14.58-.64-21.94-.64-213.56,0-386.68,173.12-386.68,386.68S273.91,871.43,487.47,871.43c7.36,0,14.67-.23,21.94-.64C306.07,859.42,144.68,690.94,144.68,484.76Z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E", + "reference": "", + "reference_hash": "", + "decimals": 8 + }, + "nk.tkn.near": { + "spec": "ft-1.0.0", + "name": "NearKat", + "symbol": "NK", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "syn.tkn.near": { + "spec": "ft-1.0.0", + "name": "WebSyndicate", + "symbol": "SYN", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "hodl.tkn.near": { + "spec": "ft-1.0.0", + "name": "HODL", + "symbol": "HODL", + "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAADxUlEQVR4nO2cPUsrQRSG/VuLiViIH4FEBAVTCFYiCFY2giBipYWClopVAoKmES1EDATiBwQiNmpQIkQwyRIwimi2OrfyImLi7O7Mnt2dt3jamXPeJ7NLdobpsiyLAB9d3AXoDgRAgN5AAAToDQRAgN5AAAToDQRAgN5AAAToDQRAgN5AAAToDQRAgN5AAAToje8FVKtVmp+fJ8MwhFldXSXTNNlrD6SAra0tW2GLcnJywt6bbwUcHR0pCb0db29v7D37QkAqlfI0+J+8vr7qKaDVarEG/xOtBKh6xrulWq2GX8DIyAh70J1Ip9PhFdDX18cesAh7e3vhE7C9vc0erB28/A/hiQDuQJ0QGgHcQfpdglIB+XyePUQ3ePGHTakA7gCDsAqUCWg2m+zhyeDz8zOYAriDk0U0GoUAbiCAmVarFSwB2WyWPTSZnJ+fB0vA4OAge2iyCZQA7rAgwAeBQUDIgAAIgAAIgAAIgAAI+JtCocAemEwC9yniO8PDw+wBOuH4+FhpLp4J+M74+Dh7sJ1YWFjwLAtHAvb3938t/PDw0PbEa2tr7IEbhkG7u7u2a5+ZmWk73tnZmRoBog05OW/58vJCQ0NDngSeSCSo2WzarjEWi9maR5qA9/d3R412d3e72s4rFAqupQwMDFA+n3dcw9zcnKv5Pz4+3AuQ8aubnJx0HILXrKysSOlZdCV0FKDqMZDNZtmD/qJWq9l+vMiU0FZAJpNRWtR3EomE0HKVwc7ODvX09HjWm2EYtLS0ZF+AlwX+RSwWo/X1dbq4uKCnpyeq1WpkmiY1Gg1qNBpUr9fp+fmZbm9vKZ1O09jYGHvNoqsgEALCgC0BuVyOveCwkUqlxAVMTEywFxw2ksmkuIDZ2Vn2gsPG4uKiuIB6vc5ecNj4Lee2AiyfvIQjkQhNTU3RxsYGHRwcUC6Xo6urKyqVSlQul6lSqVClUqFyuUx3d3dULBbp9PSUMpkMLS8v0+joKHsPvhYQiUTo8fFR6ff2dpimSdPT0/4VoOJ4eTwe9zxoO8j+DPFX+B0FWJZFvb29UgpQfcZeBclkUkrv19fXzgVYluVqcj/dyeCUaDTquP/Nzc0/xxfaD5C97IJGsVi03f/Dw4PQ2MIbMvF4XMvwv7i8vFTSv+09YR3DF+29VCrZHtPRpnyn2064Q1LJ/f39rz27ede5PhVxc3Pzv5D+/n72kFTz1aus6wx8cWOWzkAABOgNBECA3kAABOgNBECA3kAABOgNBECA3kAABOgNBECA3kAABOgNBECA3kAAM/8AGNJyfdEMNDIAAAAASUVORK5CYII=", + "reference": null, + "reference_hash": null, + "decimals": 1 + }, + "usn": { + "spec": "ft-1.0.0", + "name": "USN", + "symbol": "USN", + "icon": "data:image/svg+xml;charset=UTF-8,%3Csvg width='38' height='38' viewBox='0 0 38 38' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='38' height='38' rx='19' fill='black'/%3E%3Cpath d='M14.8388 10.6601C14.4203 10.1008 13.6748 9.86519 12.9933 10.0768C12.3119 10.2885 11.85 10.8991 11.85 11.5883V14.7648H8V17.9412H11.85V20.0589H8V23.2353H11.85V28H15.15V16.5108L23.1612 27.2165C23.5797 27.7758 24.3252 28.0114 25.0067 27.7997C25.6881 27.5881 26.15 26.9775 26.15 26.2882V23.2353H30V20.0589H26.15V17.9412H30V14.7648H26.15V10.0001H22.85V21.3658L14.8388 10.6601Z' fill='white'/%3E%3C/svg%3E", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "xcorn.v1.corn-staging.near": { + "spec": "ft-1.0.0", + "name": "Staked CORN", + "symbol": "xCORN", + "icon": "data:image/svg+xml,%3Csvg width='300' height='300' viewBox='0 0 300 300' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M150.43 32L99.7144 61.4389L150.43 90.8705L201.145 61.4389L150.43 32Z' fill='%235C65A5'/%3E%3Cpath d='M201.146 61.4388L150.431 90.8703L201.146 120.309L251.854 90.8703L201.146 61.4388Z' fill='%233B4274'/%3E%3Cpath d='M99.7152 61.4388L49 90.8703L99.7152 120.309L150.43 90.8703L99.7152 61.4388Z' fill='%233B4274'/%3E%3Cpath d='M150.43 90.8707L99.7144 120.31L150.43 149.749L201.145 120.31L150.43 90.8707Z' fill='%235C65A5'/%3E%3Cpath d='M99.7152 120.31L49 90.8707V149.749L99.7152 179.187V120.31Z' fill='%235C65A5'/%3E%3Cpath d='M150.43 149.748L99.7144 120.309V179.187L150.43 208.626V149.748Z' fill='%233B4274'/%3E%3Cpath d='M99.7152 179.187L49 149.748V208.626L99.7152 238.058V179.187Z' fill='%233B4274'/%3E%3Cpath d='M150.43 208.626L99.7144 179.187V238.057L150.43 267.496V208.626Z' fill='%235C65A5'/%3E%3Cpath d='M150.431 267.496L201.146 238.057L150.431 208.626V267.496Z' fill='%233B4274'/%3E%3Cpath d='M224.085 213.702L209.447 198.197L194.809 213.702H167.656L195.643 182.183L167.656 150.665H194.809L209.447 166.933L224.085 150.665H251.086L223.175 182.183L251.086 213.702H224.085Z' fill='%233B4274'/%3E%3C/svg%3E", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "de30da39c46104798bb5aa3fe8b9e0e1f348163f.factory.bridge.near": { + "spec": "ft-1.0.0", + "name": "Gitcoin", + "symbol": "GTC", + "icon": null, + "reference": "", + "reference_hash": "", + "decimals": 18 + }, + "rekt.tkn.near": { + "spec": "ft-1.0.0", + "name": "Rekt Token", + "symbol": "REKT", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "v1.dacha-finance.near": { + "spec": "ft-1.0.0", + "name": "Potato 🥔", + "symbol": "POTATO", + "icon": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/4gIoSUNDX1BST0ZJTEUAAQEAAAIYAAAAAAQwAABtbnRyUkdCIFhZWiAAAAAAAAAAAAAAAABhY3NwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA9tYAAQAAAADTLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlkZXNjAAAA8AAAAHRyWFlaAAABZAAAABRnWFlaAAABeAAAABRiWFlaAAABjAAAABRyVFJDAAABoAAAAChnVFJDAAABoAAAAChiVFJDAAABoAAAACh3dHB0AAAByAAAABRjcHJ0AAAB3AAAADxtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAFgAAAAcAHMAUgBHAEIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAABvogAAOPUAAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAJKAAAA+EAAC2z3BhcmEAAAAAAAQAAAACZmYAAPKnAAANWQAAE9AAAApbAAAAAAAAAABYWVogAAAAAAAA9tYAAQAAAADTLW1sdWMAAAAAAAAAAQAAAAxlblVTAAAAIAAAABwARwBvAG8AZwBsAGUAIABJAG4AYwAuACAAMgAwADEANv/bAEMAAwICAgICAwICAgMDAwMEBgQEBAQECAYGBQYJCAoKCQgJCQoMDwwKCw4LCQkNEQ0ODxAQERAKDBITEhATDxAQEP/bAEMBAwMDBAMECAQECBALCQsQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEP/AABEIAGAAYAMBIgACEQEDEQH/xAAcAAACAwEBAQEAAAAAAAAAAAAHCAAGCQUEAwL/xAA9EAABAgUDAgMFBQYFBQAAAAABAgMABAUGEQcSITFBCBNhFCJRcYEJMpGhwRYjQ1JTYhUkY3KCkqKx0fD/xAAbAQEBAQADAQEAAAAAAAAAAAAGBQQAAgcDAf/EAC0RAAEDAwIDBwQDAAAAAAAAAAEAAgMEBREhMRJxsQYiQVFhodETFIGRMlLw/9oADAMBAAIRAxEAPwDVOPBXa9RrYpMzXbgqcvT6fKI3vTD6whCBnHJPxJAA7k4j4XVdFEsu3p+6bjnkSlOpzKn33VdgOwHck4AA5JIEZceILxKXRrdcqmlzLkjQWHtkhTkL91AJwFrx95w9z26DiMFdXsoWcTtT5LbRUT6x+Bt4lMjqZ47pqaqDtE0go6FMoO3/ABSebJUv4lDXYfAq5/tED5OsGvN0PpmZ2/aw1nB2SbnsyR9GtsCrT6hNtFBeG9Z56QwFp0BHkIJbGTziPNbp2grJn4Y4gemiaQW+ko4/4gn1XytrV3WymOEftTUnQgkf5xaZgKGevvgmC3aHibq0q43K35R0vMqODNyadq0+pRnB+hHyMVn9mGvL3ITyRHGrNvrlmlPlrcQMgAZjJBeLnRkPEhx6nI/RXxkhoqrulg6H9hNxb1yUO6qairUCoszksvjc2eUn+VQ6pPoeY6cIxbN0XJaNQTXrUqLksr+KwsHY4AeULQevOR6djDLaa6825e3l0qrBNJrJwnyXFfunlf6av0PPwzD20dpqe4Yim7knseXwfdH6+yy0uXxd5vuOfz0RRiRIkJ1EUiRIkcXEg32j+sM41UadpVSptSZaUZTUKihJx5jy8+Uk/wC1OVY6e+D2EJxZSQ4/57+FLcOcH5wVvH3MODxI3M2snA9iCc9h7IzAiteY2N7m07l549IBX6Rz3u59E9s0DWwNx5Z/aYWyfIC0FCQcd/SDda9Yl1PNygeTvACto6gdoWi1ayZdafMzjHvesGK0a9LqcamSU7sDHygQ/LXZKpVEPEEf5Qh5IBIziPs/JsTKfJWgE44J7xWaLX2HWkqCvePeLC1PtutjaoZ+eMRSjmY9mCoDonscqrWqBLNqUlDQOevHSKJWqWiVJWvCNp91Y4wYLM8lD5G4jd1Hr/7jgVKlJmUlKkBQJx07RCrI3MdxRbK1STbB66mk3iKnaNMtW3fcwubkMhtqeOVOsdhvPVSfXqPXoGcl5hibYbmpV5DrLqQttxCgpKkkZBBHUQjlStIomS60kJCx73HPHT/zBC0e1VndPp5q2LmeUugzLm1t1XJk1nuP7Ceo7dR3yy7M9q3NIpK46bBx8PQ+nTltJvVkjkBnpBr4jz5evXmmliR+W3EOoS42sKQsBSVA5BB7x+o9NQtZmfaWWBMUrVGTvRpsmXr8ihW4D+MyA2of9Pln6wqlvzyZZaAOB3OY2K8SWicjrpppO2uoNN1WXzNUt9fGyYSD7pPZKgSk/MHtGN9z0GtWLck5QK5IuykzKPKaeadSUqQpJwQR9IJXmjPGSBodflM7HWtdGGE6t0+ETaLVm1EbFY3CL9b9wqldoDgwcAAmARSK2kBOxQ7DB7Ra5Kv7AHEqICfePxgTNTa4S3gD25CZW371WlCUqdOO6R8YuzV8MSEmqemlLLbeCvYNxwTjoPnC32zXlOIBW5tJGR24+EE62K22paf3wyMd+nETpIzCdFhlgGdUe5B/25CXSjhSQQon8o6XsaVpUSk89sRTrbrSHNqQ4B+oi9Sc2y+BhSTn1jTA1s41UmYujOi56qOl9KdyMLx2GRFauS1y4ytKW+SODiCahlopBbPIj4Tsg3NMKKwncOwEflRa8jiZuukdcWu12Xk0C1NmpKZb03up9WelLfcPb+iT+aSfUfAQwEJhe0g6w77dTni3MyTgcQtBwpCk8jnsehhltHdQ29R7Nl6s8UpqEsfZp5AwMOpA94DsFAg/UjtDfsjeH1Ef2VQe83Y+Y8vx05KRe6ENxVxDQ7+h8/z15q8wr3jC8ItN1rpbt5WlLNMXZJs4W2lISmooT0So/wBQDgKPUAJPYhoYkMJoWzs4HqFBM+neHsOqwIuGi1qzarMU2fl3pd+WcU2424kpUhSSQUkHoQRzHToddUrAUo5/SH++0K8OErVaWrWK2JAJeb2tVlptIAPZExgDr0Sr/ifiYzglku06dLSgQAcEQOuVAGkgjUe6e2q4fXYDnTojBS6sAjd5nHz4xF8tisKacC9/JPIBgO0ad3NpSgnBxk/OLjSKh5DiVKcBB5BzBeSHQhXCQ8apiqDcqm9qku8n4HHMXu3LxX56GSMhffPSF6olWS4AC/nP3jnrF4o1bRJlBS4CfnEwAwu0WWSBrgmeoNYZeQkKUCVDuesdxxLb7e5B/CAfbF3pccCUufnBHkrkBZSC4Mnjr1ipFUhzMPUCopXNflq5F2UKUK5ualkKQ5NEF0FZwSO4HbrHl8NFamLf1QnLX3EytYlVKCT2cbBUk/huH1j3XDVGHZZw7xlPQ94qGh815viCo6EqyfKmSfl5DkdrTltxjfH/AGHucH2X0nBdRyMf/U+2ydOJEiR62gy8tUpkhWqbNUiqSqJmTnWVy77KxlLjawUqSfQgkRj14tfD/UNE9RpqnNtuOUidJmaZMlPDjBP3Sf5k/dV9D0IjY+Bvr1ojbeu1iTVqVpttqcQFO02e2ZVKv44PxKT0UnuPUAjFXUv3LNNwqFurTRy5P8Tv8rFqh1Myyg2pRz9eIu0jPMLZLvmgJbG4/qfyzFa1Q06uXS28J+1bkp7krO054tuoPQjqFJPdJBBBHUGPFQ6upQ8l1eUqGMHpAaqpC08QXolLUMlaMIn0+rOJSh5pStigFAjvFnkKzM7AS8MYxgfpA6l6mllpHlDcn4DpjHSOvLVxsYUlwEJGEjOT9YlOiydlrJBCLluXC8wtKlqIyeOeYupvaYclHGWZravGEneRj8CD+EL9LXO42sAPAkfEx1F3gplKQFErPGOekZ3UxcdFkeADkoxzd7TMvSEomZ9bz4Tt8wnlRx1P/wB2gg+CijzV0ak1u939ypajyvs7ayOC89xgHpwlKsj+4QrDU9WbqqMpQaFLPztRn3Ey8uwyncpa1HAAEabeHzSdGjmmdPtV9aHKm6TOVN1Bylc0sDcEnulICUg9wnPeFXZ62H6omeNuqNXqqEURjbu7oiVEiRIcogpEiRI4uIHeJ/ww234gbaK0JakbnkGz7BPlPCxyfJdwMlBJyD1SeRwSDkvfmml3aX3LNW7c9HmJCdlV7XGnU8+hBHCknqCMgxuzFE1V0S041mpYpt9W+1NLaSUy8437kzL5/kcHOM87TlJ7iJ1ZQCo7zND1VWgubqQ8LtW9FiZLVSYSSlSiQeAOmY9iKw6lJAVjPTmHZ1B+zNuBibemtObvkZ6VKiW5aogsPIT2G9IKVH1wn5QMX/s/fEPLPeS1asm+gHhbdUlwn/uUD+UH32yRp1Yf9ySeK8QPGeMflLxL1Wa90pJB7+96xa7bpFxXZVJajUanzE/PTiw2zLsIK1rUemABDMaffZv6jT8427fNbpdCkwQXEML9qfUM8gAYQPmVH5GHU0i0A000WkizZ1FBnnEbH6lNEOTTo7grwNqeB7qQBwOI10tpc45c3A9fhYa29RtGGHiP+8UN/Ct4VZPSCTReF4tszd3TTWEpACm6agjlCD3cPRSx8hxkqY+JEhFFE2FoYwaItNM+d5e86r//2Q==", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "bxf.tkn.near": { + "spec": "ft-1.0.0", + "name": "Super puper token", + "symbol": "BXF", + "icon": "data:image/png;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "token.pumpopoly.near": { + "spec": "ft-1.0.0", + "name": "Pumpopoly fungible token", + "symbol": "PUMPOPOLY", + "icon": "data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%2048%2048%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22100%25%22%20height%3D%22100%25%22%20fill%3D%22%23000%22%2F%3E%3Cpath%20fill%3D%22%230F0%22%20d%3D%22M4.8%2C31A1%2C1%2C0%2C0%2C0%2C4%2C32.2%2C1%2C1%2C0%2C0%2C0%2C5.2%2C33C25%2C29%2C37.55%2C15%2C42%2C9.12V11a1%2C1%2C0%2C0%2C0%2C1%2C1h0a1%2C1%2C0%2C0%2C0%2C1-1V6a1%2C1%2C0%2C0%2C0-1.28-1l-4.8%2C1.41a1%2C1%2C0%2C1%2C0%2C.57%2C1.92l2-.6C36.35%2C13.29%2C24.19%2C27.14%2C4.8%2C31Z%22%2F%3E%3Cpath%20fill%3D%22%230F0%22%20d%3D%22M45%2C41H44V26a1%2C1%2C0%2C0%2C0-1-1H33a1%2C1%2C0%2C0%2C0-1%2C1V41H30V32a1%2C1%2C0%2C0%2C0-1-1H19a1%2C1%2C0%2C0%2C0-1%2C1v9H16V36a1%2C1%2C0%2C0%2C0-1-1H5a1%2C1%2C0%2C0%2C0-1%2C1v5H3a1%2C1%2C0%2C0%2C0%2C0%2C2H45a1%2C1%2C0%2C0%2C0%2C0-2ZM6%2C41V37h8v4Zm14%2C0V33h8v8Zm14%2C0V27h8V41Z%22%2F%3E%3Cpath%20fill%3D%22%230F0%22%20d%3D%22M5.71%2C15.71l.29-.3V21a1%2C1%2C0%2C0%2C0%2C1%2C1H21a1%2C1%2C0%2C0%2C0%2C1-1V15.41l.29.3a1%2C1%2C0%2C0%2C0%2C1.42-1.42l-9-9a1%2C1%2C0%2C0%2C0-1.42%2C0l-9%2C9a1%2C1%2C0%2C0%2C0%2C1.42%2C1.42ZM12%2C20V16h4v4ZM14%2C7.41l6%2C6V20H18V15a1%2C1%2C0%2C0%2C0-1-1H11a1%2C1%2C0%2C0%2C0-1%2C1v5H8V13.41Z%22%2F%3E%3C%2Fsvg%3E", + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "boo.tkn.near": { + "spec": "ft-1.0.0", + "name": "Pomeranian", + "symbol": "BOO", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "duck.tkn.near": { + "spec": "ft-1.0.0", + "name": "DUCK", + "symbol": "DUCK", + "icon": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/4gIoSUNDX1BST0ZJTEUAAQEAAAIYAAAAAAIQAABtbnRyUkdCIFhZWiAAAAAAAAAAAAAAAABhY3NwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA9tYAAQAAAADTLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlkZXNjAAAA8AAAAHRyWFlaAAABZAAAABRnWFlaAAABeAAAABRiWFlaAAABjAAAABRyVFJDAAABoAAAAChnVFJDAAABoAAAAChiVFJDAAABoAAAACh3dHB0AAAByAAAABRjcHJ0AAAB3AAAADxtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAFgAAAAcAHMAUgBHAEIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAABvogAAOPUAAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAJKAAAA+EAAC2z3BhcmEAAAAAAAQAAAACZmYAAPKnAAANWQAAE9AAAApbAAAAAAAAAABYWVogAAAAAAAA9tYAAQAAAADTLW1sdWMAAAAAAAAAAQAAAAxlblVTAAAAIAAAABwARwBvAG8AZwBsAGUAIABJAG4AYwAuACAAMgAwADEANv/bAEMAAwICAgICAwICAgMDAwMEBgQEBAQECAYGBQYJCAoKCQgJCQoMDwwKCw4LCQkNEQ0ODxAQERAKDBITEhATDxAQEP/bAEMBAwMDBAMECAQECBALCQsQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEP/AABEIAGAAYAMBIgACEQEDEQH/xAAdAAABBAMBAQAAAAAAAAAAAAAFAwQGBwECCAAJ/8QAORAAAQMDAgMFBQUIAwAAAAAAAQIDBAAFBgcREiExEzJBUWEUIkJxkRUWYoGhCAkjM1KxwdEkJaL/xAAcAQACAwEBAQEAAAAAAAAAAAAGBwMFCAQAAQL/xAA0EQABAgQEBAMHBAMBAAAAAAABAgMABAURBhIhMUFhcYETUbEHFCIyM5HBQlKh0SNiguH/2gAMAwEAAhEDEQA/APqY33hS2w8qRb7wpYnYV6PRhSkpBJ2G3Wq6zLWO0WGQq02OOq73Ici20fcQfxKoDqLntzv13Xg2Guq4kns5kpvwPihJ86bW6y49gccNrjonXRQ4lhR3ShX4j4mlZijHK2VOS1MUlIRot1WqUn9qR+pXIf8AsFEhR220JenUlSlapbGhI81HgIGTLhq1lTTkuXdXrZEAKi1BRw7D1Wef61HV4x7QeOXers+s9VLlKNS6fkN3uO6H5SktHl2aPdSB5bChwG1IGu4hfnngpqZdX5lRtc8kgmw7wYSQcZTbIlA4BI9TuYERrbfLWrtLLlt3irT0BkFafoeVSWz6t5pji0t5PCbu8NPIyGE8LqR5lPQ0xryEsqXs+DwnyqOl4yrVFWHJd9VhwJuD2MfZqXl5pJEy2FdrHsRrF1Yvl9iy2CJ1mmIeT8SOi0HyI8KNjY+Fc1ORLpi1xRkeLPFt1J4nG0n3Hk+II86vDBM1gZpZkXCL7jyTwSGT3m1+INaSwNj6WxY14S/hfTuOB5j8iAWsUX3Ee8MHM0fuk+R/BiQu9RWlbu9RWlMOKCMt94VDNXMxdxXGVJt6v+xuCvZYgHUKPVX5Cpm33hVI6jOuZHqpEsqTu1bGUAJ8O0cPX6UI43q7lHo7jrH1FWQnqrSLmgyiJqcHi/IgFR6Dh3No2xK1tYZjX2s6OO4Tdw0tXUk95ZoNPuMWIhU25zWmUk7qcecCRufU1IswkJVdfYGTszAQGEAdNwOf618/f3iWr5w5CsFvGOvToN+sp+zpKH1NCJMDvNzl3vdG2xrPDVJViWtt4dZcytt3BO91DVarcSToOQEFa5sysuqoui6l69jsOwjuJiQxJaS9HeQ42sbpUhW4I9CKUrhT919qXl2UY3kmH3+dImwrMtpyG68oqLYXvugE+HLfau3rjebXZ2g9dJ7EVs8gp1YSCfzoXxFQncPVRymLVnKbWI4gi40ixkJr39lLqRvwh6TsN6jsrUPCIWQNYpMyq1s3h/m3CXJSHlfJJO9FW7jGuMBcm2SmpCVIPAttYUCduXSvjN+0Jqpnd11QFluNvahXnGLzJ9nmMNlEp8rdBRxq6q22AHpV9gfBqcXPPtOO+H4ab7XJJ27DjHHV6mqmBJCb3MfaqO8Bu04N219fSmllu7mn2aR7olRFtuK0x5qfhG591f5UHwGXc5+D2CdekqTPkWyK7KChsQ6WklW/ruTRbIoQutidaI3WElIPkRzBoWpk+/h2qomWFaoVY22Nj6GO7I26Mjg+BwWI68eojogrC0pWkggjcEeNYqJ6WXxy/wCB2ma8ridQz2DhPXiQeH+wFSytvSM0ielm5lvZYBHcXhXTLCpZ5bC90kj7G0Zb7wqlIDRe1yuqXRzDyCN/IJJFXW33hVK5+qRiGq8XIWUgN3NgAE9O0QNtj+VBPtFSG6ezNrF0NOoWq37QdYu8PXW48wn5ltqA66H0EMZ7qn58l5XVbqifrVM/tKaW6Sak4WGtV2CIsNfFGkMnZ9tw+CCOZ38quFx1Tzq3lAArUVED1qB6w4XLzTEVwraoe2xXUyo6VdFqT8P51luRnVtVRM024UHMTmGhFzvB/Ky0u+UMTWiDYHpFJaL3jSnQ3HncY0xwS9uofX2rr7iQXZC/AqPWiF6TcsrlP5bqG2qPH4Ci32vj5jyJH+aqZmfnunt6lrtpcParJdhSjwuNKJ58CjyIpWTqjOlOdreLDd1PeJ4e0H5EU0G6a2p9U+k+K4vdRNz/ADDMp1AkZBQ91GVNt9SbcuAv57xPMNzC9ac3IyrY05Mtj/KRB4+n4kb9DTbJJeimTZvG1ByDRXt7uwtK0yVqRxKUOhKfiIqBu57dpKSm14tK3PRclQbSPnSmN4fmGb3xh9wuTpaFfwWWAUxoxPxKV8RFQqp7cstU04vwzYglKiCR5Gx9Y6atRKPPKL8yjqdh16x2viOS2zLLBEvlo4hGko3SlQ2KSORSR6Ue2BgyAeg2NRfT/FEYXikDH0udoqOjdxf9Syd1H6mjF2uP2fa5TyjslKCr5nwpQzLaFPFLHy5tOl4Vkw2lbpQxqnNp0vpE+0BUo4S+k78CbjICPlyqy6hej1nds2n1rafTwuyUqkrBHis7j9NqmlbbwwwuWo0s05uEJv8AaFhWXEvVF9aNio+sZb7wqtdfVWj7oJEon7Q7dJt4R3+13/tt1qyUHhIJqib+9L1D1GmKje/DsiFNMAn3eIDdaqpsfVNMhR1spRncd+BKd7k8uW/WOrDrGecEwo2S18RPoO506XiO47ezcGjFloLUxgbOoV1+Y9KNEb0MtkmPPnTnWYYSuK52C3QO9tS0G7MTZkmEEFDkZQBB8R5isfuIIUfhtDHc+JRyptbUjyvDC/YXjOTI4b1aI0k/1KT73161C5H7PGn7yyppiUwCe6h8gVaXCK9w1MzPTMuLNOEDrEjM9Mywsy4UjkTFb2/QTTyC4HF2tclSeY7Zwq/Spva7HarMyI9sgMRmxyCW0BNEeH1psqbGRMTALo7ZaSoJ8dq/L03MTP1VlXUx8dmn5r6qyrqSYX6ChsS3KzbK4eJx1jsELD81QPRtJ32/Olru3cFw1JtpSHzyBV0HrQeCxKwKbByqE6tx+M6DMJP81tR2UKssPKk26kwuf1bzC45X9IiyktK8JVnCCE9baH+ucdQoZbjstsNJCUNpCUgdAB0FZpKHMYuEKPOjLC2pDaXUKHikjcUrW3kFJSCnbhCeIINlbwOyCf8AZlin3Dfb2eMtYPqEnaqb02QqHhd1vSv58sbcXju4rc/pVqagtOP4Remmt+JUNzbb5VVWFT4hwJ+Ct5KHFoacbB+IjkRSd9pM2WajLpUbANPFN9BmyEDv5c4K6K3enOEC93EA9BDXTNKHGMtty0guhxTo89t6jtyP2RkUa5dGZY7B0+AV4GjGLz28d1A/5ZCYd5a7FSj0C9tqXzDHyr2y0vclAktqHn1SRSTnrTFKlplOySpCuVzmT6m3SDBCw1Prz/K4kH+Mp+xEOAQRuK9QfF7iufbQl/lIjnsnR+IUYoWUkpJSYkWgtqKTwjBOw3odiVrayDNbnJkLUli3RDuoeBog4eFtSvIb1ppvs1jOSXdRHaSpHYp8+Her/Dcuy/NlUwLoSlSiPPKkm3e0QzC1NSrikaE2SP8Aoj8XhvdpfsduflJXsUIJBPnScJDl5xJsztlOuNEL5bbhQoTk0lVweYx2IriceUC8R8KB51KITSI8F5oD3G2gPp0ofdHhtpVxveJnk+EylX6r37bfzE80Rubtx0/hsvqKnIDjkQk/hPL9CKn1VnoChX3QmSCNkP3J9aPUcqsyttYUdW9RJVxzcoT6Qs62hLdSfSnbMYSkxm5kZ2I6N0PIUhQ9CNq5yjw38Uvc3EriChTDilxVHo40TuNq6Tb7wqNZzp5aM3iJRL4o8tnmxKa5LbP+R6VQ4/wgcVyIDBs8i5Tfj5iOqhVVFOcU299Ndr24EbH+4pi82pq7RCyVFLiTxtrHVCh0NCBkN3t6uxyCK+8pI4UyEAqCgOm9Sa4YJqbjilNt29m+xk91xhYS5t6pPj8qDP3W7wt03XDr1H26kxVKH1rNE7hqt0vMxMy68vQ263GkMKWmGX0/41JWOFlC4/I6WhviqHnJFwuJYW01Ke4kJUNiR57VIqj/AN87S17rrExr0XHUK9997Ie6qQo+QYV/qqVyUmVKuWyOxidxp51WbIYPrSFpKT4jaoq1aMntwfg2uayiI84Vgq33Tv6U+bypEg7QrNdJJPQNxFHensdnO7mQLZgdy2PRUgBpP/rau2TpFVfOWXYWq/kkmI85lgfEKQP9iB6mEbLYWbSFurcU9Jd5uPK6k/6rN7ukhTCLDaWy7cJyuyaQjmrc8tz6Cj0LS3Uy7kfaEyBaGldQglxwD+361YeE6WWTDlmdxLnXFY9+U/zV8kjwFHNA9ltYqkylyoo8Nu4Jvv0A/uKaersnLXcKw4vgBqL8Lna3S8E8KxpvEsWt9iSQVx2v4qh8Th5qP1NHK3cAGwFaVqOWl25VlLDQslIAHQaQuXXVvuKdcN1KJJ6mP//Z", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "cusd.token.a11bd.near": { + "spec": "ft-1.0.0", + "name": "Celo Dollar", + "symbol": "cUSD", + "icon": "data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjEwMCIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHdpZHRoPSIxMDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0ibTEwMCA1MGMwLTI3LjYxNDItMjIuMzg1OC01MC01MC01MHMtNTAgMjIuMzg1OC01MCA1MCAyMi4zODU4IDUwIDUwIDUwIDUwLTIyLjM4NTggNTAtNTB6IiBmaWxsPSIjNDVjZDg1Ii8+PGcgZmlsbD0iI2ZmZiI+PHBhdGggZD0ibTY5Ljg4MDUgNjIuNjQzOGMtMS41NjcxIDMuMzkzMS0zLjkzNzUgNi4zNTMyLTYuOTA2MSA4LjYyNDEtMi45Njg1IDIuMjcwOC02LjQ0NTggMy43ODQxLTEwLjEzMDcgNC40MDg3LTMuNjg1LjYyNDYtNy40NjY3LjM0MTctMTEuMDE3Ny0uODI0MS0zLjU1MTEtMS4xNjU4LTYuNzY0Ni0zLjE3OTQtOS4zNjIzLTUuODY2Ni0yLjU5NzgtMi42ODcxLTQuNTAxNS01Ljk2NjktNS41NDY1LTkuNTU1NC0xLjA0NDktMy41ODg1LTEuMTk5Ni03LjM3NzUtLjQ1MDctMTEuMDM5My43NDg5LTMuNjYxNyAyLjM3ODktNy4wODU3IDQuNzQ4OS05Ljk3NTggMi4zNzAxLTIuODkgNS40MDg3LTUuMTU4OSA4Ljg1MjktNi42MTAzbDIuMjY2OCA1LjM3OTJjLTIuNTcgMS4wODMxLTQuODM3NSAyLjc3NjEtNi42MDYgNC45MzI3LTEuNzY4NSAyLjE1NjUtMi45ODQ4IDQuNzExNS0zLjU0MzYgNy40NDM5LS41NTg5IDIuNzMyNC0uNDQzNSA1LjU1OTguMzM2MyA4LjIzNzYuNzc5OCAyLjY3NzcgMi4yMDAzIDUuMTI1MSA0LjEzODggNy4xMzAyIDEuOTM4NCAyLjAwNTIgNC4zMzYzIDMuNTA3OCA2Ljk4NjEgNC4zNzc3czUuNDcxNyAxLjA4MSA4LjIyMTUuNjE0OWMyLjc0OTctLjQ2NjEgNS4zNDQ0LTEuNTk1MyA3LjU1OTUtMy4yODk4IDIuMjE1Mi0xLjY5NDUgMy45ODQtMy45MDMzIDUuMTUzNC02LjQzNTNsNS45MTg5LjMwNDJ6Ii8+PHBhdGggZD0ibTU2LjEwNjEgMjQuNXYtNGg0LjUwMDV2NGMyIDAgNS4xNjY3LjY2NjcgNi41IDF2NC41Yy0xOS0zLTE1LjUwMTEgMy44NDYyLTggNSA2LjcyMTcgMS4wMzM5IDExIDIgMTEuNSA5IC40IDUuNi01LjgzMzMgNy42NjY3LTkgOHYzLjVoLTV2LTMuNWMtMi40IDAtNi42NjY3LTEuNjY2Ny04LjUtMi41di01LjVjNC41IDIuNSAxNyA0LjUgMTcgMHMtMTYuNTAxMS0zLTE4LjAwMDUtMTFjLTEuMDAyMy01LjM0NzUgNS4zMzMzLTcuODMzMyA5LTguNXoiLz48L2c+PC9zdmc+", + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "celo.token.a11bd.near": { + "spec": "ft-1.0.0", + "name": "Celo", + "symbol": "CELO", + "icon": "data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjEwMCIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHdpZHRoPSIxMDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxjbGlwUGF0aCBpZD0iYSI+PHBhdGggZD0ibTAgMGgxMDB2MTAwaC0xMDB6Ii8+PC9jbGlwUGF0aD48ZyBjbGlwLXBhdGg9InVybCgjYSkiPjxwYXRoIGQ9Im01MCAwYzkuODg5MSAwIDE5LjU1NjEgMi45MzI0NSAyNy43Nzg1IDguNDI2NTIgOC4yMjI1IDUuNDk0MDggMTQuNjMxMSAxMy4zMDI5OCAxOC40MTU1IDIyLjQzOTI4czQuNzc1IDE5LjE4OTcgMi44NDUzIDI4Ljg4ODdjLTEuOTI5MyA5LjY5OTEtNi42OTEzIDE4LjYwODItMTMuNjg0IDI1LjYwMDgtNi45OTI2IDYuOTkyNy0xNS45MDE3IDExLjc1NDctMjUuNjAwOCAxMy42ODQtOS42OTkgMS45Mjk3LTE5Ljc1MjQuOTM5MS0yOC44ODg3LTIuODQ1M3MtMTYuOTQ1Mi0xMC4xOTMtMjIuNDM5MjgtMTguNDE1NWMtNS40OTQwNy04LjIyMjQtOC40MjY1Mi0xNy44ODk0LTguNDI2NTItMjcuNzc4NSAwLTEzLjI2MDggNS4yNjc4NC0yNS45Nzg1IDE0LjY0NDctMzUuMzU1MyA5LjM3NjgtOS4zNzY4NiAyMi4wOTQ1LTE0LjY0NDcgMzUuMzU1My0xNC42NDQ3eiIgZmlsbD0iI2ZiY2M1YyIvPjxnIGZpbGw9IiNmZmYiPjxwYXRoIGQ9Im00My41NDIxIDczLjcyNDljMy40MDg1LjAwODMgNi43NDI5LS45OTQ4IDkuNTgxMS0yLjg4MjUgMi44MzgxLTEuODg3NiA1LjA1MjQtNC41NzQ4IDYuMzYyNi03LjcyMTVzMS42NTczLTYuNjExNC45OTc1LTkuOTU1NWMtLjY1OTktMy4zNDQtMi4yOTcxLTYuNDE3Mi00LjcwNDMtOC44MzAzLTIuNDA3My0yLjQxMzItNS40NzY0LTQuMDU3OS04LjgxODktNC43MjU5LTMuMzQyNC0uNjY4MS02LjgwNzktLjMyOTQtOS45NTc4Ljk3My0zLjE0OTkgMS4zMDI1LTUuODQyNSAzLjUxMDItNy43MzcxIDYuMzQzOC0xLjg5NDYgMi44MzM1LTIuOTA1OSA2LjE2NTQtMi45MDU5IDkuNTc0IDAgNC41NjEgMS44MDkgOC45MzU5IDUuMDMwMiAxMi4xNjQ5IDMuMjIxMiAzLjIyOTEgNy41OTE2IDUuMDQ4OCAxMi4xNTI2IDUuMDZ6bTAgNi4yNzUxYy00LjY0OTYuMDA4My05LjE5NzMtMS4zNjI5LTEzLjA2NzMtMy45NC0zLjg3MDEtMi41NzcyLTYuODg4Ny02LjI0NDQtOC42NzM4LTEwLjUzNzgtMS43ODUyLTQuMjkzMy0yLjI1NjYtOS4wMTk3LTEuMzU0Ni0xMy41ODFzMy4xMzY5LTguNzUyNSA2LjQyMTctMTIuMDQzM2MzLjI4NDgtMy4yOTA3IDcuNDcyMS01LjUzMzEgMTIuMDMxOC02LjQ0MzMgNC41NTk3LS45MTAxIDkuMjg2OS0uNDQ3MiAxMy41ODM0IDEuMzMwMnM3Ljk2OTIgNC43ODk0IDEwLjU1MzMgOC42NTQ5YzIuNTg0IDMuODY1NSAzLjk2MzQgOC40MTA2IDMuOTYzNCAxMy4wNjAzLjAwNTUgMy4wODQtLjU5NzIgNi4xMzg5LTEuNzczNiA4Ljk4OTgtMS4xNzYzIDIuODUwOS0yLjkwMzQgNS40NDE5LTUuMDgyMiA3LjYyNDZzLTQuNzY2NiAzLjkxNDQtNy42MTU0IDUuMDk1OS01LjkwMjYgMS43ODk3LTguOTg2NyAxLjc4OTd6Ii8+PHBhdGggZD0ibTU2LjUgNjAuNzI0OWMzLjQwODYuMDA4MyA2Ljc0MjktLjk5NDggOS41ODExLTIuODgyNHM1LjA1MjUtNC41NzQ5IDYuMzYyNi03LjcyMTZjMS4zMTAyLTMuMTQ2NyAxLjY1NzMtNi42MTEzLjk5NzUtOS45NTU0LS42NTk5LTMuMzQ0MS0yLjI5NzEtNi40MTcyLTQuNzA0My04LjgzMDQtMi40MDczLTIuNDEzMS01LjQ3NjQtNC4wNTc4LTguODE4OC00LjcyNTktMy4zNDI1LS42NjgtNi44MDgtLjMyOTQtOS45NTc5Ljk3MzEtMy4xNDk5IDEuMzAyNC01Ljg0MjUgMy41MTAyLTcuNzM3MSA2LjM0MzdzLTIuOTA1OSA2LjE2NTQtMi45MDU5IDkuNTc0YzAgNC41NjEgMS44MDkgOC45MzU5IDUuMDMwMiAxMi4xNjVzNy41OTE2IDUuMDQ4OCAxMi4xNTI2IDUuMDU5OXptMCA2LjI3NTFjLTQuNjQ3OSAwLTkuMTkxMy0xLjM3ODItMTMuMDU1OS0zLjk2MDUtMy44NjQ1LTIuNTgyMi02Ljg3NjYtNi4yNTI0LTguNjU1My0xMC41NDY0LTEuNzc4Ni00LjI5NDEtMi4yNDQtOS4wMTkyLTEuMzM3Mi0xMy41Nzc3LjkwNjctNC41NTg2IDMuMTQ0OS04Ljc0NTkgNi40MzE0LTEyLjAzMjRzNy40NzM4LTUuNTI0NyAxMi4wMzI0LTYuNDMxNGM0LjU1ODUtLjkwNjggOS4yODM2LS40NDE0IDEzLjU3NzcgMS4zMzcyIDQuMjk0IDEuNzc4NyA3Ljk2NDIgNC43OTA4IDEwLjU0NjQgOC42NTUzIDIuNTgyMiAzLjg2NDYgMy45NjA1IDguNDA4IDMuOTYwNSAxMy4wNTU5LS4wMTExIDYuMjI5Mi0yLjQ5MDYgMTIuMi02Ljg5NTMgMTYuNjA0N3MtMTAuMzc1NSA2Ljg4NDItMTYuNjA0NyA2Ljg5NTN6Ii8+PHBhdGggZD0ibTU3LjY4ODkgNjcuODU3MWMxLjYyMzQtMS45NzM4IDIuNzg2LTQuMjg0OCAzLjQwMzQtNi43NjQ3IDIuNDczNy0uNjM0MSA0Ljc4MTItMS43OTUgNi43NjQ3LTMuNDAzNC0uMDk4MyAyLjg5MDUtLjcyNDkgNS43Mzg2LTEuODQ4NyA4LjQwMzQtMi42NDQxIDEuMDg1MS01LjQ2MjUgMS42ODMtOC4zMTk0IDEuNzY0N3ptLTE3LjQzNy0yNy42MDVjLTIuNDM1NC42MzQ2LTQuNzAxNiAxLjc5NjQtNi42Mzg2IDMuNDAzMy4wNzI1LTIuODkzNi43MDAxLTUuNzQ2NCAxLjg0ODctOC40MDMzIDIuNjU4NS0xLjE0MzcgNS41MTA0LTEuNzcxMSA4LjQwMzQtMS44NDg4LTEuNjIzNCAxLjk3MzgtMi43ODYgNC4yODQ4LTMuNDAzNCA2Ljc2NDd6Ii8+PC9nPjwvZz48L3N2Zz4=", + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "bed4ab0019ff361d83ddeb74883dac8a70f5ea1e.factory.bridge.near": { + "spec": "ft-1.0.0", + "name": "MerchDAO", + "symbol": "MRCH", + "icon": null, + "reference": "", + "reference_hash": "", + "decimals": 18 + }, + "111111111117dc0aa78b770fa6a738034120c302.factory.bridge.near": { + "spec": "ft-1.0.0", + "name": "1INCH Token", + "symbol": "1INCH", + "icon": null, + "reference": "", + "reference_hash": "", + "decimals": 18 + }, + "ikenga.tkn.near": { + "spec": "ft-1.0.0", + "name": " DEDE", + "symbol": "IKENGA", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "lts_token.near": { + "spec": "ft-1.0.0", + "name": "Lights", + "symbol": "LTS", + "icon": "data:image/png;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 8 + }, + "token.pnx_test.near": { + "spec": "ft-1.0.0", + "name": "PNX", + "symbol": "PNX", + "icon": "data:/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGNpcmNsZSBjeD0iMjAiIGN5PSIyMCIgcj0iMjAiIGZpbGw9IiMwNzA2MzgiLz48cGF0aCBkPSJNMjguNDU1IDI5LjczMmMtMi41MTQgMi44NTUtNy4wNSA2LjEyLTExLjAxNyA2LjE1My0yLjUxNy0uMzI0LTQuODM3LTEuMTE2LTYuODE1LTIuMjYyIDIuNTAyLjE3NCA1LjUxNS0uMjc3IDguNDI3LTEuNzkgMS4zOTktLjYwNSAzLjYzMy0yLjIzOCAzLjcxOC0yLjI5Ny0uMDY2LjAzNy0yLjQ5IDEuNDgyLTMuOTQ2IDEuOTY1LTQuMzQ0IDEuNzkxLTguNjQ3IDEuMzEyLTEwLjc2Mi4yNzItMi40OTktMi4yMzgtNC4wMy01LjE4LTQuMDYtOC40MS4zMyAzLjEwMyA1Ljg4OCA2LjI1NCAxMS41NCA1LjEyNyA2LjQtMS4yNzcgMTAuNzM0LTcuNjQ1IDE1LjgzNC04LjQxNCAxLjE1OS0uMTc1IDIuNDY2LS4wNyAzLjM2Ny41MzggMS4wNzUuNzI2IDEuMjI3IDEuNTUgMS4yNTUgMi42NTIuMTc5IDYuNjktNi40MzUgMTIuMTc5LTE0LjYzIDEyLjczNCAyLjg4My0xLjQwOSA1LjQzNy0zLjg2NSA3LjA4OS02LjI2OFoiIGZpbGw9InVybCgjYSkiLz48cGF0aCBkPSJNMTEuNTQ1IDEwLjI2OGMyLjUxNC0yLjg1NSA3LjA1LTYuMTIgMTEuMDE3LTYuMTUzIDIuNTE3LjMyMyA0LjgzNyAxLjExNiA2LjgxNSAyLjI2Mi0yLjUwMi0uMTc0LTUuNTE1LjI3Ny04LjQyNyAxLjc5LTEuMzk5LjYwNS0zLjYzMyAyLjIzOC0zLjcxOCAyLjI5Ny4wNjYtLjAzNyAyLjQ5LTEuNDgyIDMuOTQ2LTEuOTY1IDQuMzQ0LTEuNzkxIDguNjQ4LTEuMzEyIDEwLjc2Mi0uMjcyIDIuNDk5IDIuMjM4IDQuMDMgNS4xOCA0LjA2IDguNDEtLjMzLTMuMTAzLTUuODg4LTYuMjU0LTExLjU0LTUuMTI3LTYuNCAxLjI3Ny0xMC43MzMgNy42NDUtMTUuODM0IDguNDE0LTEuMTU5LjE3NS0yLjQ2Ni4wNy0zLjM2Ny0uNTM4LTEuMDc1LS43MjYtMS4yMjctMS41NS0xLjI1NS0yLjY1Mi0uMTc5LTYuNjkgNi40MzUtMTIuMTggMTQuNjMtMTIuNzM0LTIuODgzIDEuNDA5LTUuNDM3IDMuODY1LTcuMDg5IDYuMjY4WiIgZmlsbD0idXJsKCNiKSIvPjxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD0iYSIgeDE9IjM2IiB5MT0iMjgiIHgyPSI5LjU1NiIgeTI9IjI4IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agc3RvcC1jb2xvcj0iIzAwRjhEQiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzA4RjhDQyIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJiIiB4MT0iNCIgeTE9IjEyIiB4Mj0iMzAuNDQ0IiB5Mj0iMTIiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBzdG9wLWNvbG9yPSIjMDBGOERCIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMDhGOENDIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PC9zdmc+", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "aaaaaa20d9e0e2461697782ef11675f668207961.factory.bridge.near": { + "spec": "ft-1.0.0", + "name": "Aurora", + "symbol": "AURORA", + "icon": "data:image/svg+xml,%3Csvg version='1.1' id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 288 288' style='enable-background:new 0 0 288 288;' xml:space='preserve'%3E %3Cstyle type='text/css'%3E .st0%7Bfill:%2370D44B;%7D .st1%7Bfill:%23FFFFFF;%7D %3C/style%3E %3Cpath class='st0' d='M144,0L144,0c79.5,0,144,64.5,144,144v0c0,79.5-64.5,144-144,144h0C64.5,288,0,223.5,0,144v0 C0,64.5,64.5,0,144,0z'/%3E %3Cpath class='st1' d='M144,58.8c7.6,0,14.5,4.3,17.9,11.1l56.2,112.5c4.9,9.9,0.9,21.9-9,26.8c-2.8,1.4-5.8,2.1-8.9,2.1H87.8 c-11,0-20-9-20-20c0-3.1,0.7-6.2,2.1-8.9l56.2-112.5C129.5,63,136.4,58.7,144,58.8 M144,45c-12.8,0-24.5,7.2-30.2,18.7L57.6,176.2 c-8.3,16.7-1.6,36.9,15.1,45.3c4.7,2.3,9.9,3.6,15.1,3.6h112.5c18.6,0,33.8-15.1,33.8-33.7c0-5.2-1.2-10.4-3.6-15.1L174.2,63.7 C168.5,52.2,156.8,45,144,45z'/%3E %3C/svg%3E", + "reference": "", + "reference_hash": "", + "decimals": 18 + }, + "craftorium.tamada.near": { + "spec": "ft-1.0.0", + "name": "Сraftorium", + "symbol": "CRFT", + "icon": "data:image/svg+xml;base64, PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgNjQgNjQiPjxwYXRoIGQ9Im0zMiAyYy0xNi41NjggMC0zMCAxMy40MzItMzAgMzBzMTMuNDMyIDMwIDMwIDMwIDMwLTEzLjQzMiAzMC0zMC0xMy40MzItMzAtMzAtMzBtNi4wMTYgNDQuNTA4bC04LjkzOS0xMi42NjYtMi45MjIgMi45NjF2OS43MDVoLTUuOTYzdi0yOS4wMTZoNS45NjN2MTEuOTU1bDExLjIxMS0xMS45NTVoNy44MzZsLTExLjkwOSAxMS45MzQgMTIuNTE4IDE3LjA4MmgtNy43OTUiIGZpbGw9IiMxZTg4ZTUiLz48L3N2Zz4K", + "reference": null, + "reference_hash": null, + "decimals": 6 + }, + "putt.tkn.near": { + "spec": "ft-1.0.0", + "name": "Puttcoinz", + "symbol": "PUTT", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "mz.tkn.near": { + "spec": "ft-1.0.0", + "name": "Meinen Zutrunk!", + "symbol": "mz", + "icon": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/4gIoSUNDX1BST0ZJTEUAAQEAAAIYAAAAAAIQAABtbnRyUkdCIFhZWiAAAAAAAAAAAAAAAABhY3NwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA9tYAAQAAAADTLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlkZXNjAAAA8AAAAHRyWFlaAAABZAAAABRnWFlaAAABeAAAABRiWFlaAAABjAAAABRyVFJDAAABoAAAAChnVFJDAAABoAAAAChiVFJDAAABoAAAACh3dHB0AAAByAAAABRjcHJ0AAAB3AAAADxtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAFgAAAAcAHMAUgBHAEIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAABvogAAOPUAAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAJKAAAA+EAAC2z3BhcmEAAAAAAAQAAAACZmYAAPKnAAANWQAAE9AAAApbAAAAAAAAAABYWVogAAAAAAAA9tYAAQAAAADTLW1sdWMAAAAAAAAAAQAAAAxlblVTAAAAIAAAABwARwBvAG8AZwBsAGUAIABJAG4AYwAuACAAMgAwADEANv/bAEMAAwICAgICAwICAgMDAwMEBgQEBAQECAYGBQYJCAoKCQgJCQoMDwwKCw4LCQkNEQ0ODxAQERAKDBITEhATDxAQEP/bAEMBAwMDBAMECAQECBALCQsQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEP/AABEIAGAAYAMBIgACEQEDEQH/xAAdAAACAwEAAwEAAAAAAAAAAAAGBwQFCAkAAQMC/8QAORAAAQMCBQIEBAQFAwUAAAAAAQIDBAURAAYHEiExQQgTUWEUInGBIzJCkRVSobHRYnKCCTNTwfD/xAAbAQACAwEBAQAAAAAAAAAAAAAEBgMFBwIAAf/EADARAAEDAwMACQMEAwAAAAAAAAECAxEABCEFEjEGEyIyQVFhcYEUodEzUpHwscHh/9oADAMBAAIRAxEAPwDEOVKpEqEpqRGdCkBwJN+OcHqkKfTZtG49eOcVkbKOUocWVJVQm3XoBKnA04sJdUBfoFcH/OJFeU/TUvN02gMCJAkNxk8AFXmI3pPv17+2OGFN3K+9EUOu3UhorSJH9/7RZlDIWZMzNTHaTCS4iEhT8gl1CfLbCkp3EE36qA49cWNNyDXqnMchU+iVactsbliFT3Hdo9TcAW++CDQ/PkXLITmmdSJLkGEptqehSSlKA7uQlK0psLKPT155vh5Zld1azhSY8/T2oMZYo05DUlthpsMBhPUpKUoKx0BN+FBQtcG2DXrS1Cd6dyvtmomnFwERB/ms9Zo0Pqs3J9eioj1RmrUxhieIkmIlla4ynQFlJKjyE7lWB52G/TBHpDplQsn5ciZ/ytV5brdR2wpkOQAVRngCT8w6i4Pb9Q9cPhcCVPpiaPmOpGQ6YpjyHmt6bNO7k/KpRJvtB73uCeOmAPw9ZSELTLUbKFccCqxQ5q56PMV82xChv2D6tXNutxhcvwWlBtJwfCnDSm23GFOlI3JIz6cU5ckwW3YKJLiipbid1jgsjQiXErWkfm+Xmwt7YEMpzfJpTDsdBW2lAB9Rxg3jTIzrCXyq52ggYqQc4q/bWkCDUytthWX3YiTcOp2qQD+b1GKSjQsxS8yrehymY9KSwlthjaEqSuwvu4ueb8379OMSn5UuZuDY/Cb4JvYYonqiqElxcp4hCeVIR1tx+Yj+2PqAoqxXjDmE8moWZsuzqHPlT3KiHnprqHXELWPk2EFISO3QfvgoyjqGiUlMGpuJJULAqIuk+mFvVczvSX02gltlfHmLbslV7256nocVdNqbsmrJSxSXghs/O4kAJIHcj/HOJ3GintcVKpgpbkGYrnnEza9Rq9SpS57jUGS4XZKCgKUtN7i5A9+1sbUf0g07zNSItbGZ34EOuhl5JQ2koLnlDZuO0lA2j9Vuwv0xh16lJqEqAwFIRtZUeU3/AFJGNaZTylpHmIUav17XWrUJ2mRYyW4kKncsuNsttqstSub+WLi1j74YVu2tkgOXKgkHEmBWe27bt0pTTQJIgwATVg9n9nRLNUfLIyvl6Vl6oNMyE1NpXxbspKQqzqlLOwqaPzBJFu4tuGPhP8RWd3MwUatVPfEokpt9syW2iW30R0qceWGkqC2wGnhZRTypKebBRBk9kLwS1+ZPqOYNRc0SZT7rZbWzFQy1ECE7QhpsDaE2AG03sBxbFhnnRfwbZphsVmZqHnePEVHbjKciQGkML8oEJUbNgFYBIJNzY2vjka9paWSF3KAZgdocH55ohWk3alApZVx+00pMna154i5kqdOzKyZ9Ic3JjzPiXFCajzvJirjJV1SQhYUSSVkLVuJFsNbKj8KTrhHp8VTbbddpzz09tS9m+6Q2tNjYk+YhBPs4D3wKx8j+HbLbTCNNdUs016dDaCY9PqEdLcZLW4q38IAUUlZI5/WT3OF74u8xVDKK8k6kZYWYFTgu70OJvypxAVcg9QS0bjv98I1/0hNxrDWl2+1QUCQoGciSBj0GfX76FYdHUWOgq1d/cJUUkRB2gCcHJyTHt642Hp/RZLMMwpzrLS2FqZWCdxBSbH+2CSbEg08gNlTgNiCeB+2Mz+EbXmdqrSJ1SzM/GFaalqElLI2JN7FKwm5sCDb6g40jOkiS0SFC1iRgpTbrayl08eVVQcadQFtcV+azHqi2GGqRK8tqSCh3ZbcknoQbH6YrmNMZRZJkw0TUuci7x3fcgXP9cSqBUfNWqG+sp2KBJ9AMG8itCnREoRcrKbAgXx2w4pB5xUrLqkdzmgSi6ZstTHAYkOCL3UQnzFfYnj+mChvJdHp0OSxGUhxx1shThAKj/gYgqdqc5a1hSm1dgDbHtj+Lx3lKeUsISnqehGCnl704qR1bqxLiq5O0xFq6x8oOxhfUf60407ptTafmfTCZGotIgpq0JalOPqYSpxRvuBuR0tYW9sZWnTJFNqzb7QSB5ToWVgm/zggC3c2w3PDnqM/Azj/DpD3kxayVx0MEELSQCUFXa9gRx6466aaedR0Ulvvt9sfBMj+KVOid6bHWRuHZWNv+I+4qs1qgyqHm1ypQpkmGxWIzVSbZZdUhtBVYOI2psLA7gcVtXzsuZlBKH50kMBtQW4XVDsQQkX3G/wBcNjNXh01S1PzahMVlmHRaeXGWajLWQHGnF79qUgEqsVK56c9eMMGb/wBPqmQ9P5zMnPU2RVEsqW2ospQwFbbj5eTa/wDqwnafYC4smFujtJg/H5iKcNRW4m9d+m7quPeBP3JrMOn+aJMZqlZiilSwwxtERA+aQwFLZt7qCWQQO5AxeeJnUKg6jadxl0iS66KXUIjJS4yttTYVGWNpCh/MlR9OcKBKpETLkyjtLKXqVNdUhxCvyAKbUkA/UuHEnNqHJGUZDseuyqq2ZDCypSQlCSNwPuSN/X3tg1rSmRqrV6OQohPsY5x5HGQeeat16uu60F+x2d1AUTI5IAJAJBB3Jg7QoegmTWeH7Uitaa6k01UAb49SfbhymVEgKSpQAP1BN/39cdN4efUCM0JjLjblgSlYsSPUeoxlbRfQDTekab0zV3MEB6p1BbAlNJeX+G24VlKAlI44IBubn0xquj0mFmPLsVDrO4hAKF9xx1Bw4awyUKQY5FZ7o7m5CxPBr2xnCI1UG58dwcfK40Ta6cM6jZmoFYbQVSm9osSSeUH3vhRpyOXHFRpLYUAbBQ64skaQSFoDsGe7z0Qo4rW2wOaOW8UmUmnW7UKYy0HUvMqFuPLN+MLXUfWKlUmKqFASJExQ2IZaHKldt3oB+/064p2dJ8wrSWnqi822eqQs/wBsRJmm9OoawsIK3zwp1fJ+3pgoGRUS3lKwa51Gmyq5W4dLhILj8t4MtpA6qUqw/vjo1oF4NcmZNhwK9VICanWLJe+KkpuGlW/Qnon68n3wjvDDoAp6sxc45qZV591OxGLf9psk7VqH8xBuB2HueNt1XNkyiU5NNgKbLxTZIUTf726D3xNqjpQvqZ45/BoTTGElvfGScV7zIjLmU4kifVpjUeKwjct1xQShtI737Yxp4h/GZCNMk5O0olrmvy0KjuVNQIbZQRY+WDyo2JsroLd8NvNWi2rOqbi5OaM6RJEXzlqZhMxnGmUIIICSCo7iAepGFTR/APXaZWG5uYX2KhBaXv8Ah2HS2V89yoDi3a+FR67WypcNKKRxGd3x+YpnabKkhpLqUk4M42+tZX0s0d1Bz/W6pl+iUpchibtW5MWLMsq2rSNyv+YNhc8YdGp/g2qGj2gVazTLzm3UpMcMebFaibG075LQ3BZUSSL26Dg+2NlUaDl3TyJFpAoqqTHSkJSQ0C2Leqk3A+pwN+LusUNXhizfaYysvRmQ1ZQO5QfbVx9hf7YRE9JtXf1lllbfVJK0dkjJiBJJHl5RVy5ptta2auoO+UqSVT4SVRjAE+eazxk15weF+ibVHYhpoL9APilDn729MPnSN8yMuQi5/wCNP9sJDRukycx+HCn0pkDfIiSQwLX3ONyHFpA+pFuPUYYPh3zlFqsAUWS4lE6PcBskArT7D1H9vvjeNYbLjbaxwBWb6S4EOLQfGm5UmlQpAfIuhRHNuMF2VanHeQGXbEm1sQZ8MSYJSUg2FwbYrafAW0j8N1ba08hST0xSIirVcTNHtQlx2EBINj9MLTNDzk+chhu1t3JwStR5UgqdnyFPKTwm/AGKluF8TWL2BCe1umJQABNRkyrFeZWpio7TTdB2rccG1cjbdKbcG3Yn26D+mGDScqUylpFRqii6fzLW4blR9zi2gZcTFb3RmEIaaTtSBYAAYEK47mLMMk06hzWG2RdLkkIK9n+y/BPvyB74r1LJJUrJNSNpEwkwBRDUdatKssy41MqdSjQ5MsqSyh5QSXSkEq2362AJ+gxMh6u6f1xB/hlZpslNrnZIbNv64FaFpPSJMgS6nCYmSkJKfiJCAtw34Njbi/oMX7uiuTZjaky8uU4kC274dAUB9QL4hX9Qf0wD74/0aIP0iTLhPxmquvii15px1C2lIUg2AUFA3GMzeLrKWXzoDmCpR5LjBiwlKbaDlgpy1ikp9b3P2w+K1oXl+kxJf8BdqNPVIBO+NOeGw9ilJUUj9reuMTa6ZA1vgU7NVJr9fn5py2aa67DkOIbQ5GWG1EhxKAAeB+a37YjQkGOubBUCk+cGRkGPDnwolbyA2S0ogEEeWI8c+PHjVh4Ms0U/Mei8CktyCmfQZLzTqBypO9wrSv8A2/Nx7g4vNTchVrLNaXqBkxl5CFKL8plkELYc6qWAP0dz/Kb9rYyF4adRJ+mlTYrbBU5FVJUxOj7uHWTtJFj3HUe/tfHSTK9apWZ6MxV6NMblw5iAtp1uxT1+a/cHsQf/AFbGpu2m+3QojBFIIWpte8UAafeKhX4dMzxBDrZ+X4tgALT/ALk9D9rffDooee8i15aDR8zQ1rXYpaU4EL5/0qscK7N+hGUc2OOTmYT1NmOK3F2FYBSjflSDwL9eAPrgCm+GPM8NZcpWcI7iAbDzo60EC1+dpOF93ScynFWbepSIVWs3nmw0bPpAt6jAdV9UtPcmqc/iFeZdk3I8mN+Iu47G3AP1IwgI2gmpLqkRn82wQ0OuxTqiB1PFh0xewPDjBQ6l7MWY5k1dxuaYQGkqseQVHcbftjhGlKVg19VqSU8Vr4ZbrNWaQmu1FakWv8MzcN/8vXEyXU8vZOiJRJCElIslCeVKPskc48p2aXpkESYUMuqdHyqJsMfCHSHJ0r4up7HF3uAlISlJ9R6n3POFkQDgVblM5Xx5VQVjNOfauw47k+FDhJT+UzN3PuUjn7YqKgvWlTDTtPrlPLhH4pfQvYTxfalPI79Txxg5qNUpOW0OOTH2G0OfKASAVKJ4AHUm+A2v6yUHL0QszIkllR3eWlbKgtyw6JSRc9Owx4NlUiTNTqdCUp2gRSfp+t+udN1LqGSs9ZLaepjbYMKdTbuecs32JUFEW3EWvxb0OBbVTX3IFVhZgySy8Ha/NhOQ3YW5JSytYKfmWCU8bjcXvxiLqVrPk6qZzoFQnZYekkqS62qU45DRGUeEuOEDeBYngAHm+FvqvWKRCzvUqZlGDlnLVPOwqq0dpUiS4do+YLd63J/ONoAPFsWVuxatW/1Fy7BmIx7eEmT7ChVu3fX9U03uBHl/RWLciHy402K8vy3GpCgpJJBSbD/Bw8dIdbM1aXTFIhgTKU8oKfgursi1+Sg3+VVhyfTqDYWecHQ3QLOmR2M51ipMUWWPNM+piYiK680mxLxHCSLrtvUhSSQRvBsnGOaVPamVaqx4D6plNhy3GoM4tFr4pkKIS4Uc7bpAJHa9saZpN004wi2cTyJHkRzS1cNKacKVcit95Q8UGmGY2ttWqS6JLFrtS0fKeey03TxfvY9cMmFnrKlQAXT8zUyahaiNzMtC7Dv3/YY5rXVbeEqCh35uLf8Axx42vyAra4tJHoo8n6D6YNc0llRlMj70MK6fOV2lNoC5dTgtpuVKK30jt39v84F6xrBpzQbJq2d6W2u/5EO+Y4BbulNyP27euOdS3lufIqW8oN9LkgD6Y+AdQkEqSSbXG4+v15xyjSGh3lE/EfmvQK//2Q==", + "reference": null, + "reference_hash": null, + "decimals": 0 + }, + "neardoge.tkn.near": { + "spec": "ft-1.0.0", + "name": "neardoge", + "symbol": "neardoge", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "akaia.tkn.near": { + "spec": "ft-1.0.0", + "name": "Akaia", + "symbol": "AKAIA", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "token.pembrock.near": { + "spec": "ft-1.0.0", + "name": "PembRock", + "symbol": "PEM", + "icon": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCAyMDAgMjAwIj48cGF0aCBmaWxsPSIjMUUxRTFGIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMTMuMiAxNzAuNDJhODMuNTEgODMuNTEgMCAwIDAgNzAuNy04Mi42IDgzLjUgODMuNSAwIDAgMC01Ljc4LTMwLjYxbDEzLjY4LTIzLjg3aC0yOC4wOGE4My4xIDgzLjEgMCAwIDAtNjMuMi0yOS4wNiA4My4xIDgzLjEgMCAwIDAtNjMuMiAyOS4wNkg4LjU4TDIyLjcgNTcuNzhhODMuNSA4My41IDAgMCAwLTUuNTUgMzAuMDUgODMuNTEgODMuNTEgMCAwIDAgNzAuNiA4Mi41N2wxMi43NyAyMi4xMSAxMi42Ny0yMi4xWiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PHBhdGggZmlsbD0iI0VBRUNFRiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAwLjUzIDcuOTJBNzguNjYgNzguNjYgMCAwIDAgNDAuNjEgMzUuNmwtMS4xOCAxLjE3SDE2LjY1TDI4LjIzIDU3LjFsLS42OCAxLjc3Yy0zLjQgOC44Ny02LjA3IDE4LjEtNi4wNyAyOC4yIDAgMzkuNzcgMjkuMDMgNzMuMTQgNjYuOTQgNzlsMS44Ni4zIDEwLjM0IDE3Ljc5IDEwLjA2LTE3Ljc4IDEuODctLjNjMzcuOTUtNS44MSA2Ny4wMy0zOC44IDY3LjAzLTc4LjYxIDAtMTAuMy0yLjI0LTIwLjEzLTUuNzgtMjkuMTVsLS42OS0xLjc4IDExLjE4LTE5Ljc3aC0yMi42NWwtMS4xOC0xLjE3YTc4LjY2IDc4LjY2IDAgMCAwLTU5LjkzLTI3LjY3Wk0zNS44NCAyOS4wNEE4Ni40OCA4Ni40OCAwIDAgMSAxMDAuNTQgMGE4Ni40OCA4Ni40OCAwIDAgMSA2NC42OCAyOS4wNGgzMi42N0wxODEuODEgNTcuMmMzLjQ2IDkuNDMgNS42NSAxOS42MyA1LjY1IDMwLjI2IDAgNDMuMTItMzEuMDIgNzguOTUtNzEuODMgODYuMTRMMTAwLjY1IDIwMGwtMTUuMy0yNi40MmMtNDAuNzctNy4yMy03MS43NC00My40NC03MS43NC04Ni41MyAwLTEwLjQgMi42Mi0xOS45OSA1LjkzLTI5LjI1TDMgMjkuMDRoMzIuODRaIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48cGF0aCBmaWxsPSIjRjY4MjFGIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Im0zMS44NSA0NS40MSA2OC43NSAxMjAuNDIgOC4wNi0xNC4xMi0yNy40Ny00OC4xM2gyNC4zTDcyLjMzIDQ1LjRIMzEuODVabTQ5LjE5IDAgNDQuMTUgNzcuMzIgNy42Ny0xMy40NC0yOC4xOC00OS4zNGg4LjM3bDIzLjk5IDQyLjAyTDE0NSA4OGwtMTYuMDItMjguMDVoMTYuNDJsLTQuNDMgNy43NiA3LjgxIDEzLjcgMjAuNTctMzZIODEuMDRaTTU2LjMgNTkuOTVsMTYuNjIgMjkuMTFoOC42N0w2NC45NyA1OS45NUg1Ni4zWk00NC4yIDg0LjZhNTYuNjUgNTYuNjUgMCAwIDAgMzEuMDUgNTQuMTJsNi4zMiAxMS4wMWE2NC40NSA2NC40NSAwIDAgMS00NS4yOS02MS43YzAtNC45Ny41Ni05LjggMS42LTE0LjQ0bDYuMzMgMTEuMDJabTc5LjY1LTQ3LjlhNTUuNDYgNTUuNDYgMCAwIDAtMjMuNjYtNS4yNyA1NS40NSA1NS40NSAwIDAgMC0yMy42NSA1LjI2SDYxLjVhNjMuMjYgNjMuMjYgMCAwIDEgMzguNy0xMy4xNmMxNC41NCAwIDI3Ljk1IDQuOSAzOC43IDEzLjE2aC0xNS4wNVoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjxwYXRoIGZpbGw9IiNGNjgyMUYiIGQ9Ik00NC4xIDg4LjAyYzAtMS4xNC4wNC0yLjI4LjEtMy40MWwtNi4zLTExLjAyYTY1LjI2IDY1LjI2IDAgMCAwLTEuNiAxNC40MyA2NC40NSA2NC40NSAwIDAgMCA0NS4yOCA2MS43MWwtNi4zMS0xMWE1Ni42NSA1Ni42NSAwIDAgMS0zMS4xNS01MC43Wm0xMTMuMTIgMGMwLTEuMTQtLjItMi4yOC0uMjctMy40MWw2LjI1LTExLjAyYTY1LjMxIDY1LjMxIDAgMCAxIDEuODQgMTQuNDMgNjQuNDUgNjQuNDUgMCAwIDEtNDUuMjkgNjEuNzFsNi4zMS0xMWE1Ni42NSA1Ni42NSAwIDAgMCAzMS4xNi01MC43WiIvPjwvc3ZnPg==", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "asc.tkn.near": { + "spec": "ft-1.0.0", + "name": "Art Stars Club", + "symbol": "ASC", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 10 + }, + "dan.tkn.near": { + "spec": "ft-1.0.0", + "name": "Danny Token", + "symbol": "dan", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "rimjob.tkn.near": { + "spec": "ft-1.0.0", + "name": "Simps 4 Rim", + "symbol": "RIMJOB", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "chf.tkn.near": { + "spec": "ft-1.0.0", + "name": "Helvetia", + "symbol": "CHF", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "token.v2.ref-finance.near": { + "spec": "ft-1.0.0", + "name": "Ref Finance Token", + "symbol": "REF", + "icon": "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='16 24 248 248' style='background: %23000'%3E%3Cpath d='M164,164v52h52Zm-45-45,20.4,20.4,20.6-20.6V81H119Zm0,18.39V216h41V137.19l-20.6,20.6ZM166.5,81H164v33.81l26.16-26.17A40.29,40.29,0,0,0,166.5,81ZM72,153.19V216h43V133.4l-11.6-11.61Zm0-18.38,31.4-31.4L115,115V81H72ZM207,121.5h0a40.29,40.29,0,0,0-7.64-23.66L164,133.19V162h2.5A40.5,40.5,0,0,0,207,121.5Z' fill='%23fff'/%3E%3Cpath d='M189 72l27 27V72h-27z' fill='%2300c08b'/%3E%3C/svg%3E%0A", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "lpbot.near": { + "spec": "ft-1.0.0", + "name": "LiquidityProviderBot", + "symbol": "LPB", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 6 + }, + "stake.tkn.near": { + "spec": "ft-1.0.0", + "name": "Stake University", + "symbol": "Stake", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "bsa.tkn.near": { + "spec": "ft-1.0.0", + "name": "BigShortAlliance", + "symbol": "BSA", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "ralfusha.tkn.near": { + "spec": "ft-1.0.0", + "name": "Ralfusha token", + "symbol": "Ralfusha", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "c944e90c64b2c07662a292be6244bdf05cda44a7.factory.bridge.near": { + "spec": "ft-1.0.0", + "name": "Graph Token", + "symbol": "GRT", + "icon": null, + "reference": "", + "reference_hash": "", + "decimals": 18 + }, + "flobo.tkn.near": { + "spec": "ft-1.0.0", + "name": "Flobo", + "symbol": "FLOBO", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "apys.token.a11bd.near": { + "spec": "ft-1.0.0", + "name": "APYSwap", + "symbol": "APYS", + "icon": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgdmlld0JveD0iLTEwIC0xMCAxMjAgMTIwIiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfMTQ2OF81MTk1KSI+CjxwYXRoIGQ9Ik0zOC40MzUzIDEyLjY4NUw3NC41ODY5IDc3Ljg2NzdMOTguOTk5OSA3OC41NjYzTDYyLjY3NDkgMTMuMzc4N0wzOC40MzUzIDEyLjY4NVoiIGZpbGw9InVybCgjcGFpbnQwX2xpbmVhcl8xNDY4XzUxOTUpIi8+CjxwYXRoIGQ9Ik0xMi43NjcyIDU1LjQwNzFMODYuOTM2NiA1Ni42MzI2TDk4Ljk5ODIgNzcuODM0OEwwLjAxMTcwNDYgNzYuMTk5MkwxMi43NjcyIDU1LjQwNzFaIiBmaWxsPSJ1cmwoI3BhaW50MV9saW5lYXJfMTQ2OF81MTk1KSIvPgo8cGF0aCBkPSJNNjIuMjQxMSAxMy4wOTRMMjMuODY5OCA3Ny4wODU2TC0wLjUxMDgwNSA3Ni45MTIyTDM3Ljg2NzMgMTIuOTIwN0w2Mi4yNDExIDEzLjA5NFoiIGZpbGw9InVybCgjcGFpbnQyX2xpbmVhcl8xNDY4XzUxOTUpIi8+CjwvZz4KPGRlZnM+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhcl8xNDY4XzUxOTUiIHgxPSI1NS45Njc3IiB5MT0iMjMuODc4MSIgeDI9Ijg1LjQ4MjUiIHkyPSI3Ny4wMTI2IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IiMwOEFFRUEiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMkFGNTk4Ii8+CjwvbGluZWFyR3JhZGllbnQ+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQxX2xpbmVhcl8xNDY4XzUxOTUiIHgxPSIyOS40ODcxIiB5MT0iNjcuODQzIiB4Mj0iNjguOTYzNiIgeTI9IjY4LjgwMzIiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0iIzA4QUVFQSIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMyQUY1OTgiLz4KPC9saW5lYXJHcmFkaWVudD4KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDJfbGluZWFyXzE0NjhfNTE5NSIgeDE9IjUxLjk4MzUiIHkxPSIzLjEzMzQ1IiB4Mj0iMzEuMjQxOCIgeTI9IjM2LjE3MzUiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0iIzA4QUVFQSIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMyQUY1OTgiLz4KPC9saW5lYXJHcmFkaWVudD4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xNDY4XzUxOTUiPgo8cmVjdCB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgZmlsbD0id2hpdGUiLz4KPC9jbGlwUGF0aD4KPC9kZWZzPgo8L3N2Zz4=", + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "0316eb71485b0ab14103307bf65a021042c6d380.factory.bridge.near": { + "spec": "ft-1.0.0", + "name": "Huobi BTC", + "symbol": "HBTC", + "icon": "data:image/svg+xml,%3C%3Fxml version='1.0' standalone='no'%3F%3E%3C!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN' 'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'%3E%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' id='body_1' width='32' height='32'%3E%3Cg transform='matrix(1.3333334 0 0 1.3333334 0 0)'%3E%3Cimage x='0' y='0' xlink:href='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAA/tJREFUWIXtln9oVWUYxz/vOc67iWtNS9IkjcSui8RUsv40TbLfVoZE5R+li1JJioqYFlKI/bBQo+417A+pTSgkiH5p0ETIBIvaaosiRcRqYVM3t3Oe97zv0x+eO27jXt1kWoFfOJzDeX59npf3fc6B8/o/atNXOmKocgVnEmSt3vOvAaxr1stEdN5QAQwbbIAV7kO0dqgABrUCDR9rpVhdJqIO4KUdmjmnAEnCMon0Uom18/ltekXVSNafM4CVH+h4SVglkUdEDwELgoBHNu7RG846wIomb2xCXoQLpMdhRX8GrnWWwMDWV5v9mLMK0JuYx8QyX3ocNlZEtAWY3HPcE51w47z4rU9t1zM60qc9BYu36ExreQWArgTjNB5WEbaqMjE+AVZcZAzhyMBPA74ZUoBFeT/aJrwPZJAE0+sA9o2p9aPiKCYMg2dC53NrFlUdHWzhAQEk1mzGMAFVzFEBpxjDrrg3qg3CYOr6+pqDUT477tlc9iHgOqAW6AT2YGisXNp++HQAppzhttf9LcaYjwDoEUy3ABAYbtz+QvXOOHdVqLjVwNNAqXkQA+sM4ZpM/Q+uXJ2yG8cmZpVYEFFspyCxYkW7vHO7JV8XKK4RWN2v+ALgMNCUvl+tuEbJ15WtU9Iwe63WiWWWWLBdFht5rCgS66YP114YefVPAgsLrMBc4DmD+Q5oAT4vSrcw9R84gLXMEQtiQdLuJVa1lrfi3JQaoKHIvQK4tbK+fU2mvm1/EAY3pxDfFvk0pHEDAxDLlWIViRy2O0FEEdG25jdrDip6O1BdKk+Uy272zjdhOATcVWSvTuMGCJBQJYkpLo6I/pSap5cI2Zne64C7USabwPwB+CKfUnFlV6BDrCLdCTbWwtVd6KafuzXGfBnlspOAN4wJLq+sb9+lXh/tl79/XHkAm+hesWB7fd8KxHHfP0BHkWsvsCWztK0LuBd4V9X/GOWzNZycB8XqoIRKDqLEmU+d0yNBwmgTa+H1tAnzOg1cv7vItRl4OX1uArqA2iAIurzzyj+1mxIquQL7N5pem/CimLB4D4y3ksw0ATuAA6nrTcAvcX7KJOABjNlmCPLe6QxOzoiCDpjA7BgwAEDizIZ4+PBPxFI4hljxT2SWtFtgOVDo8IiqzgXGovq44n8D3QtMTO0KLM8sabOl6pQdxQCjFmuV6+h+jz9P3NmXTJl/bN8ln0W57ArgtaImfgdC4OKiFB5YWVnfvqFcjVMCAIy43xtz8NiDelwacH6SwhFVZketY1uiXHZOCnF1idCWtPgXp8p/WoCCLrrDmuO//jWdxF+jQEXIOz2tY52+PdXEzs4AnUXf19B8nQkr9pmHv++/Ec/rv6e/AQ/TFRmUSxQZAAAAAElFTkSuQmCC' width='24' height='24'/%3E%3C/g%3E%3C/svg%3E", + "reference": "", + "reference_hash": "", + "decimals": 18 + }, + "nmeme.tkn.near": { + "spec": "ft-1.0.0", + "name": "NEAR MEME DAILY", + "symbol": "nMEME", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "coin.asac.near": { + "spec": "ft-1.0.0", + "name": "Antisocial Ape Coin", + "symbol": "$ASAC", + "icon": "data:image/svg+xml,%3Csvg version='1.1' id='Level_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 800 800' style='enable-background:new 0 0 800 800;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0%7Bfill:%23FFFFFF;%7D%0A%3C/style%3E%3Cg id='Path_1'%3E%3Ccircle cx='400.05' cy='399.58' r='400'/%3E%3C/g%3E%3Cpath id='Path_2' class='st0' d='M750.03,251.73c-19.13-45.23-46.52-85.85-81.4-120.73c-34.88-34.88-75.5-62.27-120.73-81.4 c-46.83-19.81-96.58-29.85-147.85-29.85S299.03,29.79,252.2,49.6c-45.23,19.13-85.85,46.52-120.73,81.4 c-34.88,34.88-62.27,75.5-81.4,120.73c-19.81,46.83-29.85,96.58-29.85,147.85S30.26,500.6,50.07,547.43 c19.13,45.23,46.52,85.85,81.4,120.73c34.88,34.88,75.5,62.27,120.73,81.4c46.83,19.81,96.58,29.85,147.85,29.85 s101.02-10.04,147.85-29.85c45.23-19.13,85.85-46.52,120.73-81.4c34.88-34.88,62.27-75.5,81.4-120.73 c19.81-46.83,29.85-96.58,29.85-147.85S769.84,298.56,750.03,251.73z M520.56,61.71c4.78,16.32,10.19,34.78,25.12,49.71 c14.94,14.94,33.4,20.35,49.69,25.12c16.18,4.74,31.43,9.21,43.9,21.68c12.48,12.48,16.95,27.74,21.68,43.89 c4.77,16.3,10.18,34.77,25.12,49.7c14.94,14.94,33.41,20.35,49.7,25.12c4.66,1.36,9.23,2.72,13.69,4.24 c9.99,29.48,16.34,60.64,18.54,92.94c-4.35-14-10.18-28.84-22.58-41.24c-14.94-14.94-33.41-20.35-49.7-25.12 c-16.16-4.73-31.42-9.2-43.9-21.68c-12.48-12.49-16.95-27.75-21.68-43.9c-4.77-16.29-10.18-34.76-25.12-49.7 c-14.94-14.94-33.4-20.35-49.7-25.11c-16.16-4.73-31.42-9.2-43.9-21.68c-12.47-12.48-16.95-27.74-21.68-43.89 c-4.77-16.3-10.17-34.76-25.12-49.7c-10.16-10.16-21.94-15.9-33.57-20.04c29.74,2.48,58.49,8.48,85.8,17.6 C518.17,53.59,519.36,57.62,520.56,61.71z M743.58,265.06c-1.33-0.4-2.67-0.8-3.98-1.18c-16.17-4.74-31.43-9.21-43.9-21.68 c-12.48-12.48-16.95-27.75-21.68-43.9c-4.77-16.29-10.18-34.76-25.12-49.7c-14.93-14.93-33.39-20.34-49.68-25.11 c-16.19-4.74-31.44-9.21-43.91-21.69c-12.48-12.48-16.94-27.74-21.68-43.89c-0.24-0.83-0.5-1.67-0.74-2.51 C629.17,92.59,705.93,169.01,743.58,265.06z M101.05,615.57c3.97,1.3,7.9,2.46,11.7,3.58c16.19,4.74,31.45,9.21,43.93,21.69 c12.48,12.48,16.95,27.74,21.68,43.9c1.19,4.06,2.42,8.25,3.83,12.49C151.07,674.41,123.67,646.83,101.05,615.57z M202.93,711.37 c-5.34-9.39-8.38-19.73-11.52-30.46c-4.77-16.3-10.18-34.76-25.11-49.69c-14.93-14.93-33.4-20.34-49.69-25.12 c-10.29-3.01-20.21-5.94-29.28-10.87c-28.74-45.84-47.67-98.44-53.88-154.88c9.7,3.58,18.77,8.28,26.7,16.22 c12.48,12.47,16.95,27.74,21.68,43.89c4.77,16.3,10.18,34.77,25.12,49.7c14.94,14.93,33.4,20.34,49.69,25.11 c16.17,4.74,31.43,9.21,43.9,21.68c12.48,12.48,16.95,27.74,21.68,43.9c4.77,16.29,10.18,34.76,25.12,49.7 c14.93,14.93,33.38,20.33,49.66,25.11c16.19,4.74,31.46,9.21,43.93,21.69c8.47,8.47,13.25,18.22,16.92,28.67 C301.36,759.59,248.73,740.38,202.93,711.37z M743.44,534.44c-14.32-4.27-27.76-9.02-38.97-20.23 c-12.47-12.47-16.94-27.72-21.67-43.87c-4.78-16.33-10.19-34.8-25.13-49.73c-12.06-12.06-26.43-17.91-40.09-22.23v14.3 c11.13,3.76,21.52,8.59,30.48,17.54c12.48,12.48,16.95,27.74,21.68,43.9c4.78,16.3,10.19,34.76,25.12,49.7 c13.03,13.03,28.74,18.8,43.35,23.23c-5.61,12.84-11.93,25.3-18.91,37.33c-5.01-1.74-9.98-3.22-14.76-4.62 c-16.2-4.74-31.46-9.21-43.94-21.69c-12.48-12.48-16.95-27.74-21.68-43.9c-4.34-14.83-9.24-31.45-21.34-45.58v25.31 c3.45,7.62,5.84,15.73,8.29,24.09c4.77,16.29,10.17,34.76,25.12,49.69c14.93,14.93,33.4,20.35,49.69,25.12 c3.87,1.13,7.68,2.26,11.42,3.48c-7.95,12.59-16.64,24.66-26.02,36.16c-8.55-3.84-17.27-6.42-25.44-8.81 c-16.16-4.73-31.42-9.21-43.9-21.68c-12.47-12.47-16.94-27.72-21.67-43.87c-0.38-1.31-0.77-2.64-1.17-3.97 c-3.96,1.73-8.26,2.82-12.77,3.15c-0.03,0.41-0.08,0.82-0.12,1.23c0.33,1.12,0.66,2.25,0.99,3.38 c4.78,16.31,10.19,34.78,25.12,49.71c14.94,14.93,33.4,20.34,49.69,25.11c6.91,2.02,13.65,4.02,20.09,6.59 c-10.47,11.88-21.69,23.08-33.59,33.53c-8.9-4.12-18.02-6.81-26.55-9.31c-16.17-4.74-31.43-9.2-43.9-21.68 c-12.48-12.47-16.95-27.74-21.68-43.89c-0.84-2.87-1.7-5.8-2.63-8.77c-1.25,0.21-2.51,0.37-3.8,0.47 c-0.44,6.12-2.3,11.85-5.23,16.87c4.5,15.06,10.2,31.44,23.71,44.95c14.94,14.94,33.41,20.35,49.7,25.12 c6.43,1.89,12.72,3.74,18.74,6.06c-13.5,10.91-27.79,20.88-42.76,29.82c-5.44-1.93-10.85-3.54-16.03-5.06 c-16.17-4.74-31.43-9.21-43.9-21.68c-12.48-12.48-16.95-27.74-21.68-43.89c-0.45-1.55-0.92-3.12-1.39-4.71 c-2.15,5.62-5.54,10.62-9.85,14.67c4.45,14.68,10.22,30.47,23.29,43.55c14.94,14.94,33.41,20.34,49.7,25.12 c1.25,0.37,2.48,0.73,3.71,1.1c-18.74,9.95-38.45,18.34-58.94,24.98c-10.47-3.68-20.24-8.46-28.72-16.94 c-12.48-12.48-16.95-27.74-21.68-43.9c-2.19-7.47-4.52-15.39-7.83-23.22h-14.92c4.24,8.46,6.93,17.59,9.7,27.04 c4.77,16.29,10.18,34.76,25.12,49.69c5.61,5.61,11.72,9.87,18.02,13.26c-19.62,5.12-39.87,8.68-60.62,10.51 c-6.57-10.35-10-22.02-13.34-33.42c-4.77-16.29-10.18-34.76-25.11-49.69c-14.94-14.93-33.4-20.35-49.7-25.12 c-16.17-4.74-31.43-9.21-43.9-21.68c-2.34-2.34-4.4-4.78-6.24-7.31c-7.79-1.03-14.88-4.35-20.55-9.26 c3.9,9.16,9.16,18.18,17.16,26.18c14.92,14.93,33.38,20.34,49.67,25.11c16.2,4.75,31.45,9.21,43.92,21.69 c12.48,12.48,16.95,27.74,21.68,43.9c2.88,9.82,6,20.45,11.3,30.61c-5.88,0.28-11.8,0.43-17.75,0.43c-9.21,0-18.35-0.34-27.4-1.01 c-4.31-13.54-10.15-27.73-22.09-39.67c-14.94-14.94-33.4-20.35-49.7-25.12c-16.16-4.73-31.42-9.2-43.9-21.68 c-12.47-12.47-16.94-27.73-21.68-43.88c-4.78-16.31-10.19-34.78-25.12-49.71c-14.94-14.94-33.41-20.35-49.7-25.12 c-16.16-4.73-31.42-9.21-43.9-21.68c-12.48-12.48-16.95-27.74-21.68-43.9c-4.77-16.29-10.18-34.76-25.12-49.7 c-11.35-11.35-24.73-17.19-37.65-21.44c-0.59-8.56-0.9-17.21-0.9-25.92c0-6.3,0.16-12.57,0.47-18.79 c9.5,4.64,19.31,7.54,28.44,10.21c16.16,4.73,31.42,9.21,43.9,21.68c12.47,12.47,16.94,27.72,21.67,43.87 c4.78,16.32,10.19,34.79,25.12,49.73c11.49,11.49,25.07,17.33,38.14,21.59c-0.82-3.15-1.26-6.45-1.26-9.86v-4.94 c-9.92-3.61-19.18-8.33-27.26-16.42c-12.48-12.47-16.95-27.73-21.68-43.88c-4.78-16.31-10.18-34.78-25.12-49.72 c-14.94-14.94-33.4-20.34-49.69-25.12c-10.6-3.11-21.44-6.29-31.22-12c1.82-20.09,5.24-39.71,10.15-58.74 c3.07,5.16,6.78,10.15,11.43,14.8c14.92,14.92,33.38,20.33,49.66,25.11c16.2,4.74,31.46,9.21,43.94,21.69 c1.23,1.23,2.36,2.49,3.44,3.78V353.7c-13.66-10.86-29.4-15.48-43.5-19.62c-16.18-4.74-31.44-9.21-43.92-21.68 c-7.38-7.38-11.95-15.74-15.44-24.68c6.52-20.52,14.79-40.27,24.64-59.06c4.76,16.25,10.19,34.61,25.05,49.48 c14.94,14.93,33.41,20.34,49.7,25.12c1.43,0.42,2.84,0.83,4.25,1.25c0.92-4.57,2.64-8.85,5-12.7c-1.83-0.55-3.64-1.08-5.43-1.61 c-16.16-4.73-31.42-9.2-43.9-21.68c-12.47-12.47-16.94-27.73-21.68-43.88c-1.18-4.05-2.42-8.23-3.82-12.45 c8.92-15.09,18.88-29.48,29.78-43.08c1.78,5.02,3.31,10.19,4.85,15.47c4.77,16.29,10.18,34.76,25.12,49.7 c14.84,14.83,33.15,20.27,49.36,25.02c2.07-4.41,4.93-8.37,8.41-11.7c-1.42-0.42-2.83-0.84-4.22-1.25 c-16.19-4.74-31.45-9.21-43.93-21.69c-12.48-12.48-16.95-27.74-21.68-43.9c-2.22-7.57-4.59-15.6-7.97-23.53 c10.38-11.9,21.51-23.13,33.33-33.61c2.04,5.53,3.75,11.25,5.46,17.1c4.78,16.31,10.19,34.77,25.12,49.7 c14.12,14.12,31.41,19.72,47.02,24.33c3.52-4.3,7.92-7.85,12.94-10.36c-2.17-0.66-4.33-1.29-6.44-1.91 c-16.16-4.73-31.42-9.2-43.9-21.68c-12.49-12.49-16.95-27.75-21.68-43.9c-2.13-7.27-4.41-14.97-7.58-22.6 c11.4-9.35,23.36-18.03,35.84-25.98c0.87,2.81,1.72,5.64,2.56,8.52c4.77,16.29,10.17,34.76,25.12,49.69 c14.26,14.26,31.72,19.83,47.45,24.46c6.39-4.48,14.16-7.11,22.54-7.11H300c-5.66-2.04-11.29-3.7-16.68-5.28 c-16.17-4.74-31.43-9.21-43.9-21.68c-12.48-12.48-16.95-27.74-21.68-43.9c-1.14-3.9-2.34-7.92-3.67-11.99 c11.99-7.01,24.41-13.37,37.21-19.02c4.34,13.84,10.17,28.43,22.4,40.66c14.93,14.93,33.4,20.34,49.69,25.11 c16.17,4.74,31.43,9.21,43.91,21.69c4.48,4.47,7.91,9.31,10.71,14.41h15.14c-3.8-8.41-8.85-16.65-16.23-24.03 c-14.94-14.94-33.41-20.35-49.7-25.12c-16.16-4.73-31.42-9.2-43.9-21.68c-10.51-10.51-15.34-23-19.42-36.32 c13.51-5.37,27.42-9.97,41.66-13.73c3.18,5.52,7.07,10.85,12.01,15.8c14.94,14.93,33.4,20.34,49.7,25.12 c16.17,4.74,31.43,9.2,43.9,21.68c12.48,12.48,16.95,27.73,21.68,43.89c1.37,4.67,2.8,9.51,4.47,14.4h14.43 c-2.22-5.86-4.02-11.96-5.85-18.2c-4.78-16.3-10.18-34.77-25.12-49.71c-14.92-14.92-33.38-20.33-49.66-25.1 c-16.2-4.75-31.46-9.21-43.94-21.69c-3.03-3.03-5.57-6.22-7.77-9.55c21.33-4.76,43.35-7.67,65.89-8.56 c8.67,3.94,17.53,6.55,25.83,8.98c16.16,4.73,31.42,9.2,43.9,21.68c12.48,12.48,16.95,27.74,21.68,43.9 c4.78,16.3,10.18,34.76,25.12,49.69c14.93,14.94,33.4,20.34,49.69,25.12c16.17,4.74,31.43,9.21,43.91,21.68 c12.48,12.49,16.95,27.75,21.68,43.9c4.77,16.29,10.18,34.76,25.12,49.7c14.92,14.92,33.38,20.33,49.66,25.11 c16.19,4.74,31.45,9.21,43.94,21.69c12.48,12.48,16.95,27.74,21.68,43.9c2.82,9.64,5.89,20.04,11.01,30.03 c-0.97,21.58-3.79,42.68-8.31,63.13c-4.16-2.51-8.12-5.5-11.83-9.21c-12.47-12.47-16.94-27.73-21.68-43.88 c-4.78-16.32-10.19-34.78-25.12-49.7c-14.94-14.94-33.4-20.35-49.69-25.12c-12.22-3.58-23.91-7.01-34.28-13.85v15.69 c10.11,5.24,20.67,8.35,30.44,11.22c16.18,4.74,31.43,9.21,43.91,21.68c12.47,12.47,16.94,27.73,21.67,43.88 c4.78,16.32,10.19,34.78,25.12,49.71c5.65,5.64,11.8,9.9,18.14,13.3C753.19,507.34,748.7,521.08,743.44,534.44z M578.23,266.59 h-11.95c-8.31,0-15.06-6.76-15.06-15.06v-11.95c0-5.16-4.19-9.35-9.35-9.35h-11.95c-8.31,0-15.06-6.76-15.06-15.06v-11.95 c0-5.16-4.19-9.35-9.35-9.35H299.79c-5.16,0-9.35,4.19-9.35,9.35v11.95c0,8.31-6.76,15.06-15.06,15.06h-11.95 c-5.16,0-9.35,4.19-9.35,9.35v11.95c0,8.31-6.76,15.06-15.06,15.06h-11.95c-5.16,0-9.35,4.19-9.35,9.35v11.95 c0,8.31-6.76,15.06-15.07,15.06H190.7c-5.16,0-9.35,4.19-9.35,9.35v96.62c0,5.16,4.19,9.35,9.35,9.35h11.95h0 c8.31,0,15.06,6.76,15.06,15.06v84.68c0,5.16,4.19,9.35,9.35,9.35h11.95c8.31,0,15.06,6.76,15.06,15.06v11.95 c0,5.16,4.19,9.35,9.35,9.35h11.95c8.31,0,15.06,6.76,15.06,15.06v11.95c0,5.16,4.19,9.35,9.35,9.35h48.31 c8.31,0,15.06,6.76,15.06,15.06v11.95c0,5.16,4.19,9.35,9.35,9.35h96.62c5.16,0,9.35-4.19,9.35-9.35v-11.95 c0-8.31,6.76-15.06,15.06-15.06h11.95c5.16,0,9.35-4.19,9.35-9.35V578.8c0-8.31,6.76-15.06,15.06-15.06h11.95 c5.16,0,9.35-4.19,9.35-9.35v-11.95c0-8.31,6.76-15.06,15.06-15.06h11.95c5.16,0,9.35-4.19,9.35-9.35V275.94 C587.58,270.79,583.39,266.59,578.23,266.59z M472.26,566.85v11.95c0,8.31-6.76,15.06-15.06,15.06h-72.73 c-8.31,0-15.06-6.76-15.06-15.06v-11.95c0-5.16-4.19-9.35-9.35-9.35h-48.31c-8.31,0-15.07-6.76-15.07-15.06v-11.95 c0-5.16-4.19-9.35-9.35-9.35h-11.95c-8.31,0-15.06-6.76-15.06-15.06V421.4c0-5.16-4.19-9.35-9.35-9.35h-11.95 c-8.31,0-15.06-6.76-15.06-15.06v-72.73c0-8.31,6.76-15.06,15.06-15.06h11.95c5.16,0,9.35-4.19,9.35-9.35v-11.95 c0-8.31,6.76-15.06,15.06-15.06h11.95c5.16,0,9.35-4.19,9.35-9.35v-11.95c0-8.31,6.76-15.06,15.07-15.06h181.82 c8.31,0,15.06,6.76,15.06,15.06v11.95c0,5.16,4.19,9.35,9.35,9.35h11.95c8.31,0,15.06,6.76,15.06,15.06v218.18 c0,8.31-6.76,15.06-15.06,15.06c-8.31,0-15.06-6.76-15.06-15.06v-11.95c0-5.16-4.19-9.35-9.35-9.35H384.46 c-8.31,0-15.06-6.76-15.06-15.06v-11.95c0-5.16-4.19-9.35-9.35-9.35h-23.9c-5.16,0-9.35,4.19-9.35,9.35v23.9 c0,5.16,4.19,9.35,9.35,9.35h11.95c8.31,0,15.06,6.76,15.06,15.06v11.95c0,5.16,4.19,9.35,9.35,9.35h121.04 c8.31,0,15.06,6.76,15.06,15.06c0,8.31-6.76,15.06-15.06,15.06h-11.95C476.45,557.5,472.26,561.7,472.26,566.85z M472.26,372.57 v-60.26c0-5.16,4.19-9.35,9.35-9.35h23.9c5.16,0,9.35,4.19,9.35,9.35v60.26c0,5.16-4.19,9.35-9.35,9.35h-23.9 C476.45,381.92,472.26,377.72,472.26,372.57z M363.17,372.57v-60.26c0-5.16,4.19-9.35,9.35-9.35h23.9c5.16,0,9.35,4.19,9.35,9.35 v60.26c0,5.16-4.19,9.35-9.35,9.35h-23.9C367.36,381.92,363.17,377.72,363.17,372.57z M408.88,412.05h23.9 c5.16,0,9.35,4.19,9.35,9.35v23.9c0,5.16-4.19,9.35-9.35,9.35h-23.9c-5.16,0-9.35-4.19-9.35-9.35v-23.9 C399.53,416.24,403.72,412.05,408.88,412.05z M472.26,445.29v-23.9c0-5.16,4.19-9.35,9.35-9.35h23.9c5.16,0,9.35,4.19,9.35,9.35 v23.9c0,5.16-4.19,9.35-9.35,9.35h-23.9C476.45,454.65,472.26,450.45,472.26,445.29z'/%3E%3C/svg%3E", + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "marmaj.tkn.near": { + "spec": "ft-1.0.0", + "name": "marma j token", + "symbol": "marmaj", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "lgbt.tkn.near": { + "spec": "ft-1.0.0", + "name": "Hey👏hey👏Ho👏ho👏Homophobia's👏got👏to👏go👏", + "symbol": "LGBT", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "wnear.mocks.near": { + "spec": "ft-1.0.0", + "name": "Mock Wrapped NEAR fungible token", + "symbol": "MOCK-wNEAR", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "test-token.staderlabs-test.near": { + "spec": "ft-1.0.0", + "name": "Test Token", + "symbol": "Test Token", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "dac17f958d2ee523a2206206994597c13d831ec7.factory.bridge.near": { + "spec": "ft-1.0.0", + "name": "Tether USD", + "symbol": "USDT.e", + "icon": "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Ccircle cx='16' cy='16' r='16' fill='%2326A17B'/%3E%3Cpath fill='%23FFF' d='M17.922 17.383v-.002c-.11.008-.677.042-1.942.042-1.01 0-1.721-.03-1.971-.042v.003c-3.888-.171-6.79-.848-6.79-1.658 0-.809 2.902-1.486 6.79-1.66v2.644c.254.018.982.061 1.988.061 1.207 0 1.812-.05 1.925-.06v-2.643c3.88.173 6.775.85 6.775 1.658 0 .81-2.895 1.485-6.775 1.657m0-3.59v-2.366h5.414V7.819H8.595v3.608h5.414v2.365c-4.4.202-7.709 1.074-7.709 2.118 0 1.044 3.309 1.915 7.709 2.118v7.582h3.913v-7.584c4.393-.202 7.694-1.073 7.694-2.116 0-1.043-3.301-1.914-7.694-2.117'/%3E%3C/g%3E%3C/svg%3E", + "reference": "", + "reference_hash": "", + "decimals": 6 + }, + "beer.tkn.near": { + "spec": "ft-1.0.0", + "name": "Beer Token", + "symbol": "BEER", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "514910771af9ca656af840dff83e8264ecf986ca.factory.bridge.near": { + "spec": "ft-1.0.0", + "name": "ChainLink Token", + "symbol": "LINK", + "icon": "data:image/svg+xml,%3Csvg width='32' height='32' viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none'%3E%3Ccircle fill='%232A5ADA' cx='16' cy='16' r='16'/%3E%3Cpath d='M16 6l-1.799 1.055L9.3 9.945 7.5 11v10l1.799 1.055 4.947 2.89L16.045 26l1.799-1.055 4.857-2.89L24.5 21V11l-1.799-1.055-4.902-2.89L16 6zm-4.902 12.89v-5.78L16 10.22l4.902 2.89v5.78L16 21.78l-4.902-2.89z' fill='%23FFF'/%3E%3C/g%3E%3C/svg%3E", + "reference": "", + "reference_hash": "", + "decimals": 18 + }, + "usdc.mocks.near": { + "spec": "ft-1.0.0", + "name": "Mock USD Coin", + "symbol": "MOCK-USDC", + "icon": "data:image/svg+xml,%3Csvg width='32' height='32' viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none'%3E%3Ccircle cx='16' cy='16' r='16' fill='%232775C9'/%3E%3Cpath d='M15.75 27.5C9.26 27.5 4 22.24 4 15.75S9.26 4 15.75 4 27.5 9.26 27.5 15.75A11.75 11.75 0 0115.75 27.5zm-.7-16.11a2.58 2.58 0 00-2.45 2.47c0 1.21.74 2 2.31 2.33l1.1.26c1.07.25 1.51.61 1.51 1.22s-.77 1.21-1.77 1.21a1.9 1.9 0 01-1.8-.91.68.68 0 00-.61-.39h-.59a.35.35 0 00-.28.41 2.73 2.73 0 002.61 2.08v.84a.705.705 0 001.41 0v-.85a2.62 2.62 0 002.59-2.58c0-1.27-.73-2-2.46-2.37l-1-.22c-1-.25-1.47-.58-1.47-1.14 0-.56.6-1.18 1.6-1.18a1.64 1.64 0 011.59.81.8.8 0 00.72.46h.47a.42.42 0 00.31-.5 2.65 2.65 0 00-2.38-2v-.69a.705.705 0 00-1.41 0v.74zm-8.11 4.36a8.79 8.79 0 006 8.33h.14a.45.45 0 00.45-.45v-.21a.94.94 0 00-.58-.87 7.36 7.36 0 010-13.65.93.93 0 00.58-.86v-.23a.42.42 0 00-.56-.4 8.79 8.79 0 00-6.03 8.34zm17.62 0a8.79 8.79 0 00-6-8.32h-.15a.47.47 0 00-.47.47v.15a1 1 0 00.61.9 7.36 7.36 0 010 13.64 1 1 0 00-.6.89v.17a.47.47 0 00.62.44 8.79 8.79 0 005.99-8.34z' fill='%23FFF'/%3E%3C/g%3E%3C/svg%3E", + "reference": "", + "reference_hash": "", + "decimals": 6 + }, + "soultoken.near": { + "spec": "ft-1.0.0", + "name": "SOUL", + "symbol": "SOUL", + "icon": "data:image/png;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 6 + }, + "toes.tkn.near": { + "spec": "ft-1.0.0", + "name": "Camel Token", + "symbol": "TOES", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 13 + }, + "discovol-token.near": { + "spec": "ft-1.0.0", + "name": "DISCOVOL TOKEN", + "symbol": "DISC", + "icon": "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSLlm77lsYJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4PSIwIiB5PSIwIiB2aWV3Qm94PSIwIDAgMTQxLjcgMTQxLjciIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDE0MS43IDE0MS43IiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGU+LnN0MHtmaWxsOiNmOTcxMTZ9PC9zdHlsZT48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNDYuMSAxOC43djEwNS42czIxLjMtNS41IDMzLjEtMjljMCAwIDEyLjctMjIuMi0uOS00OS43IDAgMC0xMC4xLTIwLjktMzIuMi0yNi45eiIvPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xMDUuNyA5LjRjMzEuMSAxOC4zIDM0LjUgNDguNCAzNC41IDQ4LjQgNi40IDM3LjktMTcgNjAuMy0xNyA2MC4zLTMxLjQgMzQuNS03My40IDIwLjMtNzMuNCAyMC4zIDMwLjYtOS4zIDQxLjktMzUuMSA0MS45LTM1LjEgMTYuNi0zNS41IDAtNjMuMiAwLTYzLjJDNzcgOS43IDQ3LjMgMy45IDQ3LjMgMy45YzMyLjQtMTEuMyA1OC40IDUuNSA1OC40IDUuNXptNyAxMS41UzExMS4xIDM4IDk0LjcgMzhjMCAwIDE2IDIuOCAxNy41IDE4LjggMCAwIDEuNC0xNy41IDE4LjItMTguMy0uMSAwLTE4LjUtMS41LTE3LjctMTcuNnpNMjUuNiAxNS45aDUuOXYxMTAuOEgyN1M4IDExMiAyLjIgODkuMmMwIDAtNy43LTI2LjIgNS01MC40LjEuMSA5LjUtMTcgMTguNC0yMi45eiIvPjwvc3ZnPg==", + "reference": null, + "reference_hash": null, + "decimals": 14 + }, + "token.shrm.near": { + "spec": "ft-1.0.0", + "name": "Shroom Kingdom", + "symbol": "SHRM", + "icon": "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 310 310' width='100' height='100'%3E%3Cdefs%3E%3ClinearGradient id='gradient0'%3E%3Cstop stop-color='%23a18732' offset='0' /%3E%3Cstop stop-color='%23eee68b' offset='.5' /%3E%3Cstop stop-color='%23a18732' offset='1' /%3E%3C/linearGradient%3E%3ClinearGradient xlink:href='%23gradient0' id='gradient1' gradientTransform='scale(1.28426 .77866)' x1='15.417' y1='40.839' x2='62.293' y2='40.839' gradientUnits='userSpaceOnUse' /%3E%3ClinearGradient xlink:href='%23gradient0' id='gradient2' gradientUnits='userSpaceOnUse' gradientTransform='scale(2.73872 .36513)' x1='1.398' y1='3.424' x2='103.887' y2='3.424' /%3E%3C/defs%3E%3Ccircle cx='156.7' cy='155.5' r='154.0' fill='%231a1a1a' /%3E%3Cpath d='m 83.163,26.107 c -2.458,0.567 -2.603,8.422 -0.488,17.583 2.114,9.16 5.689,16.156 8.146,15.589 2.458,-0.568 4.004,-7.36 1.89,-16.52 -2.115,-9.16 -7.09,-17.22 -9.548,-16.652 z M 8.431,71.674 C 4.05,66.428 2.62,59.166 2.62,50.076 2.62,36.088 8.464,24.448 17.981,15.782 26.251,8.25 37.331,4 49.326,4 c 14.072,0 24.858,4.33 33.422,14.307 7.134,8.312 13.285,19.887 13.285,31.77 0,8.649 -1.4,15.198 -5.397,20.351 -3.28,4.23 -7.858,7.419 -13.293,9.716 -0.067,4.993 -0.69,10.405 -6.23,13.534 C 66.269,96.416 55.496,97 48.664,97 39.779,97 30.898,97.137 25.797,92.848 22.521,90.093 21.152,84.43 20.867,80.335 15.851,78.277 11.582,75.445 8.432,71.674 Z M 49.118,55.482 c 12.382,0 22.42,-10.038 22.42,-22.42 0,-12.382 -10.038,-22.42 -22.42,-22.42 -12.382,0 -22.42,10.038 -22.42,22.42 0,12.382 10.038,22.42 22.42,22.42 z m -41.403,2.67 c 2.437,0.653 6.253,-6.215 8.686,-15.296 2.433,-9.08 2.562,-16.936 0.126,-17.589 -2.437,-0.653 -6.99,4.618 -9.424,13.7 -2.433,9.08 -1.824,18.532 0.612,19.185 z m 19.399,31.665 c 4.469,2.933 13.044,3.446 21.174,3.446 9.017,0 19.014,-0.032 23.665,-3.939 2.741,-2.302 2.906,-8.778 2.906,-11.753 0,-1.238 -0.327,-3.081 -1.245,-4.237 -1.964,-2.47 -5.76,-4.016 -8.719,-5.397 -4.619,-2.156 -8.181,-2.49 -15.569,-2.49 -6.813,0 -11.988,0.655 -16.815,2.49 -3.87,1.472 -8.576,3.76 -9.964,6.228 -0.522,0.927 0,2.256 0,3.406 0,3.47 1.16,10.009 4.567,12.246 z' fill='url(%23gradient2)' transform='matrix(.84842 0 0 .80002 114.213 33.025)' fill-rule='evenodd' /%3E%3Cg transform='matrix(3.2578 0 0 3.2578 -6.708 25.992)'%3E%3Cpath d='M29.9 66l2.9-11.5h-5.6c-.8 0-1.5-.7-1.5-1.5v-4.7c0-.8.7-1.5 1.5-1.5h5.6c.8 0 1.5.7 1.5 1.5v.3L37 37.8h-4.2c-.8 0-1.5.7-1.5 1.5v3.6h-2.6v-3.6c0-.8-.7-1.5-1.5-1.5h-5.9c-.8 0-1.5.7-1.5 1.5v27.5c0 .8.7 1.5 1.5 1.5H30c-.1-.8-.3-1.6-.1-2.3z' fill='url(%23gradient1)' /%3E%3Cpath d='M78.5 37.8h-5.9c-.8 0-1.5.7-1.5 1.5v3.6h-2.6v-3.6c0-.8-.7-1.5-1.5-1.5h-4.2l2.7 10.8v-.3c0-.8.7-1.5 1.5-1.5h5.6c.8 0 1.5.7 1.5 1.5V53c0 .8-.7 1.5-1.5 1.5H67L70.1 66c.2.8.1 1.5-.3 2.2h8.7c.8 0 1.5-.7 1.5-1.5V39.3c0-.8-.7-1.5-1.5-1.5z' fill='url(%23gradient1)' /%3E%3Cpath d='M60 32.9c-.2-.6-.8-1.1-1.4-1.1H53c-.8 0-1.5.7-1.5 1.5V37h-3.1v-3.7c0-.8-.7-1.5-1.5-1.5h-5.5c-.7 0-1.3.5-1.4 1.1l-8.5 33.5c-.1.4 0 .9.3 1.3s.7.6 1.2.6h11.6v-7c0-3 2.5-5.5 5.5-5.5 3.1 0 5.5 2.5 5.5 5.5v7h11.6c.5 0 .9-.2 1.2-.6.3-.4.4-.8.3-1.3zm-5.2 17.8c0 .8-.7 1.5-1.5 1.5h-6.6c-.8 0-1.5-.7-1.5-1.5v-6.5c0-.8.7-1.5 1.5-1.5h6.6c.8 0 1.5.7 1.5 1.5z' fill='url(%23gradient1)' /%3E%3C/g%3E%3C/svg%3E", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "adtoken.near": { + "spec": "ft-1.0.0", + "name": "AD#7: Roketo is going to the MOON! https://roke.to", + "symbol": "AD", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "6b175474e89094c44da98b954eedeac495271d0f.factory.bridge.near": { + "spec": "ft-1.0.0", + "name": "Dai Stablecoin", + "symbol": "DAI", + "icon": "data:image/svg+xml,%3Csvg width='32' height='32' viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Ccircle fill='%23F4B731' fill-rule='nonzero' cx='16' cy='16' r='16'/%3E%3Cpath d='M9.277 8h6.552c3.985 0 7.006 2.116 8.13 5.194H26v1.861h-1.611c.031.294.047.594.047.898v.046c0 .342-.02.68-.06 1.01H26v1.86h-2.08C22.767 21.905 19.77 24 15.83 24H9.277v-5.131H7v-1.86h2.277v-1.954H7v-1.86h2.277V8zm1.831 10.869v3.462h4.72c2.914 0 5.078-1.387 6.085-3.462H11.108zm11.366-1.86H11.108v-1.954h11.37c.041.307.063.622.063.944v.045c0 .329-.023.65-.067.964zM15.83 9.665c2.926 0 5.097 1.424 6.098 3.528h-10.82V9.666h4.72z' fill='%23FFF'/%3E%3C/g%3E%3C/svg%3E", + "reference": "", + "reference_hash": "", + "decimals": 18 + }, + "b8919522331c59f5c16bdfaa6a121a6e03a91f62.factory.bridge.near": { + "spec": "ft-1.0.0", + "name": "bHome", + "symbol": "bHOME", + "icon": "data:image/svg+xml,%3C%3Fxml version='1.0' encoding='utf-8'%3F%3E%3Csvg version='1.1' id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 111.4 104.2' style='enable-background:new 0 0 111.4 104.2;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0%7Bfill:%23FFF641;%7D .st1%7Bfill:%23FF9901;%7D .st2%7Bfill:%23FFFD79;%7D .st3%7Bfill:%23FFFFFF;%7D .st4%7Bfill:%23B70501;%7D .st5%7Bfill:%23660200;%7D .st6%7Bfill:%23EC5252;%7D%0A%3C/style%3E%3Cg transform='matrix( 0.6914520263671875, 0, 0, 0.6914520263671875, 76.05,55.3) '%3E%3Cg transform='matrix( 1, 0, 0, 1, 0,0) '%3E%3Cg%3E%3Cg id='B_coin_anim1_0_Layer1_0_FILL'%3E%3Cpath class='st0' d='M20.6,30.4h10v-20h-10V30.4 M20.6,40.4v-10h-10v10H20.6 M-9.4,40.4v10h20v-10H-9.4 M-49.4,50.4v10h40v-10 H-49.4 M-69.4,30.4h-10v10h10V30.4 M-79.4,30.4v-20h-10v20H-79.4 M-49.4,40.4h-20v10h20V40.4 M-69.4-59.6v10h20v-10H-69.4 M-69.4-49.6h-10v10h10V-49.6 M-9.4-59.6v-10h-40v10H-9.4 M-89.4-19.6h-10v30h10V-19.6 M-89.4-39.6v20h10v-20H-89.4 M40.6-19.6 h-10v30h10V-19.6 M30.6-39.6h-10v20h10V-39.6 M20.6-49.6h-10v10h10V-49.6 M10.6-49.6v-10h-20v10H10.6z'/%3E%3Cpath class='st1' d='M20.6,40.4h-10v10h10V40.4 M20.6,30.4v10h10v-10H20.6 M40.6,10.4h-10v20h10V10.4 M-89.4,30.4v-20h-10v20 H-89.4 M-9.4,50.4v10h20v-10H-9.4 M-49.4,60.4v-10h-20v10H-49.4 M-49.4,60.4v10h40v-10H-49.4 M-79.4,40.4v-10h-10v10H-79.4 M-69.4,40.4h-10v10h10V40.4 M-69.4-69.6v10h20v-10H-69.4 M-79.4-49.6h10v-10h-10V-49.6 M-9.4-69.6v-10h-40v10H-9.4 M-89.4-49.6 v10h10v-10H-89.4 M-99.4-19.6h-10v30h10V-19.6 M-89.4-19.6v-20h-10v20H-89.4 M50.6-19.6h-10v30h10V-19.6 M30.6-39.6v20h10v-20 H30.6 M10.6-59.6v-10h-20v10H10.6 M10.6-59.6v10h10v-10H10.6 M30.6-49.6h-10v10h10V-49.6z'/%3E%3Cpath class='st2' d='M-49.4,40.4v10h40v-10H-49.4 M-79.4-19.6h-10v30h10V-19.6 M-9.4-49.6v-10h-40v10H-9.4 M30.6-19.6h-10v30h10 V-19.6z'/%3E%3Cpath class='st3' d='M20.6-19.6v-20h-10v-10h-20h-40h-20v10h-10v20v30v20h10v10h20h40h20v-10h10v-20V-19.6z'/%3E%3C/g%3E%3C/g%3E%3C/g%3E%3Cg transform='matrix( 1, 0, 0, 1, 0,0) '%3E%3Cg%3E%3Cg id='B_coin_anim1_0_Layer0_0_FILL'%3E%3Cpath class='st4' d='M-49.4-19.6h5v30h-5v20h10v-20h5v-10v-10v-10h-5v-20h-10V-19.6z'/%3E%3Cpath class='st5' d='M-59.4-39.6h-10v20h5v30h-5v20h10v-20h5v-30h-5V-39.6z'/%3E%3Cpath class='st6' d='M-49.4-39.6h-10v20h5v30h-5v20h10v-20h5v-30h-5V-39.6z'/%3E%3Cpath d='M5.6-9.6h10v-20h-10v-10h-40v10h30v20h-30v10h30v20h-30v10h40v-10h10v-20h-10V-9.6z'/%3E%3C/g%3E%3C/g%3E%3C/g%3E%3C/g%3E%3C/svg%3E", + "reference": "", + "reference_hash": "", + "decimals": 6 + }, + "token.bwitter.near": { + "spec": "ft-1.0.0", + "name": "Bwitter Token", + "symbol": "BT", + "icon": "data:image/svg+xml,%3Csvg id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 256 256' style='enable-background:new 0 0 256 256;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0%7Bfill:%23018BF7;%7D .st1%7Bfill:%23FFFFFF;%7D\n%3C/style%3E%3Ccircle class='st0' cx='128' cy='127.9' r='128'/%3E%3Cg%3E%3Cpath class='st1' d='M72.2,58.9c3.5,10.5,17.6,49.9,54.5,65.3c11.1,5.3,12.2,10.5,9.2,22.1c1.5,14.2,10.3,8,26.4,2.4 c6-1.4,8,3.2,8,3.2s4.6-0.2,5.1,3.7c-9.5-0.5-35.5,15.4-49.5,39.7c-7.3,3.5-6.9,0-6.9,0l0.4-3.1c0,0-1.4,2.6-4,3.8 c-2.5,1.3-8.8-0.5-8.8-0.5s6-3.2,4.6-6.7c-12.1,7-23.2,3.3-26.6,2.1c44.1-13.9,48.1-27.4,29.8-34.4c2.3-0.8,3.4-2,2.8-2.9 c-8.9-1-18.8-4.8-25.8-13.7c7.5,0.5,6.1-0.5,6.1-0.5s-25.6-16.5-27.7-34.2c5.5,4,6.2,5.3,10.5,6C66.7,86.5,67.4,64.3,72.2,58.9z'/%3E%3Cpath class='st1' d='M187,82.4c-36.5,31.2-17.1,38.9-44,69c10.4-1.6,20.1-5,23.1-7.1C187,130.3,171.9,107.5,187,82.4z'/%3E%3C/g%3E%3C/svg%3E", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "8.contract.portalbridge.near": { + "spec": "ft-1.0.0", + "name": "impactMarket", + "symbol": "PACT", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 8 + }, + "meme.tkn.near": { + "spec": "ft-1.0.0", + "name": "MEME 💎🚀 Universal Idea Token", + "symbol": "MEME", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 8 + }, + "token.burrow.near": { + "spec": "ft-1.0.0", + "name": "Burrow Token", + "symbol": "BRRR", + "icon": "data:image/png;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "aurora": { + "decimals": 18, + "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAs3SURBVHhe7Z1XqBQ9FMdFsYu999577wUfbCiiPoggFkQsCKJP9t57V7AgimLBjg8qKmLBXrD33hVUEAQ1H7+QXMb9Zndnd+/MJJf7h8Pu3c3Mzua3yTk5SeZmEZkySplADFMmEMOUCcQwZQggHz58EHfu3FF/2a0MAWTjxo2iWbNm6i+7ZT2QW7duiUWLFolixYqJQ4cOqVftlfVAZs6cKdauXSuqV68uKlWqpF61V1YDoUXMmTNHrFu3TtSoUUNCmTBhgnrXTlkL5Nu3b2Ly5MmyuwJIzZo1RaNGjUTx4sXFu3fvVCn7ZC2QVatWiQULFvwPSL169USnTp1UKftkJZCbN2+KGTNmSBiLFy/+BwhWoUIFsX//flXaLlkJZPr06WkwIoE0btxYNGzYUFSsWFGVtkvWATlw4IB05BqGGxAMBz9u3Dh1lD2yCsjXr1/THHk8IDwvVaqUeP36tTraDlkFZOXKldKRO2HEAoKD79ixozraDlkD5Pr16/848nhANBQc/N69e9VZzJc1QCIduRcgGA4eKLbICiD79u37nyN3WiwgvMZ7Y8eOVWczW8YDwZFPmTIlauvA4gHhsUSJEuLFixfqrObKeCArVqxwdeROiwUE43UcfNu2bdVZzZXRQK5duyYduRsEp8UDog1fsnPnTnV2M2U0kFiO3GlegeDgy5cvr85upowFQqg6d+5cVwCR5hUI71NuzJgx6lPMk5FAPn365Doij2ZegWCUIUX/9OlT9WlmyUggy5Yti+vInZYIEAwH37JlS/VpZsk4IJcvX5bTsl5bB5YoEMqRDd62bZv6VHNkHJBp06YlBANLFAiGgy9btqz6VHNkFJBdu3Z5duROSwYIxjEjRoxQn26GjAHy8ePHuCPyaJYsEMozgn/48KG6ivBlDJAlS5Yk5MidlgqQ+vXri+bNm6urCF9GALl48aJ05G6V7cWSBYJxDOu5Nm/erK4mXBkBJBlH7rRUgGAmOfjQgZBbSsaROy1VIBjHDxs2TF1VeAoVyPv37+WI3K2SE7H0AMKxJUuWFHfv3lVXF45CBZKKI3daegDBcPBNmzZVVxeOQgNy/vz5hEfkbsbxAGFtb6pAOL5y5cpye0NYCg1Iqo5c29KlS2WEVKdOHdGkSZOUoeDgS5cura4yeIUCZMeOHWLevHkpASEBScvAB/Xs2VMUKVJE1K1bV44pUgHDcbVq1RJDhgxRVxusAgfy5s0bMXXq1IRgOMsuX75c7gcZP368aN++vez3W7VqJfLnzy8KFCggU+tUKNncZMFwDA6eNcRBK3AgCxculOas8HiG82duffXq1WLkyJGiRYsWokGDBrI1UPHMlQOjaNGisqUUKlRIPrKclLKA0RUdWfnRDNCUD1qBAjl79qyYNWuWa6VHGq0CEGw7oHsaNGiQrCBMg9DmBKJNgylYsKAciQOFfYhUtlcwHEe3GKQCA/Lnzx/PyUMc9Zo1a+SAsV+/fvLXSgXxa3eCiAXECaZw4cISDPPpGijniweG93HwXHtQCgwIk0E4cjcAGhItAf8AuG7dukknzbgAENFgYLGAaNNgKMcibGYNdXdGxUeDgz8aOHCg+hb+KxAgr169kpUcCUKb01GzOJrKonuJB0KbFyBOAw4thgCgdu3aaWAA4AYGB8/a4iAUCBBG405Hrv2Dm6MGhFulx7JEgWjTYHisVq2a/GxapBMGgLguLAj5DuTMmTP/OHLtqPETdAW6u4h01IlYskC06e6MIICROlA0GH19vM51+y1fgfz+/TvNkWtHjR/p27ev7JboJrx2S7EsVSAYUDCgcC4CAEbtXJsGg4PnO/kpX4Fs3bpVwiB0BEz37t09O+pELD2AOE23GM5ZpkwZGeVxraRnBgwYoL6dP/INCCNyfAeOukOHDmmZVLcKTdXSG4jTNBidAaDlXLlyRX3L9JdvQPr06SObvHbU6dUa3MxPINp0d5Y3b16RJ08e9S3TX74Befz4sejcubOoWrWqdNi2AgEEj8DIkiWLdO4PHjxQ3zL95asPQQcPHpSTR/gOv6D4BUQ7+uzZs4usWbOK7du3q2/ln3wHosU+j3LlysmIxa1SUzG/gOTLl0+2ilGjRqlv4b8CA4K+fPkievXqJZt9MgPAaJbeQHT3hA9kJX6QChSI1smTJ+U4RKct3Co5EUsvIHRP2bJlEzlz5hRHjhxRVxusfANy4cIF9Sy6GLnrAZhbRXu1VIEAguiJVuHlfltbtmxRz9JfvgHhxpQMBt++fatecdfPnz/lYIvtAcmOU1IBQi4LEG3atJHXEkssEWK0fvv2bfVK+svXLosJKW4AQ3QSb07h6tWr0uEz+Eq0G0sGCAM+IieOI98WS3///hVDhw4VOXLkkAlRP+W7D9mwYYNMLtJa4n1xRBqe3bIMKL2CSQQI3VPu3Lllq+C64olsNPMnBCJdunRRr/qnQJw6IS/pdypg/vz5cff38YscPny49C9eujGvQCgDiB49eqhPii4WgJPuAQQ+Lqi1v4EAefToUVrWFzCsyWIx2q9fv1QJd92/f1+0bt1aLlaINdqPB4TuCRD80rmtbCzhR8hG66SizvKeOHFClfBXgQBBe/bskfcr0dO1pOFZU3Xs2DFVIrqY/q1SpUpa1tUrELqnXLlySRhe5jKYw2d2kHBcz4OwIjLIXVaBAUF0V5Ezh7Nnz5Z27949VSq6CBDoOphHiQYECDyyTgsQ/fv3V0dH1/Hjx2V6h7wbEAguMH4ABBlBKlAgbneE090Yd21Yv369+P79uyrtrpcvX/6TtIwEorsnlvA8efJEHeUuRuFdu3aVKR2CCCcMnpNyf/78uSodjAIFgk6fPh11txQtCGBebhlO0pLuhKSlBkISEBhMjMXTxIkTZYVzvBOEhgFQriloBQ4EEUrGWhKEryEyu3HjhjoiuggWqDxAeOnrufcW5QkUIkFoGEBiUi0MhQKEeel4q995DyjcZ/Hz58/qSHfRrcTbSUuZdu3ayTEOYawbDIz3iLDiRYB+KRQgiP/3waJrNxjagMI0MK2AKC1ZjR49Wm5/JqEZDQTGe8A4fPiwOjJ4hQYEsS3By/5CwFCOVsWAzatIAhKVed3MQznWEIepUIEg/IUzFI5lgCEgYG1XrKQlyT9CY3wFXZBb5UcaURZ+JWyFDoSs8KRJk2L6E6dRDoB0YyQtneukSGAOHjxYDu70KNut8iONckRcJvzbpNCBIAZmXrcpYBoekRpgyBQzhiE1wkDOKwiMsuSr6BJNkBFAENEU45DIyo9nwGGxNs44ERAY5QlxmQsxRcYAIcxMdKubtmS3RVOe7u3Hjx/qKsKXMUAQA0EiKbdKj2XJAiEC2717t/p0M2QUEETaw0so7LREgVCO8l4Sj0HLOCAIB+81FMYSAUIZQmGSkybKSCAs1I7MCseyRIEwaveSJwtDRgJBR48e9RwKewXC+0x0AdtUGQsEMSL3cnMaL0B4j1wWc/Qmy2ggzG/ruXg3ENq8AmHgyCSZyTIaCLp06VLce8DHA8LrrGDxMnEVtowHgjZt2hR1QguLB4R0Su/evdXZzJYVQJBe25UoELK4Nv1PQ2uAPHv2LKo/iQaEv0mNeFn4bYqsAYL4p5IsGfIChOfMb7Dp1CZZBQTRQiJDYTcgerrWNlkHhHVbkV1XJBAemXDirqe2yTog6Ny5c9LJayhOIBgrS1h1b6OsBIKocB0KO4FwtwVu7WSrrAWC9NouDYQsLstCbZbVQNjmwCwjQFjCwzTuqVOn1Lt2ymogiBk/PafOfbdsl/VAEEBs+gfEsZQhgDChxVKgjKAMASQjKROIYcoEYpgygRglIf4D6lp/+XognSwAAAAASUVORK5CYII=", + "name": "Ether", + "reference": null, + "reference_hash": null, + "spec": "ft-1.0.0", + "symbol": "ETH" + }, + "obs.openbisea.near": { + "spec": "ft-1.0.0", + "name": "OpenBiSea Token", + "symbol": "OBS", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "ter.tkn.near": { + "spec": "ft-1.0.0", + "name": "SkyNet", + "symbol": "TER", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 10 + }, + "fradao.tkn.near": { + "spec": "ft-1.0.0", + "name": "fraDAO", + "symbol": "fradao", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "indulgency.tkn.near": { + "spec": "ft-1.0.0", + "name": "Forgive Yourself", + "symbol": "Indulgency", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "fusotao-token.near": { + "spec": "ft-1.0.0", + "name": "FUSOTAO", + "symbol": "TAO", + "icon": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjQiIGhlaWdodD0iNjQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0ibTU1LjQxIDI5LjYzNS03LjI5NiA2LjE0N2ExLjY1OSAxLjY1OSAwIDAgMS0uNjc1IDIuMzlsMS44NDggOS41NDZjLjgwNS0uMjA4IDEuNTM2LS43MDIgMi4wODktMS41MzlhMTIuODE2IDEyLjgxNiAwIDAgMCAxLjk4Mi01LjI4OWMuMTctMS4yNTEuNTY0LTIuNDczIDEuMTU2LTMuNTg2YTEyLjgzMyAxMi44MzMgMCAwIDAgMS40ODItNS40NjljLjAzNS0uODYzLS4xODYtMS42LS41ODctMi4yeiIgZmlsbD0idXJsKCNhKSIvPjxwYXRoIGQ9Ik00NS4zNDIgMzUuOTA2YTEuNjM3IDEuNjM3IDAgMCAxIDIuMTgzLS42M2w3LjM3OC02LjE5M2MtMS4yODMtMS4xOTMtMy40NTktMS41NDctNS40NDUtLjkwM2wtMTIuNzQyIDQuMTM1Yy0uMzEuMS0uNTUzLjI5Ny0uNzE2LjU0Mmw5LjM0MiAzLjA0OXoiIGZpbGw9InVybCgjYikiLz48cGF0aCBkPSJNNDMuODkyIDQ1LjM3YzEuMTQ5IDEuNTkyIDIuOTQ3IDIuNTcyIDQuNTk5IDIuNTI0bC0xLjg0NC05LjQ4N2ExLjY0NCAxLjY0NCAwIDAgMS0xLjUzOC0xLjY4bC05LjM2NC0zLjA1NWMuMDA0LjI2OC4wODcuNTQuMjYuNzhsNy44ODcgMTAuOTE5eiIgZmlsbD0idXJsKCNjKSIvPjxwYXRoIGQ9Im00MS40MSA1My4yMjMtOC4wNTYtNS4wOTJhMS42MzEgMS42MzEgMCAwIDEtMi40NjQuMDkxbC04LjQzOCA0LjcyMWMuNDQ0LjcwOCAxLjEzNiAxLjI1NiAyLjA5NyAxLjUyNyAxLjc5NC41MDYgMy43NC42MDMgNS42MDUuMjY1YTEwLjUzNiAxMC41MzYgMCAwIDEgMy43NDIgMGMxLjg3LjMzOSAzLjgyMS4yNCA1LjYxOS0uMjcuODI2LS4yMzMgMS40NTMtLjY3MyAxLjg5NS0xLjI0MnoiIGZpbGw9InVybCgjZCkiLz48cGF0aCBkPSJNMzIuMzg5IDQ1LjQzOGExLjY0NiAxLjY0NiAwIDAgMSAxLjI3IDEuODlsOC4xNDUgNS4xMzRjLjczNC0xLjU5NC4zOTctMy43ODItLjgyNy01LjQ4TDMzLjEyMyAzNi4wOWExLjM1NCAxLjM1NCAwIDAgMC0uNzM0LS41MTZ2OS44NjR6IiBmaWxsPSJ1cmwoI2UpIi8+PHBhdGggZD0iTTIyLjk3IDQ3LjAxN2MtMS4xNTEgMS41ODgtMS41MjQgMy42MDgtLjk2OSA1LjE3bDguNDItNC42OTJhMS42NDggMS42NDggMCAwIDEgMS4xMTctMS45ODd2LTkuODg0Yy0uMjUzLjA4Ny0uNDg1LjI1LS42NTkuNDlsLTcuOTA4IDEwLjkwM3oiIGZpbGw9InVybCgjZikiLz48cGF0aCBkPSJtMTUuODg2IDM1Ljc4Mi03LjI5NS02LjE0N2MtLjQwMS42LS42MjIgMS4zMzctLjU4NyAyLjJhMTIuODMgMTIuODMgMCAwIDAgMS40ODIgNS40NjkgMTAuNzUxIDEwLjc1MSAwIDAgMSAxLjE1NiAzLjU4NmMuMjU4IDEuODkyLjk1IDMuNzI3IDEuOTgyIDUuMjkuNTUzLjgzNiAxLjI4NCAxLjMzIDIuMDg5IDEuNTM4bDEuODQ4LTkuNTQ2YTEuNjU5IDEuNjU5IDAgMCAxLS42NzUtMi4zOXoiIGZpbGw9InVybCgjZykiLz48cGF0aCBkPSJNMTUuNTY4IDQ3Ljg1NmMxLjY0OS4wNDggMy40NDUtLjkzMiA0LjU5Mi0yLjUyMWw3Ljg3NS0xMC45MDhhMS4zNiAxLjM2IDAgMCAwIC4yNi0uNzhsLTkuMzUgMy4wNTJhMS42NDcgMS42NDcgMCAwIDEtMS41MzYgMS42NzlsLTEuODQgOS40Nzh6IiBmaWxsPSJ1cmwoI2gpIi8+PHBhdGggZD0iTTE2Ljc0NSAzNS4xOTNhMS42NCAxLjY0IDAgMCAxIDEuOTI3Ljc0bDkuMzU2LTMuMDUyYTEuMzU3IDEuMzU3IDAgMCAwLS43MTctLjU0M2wtMTIuNzYxLTQuMTRjLTEuOTktLjY0NC00LjE2OC0uMjktNS40NTMuOTA1bDcuMzkgNi4yYy4wOC0uMDQ0LjE2Ny0uMDguMjU4LS4xMXoiIGZpbGw9InVybCgjaSkiLz48cGF0aCBkPSJtNDAuNTcxIDE4LjA5LTMuNTQ2LTguODkyYy42ODktLjE5OCAxLjQ1My0uMTgyIDIuMjU4LjExOGExMi42NSAxMi42NSAwIDAgMSA0LjcwMyAzLjExIDEwLjYxNCAxMC42MTQgMCAwIDAgMy4wMjcgMi4yMTYgMTIuNjc2IDEyLjY3NiAwIDAgMSA0LjM4IDMuNTM1Yy42MTkuNzg4Ljg2IDEuNjQxLjgwNiAyLjQ3N2wtOS41OC0xLjE3OWExLjY0OSAxLjY0OSAwIDAgMC0uNjYyLTEuMTI2IDEuNjI2IDEuNjI2IDAgMCAwLTEuMzg2LS4yNnoiIGZpbGw9InVybCgjaikiLz48cGF0aCBkPSJNMzkuNzY0IDE4Ljc5Yy0uNDYzLjY0LS40IDEuNS4xMDQgMi4wNjZsLTUuNzczIDcuOThhMS4zNjMgMS4zNjMgMCAwIDEtLjI5Mi0uODVsLjAyMS0xMy40NDljLjAwNC0yLjA5NiAxLjAxMi00LjA2NCAyLjUzOC00LjkybDMuNTg1IDguOTZhMS42NiAxLjY2IDAgMCAwLS4xODMuMjEzeiIgZmlsbD0idXJsKCNrKSIvPjxwYXRoIGQ9Ik01Mi4xNiAyMS41NDhjLS40NjUgMS41OTEtMS45NSAzLjAwNi0zLjgxMiAzLjYxbC0xMi43ODIgNC4xNTVhMS4zNTIgMS4zNTIgMCAwIDEtLjgyLjAwOGw1Ljc4OC03Ljk5NmExLjY0IDEuNjQgMCAwIDAgMi4wNjctLjk0OWw5LjU1OSAxLjE3MnoiIGZpbGw9InVybCgjbCkiLz48cGF0aCBkPSJtMjcuNDYgOS4xOTgtMy41NDcgOC44OTJhMS42MjYgMS42MjYgMCAwIDAtMS4zODYuMjYgMS42NSAxLjY1IDAgMCAwLS42NjIgMS4xMjVsLTkuNTggMS4xNzljLS4wNTMtLjgzNi4xODctMS42OS44MDYtMi40NzdhMTIuNjc3IDEyLjY3NyAwIDAgMSA0LjM4LTMuNTM0IDEwLjYxNiAxMC42MTYgMCAwIDAgMy4wMjctMi4yMTcgMTIuNjUgMTIuNjUgMCAwIDEgNC43MDMtMy4xMWMuODA1LS4zIDEuNTY5LS4zMTYgMi4yNTgtLjExOHoiIGZpbGw9InVybCgjbSkiLz48cGF0aCBkPSJNMTYuMTk1IDI1LjE0M2MtMS44Ni0uNjA1LTMuMzQyLTIuMDE3LTMuODA2LTMuNjA3bDkuNTQ0LTEuMTdhMS42MzYgMS42MzYgMCAwIDAgMi4wNjQuOTQ4bDUuNzggNy45ODdhMS4zNDkgMS4zNDkgMCAwIDEtLjgxOS0uMDA4bC0xMi43NjMtNC4xNXoiIGZpbGw9InVybCgjbikiLz48cGF0aCBkPSJNMjQuNjM5IDIwLjg2N2ExLjY1NCAxLjY1NCAwIDAgMC0uMDc5LTIuMjgxbDMuNTktOC45N2MxLjUzLjg1NyAyLjUzOSAyLjgyOCAyLjU0MiA0LjkyNmwuMDIxIDEzLjQ2MmMuMDAxLjMyNy0uMTEuNjItLjI5Mi44NTJsLTUuNzgyLTcuOTg5eiIgZmlsbD0idXJsKCNvKSIvPjxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD0iaCIgeDE9IjgiIHkxPSI0My40NjciIHgyPSIxNi4zOTkiIHkyPSIzNy45MzgiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBzdG9wLWNvbG9yPSIjOUEwQTBFIi8+PHN0b3Agb2Zmc2V0PSIuODY5IiBzdG9wLWNvbG9yPSIjREExODFGIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9ImEiIHgxPSI0NS45MjYiIHkxPSIzNi4wNTMiIHgyPSI1MS4wNjgiIHkyPSI0My41NjEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9Ii40NjQiIHN0b3AtY29sb3I9IiNFQTMwMkEiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNDNTE1MUIiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0iYyIgeDE9IjQ1LjkyNiIgeTE9IjM2LjA1MyIgeDI9IjUxLjA2OCIgeTI9IjQzLjU2MSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIG9mZnNldD0iLjQ2NCIgc3RvcC1jb2xvcj0iI0VBMzAyQSIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0M1MTUxQiIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJkIiB4MT0iMzEuOTAxIiB5MT0iNTQuOTMzIiB4Mj0iMzEuOTAxIiB5Mj0iNDcuNDIxIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agc3RvcC1jb2xvcj0iIzlFMEIwRiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0RBMTgxRiIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJlIiB4MT0iMzEuOTAxIiB5MT0iNTQuOTMzIiB4Mj0iMzEuOTAxIiB5Mj0iNDcuNDIxIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agc3RvcC1jb2xvcj0iIzlFMEIwRiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0RBMTgxRiIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJmIiB4MT0iMzEuOTAxIiB5MT0iNTQuOTMzIiB4Mj0iMzEuOTAxIiB5Mj0iNDcuNDIxIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agc3RvcC1jb2xvcj0iIzlFMEIwRiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0RBMTgxRiIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJnIiB4MT0iOCIgeTE9IjQzLjQ2NyIgeDI9IjE2LjM5OSIgeTI9IjM3LjkzOCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiM5QTBBMEUiLz48c3RvcCBvZmZzZXQ9Ii44NjkiIHN0b3AtY29sb3I9IiNEQTE4MUYiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0iYiIgeDE9IjQ1LjkyNiIgeTE9IjM2LjA1MyIgeDI9IjUxLjA2OCIgeTI9IjQzLjU2MSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIG9mZnNldD0iLjQ2NCIgc3RvcC1jb2xvcj0iI0VBMzAyQSIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0M1MTUxQiIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJpIiB4MT0iOCIgeTE9IjQzLjQ2NyIgeDI9IjE2LjM5OSIgeTI9IjM3LjkzOCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiM5QTBBMEUiLz48c3RvcCBvZmZzZXQ9Ii44NjkiIHN0b3AtY29sb3I9IiNEQTE4MUYiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0iaiIgeDE9IjQyLjk2MyIgeTE9IjEyLjIzIiB4Mj0iMzMuODY1IiB5Mj0iMjcuMDUiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBzdG9wLWNvbG9yPSIjRjlCMTk4Ii8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjRUUxQzI1Ii8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9ImsiIHgxPSI0Mi45NjMiIHkxPSIxMi4yMyIgeDI9IjMzLjg2NSIgeTI9IjI3LjA1IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agc3RvcC1jb2xvcj0iI0Y5QjE5OCIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0VFMUMyNSIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJsIiB4MT0iNDIuOTYzIiB5MT0iMTIuMjMiIHgyPSIzMy44NjUiIHkyPSIyNy4wNSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiNGOUIxOTgiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNFRTFDMjUiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0ibSIgeDE9IjE4Ljc2NSIgeTE9IjEzLjQxNiIgeDI9IjI5LjU0NSIgeTI9IjMyLjU4NSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiNFRTI3MjkiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNFRTFDMjUiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0ibiIgeDE9IjE4Ljc2NSIgeTE9IjEzLjQxNiIgeDI9IjI5LjU0NSIgeTI9IjMyLjU4NSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiNFRTI3MjkiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNFRTFDMjUiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0ibyIgeDE9IjE4Ljc2NSIgeTE9IjEzLjQxNiIgeDI9IjI5LjU0NSIgeTI9IjMyLjU4NSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiNFRTI3MjkiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNFRTFDMjUiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48L3N2Zz4=", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "nvp.tkn.near": { + "spec": "ft-1.0.0", + "name": "NOVAPUNK", + "symbol": "NVP", + "icon": "data:image/png;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "o.tkn.near": { + "spec": "ft-1.0.0", + "name": "Omicron", + "symbol": "O", + "icon": "data:image/png;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 0 + }, + "gems.l2e.near": { + "spec": "ft-1.0.0", + "name": "LandtoEmpire.com game GEM!", + "symbol": "GEM", + "icon": "data:image/png;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 4 + }, + "kkd.tkn.near": { + "spec": "ft-1.0.0", + "name": "KalakendraDAO", + "symbol": "KKD", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "mika.tkn.near": { + "spec": "ft-1.0.0", + "name": "Mikasa", + "symbol": "MIKA", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "illiapolosukhin.tkn.near": { + "spec": "ft-1.0.0", + "name": "Illia Polosukhin", + "symbol": "IlliaPolosukhin", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "avb.tkn.near": { + "spec": "ft-1.0.0", + "name": "AVB", + "symbol": "AVB", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "stke.tkn.near": { + "spec": "ft-1.0.0", + "name": "sticky", + "symbol": "STKE", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "jbouw.tkn.near": { + "spec": "ft-1.0.0", + "name": "The Original Joshua J. Bouw Cred Points", + "symbol": "JBOUW", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 0 + }, + "lucky_nft.near": { + "spec": "ft-1.0.0", + "name": "Luck Token", + "symbol": "LUCK", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 2 + }, + "gold.l2e.near": { + "spec": "ft-1.0.0", + "name": "LandtoEmpire.com game GOLD!", + "symbol": "GOLD", + "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAaYSURBVHgBxVfbcxNlFP99u5tkc+2mtKUBC2natGnAUhEUAbW8OM7ojDridXSqo844+qD/gfrko/gXqA8+6DijD46XBytIGaVAW6CFFgpJmiZN2zRN01w33V3PLpRLmpQO4nCSzLfJ+fKd37mfj2GD5PV6JZNJfJ4xPAmwHsaYF9Cka1yW1jQtTOuIpqnHyuXiT+FwOL2Rc9mdNgQCAa+msY9o61s3Bd6Z6D9fc5z62fj4eBh3A0DX2GKxfkKPH+M/EXekVMp9VssiVQFc1/pPHQfuDYUZ0w5VswZX+UMwGOy5x8J1MhTy+/09lYzbLPA/aF5JayxxA8B1nw9XE24ymfDYY/vwyqsvE8guWK1WmAQB5ZUVpFIphEIhnD59BgPHB4xnVVXXBVEqFR5ajQl+9dfNmz2f0/J05W5JqjMEf/jBB3hw54Ow20TEEtMYGBzAP2dOIj4fg2ri0OLbimef6YW/rQOxWALpdM0slATBIi4szP9+wwLXTR+q3Gk2m/H666/i3ffegVtyI7mQwuj4EFkkjB0BBsnFwJEKmrqC2XkVkRiPxQUVw6di6O8/Q0CmKR21qijIFa26KwwLNDQ0fUHLbQHidkvo63sTh186DDIZLlwaQ3LxHLr8KQQ7GWxWEs5xpAG9GA+nQ4CZS2E2HoJ3uwN793Rjfl7BzEyiKgBVZSyVSv4meL09kqaV3qrcsPvh3eg91AupTsTfg8cJxASeOCDB4eCROH8SHJPh9krQyhEwQYJg7cLlqybksjL8Oy6jacuLUFSfESPhcGQNAMLeR3H3KSeKxeerIdy+rcX4jAz14+zwX2QlM4HRwCkRiFwEpeUkllPzui70LkKVE2hvmMCe5gnYcknMTEfQ0dWCg48fRA0ySrtAWKi2r/VTd/dOzKaziGcs2H9gC3o6JiAvzRm8FVVGPJqHk/zb3iUYfp6dDOP8iTD4lSwCHXYorlEUnG3w+Ty1AEDvK4KqatRY1jJ9vnYUS0XCR4JscUo7BYshhkL0EkJTJZw4nUFmWSFTMoJPlqEz9nY78ei+JnJNAPncdgwNHoVcqlsHANcjXO9qa5iizY7UXAxb3ZfQ0hiFRjlv5tL46g/g298FbBJ5+mSxCr5RMkHy7YJn/yGouRl4lUEoO9swV36YuN/XgKB5hVodTqFisrycgUvMwyrK4EzNgGCGoiygrApI5OsxX6Dg41QCsoQGrYBzgxeRSSbR3cWjdRu5ZeoCFlkH1iGJq8WZm5tDJpeDYHGRUBP0tqGn283ayaBoPGRFoJUzLKHIZbjqJdQ3N+ppBofLDZe0fgfn9GGiGqNQkME0BdGZOsQXmijQ8hTtedJYM7TmmGY8m/hrzxoBCgac2NO1AisdubCkIplWkM3l15OfFvRJhtCv6VKlUgk20YwUHVLIalCyWailPN54isPhXhVLyyskmIHnGZIpOyYmOfCik7wkgFOXcSG2DeMzPjjsuXXks7AeA2f1EauSlcumUefWzSdRzluQvTIDs90Bp68b5ZkktrR70Rx8xCjDmiLjYH4BxegwtHwcGWbDbApwSl46p1xTPI1vIwJVpKOUxn2VzFgsRrhMmJuKIjtnQbm5FX55HOODEUTTLuze3wT72M8op8J6Xb3xP87EYzDUQNG/C61bG3H0j5PrAMAx3uF4ICwI6vv0XbyVabaIkMtFTE9n0OQJogAXNZo4ytkMPIFudLYRPzFmnKJQwMllRjWRx6loB67mD2BncC/Gxq7i119+RbFYrApAlotv8+l0otjQ0KCXq323MhephtfXb8KBJ/bD4/HA7tyK6aVN4E0ZBBtDVJ/ihnAqQSjKHKLUDQdCfmibnkN76w6Kiav4s78f0chUDe21r69cmfxu3XZst9ux99FHqCkdIjD1cLlcxrBxaXIM8akRzIaHqDfINDNI2N6+Cz37noPF2oixi6P44fsfMXR6mCpl9eFktR3fyOrOzq4jtHxUuVGgyafN70MHTUJNmz0IdHbC5/XCZrMaYFQKQp4CSVE1RCheLlw8jxPHT+DcyKgeZKhBX05MXDSm7VtGsh4ayUpVR7JVau+g5uJvp9SqQ0tLC1nFbRyRSCQwMjKM0XMTSKcWSesVsNo3jttGsvs+lN5Wio0RiWcv6Btx78k4u/JucN8vJny13clkMu10PvCNIChWVKTnXdCX5PPXJicnqw6HG7qc0vIpWaQPGya9wSnf0Kxx5K4vp5WkX1xEUdTnx15qtbuqX8+1EcrIY1T5Nnw9/xcSywDf1DgKcwAAAABJRU5ErkJggg==", + "reference": null, + "reference_hash": null, + "decimals": 0 + }, + "c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2.factory.bridge.near": { + "spec": "ft-1.0.0", + "name": "Wrapped Ether", + "symbol": "WETH", + "icon": null, + "reference": "", + "reference_hash": "", + "decimals": 18 + }, + "skyward-pixeltoken.near": { + "spec": "ft-1.0.0", + "name": "Skyward Wrapped Pixeltoken", + "symbol": "sPXT", + "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAANdJREFUWIXll70RwjAMhWUuNGwARVgEmuyQJRgo7AA7uGESGioaGlpTcK+w7nR+gcIyfJ1zys/7dHKSsO53SSqyqHlzEZFu7gm364Wq22z3VF07BpB8CANXn971JRP+Dejk8fSgLoz6kgm/Btjk58MqW4/TM6svmfBrQIOkSAiO92W2Hmc+gF8D6BV6h17qhOxUWPg18C16OizaN2AlxXTEFEWkxZ2QRe8DoJQctG8AIDH4vS8iFjY5aM8Au8Ox+DdgvRUBO+8W/g0AbUIf/5TqBsLf/x2/ADJHSOenTxC2AAAAAElFTkSuQmCC", + "reference": null, + "reference_hash": null, + "decimals": 6 + }, + "cheems.tkn.near": { + "spec": "ft-1.0.0", + "name": "cheems", + "symbol": "cheems", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "nut.tkn.near": { + "spec": "ft-1.0.0", + "name": "NEAR University Token", + "symbol": "NUT", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "blaze.tkn.near": { + "spec": "ft-1.0.0", + "name": "BlazeN Fast", + "symbol": "BLAZE", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "abr.a11bd.near": { + "spec": "ft-1.0.0", + "name": "ABR", + "symbol": "ABR", + "icon": "data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjEyMSIgdmlld0JveD0iMCAwIDEyMSAxMjEiIHdpZHRoPSIxMjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48Y2lyY2xlIGN4PSI2MC41IiBjeT0iNjAuNSIgZmlsbD0iIzBlMGIwZiIgZmlsbC1ydWxlPSJub256ZXJvIiByPSI2MC41Ii8+PGNpcmNsZSBjeD0iNjAuNSIgY3k9IjYwLjUiIHI9IjYwIiBzdHJva2U9IiMyZDJjMmUiIHN0cm9rZS1vcGFjaXR5PSIuODEiLz48ZyBmaWxsLXJ1bGU9Im5vbnplcm8iPjxwYXRoIGQ9Im04MS4xNjg3IDUyLjIxNDctMTEuNjUzLTExLjY1MjloLTE3LjY1NTlsLTUuNjQ5MyA1LjY0OTl2LTIwLjEyNzdoLTYuMDAzN3YzNS42NjQ4IDcuNzY4NmwxMS42NTMgMTEuNjUyOWgxNy42NTU5bDUuNjUwMi01LjY0OTl2MjAuMTI3N2g2LjM1NjN2LTMzLjU0NjJ6bS0xNC40NzgxIDIyLjk1MjZoLTExLjY1MjJsLTguNDc1My04LjQ3NDh2LTQuOTQzNy02LjcwOTJsOC40NzUzLTguNDc0OGgxMS42NTIybDguNDc1MyA4LjQ3NDh2Ny40MTU1IDQuMjM3NHoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJtMzEuNzMzNCA3Mi42OTUydi0zMi4xMzM3aC02LjAwMjh2MzQuOTU4NmwyMC40ODEgMjAuNDgwOGgyMC40ODAxdi02LjAwM2gtMTcuNjU1OXoiIGZpbGw9IiM2ZGQiLz48cGF0aCBkPSJtNTUuMDM4OCAyNS43MzA1djYuMDAzaDE3LjY1NTlsMTcuMzAyNCAxNy4zMDI3djMyLjEzMzdoNi4wMDI4di0zNC45NTg2bC0yMC40ODEtMjAuNDgwOHoiIGZpbGw9IiM2ZGQiLz48L2c+PC9nPjwvc3ZnPg==", + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "groove.tkn.near": { + "spec": "ft-1.0.0", + "name": "Groove", + "symbol": "GROOVE", + "icon": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAARCABgAGADASIAAhEBAxEB/8QAHQAAAgIDAQEBAAAAAAAAAAAAAAgHCQEDBAYCBf/EADMQAAEEAQMCBAQGAgIDAAAAAAECAwQFAAYHEQhBEiExUQkTYYEUIjJCYnEVoRexcpHh/8QAHAEAAQQDAQAAAAAAAAAAAAAABQAEBwgBAgMG/8QANBEAAQEGBQIEBAUFAAAAAAAAAQIAAwQFETEGBxIhUUFhEyJCgRVicZEUIzJSsjOhscHR/9oADAMBAAIRAxEAPwC1PDDDEyYwwzW++zGZXIkOpaaaSVLWs8JSkepJxMgK7BsvPNR2lvvuJbbbSVLWo8BIHqScS/fD4jVHoy+k6Y2v0+xqB2GstvWMh0pjlY9Q2E+agPfkDI460es5eqXJW1m1ditupbUWrOyaVwZRHkW0Efs9z3xJCSTyTyTguJjSDodH3afcBZWun7kTCfIrq/S73G3KqUO/QffhrB9qPiYR7a8j1G6mkY9ZEkuBv/I17ilJZ5PqtCvPw+5B+2PJW2dfcwGLSqmsy4cpsOsvsrCkOII5BBHrlCeNb0d9YU/aKxZ0JruS9L0lLWENOqV4l16z+4e6PcdvXNYaNNdL0+7O8c5VQ5hzGyBGlabu6khQ5TWxHFj03vaThnJV2lfd10e2qZjUqHLbDrLzSgpK0kcggjOvCzV4UkpJSoUIYwwwxNhjDDNb77MZlciQ6htptJWtazwEpHqScTICuwbLzrTDS333EtttpKlrUeAkD1JPYZXT1ndaD2p3Zu1e1lgpupQos2Vk0rgyiPItoI/Z7nvh1odZzup3pe1m1dmpFS2S1ZWTKuDKI9W0Efs9z3xIySSSTyTgmLi9X5bu3UtYbLjLfwNE4nCPNdCD04Uoc8Dpc72CSTyTyTmM9ZtjtnqrdrV8LRmkYfz5stXmpXkhlHdaz2Ax2tQ/DS05W7aypNfrGa9qqLHMj5q0gRlqSOSgI9QPY884zduHj0EpFmlGd4wk+Hn7uGj3tFrsACaC1TSwavnDNsqO5EkuxXgAtlam1f2Dwc1Zxb0wIIqGa3o96w7LaOexoPXct2XpGS4EtOKJUuvUT+pP8PcfcZaBW2UC4gR7SrmNSokptLrLzSgpC0Ecggj1yhLGt6POsKftHZR9Ca8luydIy3PC26olSq9ZP6h/Dn1H3GEISL0eRdmhXMbLgTMKm0pTR8N1oHr7j5v5fW9pOGclXaV13Xx7apmNS4cpsOsvNKCkrSRyCCM68MNW1SSklKhQhvh55qO0t99xLbbaSpa1HgJA9STldHWd1ouapXM2r2ssFN1Lai1ZWbSuDKI8i22R6I9z3yVPiN7y3uh9G1G32m5jkR7UxdXNebVwv8MjgeAHt4lHz+gytAkk8k8k4LjYkg+En3ae8q8COIh0ifTAatz4aemxpqPuNh78MEknk98xhjW9F/SXM3auGtfa2hrY0pXOBTTa08Ge6Dz4R/Adz3wc7dqeq0paa53OoTD8EuOjVUSn7k9AOSWnD4bm0dzprT9xuLqGk/C/5oNtVrrqeHFMp58SgD6JJ79+Mljq16j9LbQ7fWVXDtY8nU1owuLDhtOBS2/EOC4sD9IA9++dXVXvbW9P207iKT5LNvOaMGojo4Hy/wAvHj47BI/3xlRVlZ2FxNdsLOY9JkPrK1uOrKlEk8nzOEXr4QqA5RdoQw3hp7mHNHmJpn5HOsaUD1BPSvAoAeTWzaHnXH3lvuq8S3FFaj7knk58YYYLawoFNmMM9ptFtXqLePXNfofTaAH5i+XHlD8jLY/UtX9DLLduegbYzR1U2xqCnVqSwKAHpMxRCSrv4UDyAxw5hlv902bxmKcdSrCakuoslTxQqEpFTTk1oAyl9HvWJY7RT2dCa7lOS9JS3Alp1Z5XXrJ/Un+HuO3qMs/rLKBc18e1q5bUqHLbS8w80oKQ4gjkEEeuVCdY21GmdoN55unNIrSitkx25jcYK5/DFfPKP9cj6HGH+GtvJfTbK02euZrsqCzFNhWfMUVFjwqAWgeyTyDx748hX6na/AW0YY/wpBzmVjFkpGnUkLWmlKg+qnRQ69De9/b/ABHNm77W+jafcHTcJyY9pkutzWW08r/DL4PjA7+FQ8/ocrRIIPBHBGX5PMtSGlsPtpcbcSUrQochQPqCMR3ev4d7OptyoN/tzLYraK1leK3iqPH4QeqltDuD6cdj9MzGQilq8RDcctMw4SVwnwiaq0JRUoV0puSk961pzbhlu6TOmG2371WifaNuxtKVjqVTpIHHziPP5KD7nuewy1hpjS+2ukCiO1Hq6Skik8J4ShppCf8A5mnbzb/TO2GkoGjdJ16IkCA2EJCR+Zau61HuonzJxMPiHdR34dn/AIQ0lNHjdAdu3m1fpHqlny/9n7Z1ShME6KjdgEfMY/NLECINxVLgHYftSLrPzH/gZWup3fKy303NnX6nVpqIijGq4/PkhlJ48XHur1P95EOb4UGbZSW4VfEekyHSEoaaQVqUT2AGNhsX8PjcHXqWL3cV1WmahfC0sLTzLdT/AOP7PvgpKXkQuoFS1g4mYSfBsvQ6frDt2gUSOppwLk8/3ZVqajuNQ2DVVR1smdLfUEtssNlalE/QY3eynw6Na6qVHud05x0/XK4WYbfCpTg9j2R/3jzbTdP+12zEBMXRmm47UnwgOznUhchw+5WfMf0M8p1EdWGgNhq1cV+Qi01E6g/h6xhYKgeynD+1P+8fogkOhrfFogmmaE2xDE/DcMOSCrYKIqo96WSO5r7N+hW6S2E6UNHO3TMKBSRmG+HJjpCpMg8eniPmon2GQdr/AOJdoCFSOp2+07YWFq4kpaMxIaZbPZR4PJ/rEd3j3x19vfqFV5rK1ccaQT+FhoUQxHT7JT6c/X1yPs5PI1Q8roUDejk2VMM8AjMQvFPn5NT5jp+hN1d9x2b93W+ttRbh6on6v1VPVLsbB0uOuH0HskDsAPIDHZ+Gps7exbS13gt4bsaA7FVX1pcSU/PKlAuLHukccc++Rl0f9HtnvDYta41vGdh6RhuBSEKHhXYLB/Sn+HufsMtCqquupK2NUVMNqLDhtpZYZaSEobQBwAAM3g4ZSleKthOZ2NYSEhFYcllCSAlZFkJHpHfoeBte3XhhhhZq8N4HfXXtvtptXfaxoaSRaWEKMfkMMoKvCs+QcVx+1PPJ/rK1dp+lLeXqQv39Y3odq62wkF+VaT0nxOlR5Py0nzV/1lszjbbzamnUJWhYKVJUOQQexGYZZZjtJZjtIbbQOEoQkBIH0Axs+hg/UCo7Do3tsN40fYWgnzmAdJ8Z4f6h3ISBYC19/wDILRDsx0r7T7KRWnKGlROtkpHzLOYkLeUruU9kD6DJYsLGBUwnrGzltRYsdBW666oJShI9SScjnenqI212MqDN1dcIVOcSTGrmCFyHj9E9h9T5ZWf1C9XW4u+styuVKcp9NpUflVsZZAcHYuqHms/T0zR6/dQo0pG/DEZDhCe48ifxsUtQdk7vF1NeyR19qAMx/U18QOPDErReyboef/M1IulDlCOxDI7n+R8sQW3uLW/sX7a6sH5syQordffWVrWT3JOceGCHr5b41U1lMOYWluF4fwIFG5uo/qV9T/obBjGp6Pej+w3hs2Nb64iuxdIRHPElCgUrnrH7U/w59T9sOkDo9s94bBnXGt4jsTSEVwKQlX5Vz1g/pT/D3P2GWh1dXXUldHqamE1EhxG0tMstJCUNoA4AAGO4SE1+ddmjjMbMYSsKlMpVV8dlLHo7D5v4/W3zU1NbQ1sanp4TUSFEbDTLLSQlKEgcAADOzDDDDVsUorJUo1JYwwwxNhjMZnDEyavLro6S7uNYzd5dDqm2cR8l21hrWp1yMe7iOeT4Pp2/rEXIIPBHBGX5PMtSGlsPtpcbcSUrQochQPqCMSzfL4ctRrG/k6n2t1BHoXJiy69XSWiY4WfUtlPmkH24IwXFQRJ1uvs0+YAzPcQ0OmWTxWkJFELpXb9qqcdD9+Wrfxqej3o/sd4bNnW+uI70PSMNwKQhSSldgsftT7I9z9slvan4ZyK28Ytd1tXRrCHGWF/4+uQoB/g+i1q4IT7gD7489XVVtJXR6mohMw4cVsNMsMoCUNoA4AAGaw0ESdT0bcM9xxmrDphzBSBeparvACAkfLW572HTe2KmpraGtjU9PCaiQojYaZZaSEpQkDgAAZ2YYYWau6lFZKlGpLGGGGJsN//Z", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "3ea8ea4237344c9931214796d9417af1a1180770.factory.bridge.near": { + "spec": "ft-1.0.0", + "name": "Flux Token", + "symbol": "FLX", + "icon": "data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='140px' height='140px' viewBox='0 0 140 140' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3EFlux Logo New%3C/title%3E%3Cdefs%3E%3CradialGradient cx='50%25' cy='0%25' fx='50%25' fy='0%25' r='248.533062%25' gradientTransform='translate(0.500000,0.000000),scale(1.000000,0.393939),rotate(90.000000),translate(-0.500000,-0.000000)' id='radialGradient-1'%3E%3Cstop stop-color='%23FE84FC' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%232ED1FF' offset='100%25'%3E%3C/stop%3E%3C/radialGradient%3E%3C/defs%3E%3Cg id='logos' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E%3Cg id='Group' transform='translate(-143.000000, -251.000000)'%3E%3Cg id='Group-2' transform='translate(0.000000, 251.000000)'%3E%3Cg id='Flux-Logo' transform='translate(143.000000, 0.000000)'%3E%3Cg id='Flux-Logo-New' transform='translate(70.000000, 70.000000) rotate(90.000000) translate(-70.000000, -70.000000) '%3E%3Ccircle id='Oval' fill='%23FFFFFF' cx='70' cy='70' r='70'%3E%3C/circle%3E%3Crect id='Rectangle' fill='%230F0E25' transform='translate(70.000000, 83.000000) rotate(90.000000) translate(-70.000000, -83.000000) ' x='57' y='50' width='26' height='66' rx='13'%3E%3C/rect%3E%3Cpath d='M50,30 C57.1797017,30 63,35.8202983 63,43 L63,96 L63,96 L50,96 C42.8202983,96 37,90.1797017 37,83 L37,43 C37,35.8202983 42.8202983,30 50,30 Z' id='Rectangle' fill='%230F0E25'%3E%3C/path%3E%3Cpath d='M63,44 L76,44 C83.1797017,44 89,49.8202983 89,57 L89,97 C89,104.179702 83.1797017,110 76,110 C68.8202983,110 63,104.179702 63,97 L63,44 L63,44 Z' id='Rectangle' fill='url(%23radialGradient-1)'%3E%3C/path%3E%3C/g%3E%3C/g%3E%3C/g%3E%3C/g%3E%3C/g%3E%3C/svg%3E", + "reference": "", + "reference_hash": "", + "decimals": 18 + }, + "theburningrealm.near": { + "spec": "ft-1.0.0", + "name": "The Burning Realm", + "symbol": "TBR", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 2 + }, + "baby.tkn.near": { + "spec": "ft-1.0.0", + "name": "Baby Shiba", + "symbol": "baby", + "icon": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/4gIoSUNDX1BST0ZJTEUAAQEAAAIYAAAAAAQwAABtbnRyUkdCIFhZWiAAAAAAAAAAAAAAAABhY3NwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA9tYAAQAAAADTLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlkZXNjAAAA8AAAAHRyWFlaAAABZAAAABRnWFlaAAABeAAAABRiWFlaAAABjAAAABRyVFJDAAABoAAAAChnVFJDAAABoAAAAChiVFJDAAABoAAAACh3dHB0AAAByAAAABRjcHJ0AAAB3AAAADxtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAFgAAAAcAHMAUgBHAEIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAABvogAAOPUAAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAJKAAAA+EAAC2z3BhcmEAAAAAAAQAAAACZmYAAPKnAAANWQAAE9AAAApbAAAAAAAAAABYWVogAAAAAAAA9tYAAQAAAADTLW1sdWMAAAAAAAAAAQAAAAxlblVTAAAAIAAAABwARwBvAG8AZwBsAGUAIABJAG4AYwAuACAAMgAwADEANv/bAEMAAwICAgICAwICAgMDAwMEBgQEBAQECAYGBQYJCAoKCQgJCQoMDwwKCw4LCQkNEQ0ODxAQERAKDBITEhATDxAQEP/bAEMBAwMDBAMECAQECBALCQsQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEP/AABEIAGAAYAMBIgACEQEDEQH/xAAdAAACAgMBAQEAAAAAAAAAAAAHCAYJAAMEBQEC/8QAOxAAAQMDAgMFBgIKAgMAAAAAAQIDBAUGEQAHCBIhEzFBUWEJFCIycYEVoSMzQ1JicoKRkrEkQjRzwf/EABwBAAICAwEBAAAAAAAAAAAAAAYHAAQBAgUDCP/EADURAAECBAQEAwUJAQEAAAAAAAECAwAEBREGEiExB0FRcRMUYSJSgZGhIzJCYnKxweHwstH/2gAMAwEAAhEDEQA/ALU9APczda6aTe0qn0Kp+7RqeUtdnyJUla8AqJyOvU4+2j5pN95n3ot91dOB8U51Rz5dMfkdKji5U52nUpjyLim1KcAJSSDYJUbXHr+0HWAacxUagtD6QoBJsCLjccjB42+3rp9xutUi422oFQX8Lbichl5Xl1+Q+hOPXw0SZs6FTYrk2ozGYsdocy3XnAhCR5knoNItT6uVYSsk48M9RofcS9N3IvekRazHu2r1SmUtgJcpKnyWm0JH61CBgKIHfzZVgdD4aFMI8WH0I8hWhmc2QvQX9F+vQga89dSbp4XStWqrbCJgS7azrcFQB5BOo39SAOvKG5vvja4ebFddhqvFVcms5Co9HjqkDPl2vRrPpz50LKj7TLb1lRFL27r0lI7i8+y1n7Aq1XnHjSZTgZix3XnFHAQ2gqJP0Gvfi7b7gTU80ayq0pPgTCcSD9yBowm8ZzSDdS0oHw/kw65TgRgqltgT6luK5lbmX5BOXT4nvD10/wBpnYLq0ip7c12OknqWpDTpA+h5dFCxuOLh4vZ1uG5djtAmO9Es1iOphOf/AGjLQ+6hqsSXtvuBBTzSbKrSU/vJhOKA+4B14EiNJiOFqVHdZWk4KXEFJB+h1iVxnNLN0rSsfD+IzN8CcE1RsiRUttXVDmb5hWbT5d4vOp1Tp1XiN1ClT48yM6OZDzDqXEKHmFA4Oh3fe91Itt5ymUFpFSnt/CtRJDDSvIkfMfQf30ivDTRr6sykyrjkXRVqZAqzHZtUxqUtLTzav2jjecZIxy9AQCevXGiJUKuclCM9fDP+9COK+LMyoeRoqcq9lL0NvRHK/UkabAc4SjnCyUpdVcYVMeYbQdLDLrzCtTttobH6QdbE3huurXtAi1uoNuQpzvuxZbaSlKFK6Ixjr82B1J79H7SX7WremXTREj5hVo2MeADiCf8A7p0NEvCKrz9UkJkT7qnClzRSiSdUi4ueQ3tyvATj6my9NnG0S6Am6dQBYaHeM0pHENT/AHa+ag6kdHFNPf5NgH8xplNxb4pG21j1q+q44Ew6NEXIUCcdoodEIHqpRSkepGq7tpt0K3uxULwk3TML1UmzTU0Aq6JQvoG0AnohHKhIHgCNa8YlIXR20bqSsL7DVJ/6+kEXC7D86+mZrqBZhkBB9SojQfpFie46xKmA6XkhlJUsnoB46lMOMplvDqslQ6o7wNc9JpoiNB11P6ZY/wAR5a9HXzFMvBw5U7QypuYDhyp2EcVOolHpAUKVSokTmJKuxZSjJPfnA126zWarKWpZzKNzFRa1OHMs3PrGa4qlRaPWG+yqtLizE+T7KV/7Gu3WaiVqQcyTYxELU2rMg2PpHHNiLW0DHH6tOEtjoPtqLuc/aK7QEKz1z56mmvLq9M95T7wwkdqO8fvDVqWfCDlVFyUmAg5V7HnE22AgNyL1pJeWhPI46+kKIBUUoOAPM+P2022qvN8txazt9WLQTalQXFqVKkfiocQrBBR8KAR4pVlwEHvHTx1YntHuNS92duqHf1JUkN1WMFutg57F9J5XWz6pWFD7a+m+DqkN0hbZFlrWV9xokfK31hccUcNTsuxK4gVqy9dA/KQSRf8AULkdj6QsPtKr9dpll23t3FkFJrcpc+WgH5mWMBAPpzrB+qPTSicOKKorcdtVP/UJiu+957uy6Y+/Ny6KftGaw7UN/ItOLhLdLoEVlKM9ApbjrhOPM86f7DWvhmtpum2fJuFxvD9WfISoj9k3kAD+oq1w+JlTDSJgq1v7AH+6amHxhNlnDfDNgZQVPpJ7qcJN/gi3yEGLTIbT0qyodnQ5bQp7kqW1zS3Higr5snKTzdwHdju8dLJVXpUalzJEFrtJLUdxbKMZ5lhJKRj1ONV0WB7QLeC0qp+HblUyLcURp0tyELjiJMZIOFAFICcjyUnPTvGgvhbKz6X5moyEsh9TaQMqlZVe1fVBKSNkkG9t9DvCOxg9LFpqVmXVNhRJuBcacjqDzuN9otX3bpltUu7Ft2u8wY7rSXXW2FhSGnCTlIx0HTBx4Z1CtD7aTfbbXemme/WRXW3ZLaAuTT3sNyo/87flnpzDKfXRB0BYiU6uqPrel/AUVE+Ha2W/LW37W6aQR0wITJtpbc8QAWzXveM1PdmqZa9RuharnejBMdrtIzMhQCHXMjvz0OB1x4/bUC1Ddzt3dv8AaCifjt+V5mC0sK7BgfG/JUB8rbY6qPd17hnqRrOHH1y1VYeal/HUlVw3YnMelhfvsdtYlUbS7JuIW54YI+9taG63jpVmSbRkT1GA1PihPui2VJC1EkDkwPmBHh4d+l31XHul7Qjcu55blO2vpzFswFKKGn1tpkzXRnofiBQgnyCSfXT77Z1CvVbbu2qndLbiKxKpUV6clxvs1B9TSSvKf+pznp4aPeJ8hUFuMVifl0S5cGXIlWZVxrmVYAbEDS9rAGBvCMzKpQ5IyzqnQk3zEWGulhqTyvC5cRseqtbjOv1BP6B6M0YZHcWwMEfXm5s/XTTezPv5T8C69s5T5JiqbrERBV/0Vht7A8grsv8ALQx4kbZaq9jJriGwZFGeDgUB17JZCVj6Z5T9teJwA1tdJ4j6ZESohNWps2Ev1HIHQP7sjRfw2qgdblynQpPhn9v2IPeHxiNpnE/DWZaKfaYRfsWrKuO6d+5jr9obCcicRDz6wcTKLCfR9Bzo/wBoOiVt/SUUKyKFSkpSCxAZ5+UYBcUkKWfuok6/ftMrK5anZ24rbBKFsu0aUsDwSoutDP8AW9po7H2u2tr1m0Ou06mGVFqNOjSmXfeXDzIW2lQPQ+R1exngqo4pnly8ktCcqsxzEi+YaWsDtreF/UsYy0ngOircCikhSDlANlN2Trcjlcj0hedCrc7hi2Y3afdqN1Wi0ipvfNUYKzHkKPmpSeiz/MDp36zsDZ81lf4U9Lpz2PhIX2qAfVKupH3Gg3eG3txWXMRHqMbtWHlcrElnqhw+Xor0P56VtUwdifA6vPIuANPEaUbD0NrEA+osYE5Ou0jEI8ubE+6sD6bg/A3hO9uPZ7R7T3Mo10bZbj3G3MgykupiqitOKdbz8bSlgpHIpOUnI7jnT+0jh1qr7SXK1XmIqlDJbYaLpT6ZJA0RNrbCj2XQkLkMoNUmJC5TmMlOeobB8h+ZzpCvaqcWHEHsDuDZltbS3i7blLqdIemyHGobTipDweKMFbiVdEpx0GO/rp1UfACq5LtT2L1l9/Lon7oQDrYlOUqPW5sDcDqQGfxMKc6uWoaQ23fU75jtcA3AHYaw2tT4cp7bRXSLjZfWB0RIZLefuCf9aRjfjgJO4W6066Nx7+r8QupQ2zT2o7XKwykYCWnCSOUnJzy95OeuhBws+0J4vrs4hrBtG4dynrgpdersSmTYEmnx+Vxh1wJWoFtCVJUlJKgQemOuR01cjuLZUS9bfehqQlM1hJciO46pWB8ufI9x/v4a3qnDxukNOT+E1FiZCSLfeChuUjPmKSbaEEdDodNZLFKp1aZatAONEjXYg9fZsCOoIivDbPhN2P2rks1KhWoJ1TjqC26hVHPeXkKHcpIICEH1SkaMOpJam39yXhOciU2HyNsL5H5DvwttHPUE+J9B10YaNw+WtEZSazOmT38fHyq7JvPoB1/PSSp2EsU45V5xeZQ2zuqIHYXuSP0iwhgzVao+HR4AsD7qBr8bafM3hX72pqaxZ1cpigP+TT5DaSRnCi2eU/Y4P20FuBKA9N4lrbcaGUxGJr7h8kiOtP8AtQ1YLfe1u19t2TXrhn091iNS6ZJmPOe8udENtKUfHyGlL9mnZK5183TuG40pMem05NMjjwLr7iVq+6UtAf16Z2DsFVHC08iXnVJVnUFDKSbZd73A9IM6Hi+WmsD1t5sKCAgIGYAXU4CiwsTc6i8N3xKbTtby7QVy0G2wailsTaYvAyiW18SAP5hlB9FnS58BPEIwzDOwF8vGFUac64mirkK5S4OYlyKQe5aVZKR4gkdOUZdzSAcdXDbUbfrbm/e3sZbcZ11MitNRQUuRZIORLTjuBIBURghXxeJIadZaelHU1OWFykWUOqf6/wBtC64cTlOxDIvYIrS8iHlBbC/ceAtbssaWuL6gaqBh/wDWmVDiTmgxNjNPthSVhLiQocwOQcHxBGkt4YOO+n1hmFYW9kxMWpDDEWvKASzI/dTI/cX4c/ynpnHUl1I8iPLYblRX23mXUhbbjagpK0nuII6Ea6cnPS1UZzNG4O4PL0IgExThGr4LnjJ1NspP4VD7qh1Srn20I5gRpqtVplDpsqs1qoR4MCCyuRJlSXA20y0kZUtalYCUgAkk9ABoFb00LhC4ptuX6buFeFl16iww48xVYlcj9tTnEpytxp9CyUEAdR3Ed4I0epMZmZGdiSWw4y+hTbiT3KSoYI/sdJ3t97ODbC3bUuSyapSKOxGXeUir0Opt0qFPnJpDjLXLCcXMYd5QlfaDIyfgSrPxEavwLwIPZn7RcH1uG4N2aHetMrN10ivVOlwX6tPaQqDTw+tMV9tpQRyreYCVFzB+ZQHL8Q1YPZ24dhbhxpM2wb1odxx4boYkO0qe1KQy5jPIstqISrHXB0ue0/s/dtLFp8529YNsXnU5UZ1loSLRpcWNHcK1dm42GmA4FcnIDzKUMgkAZABB4QuG+h8MGzVOsKAy1+LyyKlX5DTilokVFaEhwoz3ISEpQkADokHGSdSJBmjRIsJstQ4zbKFKUspbSEgqJyT08SdbtfCQBk6Vbif42rb2yjy7L22lR6zda0FtySg88Wmk9MqI6OODwSOgPzeRpzU3L01nxHSEpGw/gCO/h3DdUxbPpkaY2VrO55JHvKPIDqewudIjftAt/IlMoA2NtiQX6tWeRyrlpX/jx+YFDJx3qcOCR4JHX5ho1cJ20J2c2apNEnNctYqQ/E6oSMEPugEN/wBCAlP1BPjpV+Cvh7ru5t4q3+3QQ9LgMSzLgGYSpdSm82e3VnvQg9QT0KgMdE6sM1yKQ27OvKqkwLZhZA6J6/H/AN5GGPxEm5HC9LZwLSV5/DV4kwsbLdtbL2QOXL2QfaBjNapMaPMjuxJbDbzDyC2424kKStJGCkg9CCPDW3WaI4TQJBuIr64neA6p0iRLvnZGA5Npygp6VQWxzPRz3kxh3rR/B8w8M5wAjtBxS7ybDvGiU6eubSmXcO0WrBa22iD8SUZIUyfMDAz3jVuehVu3wybP7ztreuu2UM1Qg8lVgHsJST6qHRz6LCh9NCk7h1SXfM01eRfTl8OnbbtD+wxxlYmJEUTG0v5qX2C7ArHTMDbMR7wIUPzGBttr7QLZa8WWI93qlWhUVgBxEtJejBf8LyB3eqkp9dMDQL7sm6oqJ1s3fRarHcGUuQ5zTyT/AIqOkavn2Z9zMLXI243Ap0xvORGrDS2FgejjYWCfqkfXQqm8DPE5RZRTCtNiTj9tCqrOD/kpKvy15IqlalPZmZfP6j+rj6CLszgThpiH7ei1gS1/wuEWHoA4UK+alRaDV7utS34y5leualU1hAJU7LmtsoSPUqIGgduDx2bBWS261S6+7dE1sEJYpLfO2VeH6ZWEY9QTpLovA9xP1qQETbRbZB/azaqxyj+y1H8tFGx/Zn3dKWh/cS/6XT2s5MektrkuEeRW4EJSfoFD11sqrVia9mWlsvqr+7D9482cAcOKF9tWq0H7fhatr6HIXFfIp7wNN5eNfd7eFEi3aMRbVDmEte4U1SlPyGz05HHvmVnxCQkHuwdT7hn4Eq9dcqJe288J+lUVOHmKO4CiVMPeO1He035j5j6abfaPhX2b2b5JluW0mbV0gc1VqJ7eRn+DPwt/0AeudF3W8ph9x50TNUXnV05D/dBp3iriDi/JU2RVRcCy3lWToXLWWeVxqSD+dRKrbZTHPAgQqXCYptNiMxYkVtLLDDKAhDaEjCUpSOgAAwANdGs1misC2ghBKUVkqUbkx//Z", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "token.serpius.near": { + "spec": "ft-1.0.0", + "name": "Serpius", + "symbol": "SER", + "icon": "data:image/png;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "meta-token.near": { + "spec": "ft-1.0.0", + "name": "Meta Token", + "symbol": "$META", + "icon": "data:image/svg+xml,%3csvg width='96' height='96' viewBox='0 0 96 96' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3crect width='96' height='96' rx='48' fill='white'/%3e%3cpath d='M29.2241 28.7456C28.396 27.9423 27.0094 28.5289 27.0091 29.6825L27 66.6773C26.9997 67.8501 28.4257 68.4286 29.2426 67.5872L48.6529 47.5943L29.2241 28.7456Z' fill='%23231B51'/%3e%3cpath d='M66.7759 28.7456C67.604 27.9423 68.9906 28.5289 68.9909 29.6825L69 66.6773C69.0003 67.8501 67.5743 68.4286 66.7574 67.5872L47.3471 47.5943L66.7759 28.7456Z' fill='%23231B51'/%3e%3c/svg%3e", + "reference": "https://metapool.app", + "reference_hash": null, + "decimals": 24 + }, + "hrt.tkn.near": { + "spec": "ft-1.0.0", + "name": "Honorable Republican ", + "symbol": "HRT", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "myriadcore.near": { + "spec": "ft-1.0.0", + "name": "Myria", + "symbol": "MYRIA", + "icon": "data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2MDAgNjAwIj48ZGVmcz48Y2xpcFBhdGggaWQ9ImNsaXAtcGF0aCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAtLjEzKSI+PHBhdGggc3R5bGU9ImZpbGw6bm9uZSIgZD0iTTAgMGg2MDB2NjAwSDB6Ii8+PC9jbGlwUGF0aD48c3R5bGU+LmNscy00e2ZpbGw6I2ZmZn08L3N0eWxlPjwvZGVmcz48ZyBzdHlsZT0iY2xpcC1wYXRoOnVybCgjY2xpcC1wYXRoKSI+PHBhdGggZD0iTTYwMCAzMDAuMTNjMCAxNjUuNjktMTM0LjMxIDMwMC0zMDAgMzAwUzAgNDY1LjgxIDAgMzAwLjEzIDEzNC4zMS4xMyAzMDAgLjEzczMwMCAxMzQuMzEgMzAwIDMwMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAtLjEzKSIgc3R5bGU9ImZpbGw6Izg2MmFlOSIvPjxwYXRoIGNsYXNzPSJjbHMtNCIgZD0iTTQ3MS4xMSA0MjEuMjFhMTcuNzUgMTcuNzUgMCAwIDAgMi4wNy04IDcuMjQgNy4yNCAwIDAgMCAwLTEuMVYyNjMuNDdhOTUuMzYgOTUuMzYgMCAwIDAtMTQyLjYxLTgxLjcybC0xLjQ5Ljg1LTEyNi42NCA3My4xMi0xLjExLjY1YTE4LjE4IDE4LjE4IDAgMCAwLTUuNzcgNS43NWMtLjE1LjIxLS4yNi40MS0uMzkuNjNhMTguMzMgMTguMzMgMCAwIDAgNi43MSAyNWwyNDMuODQgMTQwLjgzYTE4LjMzIDE4LjMzIDAgMCAwIDI1LTYuNzFjLjEzLS4yMi4yNC0uNDIuMzUtLjY1TTIxMi41NCAyNzEuOTNsMTQuNzQtOC41MyA2Mi44NC0zNi4yNiA0OS4zOC0yOC41MSAxLjYtLjkxYTc2LjM0IDc2LjM0IDAgMCAxIDExMyA2NS4yNnYxNDguNDNaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIC0uMTMpIi8+PHBhdGggY2xhc3M9ImNscy00IiBkPSJNMTI4Ljg5IDQyMS4yMWExNy43NyAxNy43NyAwIDAgMS0yLjA4LTggNy41IDcuNSAwIDAgMSAwLTEuMVYyNjMuNDdhOTUuMzYgOTUuMzYgMCAwIDEgMTQyLjYxLTgxLjcybDEuNDkuODUgMTI2LjY1IDczLjExIDEuMTEuNjVhMTguMTcgMTguMTcgMCAwIDEgNS43NyA1Ljc1Yy4xNS4yMS4yNi40MS4zOS42M2ExOC4zMyAxOC4zMyAwIDAgMS02LjcxIDI1TDE1NC4yOCA0MjguNThhMTguMzMgMTguMzMgMCAwIDEtMjUtNi43MWMtLjEzLS4yMi0uMjQtLjQyLS4zNS0uNjVtMjU4LjUzLTE0OS4yOS0xNC43NC04LjUzLTYyLjgzLTM2LjI2LTQ5LjM5LTI4LjUyLTEuNi0uOTFhNzYuMzQgNzYuMzQgMCAwIDAtMTEzIDY1LjI2djE0OC40NFoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLS4xMykiLz48L2c+PC9zdmc+", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "strw.burritobattle.near": { + "spec": "ft-1.0.0", + "name": "Straw Token", + "symbol": "STRW", + "icon": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/4gIoSUNDX1BST0ZJTEUAAQEAAAIYAAAAAAQwAABtbnRyUkdCIFhZWiAAAAAAAAAAAAAAAABhY3NwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA9tYAAQAAAADTLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlkZXNjAAAA8AAAAHRyWFlaAAABZAAAABRnWFlaAAABeAAAABRiWFlaAAABjAAAABRyVFJDAAABoAAAAChnVFJDAAABoAAAAChiVFJDAAABoAAAACh3dHB0AAAByAAAABRjcHJ0AAAB3AAAADxtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAFgAAAAcAHMAUgBHAEIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAABvogAAOPUAAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAJKAAAA+EAAC2z3BhcmEAAAAAAAQAAAACZmYAAPKnAAANWQAAE9AAAApbAAAAAAAAAABYWVogAAAAAAAA9tYAAQAAAADTLW1sdWMAAAAAAAAAAQAAAAxlblVTAAAAIAAAABwARwBvAG8AZwBsAGUAIABJAG4AYwAuACAAMgAwADEANv/bAEMAAwICAgICAwICAgMDAwMEBgQEBAQECAYGBQYJCAoKCQgJCQoMDwwKCw4LCQkNEQ0ODxAQERAKDBITEhATDxAQEP/bAEMBAwMDBAMECAQECBALCQsQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEP/AABEIAGAAYAMBIgACEQEDEQH/xAAdAAACAgMBAQEAAAAAAAAAAAAFBwYIAAIEAwEJ/8QAQxAAAQMDAQUEBgUJCAMAAAAAAQIDBAAFEQYHEiExYRNBUXEIFCKBkbEVMqHB0RYjJDM0UoKSsgklQkNEYnKDw+Hw/8QAGgEAAgMBAQAAAAAAAAAAAAAABgcEBQgDAv/EADkRAAECBAMGAwQJBQEAAAAAAAECAwAEBREhMUEGElFhcYEHIpEUMrHwE0JSYoKhwdHhFSMkJaLx/9oADAMBAAIRAxEAPwD9U6yspV7Z9q6tIx/ydsDw+mJKMuOjj6q2eR/5nu8OfhVTW61KbPyS5+dVZCfUnQAak/ycAYn02mzFWmUyssLqPoBqTyHzjBLaLtksOhSu3R0i43bH7MhWEs8MguK7vIcfLnVe9U7TtaavcP0reHW2OIEaMS00B1SPrfxEmow6t19xbzzqnHFqKlLUclRPMknma13etZV2o8QKttK4pJWW2dEJNhb7xzUeuHACHpRNlafRkAhIW5qojHsNO2PEmNcDwrMDwrR+TFip3pUppkeLiwkfbWrM2DJ/Z5zDv/BwK+RoI3SRe2EFGNrx3QblPtjwkW+Y7HcBzltRGfPx99NLQu2FDM1mPqxsqazul9tRR8ccj9nlSm3etZu9a8t7rT6JkJBUggi4BxBviDgRxBwMVtRpcrU2yh9OPEYEdDF37e6xLhNy7RcC8w4N5BWouJI8Mn2vt4eFdTb5KuzebLa+4ZyFeR/+NVW2Y7T7po2YiC9ILlvdUAULJKUfgPl8RVhGNo2lZLA9clKjOYyptbajg9CBg+daf2S8RqPUZcNzLiZZ1IxQpVmzbVBUbAfdBBHBQAMJCubMTlKfKAkuIOSgMe448YldZQCya20/fbgu12+UtTyEdonfRuhxPfu5544Z86P0zafUpSqs+0yLqXEXIukgi4zxEDbzDssrcdSUnnAPWuqIujtNTb/J3VFhGGWyf1jp4JT8efQGqc3O4zLxcJF0uLxekynFOurPeomnD6SOpXJF0gaUYcw1Fb9afAPNxXBIPkkE/wAVJbd61mfxa2jVVKwac2f7TGHVZ949vd5WPGHRsHSUyNP9rWPO7j0ToO+fccI0cW0y2p11aUIQCpSlHASBzJPdSN1htpvF/uLun9nOGYzatx26FG8pR8Gkn5nie7HOurbjq243O5R9mWnFq7WTumctJ5gjKWz4DHtK6Y617aX0nbtMwm2GEBbwT7bpHEnvxQxS6cxJsJnJtO8tWKUnID7R430GWuOjap0g2lAffFych+piMW3Z9PmO+v3mU69JXxU/MWXnlH38qM/kKhABZuSkqHI9n+BqVVlT3KjMOG97couPpl6YRH4WodZ6MWkvPGfAScFLiitIHQnin5U0tN6ktup4AmwFYUODrSvrNq8D+NQxSUrSUrSCCMEHvoEz6xoq8t362BSoSjuSmQeAQef4jwNV83KNVBJISEuaEYA8jz5xXzck3NJKkCy/j/MObA8Km+mbqu42lcFxWZMBO83x4rZ7x1x8sVBo7rUphuTHcC2nUBaFDkUkZBotpycq2XmNJyNwr7NwHkUK4H5591Bj6N5JBzEBNQYD7JFvMMR1GnfKJZHvkmDJZnQZBakxlh1pYJ4KHj4g8iO8EirI6P1LF1dp6JfIwSgvJKXmwrPZOpOFoPkQfMYPfVQb9dYVn1FMssp4RVNL3m+0OErbUMpIUeHI48waafo561jDUU/SInMOonsmYylLgJS63gK4D95BB/6+tN7wgrblJqf9OWT9DMDDgF2uk9x5Txw4QDbW0AzNN9tbTigbwPFJz/fseMQDaNcnLxrq9zlr3szFtpP+1B3E/YkVFLhLbt0GRcHwotxmlvKCeZCQScdeFd8l1UmS7JWcqdWpZ8yc1HddLLWkbmoHmzufzED76Wcw+alUFPLzcWSfxKv+sMCny4aQ1LDIBKfgISugbfImXS56suaczJrqiSeO6VneUB5cKY1nt6rncWYYZkuJWr2xHb31hPeQDw95qNaVaDVqGB9ZxR+77qsHsustrtECNKmBL65DqFzCyoFQbyD2YPcQnu8TV9XaiGFFWAJISOA0vrgIJ65UhTZcuAXOQAgNN2S2tcRX0bPlNyQnKe3UlSCfA4AI8xn30TseziwWuOPXo6Z8g8VrdHsg+CU8seeTThu20OGlhcDS2nYdvZUncLy2UKdI8sYHvzUKJKiSeZ40J119EmRLSc6X/tKCSlIPBJJ3lD8IHC8LNmvVSbZKXyUDqL97ZdLmIHrfRdhRa1zoMJcV9vkY7RUk8P8AGkch1A4UqFoQ6hTbiQpKwUqB5EGrJUotptgjWm6szoaA23OClKbSMBKxjJHQ5B88112fqalK9ldJJORJ/KCzZurKWr2R4kk4gk37Ry6E32rGLeriIbim2yTkls+0nPlkp/hqRYNRvRRJ9bRngNw/1VKN3rXWfFplfW/rjHefG5MrA+b4xxbb2i8vT99UBvTYJbWR4pwr/wAhoDsd1A5p3afpq6NO7gFwbYcPi26ezWP5VmpZtibQdA6ckK+uh7cB6FBz/SKUECYqHOjy21YWw6hxJ6ggj5UQ7NTKpdDL6c0Kv6KuInUWXTUKGqVVkQ4jtcj4GHJJYXGkux1jCmlqQR1BxQDWkcyNLXFvH+VvfAg/dVotoexvTTmn7lfbQ05FuUcPTHFl1SkvYJUoFJOBwzjGO7nVdZUduXGdivDKHkFCh0Iwa57SbMzux0+23OWIV5klJuCAeYBuNcOhMB1Ar0vV0CYYv5SLg53z54HSFFpxlx2I3GZQVuKc3EpSMkkngB8asdYbUxYbRFtjeAW0gKOfruHio+85qu9vRJtE92MHFNvR3cpUk4IUk8x8BRdq9XJuQqUuUt51Q3Sp5RWcZz31FrUg5U7BC7Jz6nSDSsU5yrISlC7JGPU6RYKuZ65QGM9rLbBHMBWT8BSPGqbqORZ/k/8AdeiNXXRPNDB80H8aHhs08M1XgeGyjwzWDDYlakBBRCaOf31/cKg2uLm4IyGnW0uuP5/OLIJR3HA6jIzQZOtrkn/TRj7lfjQ27XiTeHG3JKG0lsEJ3ARwNWMjR1SzwUoYDnFpT6IqVeStSRYc4NaJQr9MXjgdwf1fjUowaD6UhmLakuqHtSFFzlyHIfLPvo9FYMmS1HTnLq0oGOpxXCecC5hah82wjhUHQqYWrT9oHbcpXq+mdLWvOCtC31J8MIQB/WaUUBlcydHhtglb7qG0jqogD51PNvt8Zn61Ta45/N2qMhhXhvq9s49xSPMGhOxWxvan2raYtDLe/vXFp9wY5NtHtFn+VBou2bklPNMMAYrI/wCjh8YvaN/rdnxNO4WSpw9DdXwi7e3DUt00/pgxIEYFu7kxnZGf1QxxGPFQ4A9D0qte6auFrPTEbV+nJdjkbqVPJ3mXCP1bo4pV8efQmqjT4Mm2TpFumt9nIjOKadR+6pJwRRZ40U+dZqrU46oqZWmyeCSPeT3965xN7ZCErsBNS65JbCBZxJueYOR7Zf8AsQbWdhWXheoqMnAS8AOWOAV91RgHIpskAjBFDpmjbDeQS0+LXMJJ393eYcPUDig9Rw6CljJVRLaQ29kNYa0lVky6A28DYajG3bP0hcVlSi4bNdYwMrRaVTWR9V2GQ8lQ8QE+19lC0aW1M4vs0aduZVyx6o5w+yrlEyysbyVgjqIu25+VdTvIcSR1EC6I2O0uXaaloAhlBCnVeA8PM0Uh6GuRc/vNSIqQeKAoLWfhwHvOelSuDAi25gR4rQQkc/EnxJ76gTlSbbSUtG6vyEQZ2qttpKWTcnUZCPVLYQkIQAEpGAB3Cu+1zYFjTM1Pd3EtwbNGcmPLUcDgPZHmTjA5k8q4wCTgDJNKb0j9dtW2zR9mdskNrflqbn3hSebYHFhjw7+0PmjrVXTKeqqzSZZORzPAan9ucUMrIrqr6ZNH1szwT9Y+mA5kCFhqnaXNvt1mXRlsB+Y+t5xxfio5wlPcPDPdVmv7PfRl4vWpL/tRuz7i4cBj6Lib54LfcwpwpHIbqAkf9nnVQ9I6WveuNS27SWnIa5Vxuj6Y7DaQeZ5qOOSQMknuAJr9ddkeza1bJdn1n0Jadxabez+kPpRumRIV7Tjp7/aUTjPIYHdWlNiKC0qbEwlHkb+Og7Z+kSPFyvsUOiiky9g4/hbg2Mz390dTbKJhSa27bLrpeWzrfRsMyrpGRibb0nBnMjkW88A8kcs8FD2TxCSHLWUy61RpOvyS5GeTvIV6g6EHQiMx0upv0mZTNS5xGhyI1B5H+RjFGrVd4F5jGTBeKglRbcbUkpcaWDgoWk8UqB5g1208drvo3WfXU53V+jLn+TGq1D85KaRmPOwOCZDfI8h7YGfEKwMIK/QNoeztz1faXoiZGZHK62xCpcFY8SpIKm/JQz0rK+1XhnVtnnFOMJLrOikjEDmIeVI2gkK2gGXXuuaoUbKvy+0OmPECCDMmTHOY8hxo+KFlPyrd6fOkDEia+6PBbhV86HW272i8NpdtVyjSwoZAZdCiPMA5B6GiKYchXJhfvGKWyx9GbLFjzi2WlKVeYWMeFfUpUtQShJJPICvs922WWMqbfrrEt8dIyXH3koHxJpWaj9IeydsbJs5tlwvMleUKlRoi3d0924gcVHqQB0NTZCmzlUXuSbZVztgOp+TEqVlJieP+Om4GZySOpy/WJ7qnV9u0XHIWUyLo4glhjmEHuUvp88Y60iHgbjdFSHWVzrpdJHMN9rIlPrVyAAypRJ4AUwtGej36QO1mUi5J0o9pyDKXl26alJZd3e9SIwy6o4+rvBKTw4gcauDsV9GPQWxzcvCC7ftTlBS5eZ6R2iAeaWED2WU+XtHJyo06dkvDSeUN6YuhJ95RzPJI4dY4VLa+jbIMqQ24Hpg6JN8eBIuEgcMVcuAD0Y/Rxj7L2HNcaqgMDVlyZDXZpwfo9g8ezBBILiuG8oeASCQCVP8ArKytB0+nsUyXTKywslPr1POM8VisTddnFT06reWr0A0AGgGn544x/9k=", + "reference": "https://metapool.app", + "reference_hash": null, + "decimals": 24 + }, + "infinity.tkn.near": { + "spec": "ft-1.0.0", + "name": "🔴INFINITY", + "symbol": "INFINITY", + "icon": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAARCABgAGADASIAAhEBAxEB/8QAHAAAAgIDAQEAAAAAAAAAAAAABwgACQMEBQYC/8QAMhAAAQMDAgMFCQEAAwEAAAAAAQIDBAAFBgcRITFREiJBYYEICRMUI3GRocEVQlKC4f/EABwBAAAHAQEAAAAAAAAAAAAAAAABAgQFBgcIA//EADQRAAECBAIGBwkBAQAAAAAAAAECAwAEBREhYQYHEjFRcRQiI0FCgbETFTJSkaHR4fBygv/aAAwDAQACEQMRAD8AtTqVKGuuuuuJaE4k5kOQvB6W8CiDBQr6klzoOiR4mkOOJaSVrNgIdyMjM1OZRKSiCtxZsAN5Mevy/NMWwKyP5Fl97i2u3xxup59YSCeiRzUfIcaSzV33kSWnn7VpDjyXEpJSLlcUnY+aWx/TSnaza655rfkK7zllyX8shR+UgNqIYjo6JT16k8TQ7qoT1eddJRL9VPHv/UdSaH6ladTm0zNd7Z3fseBOXFR54Zd8EzNfaU1wz5xw5BqPePgub7x4r5jsgdOy3sD670OJEuVLWXJUl15Z4lTiyon1NYqlQS3Vum6ySc42eTp0nTkezlGktp4JSAPsIyx5cqIsORZLrKxxCm1lJHqKI+Fe0prhgLjZx/Ua8fBbPCNKfMhkjp2XNwPTahnUoNuraN0Eg5Qc5TpOoo9lNtJcTwUkEfcQ+ukXvIkvPMWrV/H0tJUQk3K3JOw81Nn+GnTxDNMWz2yMZFiF7i3S3yBul5hYUAeihzSfI8ao3oi6Ma655ohkKLzidyX8stQ+bgOKJYkI8QpPXoRxFTsjXnWiETHWTx7/ANxi+mGpWnVBtUzQuxd37HgVlxSeWGXfFz1ShtoXrpiWu2JN5DjzwaltAInQVq+pGc6Hqk+Bok1b23EupC0G4Mctz0jM0yZXKTaChxBsQd4P99Y4maZfZMCxa5ZfkUpLFvtcdT7yieJAHBI6knYAdTVPeuus2Q6355Myy9OrRG7RbgRO1uiOwD3Ujz8SfE02HvItXXmhadILVKKUuJFxuQSeY32bQf2fxSF1UK9PF13o6D1U78z+o6k1K6Ht06ne/ZlPavfBfwoyzUceVs4lSuDes5xawLLVxuzKXRzbSe0oegrlRtXMHkuhr/ULZPDdbZAqHRJzC07SUEjlGrTOlNEk3ujvzbaV8CtIPnjhHs6la8KfCuLAkwJTT7SuSm1Aitim5BBsYm23EOpC2yCDuIxBiVKlYZUyLBZVImSG2W08SpagAPzQAJNhBrWltJWs2A7zGapXj5mrODw3C0br8UjgS2gqFbVp1Hw+8uJZiXhpLiuSXe4T+acGTmEp2ig25GIFrSyhPPdHbnGivhtpv6watCtZsh0QzyHllldWuN2g3PidrZEhgnvJPn4g+Bq4TC8vsme4tbcvx2Ul+33SOl9lQPEAjik9CDuCOoqjcEEbg7g0+vu3dXXXU3bSC6yioNpNxtoUeQ32cQP0fzUxQZ4tO9HWeqrdkf3GV66dD26jTvfssntWfit4kZ5pON+F8oVX2ks1cz/W/L8hLxcZNydjRjvuAy0fho29E7+tKzqzqVIt7y8bsT5beA2kPJPFO/8AxHnRZvFwUlubdXiVKAckKJ8TxUaUsfM5BfQHVlT0+SAVHqpX/wBoUeXTOPrmXsQMfM/iBrUrsxotRpSgUolK3RsXGBCEBKbDgVEgX4Xjex/EMjy99SrdFW6N++84dkg/c16CbotmURgvNtMSCBuUNr71Hiw2aFYLXHtkFoIbZQBwHFR8SfOuhRvaQve07IAJhNK1F0gSKRUnFqfIuSkgAE9wFje3E78oVqzZFkuDXMhlb0dbatnY7gISryIo+4RndszKEFsqDUtsfVYJ4jzHUV8ZzgFszCGoqQlmagfSeA479D1FAJaMgwHINt1xpcZXA+Cx/QadES9dbJT1XR/eY9IraXa7qbn0tvKL9OWfpy+VQ4blejB5pnFsw6CXZKg5JWPpMg8VHz6CgDfspyXOLgEvLdd7atmozW/ZH2ArFvkGf5AApSpMuSr/AMoH8Ao94Np7a8QiJX8NL05Y+o8RxB6DoKIJl6G2CsbTp/vIesG5MV3XJPKallFinINiePP5lHheyfURW7RnMpzAfcYZjdobhLq+9+K4uSYNkeJkO3KIQ0Tsl5s7p3+/hTSVqXa2RLxb37dNaS408gpUCKataQvhy7gGzFlqOoqjKklIkXVpeAwUoggnMWGBy3QHdJNRpbU1nGbzILrLx7EdxZ3KFeCd+hpufZszVzANcMQyEOltn/SaiyTvsCy6fhr39Fb+lV+z47tjvj8ZtZDkKSpKVDnulXA/qmxx+5OORbdd2z2XFIakAjwOwVS6ywiWebmmcL4+Yx+8N9U9XmdIaTO6N1QlRaBSCcTsqCklP/JGHO3dH1ebetTU61ujsqKXY6gfA8UmlLZW/Y72hxxBDsGSCpJ6pVy/VWBe0jhTmAa35fjxaLbIuTsmONtgWXT8RG3orb0pTNXNOZRmO5NZY5dQ73pLaBuQrxUBRUZ9Mq+uWewvh5j8wvWxR5jSSjyekNMBUWhtWGJ2VhKrj/JAvkTwgt2a6w71bWLlCdS408gKBB5eVbtK1jeb5HialN22WUtE95lwbp3+3hXdn60ZjMYLLTrMbcbFTaOP7pLujz4cIbI2Y9abr0oypFKqg2tL4GISAQTkbiwOe7OC9m2f2rD4aviOJemKB+Ewk8d+p6CgE65kGoGQdrsqkS5CtgByQn+AV9WXHMlzi5FTKHn1LVu5IdJKU/c0fsIwS2YbCCGUh2W4PqvkcSeg6Cnd5ehtkJO06f7yHrFaS3Xdck8lbySxTkG/Pl8ys9yfVfSnIMBv4KguNLjq9Fj+g0fMF1BtmXxEoK0szkD6jJPM9R1FbGa4NbMyglqQkNykD6T4HFJ8/KgBfMayTB7kFPIdZUhW7UhvcJV5g0AqXrrYCuq6P7zHpBLYrmpufU7LpL9OWcRw5/KocdyvRpK0b1d4djtr9ynOpbaZQVEk8/IUBYGtGYw2Ay66zI2GwW4jvVwchzPI8ucS3cZSnEA9xlsbJ3+w501Z0ef9p2pATFlqevSjpkiqnNrU+RgFAAA5m5vbLflGhJdkZBfXXmmyXp8kqSkdVK4D902Fhtq2o9vtDQ7S0oajpA8TsE0JNJtNJMSQ3kt9jltSO9GZWOIP/Yimr9m3CnM+1vxDHgyXGTcmpUkbbgMtH4i9/RO3rQrEwmbeRKs4gYeZw+0FqroczozSZzSKrApW6CuxwISkFVzw2id3ADjDUe8i0jdc/wAnV61RSpKEi3XIpHIbktrP7H4pDCARsRuKvIzXD7Jn2K3LD8iih+33RhTDySOI35KHQg7EeYqnrXPRrItEc7mYle2lrjhRcgy+zsiSwT3VA9eo8DRV6RLTvSEDqq35H9wrUtpg3Uad7imVdqz8N/EjLNJwtwtnAXu+nWIXpwvTLQ0lxXNbfcJ/FaUPSTB4jgcFrLpHHZxZIr2VSodM5MJTshZtzMao7onQn3ukOybZXxKE39IwQ4MO3spjwozbDaeSW0gCs9SpTckk3MTqEJaSEIFgNwG6JWCZBh3FhUadFbfaVzS4kEVnqUASDcQHG0OpKFi4O8HEGPGStIsHlOl3/MLRJ32bWQK6dmwPFbCsO2+0NB1PJxY7Sh+a9BUpwqcmFp2VLJHOIOX0Voco90hiUbSviEJv5YYRKfT3bukbzQu2r91ilKXEm3W0qHMb7uLH6H5pT9C9Gch1uzyHidlaWiP2g5Ol9ndEdgHvKJ6+AHiauEwrD7JgOLW3EMdipYt9rYSwykDidhxUepJ3JPU1MUGRLrvSFjqp3c/1GVa6tMG6dTvcUsrtXvjt4UZ5qOHK+UduhprtoTiWu2JOY/kDQZmMgrgT0J+pHc/qT4iiXUq3uNpdSULFwY5bkJ+ZpkyiblFlDiDcEbwf76xS/rLoZneiOROWXLbasR1qPyk5tJLElHgUq69RzFDyryMwwrFc+sj2O5hY4t0t742Uy+jtbHqk80nzHGkq1c926XHn7rpBkCEJUSoW24q5eSXB/RVQnqC60SuX6yeHePzHUuh+umnVFtMtXexd3bXgVnxSeeGfdCGVKJWa+zfrdgDjgyLTm8JZbJ3kxo5kMkde23uB60OX40mKstyY7rKxwKXEFJHoagltLaNlgg5xs8nUJSooDso6lxPFKgR9jGOpWRiNJlLDcaO68s8AltBUT6CiNhXs3a35+42Md05vCmXCNpMmOY7IHXtubA+lBDS3TZAJ5QJyoSlPR7WbdS2nipQA+5ga0Q9GdDM71uyJuy4lbVmOhQ+bnOJIYjI8SpXXoOZpsNI/du/DdYuur+QIWlJCjbbcrgfJTh/gp1cPwrFcBsjOO4fY4trt7A2SywgJ3PVR5qPmeNTsjQXXSFTHVTw7z+IxfTDXVTqc2qWoXbO7tvwJz4qPLDPujyGhOhOJaE4k3j2PMh6Y8AufPWn6klzr5JHgKJVSpVvbbS0kIQLARy3Pz8zU5lc3NrK3Fm5J3k/30j//2Q==", + "reference": null, + "reference_hash": null, + "decimals": 10 + }, + "floki.tkn.near": { + "spec": "ft-1.0.0", + "name": "FLOKINEAR", + "symbol": "FLOKI", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "ft.zomland.near": { + "spec": "ft-1.0.0", + "name": "ZomLand Token", + "symbol": "ZML", + "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABABAMAAABYR2ztAAAAJ1BMVEUAAADuw0fNfR3quUHShyPgpDXlsDvXkSn126/cmy/xyH7wxVzxu1mK0HLnAAAAAXRSTlMAQObYZgAAA2dJREFUSMd1VT1PG0EQJUqDnBS8nO/OBpocZ58oFxtFlD4TUEobAUp5hECNFROlM0qDEho7X0oHSoNCA0oTUYU6fypvZ3d9Bw4PIdmet2/ezOzH1B0cHw+m7sX0xa8GAHV9D+cDxjj/X/wjAO/15pctBaAyGf8BBNtpRMT9DN7sxPorLEtYKBvA79vxErAiofVVoX0CTm8R/sLnz+vMTx9v+HGIuWItJwi48FDBYJ9SWTHJ9BW6IuvAdDVgUBCocj0KeBZFB6gUBHpcoRG8/OqBoGKSuygh1DkJOolX17dAqykl/ljCGUZRW//4NjVt2JMklLAZWGKsdCMjiw0QaTScM714jB0RWIoc+prRjOqYMRlIzmSJRRpv87sXxTATUb6UEJoobXrp80wKGUorStQ+ALBjDIZRwh9eZXrFggzkAUaSoWcISGsoi6QXLaIiFqJEvhpkuzVU428AuFBpEzc+pYCqI3iL8GM/UyyLJnQXysaCI+AzgiRoiYkWBuKx4ywQHewiqKOtO8dOnLJN3VjlXaBaMwueog+CfmdI6CXICVxUPgzaMC4TEh4ilZocIVGh8to0AlCbdb73uCgvgrVX4dXxDmKcdZ4FUmWYE3x4NbyAjC/ThHyU9RFTIIDXwhoANqAzp/vUcoQWa41J8DvegSXAEcpSohA8JgmEEBYIVSGMZLtTI2zdVfAi1jkkrQ2N5kZOYBWuUZ2AKkJg3Jp0ZYLq5Kf813oKtsy5qSM2Sr4YAudi4Rp1hHTROKYH+AkcXKsf2mH5Mkl8LxIYqehxR0rKkAoagIKkUXbcbsPQnz2gms0/s2EuueVCStsyasjhthw7RaLblCJhCxHpgZw8cVneNzY9yWG3vT7fR/bg+L5sOBdW44PzCE3msnWQ6iBH79JcD6S6bVm3HvLDS5fomYVp3LPDhJyKGGBYm1gy8+rVnkTK+LMXSEUIJXsFYbTgH9r1krAjFiSHucS60rCxQIL58UsRiv2dTh4P0sJNWmJ6XcjKeAxKLtL8wj/Te3YNBezrps4WX4uuu6zzy1wEnIR0qa/ssOU5cAJOQk8i2WoADfegUCDHCWWpwavcPUmuhDwJlnvFR212cOfVvWFu9ywqYN7Fi88SKXubm3tiVeKTDAd5ayYZ48f752TQUS6A6/Nby/8BNBAG258AcBEAAAAASUVORK5CYII=", + "reference": null, + "reference_hash": null, + "decimals": 24 + }, + "fritz.tkn.near": { + "spec": "ft-1.0.0", + "name": "FRITZ", + "symbol": "FRITZ", + "icon": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/4gIoSUNDX1BST0ZJTEUAAQEAAAIYAAAAAAQwAABtbnRyUkdCIFhZWiAAAAAAAAAAAAAAAABhY3NwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA9tYAAQAAAADTLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlkZXNjAAAA8AAAAHRyWFlaAAABZAAAABRnWFlaAAABeAAAABRiWFlaAAABjAAAABRyVFJDAAABoAAAAChnVFJDAAABoAAAAChiVFJDAAABoAAAACh3dHB0AAAByAAAABRjcHJ0AAAB3AAAADxtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAFgAAAAcAHMAUgBHAEIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAABvogAAOPUAAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAJKAAAA+EAAC2z3BhcmEAAAAAAAQAAAACZmYAAPKnAAANWQAAE9AAAApbAAAAAAAAAABYWVogAAAAAAAA9tYAAQAAAADTLW1sdWMAAAAAAAAAAQAAAAxlblVTAAAAIAAAABwARwBvAG8AZwBsAGUAIABJAG4AYwAuACAAMgAwADEANv/bAEMAAwICAgICAwICAgMDAwMEBgQEBAQECAYGBQYJCAoKCQgJCQoMDwwKCw4LCQkNEQ0ODxAQERAKDBITEhATDxAQEP/bAEMBAwMDBAMECAQECBALCQsQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEP/AABEIAGAAYAMBIgACEQEDEQH/xAAdAAACAwEAAwEAAAAAAAAAAAAACAUGBwkBAgME/8QANRAAAQMDAwIFAgQGAgMAAAAAAQIDBAAFBgcRIRIxCBNBUWEicRQVgaEJIzJCUpEkYjRygv/EABkBAAMBAQEAAAAAAAAAAAAAAAACAwQBBv/EACMRAAICAgMAAgIDAAAAAAAAAAABAhEDIQQSMRMiMkEFI1H/2gAMAwEAAhEDEQA/AOqdFFFABUTlOUWfDbFKyG+yfJiRU9SiBupR9EpHqSewqWpefFZf3UqseNNLPRs7cXkeiijZLe//ANGuxXZ0D0XrTLXfG9S7vKsMe13G03COjzm2JyEpL7X+adif9VplIric1Wn2T4tnL0h0ttT/AMPcHFqJ/lPfST9gdqedp1t9pDzSwtC0hSVDsQexp8uP43QsZdke9UTUrV2w6cCNEkRn7jc5p2jwY23Wof5EnsKnM5zOzYDjM3KL4+G40Nsq235cV6JT7knilwwpF8yFy563Zd5TU2YsptbEg/Qwj+3YevSP3rkY2uz8O7bUV6xicDzeJnVmNzYhPwnmnCzIivj62lj0P+6stZNpNcHhl15ivq3/ADKJHuII7FXKVH9q1mkYzVaCiiig4FFFFABSbeI3JlTs6uk2RMjsxrShNsZLqwhAJHWpSifYgU2eV5PaMNx6dk19kpYhQGVOuKPc7DhI9yTwB81z61I0oz7VC35BrRkR/LLO66qbBtbijuUEgJUR7kbd6thVysSbpFevOtlrchOYrbravJ1PILbv4dJSzz7KI3JHxU1hni08QWEWRrGGrRBkMscRTcWnHHm2vRG+46gPmr5onoxYYVlYbi2FNzvk76zLcBCYoPYJA449SavucaI3DG4qb05+Hm7dKFLA6VJ+APb5rTLrJ1Iim14Ync8u1w1tDN4zu5xIsS3uebBtTbPltPLH9ygTv+p/Stikak3LJbZbsURjyrMqIhDTiG1Bxpwbd0qHzVOU1FMjyyAyWxt0Hnc/eva9W2+C0i4Wx5UOWn/xCiRsnzP+w54rs8SlDqiuHKsWRZJKxgcFdiRtSYttafSp5ixJbdAPr17gffathpQME1Vs9jtcfNbzA/DzccuCod6UyvzFONuJGzm/9wBH6U19hv8AZ8ntMa+WG4MzYMtAcaeaUFJUDWKcHB0x1JT2SFFFFIdCiiigBU/G9q3ZNPHcTg5TGmybKt5y4SmIzfX5ymyA2lY7dPUQdvXaprHcpa1q0fZm+Q3Ej3RSENoKOkeUFggbenArEvHXZ8x1A1GbsVrfaRbbc3EirQF9LwU4evzGz67dtq0fTtTuP2ezYTbE9bdvbbQQOxcHcn9T+1auOm7/AMJ51FRVemxWO741gljnXdxyNEiocX1LUQhCUo43J9ANqyPJPHz4bp89WFT8jmsJm/yhO/CHyOTt1BR7j5qseNPE9TcnwVi1YTb1PR0qSuSw0ekyEjYqTx780pV20f1X1MyCRb8T0wkxkZBHjx5CJlsAELyyNvKdPCB7kdxSZm4tNKxuPhhlTcnVDoZFY7HEdbmNzWX4MloSYsptY6HWlchW9QUbMYbHnQ7Wp2WAgoWpuOXUtp27nYfvWzaW+GfC8Y05xrFsqhIulytMJDUh4uq6Vr7kbb8gb7fpWr27Fces1vVbbRZYcVhSCgobZABBHr71ZZqWzPKS8Rz8TMt8PPHLLGV5sK9wVGS0g/QtYPClD371Y/DzrYNCs/k6dX9LysYvc1AiuLUf+E4vgEA/2Ennatm1K0Iw3HpKM1/FMMz91o6APLR0q22CEj2pY/EJiS7YmDkcST5jkbpWkpbIUhQO4PPftTfXJFnU6OmYIIBB3BrzWeeH/OJ+oukWOZXdSgzZUUJkFJHLiT0k8didt9q0OsLVOjQnewqral6iY/pbh87MskkBuJDRvtvsVrPZI+9Wmk//AInce/uaBMyrOlxTMW5IdlBAJ3T0nbfb03oW2dMXvviVx/M8tk55eoElLjyQ2wpqKssxmhwCVbfUrY96aLQBrHshszGR299qUzK+tLyed/jeuQ1o1xzu0Q224WWpdbCCiRHUelCmyOEgH27U/wB4GtSYuOaPt/nUlLUibLdktoXwltKldgP329q1Qk+vVE8sF6PUbdbHEdLjSFJHornaviLXAYQr8O6hpJ/xIrCr1rxh1kjOzrzdvPKN1FSyUtD4SON/uaTLxCeP3MESH4mlOMSX243L0pCF+U2nfbckdx89qR3H0XFxsmZ/RHTB1uVb1qfizW30k8pUvkfapuBKLzYK1c7b7e1Ip4INUdUdWsQvGWZ0d4SXQ1F6uodSgN1EE+x4purHe3mbY48tbaA0nhXX1f7puvaNk5wcJOL/AEVrWvKmLlaF47ZWlvulwJlu/h90NNg8/WeAftWOZXYLRfrElqUtEjgpUkudf07dgPT71pfiFy4o0nn+S+yFvNKKnkPeT1f9QO6t6TnBbpPaZVLMp/ZltTq0hZ+pIG5FVxLVHF4Nz4JGDa8LyXHmn3XYtuvrqI5Ud0hCkJPSk/B33+aY+sM8IkGcxp7cLlIiuMRrrdXpkQOJ6VFpQT9W3yQa3OsmX82aYfigqLyXGrJl9lk4/kVuZnQJiC28w6nqSoH4qUoqYwl+pv8ADR0Gl2W73vFbVNgXVDS5MVDb4U0HE/UE9KgeDtt3pPNVhlmjmN2GZi19cksT5QiOJfbCQ0Qk8bJ9QQa7JKSFpKVDcEbEVzx8aejoh3xiJIhus4/crqi5NSmWyUxnAkhxJ27DkGrYpNyo1cHCuRyceOW02hVJjOUZbgd1ueQXN6U5DurKJLHZCYyhwrYem5HNa7i2Cqs+BjBbEpD911BcjWyJtuSlgnqeVyNihKRyfQ7VKWXH7PhkqZebvJjfkT8NDTiXCFCQAPYdyRVm8IEBu8XG5ahPIAt9rD1ssCXDulltS+p5wE/onf2FaM0VWj1f80sfC4v9SStpDM4titm0wwm04Ji0dEeJbmkxwpI3Lih/Ws+5J3qyhw/lTZfkK8sqJcWNikD57cVQo+S+fOmTkSiqPGUAwAd9wOCofc1+fUHUcQMVlXB95yKll1UdKmtvrcPG3T6j3qKdI8I4tvZmfihzZtcSNiwlDZ49TbakIAQnfk7pJ4qk6U4s/nl1t+CYrIC3pitrpLbbK0xYx/qO/A39BWeuRL7keSFu2xZ8i9XV0iHHah+Z5h9NtxsAO5roN4ctBIeklnVeLhKel5Dd47RnuObANEDctoA4ABJ+9Ms3SN/sPj3RquNWKJjFggY/BB8i3x0R0b9yEjbc1J0UVl9LBRRRQAUsvjqiZ+3g9jv+EMSZce2z3BdoLEjyTKjONFPSVEEAA88imar4TYMS4xlw5rCHmXB0rQtIII+QaDsW4u0cmsIxnUi+MLs2OYfdIzcplcRyfkDrDrEVhwEOdDaeFK2PCuNtq2K65bh2hWD23TewdDqmWEtrcSeV8/V8cnuacs6G6bCSZKMbjIJO5SgrSgn/ANQoJ/app/TfBpTTbMrF7a8lpHQgORkK6U+w3Hanc2/S3I5OblS7ZpWznLO1ayC4SHWrO4ptp5KEIbjsrcDih2QkpGxV8b1cMJ8PGtOsCX5Fxdex+2ecndV0Q4iSSeVqaQnj9TtT7W7DcVtLDca22CDGaaPUhDTCUpSfcADYVLpQhA2QkJHwKWyBlGlnhr060tmN3q2wnpl3S0GzNmOqdcHHPTudk7/FazRRXACiiigD/9k=", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "czdog.tkn.near": { + "spec": "ft-1.0.0", + "name": "Crazy Dog", + "symbol": "CZDOG", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "themunkymonkey.near": { + "spec": "ft-1.0.0", + "name": "PISANG Coin", + "symbol": "PSNG", + "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP+gvaeTAABCzklEQVR42u29d5wkSXWo+0Wacl3tZnq6e7xbM6xhvV/tLn4xAjkuCHQBCQHCCAkesggEAqQrIYtAAnF56AmEcEI8wWLver/LWnbZnTWz4217Vy4z4v4Rmd01PVVdWV2VWVXd+f1+OVPdHWkiK86JiBMnzhHENB0hIJuxmLrn2lY/yoqg65JbyBclUqpWP8qKQ7T6AVYKQkB/j83oHde0+lEqkQW6vCMNpABzURkF5L1j1jtmALfVD19O1yW3UChK3FgZNIVYATRAi4XeALYDpwNnev/vADYDQ8Bar0yzmASOAYeA54Cngae8Yw8wF/ULGLr2dkbGi8S6YPnECmAZJBMGGweTPPv9K6O4nQ2cD1wBXAZciBZ2s4FrhsV+4BHgPuBu4AFgIuyb3v3IJK9458NMzjioWBnURawAAmII2DCY5MD/uTrsW10EvBR4CVrgM62uexN4ELgJ+CFwO1AI60YbX3gHx0aL8RQhILECqIFlCvp7LI7fFtow/1rgl4BXoYfwq4FR4EfAfwI/QNsbmsp1v/4g9z02SS4vW13XtiZWAFVIJQ12bErz+Lcvb/aldwK/CrweOLvV9WwTjgLfBL4M3NvMC0upGLrudkYnSvH0oAKxAihDANkui7f/ygb++gOnN/PSVwJvQwt9qtX17AB+CPwL8K1mXnTbS+/kwNF8bDQsI1YA6JfQ3WXxptcM849/dGazLnsF8F600Mcsn1uBf0RPF5rCjuvvYt/hXKwIiBUA2YzJxWf3cPP/e2EzLrcN+ADwDsBqdd1WIP8N/CVwVzMutvnFd3DoeGFVTw1WrQJIJgx6usxmGffeCnwQvS4fEz5zwN8CfwVMN3KhP/6HZ/ncNw4xPrU6bQSrTgFYluDK83q59V8vavRSW4A/A97c6jqtcm5FK987G7nIlpfcych4kVxhda0arBoFYBiCs3Z28dNvXdbopV4AfBK9Xh/TPhwH/hj4QiMXuf63HubGe8dwnNUxHFgVCqA3a9GTtdj/46saucwbgb9Bu9nGtDcfBT6y3JOVgjNedRd7Dqx8Q2EzfcXbDtsSvPGVw0zcfW0jwv8O9Jzzy8TC3yn8KXpz09+yDJdpIeDpG67kna/bRDq1okVkZY4AhOe2O7Q2wQNfu3S5l3k78Ckg2er6xDTM3wHvX+7JL3rrg9z6wASuu/KGAytOASRtgz//nZ28/81blnuJ1wOfR2+hjVlZ/Bl6dFA3//bfR3j3J3YzM9dWu6MbZsUoACFgeCDJru0ZbvrCstb0rwb+HW3dj1nZvB2t5OvmRW99kFt/MrFiNhutCAVgW4KPvnsHf/Sb25Zz+iDwdfSmnJjVwxHgdejdiXVxdKTIzpffxVy+80cDHa8AerIWk3cvW3b/hgbmhjErgh8DvwJM1XPSy97xEE/vy7H3cK6jHYg6VgEYhuCis7rJFySP1r+2/0r0RpNEq+sR0zZ8EPjzek/63DcO8d6/2E2x1JlaoCMVQDJh8MDXLuWHd43y/jfVNWVPAjcAL2p1HWLaksPAy4FH6z2x+7JbOtJA2HEKoLvLZOqe65Zz6m/QoJdYzKrhM8B76j1p44vu4MiJztpc1DFeDkLAxsHkcoQ/hfYTj4U/JijvBsbRsRgD05U2efOr12OandOvdsSTmobgl168jv5em899eFc9p74WbeGPiVkufwX8Qb0npS+6mXyx/TcWtb0CSNgGB2+8mnX9dr2nfgNt3Y2JaZRn0AFeRuo5qRPsAm2tALrSJjP3XVfvaWeiw1L3tPr5W0qgb9YvFGDS2kHz2hD5VeCr9ZzQd+WtTE47rX7uqrStAujpspisP7XWu9AGnNVB+bcnxMLvhNDWHf+zKPtc6VwfX8iV0p/VUp/LTlhdyuHfqDMGxOA1t3FivNTq565IWyqA3m6LibvqFv5vAr/c6mcPDf+b8gXa8ITcEAufQQujq8BRUJK484dCOhLpKKSrBVkphVLapwIBhikQpsC0BKZtYNgGpm0gbAGWAeai+0ilE4dJpQ9fSVBWZmWyFziPgM5Dt/5knLd95Eme2T/XdisEbacA+nssxu6sS/h7gMeBTa1+9qZS3nsbQgufL4AKLeB5l+KsQ37aoTBdojDjUJx1KOVd3KLEdRTKVSipBd3vtRWnfvFq/rZi/o/CEBgmGJZWBHbKxM6YJLMWyW6bVLdFMmshUiYkDP28UmkF5FZQCm3W+JvAtcBtQQu/+Dcf4ub7xtoqxkBbKYB1/Xa9MfquoEkBIluO/034PbopwPKEsaRQsw5zE0XmRovMjRfJT5Uo5lxkSaKkFmlhgPCG/8IQWn+UTw04eRZQiZN6KG+UgGJeiSwoEwVCjxaslEmy2ybTb9O1Jkl6TQIra2mlAAsKwVUnTyVWBu9HbzcOxLs/vpvPfuNQ22Q6bgsFIICNQ0n2/fhqjOBP9Jssc0dX21Dey1veMNsQ4EjcqRIzxwtMH88zO1qgOOPgeu6mwlgYrguhBb18ji/Kr98MFnfgnpaYVwgSpDfSQCkM08DOmGTWJOgeTJEdTJLoS0DSWBi9OBIkK0UZ/H/AW4IW/vsvHeADf/10W+wobLkCEMDm9Slu/eJFbNsYOGfG3wLva/WzL7vC5UJve71kzmXuRIGJQ3NMH8tTmHZwHYkQAsMSWuANX9hF84W8EXwZ9mwKSumph3S0UhCGINFlkV2XpHdDmu6hFKLb1s++cpTBPegRaSC+9J0j/PqHnmh5kJGWNh8BbBpO8Re/u5M3vnI46GnfBl7TyudedmX9ob1t6J9nHaaP5BnfP8v0iQKlOVcb4zyBNzzjXvm8vGMoVwoSpCvnFYKZMOlam6Bvc4a+jRmMXnt+qjOvDOhIZXAYnd8xUPLTr9xwlDd98GctVQItbVYbB5N89zPncf6u7qCn3A9c3MpnrovyJTnb0EP8vMvskRyjz80ydTSHk3e1sc0yMKyyHr7TBL4WSpsflQTlKlxHIV2JaRtkB5Ks2dZF36YMdFtaARSlZzPoOEXgAFvRyqAmX/jWYd7x0SdbNh1oWTNb12+z/8dXk0oG3o7wHDrzTvvjC74ltCFMQWm0wOieGcb3z1GYdvQ83ja8oX2H9vLLxZdpqZBS4ZYk0lXYKZPeDWkGdmZJD6fBFlD0RwUdpwjOQa9O1eQP//4ZPvnF/S0xDLakydW51JdAa9O1rXjWuvCH+ZYBCQFFycyBOY4/Pc30sQLKVZi2wLCNBQv9ahH6avgLA1L7J7ie/3ymP8HAaVnWbM9Cl6WVQEkurCR0BlegbQM1ec1vP8J3bh2J3E8g8uZXp5NPFjgGZKJ+zrrwBd829DHrMLpnhhNPT5OfKCFMtGONKVbm8L5Z+AZEiXZeciSJtMXa7V2sO7Mbsz+hFUCxoxTBi4CbghQ85xfu4WfPzkZarbpjpjdCT1dd4buy6M0X6SifsS4E2qiXMCFlwpzD8ccm2XfPCGN7Z1GOwkqamAkDwzAWrPgxlfFGRb5NxLQMpKuYPppn9NkZSpMlMllLGw1NUeaS3Na8GR138LlaBQf6bW57YILZXHQbiCJrjnVu7PGFvz1j8vtzfNsT/pkSx56cYuTpaYo5FythYFixwDcD3+lIOgqnKDFMQf/WLtaf3Ys1kNDLiMWOsBEEHgn0X3krExFtIIqkeSZsg8KDLwhcHB2Mof2G/eXGvaQBOZeR3dMce3KK4pyDlTC1JT8W/ObjTQ/KFcHaHVnWn9OL0ZfQ9oFS2yuCqwmYxLTn8luYng1/JBB6MzUNwaGbrmZobeD4myO0o8HPH+4nTZCKyWdnOPzTCfJTJSxv40ws+BFQrggKEitpMHhmD4Nn90DahILUo4I28LKrwvnAI0EKZi6+OfRsxaE2VyHgF180yH/+3blBT9kDbA+1xnVXgjIDnyB/OMehh8aZPpbX89RELPgtwVMEbknhFF1S3TYbz+ujZ6fnU1J029lQuBXYH6Sgff5NOCE6CoUaE3B4IFnP2uZ9tJvw+0t6GRMKLofuGGH3j48yc6KAnbawUqZex4+FP3qE3vBkJgwSGYtSzmXPHSPs+fFRSmMFSHubkYy2XGrdB3QFKfhHb9sWavuywrpwd5fJ4ZuuDlr8v4BLwqtmnfi9vteApp6e4eBDYxRnXKyk77HXlg1r1SEEelNUykS5iumjOZ74QZ7hs3oZPLfXmxa05WhgL7CuVqEztmbYvjHNnoO5UB4ilGXAZMJg9v7ARr+/Rofsbg8EutdPm6gZl/13nuDIo5MoCVbKxPSs+7Hwtxe+Y5VhCZSEycNzzBzKke1LYPV7i0nttWyYAX4B+NxShZ5/RpatG1J8//ZRCqXm2wOa3owNA+79yiVcfHagkHzts6XXt/AnDLAE08/OsP8nY5Ryfq9vxEP9DsHfpuwUXIQQDJ/dy+Dz+/SoruC220rBN4D/EaRg6qKbKTQ50nDTm/SFz+umUJQ89u3LaxW9jIBukqFTbuEvuBz6yRgnnpnBMAVWIu7xOxUl9aYjp+DSM5Rm2xVrMdckIe9q1+L2UQIfAj5eq9B9j01xxRvvRzZRBzR1CtDTZSEVPH3DlbWKdgPPNvPey0agLfwpi+LxPM/cfJzJQzk93I+Fv6PxvQpN0yA3WWJs7yyppEFyMKVHA5J2UQIvRBvBn1mq0FduOMqx0SLHRovNe0fNupBtCYoPvTBo8X1AXUn9QsFYGPJPPDHFgQfGkK7S1v1Y8FcO3pKhU9QxCYZ29bD+ojV61NdeU4Jh9N6Xqlzy+vt58rnZpuUbaMoqgBDwwbcHXsH7Bq0Wft/KnzTAVRy+a5Tju6cxbYGdNnWvH7Ny8AyEVtJAGoqjT0wyN15kx1UDiB5bTwnaY5Xgp8DgUgXu/+olKAWJC5rjH9CUKcDwQILvfPq8IEV/C/j9Ztxz2fjz/bQJMy7P3nKcsX2z2CkTMxEL/0pm8ZRgYv8c3WsSWGuSCyHJWksXcAE1ko8IAc8dzPHI7pmGb9iwI1DCNrj03N4gRU8D/rk572mZCMDUS3zF4wWe/NERpo/lSaSt2Mq/ShBe/gM7bVLMuTx14zGmnpqClLeVu/WN4DXoBDdL8sWPn0VfT+MD+IZGAELAR965nX/+UKCEnXvQmXpbQ9n6/uzeWZ699Tilgosde/OtPoSf80CgXMXYvjksILMxoxt16/0FXgl8Cb0priqzOcldj0w2tCrQULNfvy4Z1NvvawRc6wwF39KfNJh4cpr9946CACtpxEP+VY6/VOgWXAZ39bDhsrULMQlbu6HoBDXsAQBv+IPH+Y/vHV32TZY9BbAtgW0FEp5fpqXC723kSRiMPjLB3rtHEEYs/DEaYeg0aFbK5NiTUxy4/YTu/ZPePoLWsQ74Qq1CX/nLs+nJLn8qsOwpwOuuH+KOf6sZoDeBtmy2BiF0bL6EwfEHxzn00ARmYmEHX0wMeG7Ehg7DPnOiQGG8RN+WjO44WusrcAFwBzWiCd39yCTP7s8ty4a5LCmoI3Pv7eggCNHjC79tcOz+MY48NoGVNOcDcsa0CX76Me9z6MynSDvVz0MpHbK8mHPo25hh+7WDOvhLoaXTAUWAkfplb7if+34aKFdppdcRHMMQnLYlze7v1EyC8hbgi9G8owq1Shix8Lc5SipkSeEW/bRiEdzUS7xiJvSuzkpZUqWrKOUcettHCXwTeG2tQskLb6ZY54ahusXhrJ1dPF7bz98GmuevWG+NvDn/8QfGOfToOHYs/O2HArcoSQ8lWXduN25BRrIMb1gC6SqO3jOBkkorgQrPNq8ENmXYft2gt5GopUrgxcCNSxV4xbse5ge3j9alR+sSCcsSlIK5+/4QeGnkr8hf6ksZjDw8wcEHx/VOvlj42w6lwJl1WXtulo2/PARzbjTClTCgIPnZZw8iSzozUUUp8JRAMeewZmsXW6/xDPKtWx0oEGAZvd6AonWZD688L5DDz/W0VPhNxn82ycGHxjFj4W9rlPISgeRcmHHAhVDnAUJAQscMlE6NKYfnMJRIm4ztm8W8Z4RNV61byFYUvQ5IAp8G3rNUoS3rU0zNzATWUYGXAZMJg1v/9aIgRf8r8lfju/emTGb2zLD//lFMW2DasYNP26LKDqm0tX3+/7AOVZ+TjwBhGtgpkxNPT3PsJ2MLyV9a067eDexcqsAj/3kZWzcET6URWAGs6bWDFPskrfD2M7TwF47keO6ukfm1XRFLf0yDCAGGZWAnTY48NsnY45M6boTZMiXw7VoF9vzgSr2bNQCBFEBXOlB8vwHgA5G/Dk/45WSJZ28/obfzxuv8MU1ECJ3I1UwYHHhgjNnnZiDdsoCj5wCvr1Xo7J2BYo7WVgAC2DwcKEHP1yJ/Ff5+/qJkz+0nKM46sYdfTCgIgTelFDx39wjOiYJOB9eaUeaXahV49FuXYZq1n62mAujusnjiv2uu+V+OjmoSHQK9PmsKDtwzwvSJPHbaDDz0iWkTRJXPbYgwdEwBtyh59o4TOo5Aa1yGLQKEEDv39GzNC9VUAL/288NBHugrkVa/LIbf6E8nGN0zo3f1xVF8OgfBfKAOTDGvzLEqHKbQLbXWd+sHeql2nflrLb+dCCGwUia58RL77h5ZSBUXfbv7INrVvioPfeNSzBrKaUkFkM2YfOaDZ9Z6kF8h6oQe3rw/d3COQw9PYCZMDKtlRpmYZSDw/O9toffiZ0zoqnBkzIW9+ks1Zn9EmBSQMapfK2NCUni5Hai/zQjtDWulDMb2zTLy0wnPKNgSJfC/axU4fevSKTaXfOS3vGY9X/z4WbXuMQEEchBoCn4or7zLE98/QnHOxU7F8/6OQ4F0FGbKIDVgI0tK7wlQp5Zz8pLhi3rp3ZWGfJVovl6vf+DGcXKjBcxEhb7NE14EzB0pIgydVGRZj+95MkpXceaLhkhtTGt/hhDTeFVhCDi+VAHzvJuqZuiq6giUShhBhP83iFL4fS1vCPbdO0ph2sHOxGG8OhIBwhK4ecn0czlUFRd2JRXFGZe1u7ILQ21V+XpYgrmjRWYO5bHSVZaB51OKiYbajW8UlK5i7z0j7Hr5Bt0xRe8u/Hl0FKGq7Nyc5ul9cxX/VlUBDA0Eyub7mShrqnt/k/HHJxjfN7sQvTemIxGeEjAss6pvjnIV0lV6qlDruzYEZlJgZwysTGULvTjlQwPP7xkF81MOB+4fZfO1g3okoiL1FHw1sBk4UK3AU9+9AuP5N1bca1HRBmCZgr0/vKrWjd9KlE4/nvA7owUOPjyBaRvxvH8lMG8MXOoIOFn3szt5R6VrsZx5/xL49oDRPbNMPT2t7RXRd0r/VKvA0NrKHXpFBbBuTaDe/+8iq54/9FeK/feO4pakDuoRC39MFSJrGp6noGELDjwwjposLWQljo5XoW0BVTly889V/P0pCkAIgnj9vQ6d3ScavN5/7IkpJo/msJNm7OYb0zYIAZZtUMq7HPjJ2MJSZLRNtGaHnEqe2t+f8pv1A4G8/v4msmp5Vn93rMDhRye0m29rllxiYqri2wPG9s8xvWemFVOBX6XGlPx5O051Dz5FARyq3fv/HLAxkir5Dj9CcPDBcZyi9Db5RHL3mKhQSxyUhQxrZ7xIQ4YpOPjQuI5vEP2uwY8t9ccHv34pxiKJP+nHhB1ob9AnI6uO0L3/zHMzjB+Y037+sfSvHLygG25J4hTdqodbkki3rbL5VkQIHWqsMF3iyKMTOnZAtKPVmpvx1q87eYR/ksRnMzWDBG9Ap/UOH4F+gQXJwYcnMExROYZbTMcipUKYgmRvAjtrn3p02djZBMnehF7x6QQlYAispMmJp6YpHS9AIvINQ29d6o8H/8/JI/x5PwAhYPSOa2pd/KORVcMQkDA58eAYuckiiYwV9/4rCQWuI1mzPsumy4agWCUkmAIKCtYqcNpc+vHjBwickuTgQ+Nsf8lw1L4BH6VGPoGEbcwHD50fAfQGSy7wm5FUwYvqqyaLHHtyCitO2rniUGgvPyWVFvySBEfq/8sPx/Osc1WrM/UERgiBlTCYPJxjdt+s9hCMrvPaCJy/VIHhMie/eQUwflfNOP9viqoGvl/3kccmcfIyDu21glESLdyu18O7VY4G8t9FjhdPUBiCQ49O6HpFO3398FJ/3Pejq+YfxYDAyumDkTy60EE+nJEiI8/OxIa/1U5ndPqnIAw9CpgdLTD57EzUo4BfrFUgk9b2PgOgr7tmvL9NwBmRPLoJGIIjj01oH/DY8BfToQhTYFoGRx6f1JuE7Ejb8tuW+uNH3qV38BsAY3fWNP69P5JH9nr/0kiB8f1z2ukn7v1jOhQhwEwY5CaLTDw7o12Eo2vPv7fUHz/wlq0AGAGf552RPLLX+x99fDLu/WNWBMLQo4CjT0zpUUB0bfp0auwPSCcNjABr/xcRxa4/L6WXM1aMe/92R3mrWkot+0AplAQVNFC/qPG3Nm0q5aOAyb2zUY8C3r3UH9/3pi1YU/dcV+sivxPJoxoCLIPjT04hHYWVjLf6tiNKas+9mpl1al1HKUoFV2cGqmXhF4BQC8nsK0YE8o42bDP+KOD4k1P07sxG6RfwWyyxIvCJ9+4MlBrs18J/Q2i/6amSTsMU9/5tiZI6OEfvlixW0kC6y2/ECu0IlO1N6rX+av7+fu9eEjC9xHKgiU4tpmg7JaCjBxnMjhWZPThH15YuvbQZ/h6HdcBWYF+1ArUUwMVE8ToNAbbByGOTlPIuyYzVdl9iDPO++xue34c1nNRz2mW3Ye/EvILJGtcxgGlgUlQvZwpIC60E2rDtCG/kf3z3NNu3dOk6RePb8JvAh6r9sZYCeBth4+/4K7iM7JnR2Vpjr7+2RKFDdLlFiTXn6rj4jXRiAu0kI6k9x4eFKUAlTBZCh7dh8/E3Ck0fzeOMFrD6E+A2+P6C8essoQBqbf/71QjeDCQMZg7lyE+WMK14u287o/C258omHP48OIgQiIBHu+J5B0pXceKZGZ3JOpqObiPQX+2PSymAzUQR9cd7gpFnpvUwKXC60piW0aHeeS1H6GjE4/tnIedEuSRYNZegsZyTmvdCAMtATpSYOpaPjX8xKxo/03Bx1mHqYM4LGBJJe/+f1f6wlAJ4QyRvxBaM7Z1FliRGHOorZoUjDL1JaHTPjP5FNCPeqsk9l7r9+eG+CbTxz1GM7Z/1QnzH0t/WxEP/hhHoJcGZ43nkZEnbAqJp9pdU+mU1BXBlJI9kC4qjBXLjxXjLbxug1MIefeVWOKTnvRcrguXjGQOdkmTiwJy3QSiShv/aSr+spgBqbids/EUIMA3G98+hJHHAjxajpF7eK+VcinOVDofinIuTd5FOAC3gW+WNJY5OsN6HgSEwvLaPJKppwKsr/bKaH8CrQn0Uf/hfkkwcnNNpn+Luv2UoBW5J0r+9mzXbunCLsqJ8K6WQjiLdY+v1+6V0gAIKNW4s6KxAH01CTwMEs2MF5GQJI2tF4RNQMc13NQWwK/S3YAlKY0XyU6U4y0+r8QW7P0HmtC4d0rpSY9ROADpU11JZcP0EnkVqu+auxhGAl6W4lHeZPDxH/1m9UBRRzK0uBn5S/otKg4/nh/8CdMivyUM5lKviBJ9tgJIgS1Kn3865MOeceuQc7f0XZCNQreF/+TRgNWLoHAITB3Pez5Hc9fpTHqNCoReHX3lAwuThHIYZW//bA70x9yTvvCWSdcQ0hgBMS4cMY9aJKn/Ayxb/opICeEn4NTdgxmFuoohhiVXbCcSsYoQOGebkJbMjBb0cGD6n5PSodNcrAlyoMSzBzEgBtyDjPH8xqxY/XfnUkbzeFxD+SNhmkXv/YgUggN5QH8EQYAimjubm88LHxKxKhLYDTB/P65gI0djCTnIIWqwAojEAOpKZEwXP9TfWAC1FLfocz/EjQ6CzCBWmSqjZyDYHnZQbbPEyYLh5/7z1fzXrUJh24vl/RPgefChVWb4lSMfL0tMJiDp/364I7QDn5CWzo0WytcPzN4OTvHwXjwAuD/32lmBuvIRblNr7r9O+tA5DSYX0Am5IBVJWOBQoIfQydDShquqnltegWPR/h+DbAWZOFKKyA1xQ/sPiEcCFodfWQFs9iUf/oaNAlhSZwRQ7rhuEktTKYPE4wAv1ZVraO7PtEEAJVImqAi4MdDiwWtGF2g0hMAyhlwOliiJU2GD5D4sVQLgegJ6H2OxYAWESa4AIkFLp954xoQCGW9k1z/B7/wYCfYaJUtQW7jbUXbUQ6OXAwnQJCq43Cgj9O1gHnIBTFUAy1NsauofJT5V08sRQbxajvH+Un323WMOFtw0FH9BzZf/xlpoCdGKD8nYHlvIuzoyjYwWWQr/rLjwFUG4D2Bx2RTEFcs6llHPj+X+UqLL/Yw+/9kPoYKu5yVJUS4Fn+x/KFcBpod/W0EMd6ah4+29MjIeeCQtyE0Vvf0ToslFRAYSb/dczAOYmS6BUPP2PifERAjEvG0QxMp7fGlyuAE6PoqL5yVJs/IuJKWPeEDjjaBtN+OKxzf9QbgTcEXotlaIw43jz/1gJNIUlg3IoFCqe3ncAwhCUcq421oa/ErDR/1CuALaEW0MBrqI452DEeT8bRy1E6FFSVfbdUQo3L/U+/2YukdX68ur9coOU71Qrf8D6CwFuUSLzUkcICpeM/6H8TsNhVhADKEqcgowNgE1Aeem1U2v0yq2SqpJ/D25RkuxNNG99P0gYr/k1u4DIsvOqVriJL68NEYZAupJiziHVE7oCAM/lqPxOa8O9nUDmXNw4/n9TUFIhLIPTXjIMSaO6B5/0nHvcJobzzaPXqoNsYa8VDswFlSP4KGCFIgCUojTnkopmerwGGClXAKmwa+jkXZSrG25MYyil145xpJ4vFqsogPl1/iaOAMr/r1WuGaxgwV9cx1LO9aY7occIXMsiBRByBQVOQepdaavhCw2TcucdiY7RF6ULbxgbb+I2AUIsKIDwWQMLg7hE+JWDUt4FYh+A5rLCJ8erBaET42gZiYR+WFAAXWFXDs/KGdNkYvlfOfgyEo0zUC8sKIBMAxcKXDmnGI//Y2KqIYRYUADh0w0LCiAdxR3dkozlv4nEnf/KwRcL17flhC8nGVjwAwh3G7BXRel4TTY2AtRGeZH6q0i5Uir6/e9hfW1xc9B4uwIjisiUhgUFEMFXoJBubAAMgpIKtyS1l18VDz/pKLAMpKu0X0WzlviCLu81um7v3ys2C80jhI7MpEcA9XpT1Y0JCwog3CmA1xA6JuhkC/Hde/u2dZPstpAlWTlNn6vmw0nRjPfqOeXgUltwg97OCXDPWAGUIfTILhoxiXoEQDxpDYIC11EMntFNcmta5+qrmKoXvfZfK1FnUARaYHPU9vCrNVLwlIQqsPR33qGBPENFzf8TNgIWFEA+ioqpdow22254IbycoiQ55+pEndVem/8+m/Va/T0bzdh4U36NWMADMx/7MHzysKAAwr+lFwM9JiBKeXG8WxCkM/6aWobwsyaHL5ElWBjsFVpd8ZiYGF/3RqKBC7CgAMKdAnjhXI14BBATUx2logyWm4MFBTAXxR2FJdoy6Uw7Eb+e1YuCBQUQvqBMQ6QKwMs8QySV62zi17Pq8I3/ESbMnYQFI2AuijuatrHqG7e/zltNBypXLSTzjIoOsNb7obOrPqMfZ7KN61ATBYato2dHICcTcGpmoFArZyaiqVm7oqR28nFdpR15qpQpFSWu08Q4fkEEvB7BiVhhCEOAKcA0FoJlVHom28Q0jY71NlVK6U4yGsbgZAXgEJZC8Ho9K2lGVbn2Q+nNUH3buhna1YNTdCsKuFIK11Fk1yR0tJ9G9aXvbZentgIIsllTAEWCB3ZpUBiFl1Fq8sQcY8dmsSyjogIQAgzToDBbxDA7M+qs8mVENMm1e2lG4WSBHwWGwqsd2En95alIQp+3Fwrd+ye6TBKbUiRybnUXXokW/mZ4+Omb61XfICOAAF+MctHdRRCPwGZgGuRmiowcmMJOmogqXbwQAtMSCKMDQ855c0I7Fdko+ZQRwDFCVQAKK2VGsMehTfHm/bKkoCC1h99SPvzNfEdi0dGMaxlNuFbQG3q9u5UwsZPWgj2gUulO7lmUwk6ZUclHEU72+j4Q6u0kWEkDwxKr2iV43tU7TtRZF0KUH2LRzwtHp6I8Xxk7Yy0EcQ2Pov+hXAE8F3YNRdLEtA1dt1XdyFd15RuggyW8FgowIJExm7O7c2mO+B/KFcAzoVZOKrAEVsqMtwXHxCxCKYVpCuy0GcU+gL3+h3IFsDvcGgKmIJGx9Dp36HWMiekQlF5VMZMGImlG4Sj3tP/BqPTLsCqJgFS3pZeQVqodYKk5/Uqtc0xDKLT/RyJtgW1EsQP0Z/6H8lWAvVHUNNVrrzxB8GIdKFdV9/DzE3m6daztN2PKW6/TTsTTbCFEWTdUxcHHNKou/a0UlFQkuy0dqCt88XjM/1CuAFzCjEfq7W9P9dorzhfAT9RpJEykqyqvciiBsJV2Wa0V+DGspdIgLzxIC2jSF3dSmvhqu+C8ZUdh+LtJV0qrKcNrP+leLz9P+ArgCf/DYs+/p4EzQrutq0hlbb0SIJV27+x0FEhHkepPctpLh7VwVzJyern8hKB6Is9yCtR23glCPT1/CVSR2s49zeomDMHsdJE9jx7HNKtsFxdgGALXUZhW57r5LoXfF6T7bW0ADH+EfND/sFgBPExYCsAPdZQ2SWRMirOOvvsK+EKV9Hr9hIBi9S9P+AE8a+Xx84VMEiwD75IPV3bNesov9fcmfGdCoHt9oJgrYVtG1b3wAoEwxIqNKKWkwrAEqR67ed6f1Zks/2GxArgH+B+h3VoqSBmke23yU6WI8h9Eg5JKJ+lcKkhnvd9tq0a8Ed5TGALTMjBtUwt5i58ncrwVADttYnZZUSiAR8t/WNy/3BN2ZQEyA0ktMCvEGDhfjfL/G/Xui7rRt4GQicUuyyt0yl+OAqQrSffakIhkBeAkGV+sAB4Ot7Z6+Jtdm5w3BMbErGqUQrnQNZAMz/h7MneU/7BYAeQIO0Coq0j12VhJw0uDFHqFY2LaFuXNg7Prkt46XOgCseQIAOD+8GqLnuNkLNK9tl4yC7u6MTHtircyZCUN0v0JcCMJA3W8/IdKCuDGUG/vWbazgymd366V8wBvbq4aOvTzx9OZKlSY05eH91rhU/wl0fN/pef/Gav26lDjPLz4F5UiAP0I+NPwaq3AhZ7hFEcem2yZQ5DvmScbzMaqALcgsRypf/L3yi/3kmEZvoJG72mWk4/wwngttXRnmxiW0GVXoybw2mD3UCqqZCA/XvyLSgrgrtAfw5Wk1yaxU9pzzoguFjrgOSU6ilRvEitlLGRkXc61AFmSJLpt7QPg0vgX2UxnG59mJv2s9fiee29+tqT36VdQAgIwiy6FOQej2vLfCscPq9azPh3V/P/7i39RLQbgIWBjOLVGr5enTbrWJpg8nEPZRrQNQOnAnMNn9pLdktURehrRAL5tY1o2ZxjXzKCbXqw/lSv7Oci9G8HQbfnph45SKriYVUJdC8/LzzDEivf1PwWlh/+JjElqTVKHgAuf2xb/opoC+B7wtjArD9C7McP4wTm99hmxW7AfoZeChLzTuND6UVyauYGn2UQWzVcgDC3clim8SLfVQ3itximAjhEp6d3YBWkD5tyw5/9H0OOMk6jmaPqtcGuvveZ6N6QxbQPZigSYvgFPNukoH76JBo8wiDKUd9kGHmEaGIaBYYqKR4SpsNoKJXUn1LcpE1UYuO9W+mU1BfBjwkQBjsToscn0J5ClViwHrkIfhFYJ2ioU8CWZX/4z6RlOQSmS1bBvVPplNQXgEnaMQAmY0L8lg3RlvI4Ws2pQ6BwR2cEkZC29/h9+86/YqS+11+xr4b4FPQ3o25TBsBqzxMfEdBI69ZtizdYu/Yvw7X9PVPvDUgrgK+G+BaAkMfsSdA0kcVsyDYiJiRjP+m+lTHo2pPXu0fBHv/9e7Q9LKYCfhv4yvHXQtdu7kK5sXrRgtaBlqx/xrGO5nByf/9SDssQd8fT/ZJRSuEVJ74a0Hv47kYx8qyqAWrkAvwX8UohvA0qKvs0Z7Iea4xSkpEKW9EtWVZb3lVKUCi6yKKOIwb48mu0L0KzHWpyosxKmdgQwDIGMNcBJ+Fmf1+7IetF/Qr/lDEvE+6ylAP6FUBUA2gEia9G3McPInhmd2225TiFe6q30uiRrdnUtKIEKuK6kqy/hWWBDq+HyEOjce0ETcNa6VpPmmH4Un6mRHIVcSSfhrHA73/NPSbX6HHyWQClwHb33PzPc+uE/1FYAPwz9rUjtPjtwWpaRPTMoCWKZYbC0W64iPZCg/5q+hfx7i9+xAAwFBxWcUDoSa5uhHJobE7ApIwnd8x8/OMX4kRmshHnqZb3hv+FF+lmpYbyWhVS4Jcna7VkdPm42Euv/Z5f6Y5B04N8HXh7qI5YkqaEUXQNJcmNFhGkuL/ij59zjlrzkm9NOBd8nQChd85JYcMJop3Za7hTUboluDbBsnaTTTprl0/0K1VidTj4VUeB6a/9rd3RFtfZfoEaQH6Pn8ltqXeRTYb8YXO0KvO70LG6jxkBfoKXSQ9+KnnsszL/abfhfTpsKj6DMCGiIGsbAGFgw/vVvyiB6bW/4H/pt/7VWAWNmzq1V5gcRvB0oSfq2dpHK2siSjC30bUss1XXjLf0JAYNndns7RiNp4Et23j2X34oRUNDC9wlwFKQtBk7L4pSauCQYE9Ni/N6/ZzhNYjAVLC9E44xSlgKsEjNzjp5h9l91a62LfTL0x5V6FLDu9G4dJ8BR8SggpvPxwn4rBUPP69G/i8br9R9qPpryTExTMzWnAQ+jNUqoL4qShG6bgZ3duEW3fdfoVzvxLCAwSimcokt2MElmUxqKkXmgLakA+q/Unb4B6O24tYlsFDD0vB6slIm7nFGAbz03PYcVSyx8Xny0Y9z5EJ7nJINdAweGaL9ViXbG7/0lrD+7tywvZOh3vhuYWqrA5IwDlH2dg9feXuuifxvFC6MkET3LHAV4e9DNhAEpE7Le0b3oyJo6CENCVE9KGRaLl/gWH02OC6CddwyddCJpNn7Y5vz6frvpznbD7/27B5N0bc7o4DPR9P4fXeqPn/iXvfOPMf8dCgHy0RfVuvANwCtCfXSBbmh5l8e/exjpSsxEQL8ApePzWVmLzFACtyirugI7rmT9tj6yvamowjHpurkBE3D6S5UNSpkwDUoFh/1Pjc2H4Fr+xQSmKZidKuAW3YqegDEentefU5Cc8cIhMpszC45p4ZIH0ksV6L7sFvzVv3lHIKXgfX/1FH/3+0vmBv0gYSuAMlvA4K5uDj40jmEZiCAhwwQI28CZcRgfL1VxA9YbgUoFl7UDPbBWLCRGjwKFdvMN0ss3KT6flIqJY7M6Ck8DCkB4DgCmKRBGLPxLUb7pJ7M5E+Xc/y9qFZgtW/o/qTV0pU1m7ruu1vnPAdtCrYIAEia4kiduOExpzsVK1eEdqE7675S/KaUo5hx2XDakY7I1IyZg0Ho5oPJEM5cWIGyT0lyJn917CNPUobka0SxLef7FeCgd8MN1FM972bBe+oum9wew0V1MRdZcdRvjU6X5n09qhrO5mqsBAH8YehX8TUJpkw3n9iEdWV8asbIEFKccxsLnVYMntQteeiz7iIW/NkoqnIJkYEcXieEUFNyoev+vsoTwA0zNnvznU/qhrS+5s9ZNvgYUQ6+K1BF7e3dm6R5O4xTc+Sw8MTHtivJ6fzttsuG8fu3gFl20q99f6o8/umsMd1H68VMUwMHjgXKD/nHoVfG9Aw3Bpgv6QYjYOSimvfGCfTolyfpzehE9tjf3j+TutwMHlirwug+cGuPnFAUgpWKo9pLg30RSJaWg4JJcn2LwjG49Coidg2LaFKUUTsGle12KNbt69NA/uvb627UK+Gv/5VQ0RU1OO7WuBfCx0Kvk7xQsKdaf10eyx/aCfDTjpZY7AkUwsS2fP0c0jxZln+Kpe7j46eYQgs0Xr9GOZtGE+wJ4CHhkqQI7X3FXxdFzRQVQKEm++F+Ha930w5FUzV8WTJtsvnAN0lXNiSDsr4n73oK2Ee5hLRzCNBBW+AemAf7SX6wBQkVJHWZuaFc3yfXpKA1/AG+vVWDvoXzF31ddjHr/J58OcuPwRwEwbxDMbu9iYGcWJy+Dui9XxhN+1apgIFHeT4FU0SdgXU1oq79Lpj/B8Hn9usOKzvD3EPCTpQqc/sq7q8pL1SYR0DMQoqqmEJAyoCB54nuHKeVcrOQyQ04pkK7EsPSaoH45EdoWIlM6AsPQ706WXIRhrK7lzwjwrf7SUZz54iFSG9I6z190c/8L0UqgKtb5N51i/fepOgJQCoavq2kMBPi9SKqplLaoZky2Xrp2PrnnskZZQrvISlfhFl2UI1GOiu5wo7qX1I2zJL3IPZF8U6sH3+pfcFl/Ti+pjRnIRzr0v40awr/1pXdWFX6o0Q/VMQrIAanQqyvQ89q0wdH7xjjy2ASJtKW92xpt3FF5AsasGJRUFOdcuodS7HzJ8EInFd1gchuwb6kCiQtuouRUf6AlHVKVgg0vvCPIg/x6JNVV6DxqRcXw+f30DKUo5ZvkINRoRt9WZf2NaQm+t5+dMtl+xYDeVRptiPn/oIbwb7/+ziWFHwJ4pB8dKfD0vrlaxb4KPBtJtf1VAVOw/cp12CkTpxCHEIuJDn/JT7qKrZeuwei3o17zB3hLrQKHjtV26qupAJSCq9/0QJAHem1kVZfaQcjot9l2ubYHLCt4SExMvXjz/pI378/uzEI+8gxTf0INd/zzf+Xemr0/BNyTdmK8yDVvrqkEHkKnEosGqSAv6dqeZcPz+3AKLtKJdP4Vs9pQ2lO2lHPp35xh6IJ+PeePtt1NAZ+oVejxZ2YDXSyQAlAKHt49E6To6yJ7Df6OwYLLuvP6Gdiexcm7cZrxmNBQSuHkXdJ9NtuuXKd/GX1quZqp+i563X04brCHCrwrfXrW4bxfvrdWMYcAPslNw98wJBWbrxggO6iNgg05CcXEVMA3+llJk53XrIO0qXv/aNvaD4EbaxV65MlAnTVQZ1iK3XtrGgMBPg08E9krkd7Si22w85pBUt0WTj7eNBTTPJTU0X0Atl81gDWQ1Ov90bexX6hVYNvL7sSt47nqUgCFouQFv/FgkKIvi/S1eEZB0W2x85pBrKQRrwzENAXt6adwXcXWy9aS2dJVPelsuLwTHe+vKtuvv4v9R/IBL6epOy/uwWMFTENwzUV9SxUbRzsGXR3pK3IVZp9Nd3+S8X2zSEdhmA2kG49Z1SgvyKxblGy+sJ/+s/t0zx+9nelh4G21Cn3oH5+lWKrvweqOTOe4is9+/WCQon8E1NxS2DT8hKA5l/SmDNuv0kYap2nbh2NWE77wOwWXDc/vZe3z+/Raf2tWml5cq8Avv+9RAuT5PIVlhaY8dLzAez6xO0jRa0N/NeX48QPyLtntWbZdMTA/f4uVQExQtKOPpFRwGT6rl8GL1mjns2gy+i7m3dTIyvW2jzzBd24ZWdbFl6UAlIIvfCtQ5/4M2mkhOvzlwbxLz+ndbL9iABkrgZiA+D1/Ka+Ff/jStVrwiy1ZXr4T+KdahX5451ggp59KLDs4db4oufj19wcp+glqRCtpOuVK4IweTwnE04GYpZkXfq/nX3/pWr3MXFJR7vArp+YI+s8++xwHj9Vn+Cunoej0Dz0xzb/fcDRI0Sub/mpqsUgJ7Lh6ABTx6kBMRZRSuCWdyWfDuX2e8HvD/ta0l+vRKWuq8tt/vps///zehnRTQwpASsXbP/JkkKJzwKua/45qUKYEund2c9q1gwhTUMrXmWcgZkXj24ncomTThf0MXbzGE37VKuH/DNrpZ0m+f8cohWJjae0azk8zl3e5JNhU4AavYtHiK4GcQ2ZrF2e8cAg7ZSx4DMZKYFXje/hJF7ZdvpaB8/u0Y1n0Xn4+u4H31Cr01e8fY8/BXMM3a8oCuWEIHv7mpZx7ejZI8Z8C5zTjvnXX1BSQMnHHizx76wnmxovYaRNhxtFyVh3exh6n4GJaBtuvHKBre1av87d2U1kXesRcla/ccJTf+PATDff+0MQwFamkwaf/+Eze+ksbahW1gFKASzYfgQ7ckDIh5/LcHSeYODSHnTJ1AtJYCawKlL+lN++S6rbY8XODJIa8/H1uS4X/GnSCjyUZuvZ2jo81JzlXU5v8+nVJDt8UyPnvAiCQT3HT8TLckjRAweH7Rzn+5DRmQmDaywwyGtMxzK/x511616fZcfU6yFqt8vAr5w+Av1qqwPs/+TSOo/j0fxxo2qJE3a7ASzGbc8kXJC++fE2tokeBg8Crm3n/wChAAqage2sXqZTJ5OEc7nzwzDiE9opDLaTsdkuKoV09bLl6UHcEfkCP1gn/14H31Sr0sqvW8ur3PoJsfOQ/T9ObuWUJSg+9MGjxTxHl9uFKtbcNSJoUjuR47q4R8pMlrJQRTwlWEEp5xr68i2EZbLl4Db1ndus1/tYZ+3x+BpwdpGD20luCZvAOTChNvCttMnPfdUGL/5gAvs6hUWYcZM5l/72jjO2dwUwYekoQjwY6Gj98fKngkl2bZNsVA9iDqXYw9gHMAjUt5+LcG1k/kODISPOTcofWtNf1J+jvtdj9nSuCFH8KOD2sZwn0FgwBCQMMwfgTUxx8aBzp6AAQ8SpBB+JZ+d2iRLqKwTO72XDRGj3iK7R8vu8zDByrVegtf/Iz/u2/j4TijGiFVbOR8SLn7wq0LAhwBjAJ9IT1PEvibyIqSLAE/Wf30j2UZN+9o0wdy2MlTEw7tg10CkrqiL1OXpLMWmy5ZA1d27u0Y0/OS9zReuG/kADCD/Dl7x4NzRM51OZsGIInv3M5p2/JBCneC0yE+TyB34i/VOgqRh6b4Mhjk0hXxaOBNsef6/u9/sCOLJsu6ocuSyv31g/5fV4BfD9IwfTFN5MvNNHqt4jQm3LCNig8+IKgxbcCe8N+ppr4S4W2gIRJ6USeAz8ZY+pIDsPWtoE42WYb4Vv4He3Yk+5NsPnCfrq2demRXbHlVv5y3gR8KUjBnstvYXq2uUa/xUTShOs0Cp6D9hZsPb6BMGECiomnpjn86ATFWQcraWJY8bSg1cwP9wsSwxQM7uph+NxePYIrSG3pb5+EEe8hgDv8ifESu37+bsYmw/eXi6zp9mQtJu8OHB/kYiDQBoNIMARYnvPQjMPhRycYeWbGmxYYC2HHYkUQGb43n7/Fu3djmk0X9GOvS3n792W7zPV9fg/46yAFd7z8Lp5rgp9/ECJtsv09NmN3XhO0+JXogAjtgW8bsA2wBaXjBQ49Ms7EwRzCACthIgxiT8KQKZ/nu46ka02Sjef10bW1Swt7sW0s/OX8EfC/ghT8+fc8wg23jUQ2aIm8tW4YTPKFP3se11+1NkjxS4GayQgipXxaIGDu4BxHfjrB9LECwhRYCUMrgnhE0FTmBb+kU56ne2yGz+6lb2e3ttUUpBb89ov1ELjn/+zXD/HuT+yONK9F5E1UCHj+GVke/uZlQU85Dx0VtX3wjYSm5zugFDP75zj6+CQzJwoIA20ojKcGjeF15Mr1BN+RpHpshnb1sOa0bkgZJ8/z2072g835QYfcz156S+CMPs2iJU1TCHjFzw3w3c+cF/SUnUSZbCRwRVhQBEkDXMXsgTmOPjHFzPE8SoGVMDAsASJePgyMZ9WXrsItKZQrSfclGDyzh/6dWS34RbkQqqv9BB/gfwJfDlo4eeFNdYf0bgYta5KGgLe/diP//KFdQU9ZCxwA0q165qosVgQS8kdzHHtyisnDOWRJYdoCw/amB8Sjgkr4w3zp6jm+EJBdl2TwzB66t2T0aKso59PBtangA7wc+EHQwqmLbm7K3v7l0NJmaBiCD71jGx95147ApwB70P4C7cfiqYEAd7zIyDMzjO2dpTBTQhgCM6GnBwihv4BVrAyU0v9IV/vsu47ETpr0bcqw7vRukkNJ3VsU23qoX86F6EzZgQjb0acWTd0OXC9KwR0PTiKV4rpL+gOdAvw98CLaVQl4DRpHgaswMhbZzV2s25mlqz+B6ygK0w6lvKu3JIM3NVg9ysAXeuWiA3Hm9VJepj/J+rN72XrpWnrO7MbKWHqYX5TtaNlfzAywGXg26AmZFgs/tElzMwzBO167kX/6kzPrOe1/A29t9bPXxF8+9EcFgJwoMX5glvF9c8yNF5GOxDANDFvoeAQrbZrgy25ZTy8dBQJSPTZ9mzKs2ZYhMZDU76mkvGi85Se3NY9TZ5i7Vvf8Pm3TxAwDfv66dXz7H55fz2nvBf6h1c8eCH96YACW9iXAVTgTJSYPzjFxMMfceEHPfQ2BYQkMU9sMOm6qUCbwSqKF3tX++YZpkO616dmQpn9ThuRAQi+pup5Rz+2IYX45XwNeX88JrZzzL6atmpQQcMHzuvl/3ryFN7xiOOhpVxMgjlpbUW4rsLxDgpouMX0sz+ThHDMjBYqzDspVelRgCr2saHirCb5S8K/XClTZf0ppufWG9tL1Qq8LgZ026VqToGd9mp71Kay+hFaCblnobalOumaHEHiNH3QE7f4rb22Jtb8abaUAQMvF5uEUe35wJWZwr7pu4FFgW6ufv/4Kc/LIwPKG/gVJabLEzEiBmeN55saKFGcdXK/xCAOtFAytFBAsLDN6H8Ti+9SDqvDRc0/Tc3htsVdSIaUWetA9vJ0xSfclyK5Lkh1MkupLQNozN7kL9pF5d7f2kYd6+DngjqCFP/PVg/zu/3oq8nX+WrSdAvBZ22czcntgt2GfLwG/1upnXza+MvDtBpY3ShBASaFmHXKTJebGisxNFMlPlSjNudof3vWk0vM3EJ5SEb7/gfdN10qVrsqE0u/R54XdN3Ai5p2d7LRJstsm3WeTWZMg05fAzFrzqyAnCzydNryvxBPARUAgZ/3de+d43189xQ/vHIvUwy8obasAAHqzFhPBNxD5vJE6HDDalvLevNyQaIqFdC5eTDsn51KccSjMOhRnHIpzepXBKWi3Welo45uSC8Lso8puhRDzbsyGqe0QpmVgJg3slImdMUl2WSSyFskuCztjQtJcGLVItKD7LrnzCoNOF3qfTwG/E7TwibEil/7q/ew7km+jDYkn09YKACCbMZm+97p6TxsC7qETpwRLsVgp+Iph/igro9BC6AukrwQ8RaBgXiEIU5/kTycMq0zZmGXXRiz04P68XXKqsPv3X1m8FB2/MjBrrrqN8anWpMAIStsrAIBkwiD/QOCgIuX8HfC7rX7+UCn/Bv3hvSj7W7myKF9arPTN+0LrC/niIXv53xefs3K5HbiOea+NYEQRzKMZdIQCADBNwRtfMcz0nMO3/r6upcJLgZuBQHHJViTL/ZZXvnDX4p3AZ+s9qV3W+IPQMQoAdGe2fl2SQzcGyj60mC8Av9HqOsR0BA+gQ9VPBD1h44vu4AWX9PPVHxzDbTNL/1J0lALwWaZdAOAydDDGQH7HMauStwOfr/ek9S+4nWOjxbY19lWj4fTgrWBmziV54c18+btHueG2kXpOvRdYQ8DoLDGriu8BSeoQ/v+68QSgM/YcHek84YcOHQHMP7yAnZvT9HRZPPD1S+s9fRj4NnpUELN6GQd+Ebi13hPf9fHdfP6bh9rOuaceOloB+GTSJqO3X0MquawBzSuBrxIgRVPMiuMPgb+s96Rv/ug47/r4bkYmOrPXL2dFKADQqwQvv3ot3/l04ChDi/kD4qnBauHLwFuAutfp/vXbR/itjz3ZNpt5GmXFKACfni6Lf/zjM3jTq9cv9xKfAd7V6nrEhMLN6MQcB+s98eff8wiPPzPL3sO5ju/1y1lxCgDAMgXXNzYa6Ab+Ge1WHNP53I+OHbGshDMf++xzfOLze1dMr1/OilQAPl1pkze+apjPfThw3MHFrEX7f7+h1XWJWRb3o0dzP1nOyb/4O49y/+NTHD5eWFG9fjkrWgGA9m8/a2cXP/1WQ8b+bvS+77e3uj4xgbgJvWnnseVe4DXvfZTv3T6C46xQyfdY8QrAx7YEL71ybT2hyKvxp8CH6VAfihXOl9CW/cPLvcDzXn0PB47mmc21vx9/M1g1CsAnmzEpllQ9GYur8TrgY8Dpra7TKmcW+ATwF41cZGrW4ZxfuJeDx9p3624YrDoFAN6egoEkD37jUobWJhq93OnoEUHnBiLpTG4DPooe7jfEha+9j0efmsFtw4AdYbMqFYCPYQhO25Jm93euaNYl3wD8PjqdWUzzOYYOC/8pYK7Ri130uvt4dPdMR3vyNcqqVgA+hiE4c1uGn/3/lzfrkr3AO4B3A1taXb8OJ4feyfkp4OlmXPCcX7yHp/bOUVrhBr4gxAqgjBAUAcAg8OvodejYXhCMcbRB7/M0YMlfzBmvupvnDuVWvGW/HmIFUAFDwJYNKZ77wVXNvnQa+BXgzejsRjELPAL8O/AV4FAzL3zGK+9mz6FcR+3Tj4pYASyBENDfY/PA1y9l24ZUGLc4B/gl4BeAC1pd34jZB3wH+CbL2IkXhB3X38W+IznkynPgaxqxAghIwjZIJQ0m649SXA9nAS8DrgeuZOXsUFRor7wfo/fd3xXWjT73jUP8/t8+w/SME0c0C0CsAOpECBgeSHL4pmWFJasXG7gYuAqtEC6kXZOiLnACPZy/B5044z70nD5U1l1zG+OTzqpcymuEWAE0gGXp11d66IVR37oHOAM9YjgL2AXsADYRfrizWfQcfS/wFPAzdHLM3ehlush420ee4CvfO8bcKvHaC4NYATSJVNLgBZf2871/Or/Vj+LTjQ5/tgboQy9NdgNdQAJtkCx3Z54DSt7/M8AkOijmGLoHH2t1hXz6r7yVyRlnVXnshUWsAEIgaRtcfl4Pt3zxolY/yopgatZh4wvvYDbnxkLfZP4vFY66ClyAZvwAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMDItMDdUMDY6MTM6MjQrMDA6MDCXt8mGAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTAyLTA3VDA2OjEzOjI0KzAwOjAw5upxOgAAAABJRU5ErkJggg==", + "reference": null, + "reference_hash": null, + "decimals": 8 + }, + "nearx.stader-labs.near": { + "spec": "ft-1.0.0", + "name": "NearX Classic", + "symbol": "NearXC", + "icon": "data:image/svg+xml,%0A%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M24 12C24 18.6274 18.6274 24 12 24C5.37258 24 0 18.6274 0 12C0 5.37258 5.37258 0 12 0C18.6274 0 24 5.37258 24 12ZM17.1421 21.3848L21.3848 17.1421L19.3669 15.1243C18.5576 17.0303 17.0303 18.5576 15.1243 19.3669L17.1421 21.3848ZM9.43294 19.5793C7.45322 18.909 5.82115 17.4848 4.87848 15.6484L3.24264 17.2843L7.48528 21.5269L9.43294 19.5793ZM4.63306 8.8757C5.44239 6.96975 6.96975 5.44239 8.8757 4.63306L7.24264 3L3 7.24264L4.63306 8.8757ZM15.6484 4.87848L17.3848 3.14214L21.6274 7.38478L19.5793 9.43294C18.909 7.45322 17.4848 5.82115 15.6484 4.87848Z' fill='black'/%3E%3Cpath d='M8.00119 11.9921C8.00119 11.0268 8.00119 10.0615 8.00119 9.09612C8.00119 8.50505 8.16497 8.1743 8.56285 8.05781C8.97778 7.93628 9.40619 7.97917 9.79565 8.45228C11.3533 10.3447 12.9343 12.218 14.5092 14.0959C14.5692 14.1676 14.6117 14.3122 14.734 14.2626C14.8496 14.2157 14.7858 14.0805 14.786 13.9878C14.7904 12.6326 14.7898 11.2774 14.7868 9.92226C14.7868 9.83668 14.838 9.7162 14.7271 9.67372C14.6401 9.64029 14.5824 9.74185 14.522 9.79358C14.0492 10.1981 13.5804 10.6073 13.1088 11.0133C13.0208 11.089 12.9332 11.2118 12.8002 11.1012C12.6657 10.9894 12.7696 10.8872 12.8364 10.7881C13.3547 10.0186 13.8728 9.24898 14.3909 8.47919C14.6656 8.07085 15.0079 7.92282 15.4056 8.04141C15.786 8.15475 15.9986 8.48592 15.9992 8.97668C16.0007 10.0905 15.9996 11.2045 15.9996 12.3183C15.9996 13.2094 16.0003 14.1005 15.9994 14.9916C15.999 15.4826 15.8137 15.798 15.4512 15.9324C15.0256 16.0901 14.5767 15.9683 14.2734 15.6058C12.6823 13.705 11.0924 11.8029 9.50198 9.90144C9.46029 9.85161 9.42303 9.7961 9.37377 9.75489C9.28998 9.68487 9.21967 9.68108 9.21314 9.81797C9.20999 9.88273 9.21188 9.94791 9.21188 10.0129C9.21188 11.3496 9.21062 12.6862 9.2142 14.0227C9.21441 14.1186 9.15609 14.2557 9.26114 14.3038C9.38093 14.3587 9.45061 14.2178 9.52998 14.1503C9.98259 13.7651 10.4291 13.3728 10.8805 12.9859C10.9729 12.9066 11.0626 12.7651 11.208 12.8973C11.3402 13.0176 11.2213 13.1196 11.159 13.2127C10.6323 13.9989 10.1032 14.7837 9.57145 15.5663C9.32788 15.9248 8.9881 16.056 8.61085 15.9488C8.23739 15.8428 8.00498 15.5246 8.00287 15.0827C7.99761 14.0523 8.00119 13.022 8.00119 11.9917V11.9921Z' fill='white'/%3E%3C/svg%3E", + "reference": "https://near.staderlabs.com", + "reference_hash": null, + "decimals": 24 + }, + "usdt.tether-token.near": { + "spec": "ft-1.0.0", + "name": "Tether USD", + "symbol": "USDt", + "icon": "data:image/svg+xml,%3Csvg width='111' height='90' viewBox='0 0 111 90' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M24.4825 0.862305H88.0496C89.5663 0.862305 90.9675 1.64827 91.7239 2.92338L110.244 34.1419C111.204 35.7609 110.919 37.8043 109.549 39.1171L58.5729 87.9703C56.9216 89.5528 54.2652 89.5528 52.6139 87.9703L1.70699 39.1831C0.305262 37.8398 0.0427812 35.7367 1.07354 34.1077L20.8696 2.82322C21.6406 1.60483 23.0087 0.862305 24.4825 0.862305ZM79.8419 14.8003V23.5597H61.7343V29.6329C74.4518 30.2819 83.9934 32.9475 84.0642 36.1425L84.0638 42.803C83.993 45.998 74.4518 48.6635 61.7343 49.3125V64.2168H49.7105V49.3125C36.9929 48.6635 27.4513 45.998 27.3805 42.803L27.381 36.1425C27.4517 32.9475 36.9929 30.2819 49.7105 29.6329V23.5597H31.6028V14.8003H79.8419ZM55.7224 44.7367C69.2943 44.7367 80.6382 42.4827 83.4143 39.4727C81.0601 36.9202 72.5448 34.9114 61.7343 34.3597V40.7183C59.7966 40.8172 57.7852 40.8693 55.7224 40.8693C53.6595 40.8693 51.6481 40.8172 49.7105 40.7183V34.3597C38.8999 34.9114 30.3846 36.9202 28.0304 39.4727C30.8066 42.4827 42.1504 44.7367 55.7224 44.7367Z' fill='%23009393'/%3E%3C/svg%3E", + "reference": null, + "reference_hash": null, + "decimals": 6 + }, + "ctrl.tkn.near": { + "spec": "ft-1.0.0", + "name": "CTRL", + "symbol": "CTRL", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "cat.tkn.near": { + "spec": "ft-1.0.0", + "name": "Catalyst", + "symbol": "CAT", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "duello.near": { + "spec": "ft-1.0.0", + "name": "Duello", + "symbol": "DUO", + "icon": null, + "reference": null, + "reference_hash": null, + "decimals": 8 + }, + "data.tkn.near": { + "spec": "ft-1.0.0", + "name": "DATA", + "symbol": "DATA", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "atocha-token.near": { + "spec": "ft-1.0.0", + "name": "Atocha Coin", + "symbol": "ATO", + "icon": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMzYuODggMTM2Ljg4Ij48Y2lyY2xlIGN4PSI2OC40NCIgY3k9IjY4LjQ0IiByPSI2OC40NCIgc3R5bGU9ImZpbGw6Z29sZCIgZGF0YS1uYW1lPSJMYXllciAyIi8+PGcgZGF0YS1uYW1lPSJMYXllciAxIj48cGF0aCBkPSJNNzEuNjUgNzkuNXYyNC40MWMwIDEuMjcuMjQgMS40OSAxLjQ3IDEuMTcgMS4wOC0uMjkgMi4xMy0uNjggMy4xOC0xYTExLjU4IDExLjU4IDAgMCAwIDEuNS0uNTljMS40MS0uNzIgMi44NC0xLjQgNC4xOC0yLjIyYTI1LjU5IDI1LjU5IDAgMCAwIDUuNTktNC42NGMxLjM2LTEuNTIgMi41NC0zLjIgMy43OC00LjgyLjMzLS40My4xOS0uNzItLjM1LS43MS0uODYgMC0xLjcyLjEzLTIuNTguMjItLjQ5IDAtMSAuMTMtMS40Ny4xOWEuMzkuMzkgMCAwIDEtLjQ4LS4zN2wtLjMzLTJhMS41NSAxLjU1IDAgMCAwLS4wNy0uNDIgNS43OCA1Ljc4IDAgMCAxLS4zMy0yLjEzYy0uMDktMS0uMjUtMS45NC0uMzQtMi45Mi0uMDctLjc4LjA1LS44NC44My0uOTQgMS41OS0uMTkgMy4xOC0uNDQgNC43Ny0uNjVsMi43OS0uMzcgMS4xNC0uMTUgNC44Ny0uNzRjLjI3IDAgLjU0LS4wNS44LS4wOWwyLjE4LS4zNWEyLjc1IDIuNzUgMCAwIDEgLjU1LS4wOC40Ny40NyAwIDAgMSAuMzUuMTcgOS44NSA5Ljg1IDAgMCAxIC40NCAxLjFjLjI0LjY5LjQ2IDEuMzkuNjkgMi4wOGEyLjY5IDIuNjkgMCAwIDEgLjA5LjI4Yy4xNy44My4zMyAxLjY2LjUxIDIuNDkuMjYgMS4xNC41NCAyLjI3LjgxIDMuNC4zMSAxLjMxLjYgMi42My45MyAzLjkzLjE5Ljc1LjQ1IDEuNDkuNjUgMi4yNHMuNDUgMS44MS42NiAyLjcxYS40LjQgMCAwIDEtLjE0LjM0IDMuMzkgMy4zOSAwIDAgMS0uODEuMzVjLTEuMzYuMzYtMi43Mi42OS00LjA5IDFsLTIuNTEuNjVjLS42My4xNy0uNzcuMDgtLjkyLS41NHEtLjM5LTEuNTktLjgyLTMuMTdjMC0uMTQtLjIxLS4zNC0uMzItLjM0YS45MS45MSAwIDAgMC0uNTkuMjRjLS4yOS4zMy0uNDguNzQtLjc1IDEuMDgtLjkzIDEuMTgtMS45IDIuMzMtMi44MyAzLjUxYTMwIDMwIDAgMCAxLTQuNiA0LjMgMzkuNCAzOS40IDAgMCAxLTMuNzQgMi41OCAyNi41OSAyNi41OSAwIDAgMS0yLjcxIDEuNTljLTEuMDguNTMtMi4yIDEtMy4zMiAxLjQycy0yIC43OC0zLjA3IDEuMTFjLS43MS4yMy0xLjQ1LjM3LTIuMTcuNTUtLjIuMDUtLjQuMTQtLjYuMjFhNC41MSA0LjUxIDAgMCAxLS40NC4xNmMtLjYxLjE1LTEuMjMuMy0xLjg1LjQzYS42Mi42MiAwIDAgMC0uNTMuN2MwIC43OCAwIDEuNTctLjA2IDIuMzRhNS4yOCA1LjI4IDAgMCAxLS44IDIuNDkgMy44OCAzLjg4IDAgMCAxLTEuNTIgMS4zMiAxMi41NyAxMi41NyAwIDAgMS0xLjU0LjcxIDEuMjQgMS4yNCAwIDAgMS0uNzguMDcgNS44NiA1Ljg2IDAgMCAxLTMuNzMtMi45MiA4IDggMCAwIDEtLjQtMi42MiAxMCAxMCAwIDAgMSAwLTEuMjguNjcuNjcgMCAwIDAtLjYxLS43NGMtLjc1LS4xNC0xLjUtLjI2LTIuMjQtLjQ0cy0xLjU3LS40NC0yLjM1LS42OGMtLjUtLjE1LTEtLjI4LTEuNS0uNDctMS42My0uNjEtMy4yOC0xLjE5LTQuODktMS44NmExNS4xMiAxNS4xMiAwIDAgMS0yLjI3LTEuMjljLTEuMzgtLjg5LTIuNzgtMS43Ny00LjEtMi43Ni0xLS43Ni0xLjkyLTEuNjgtMi44OC0yLjUyYTM2LjMzIDM2LjMzIDAgMCAxLTQuODEtNS42OGMtLjU4LS43Ny0xLjEtMS41OC0xLjY4LTIuMzVhLjgxLjgxIDAgMCAwLS42LS4yOWMtLjE2IDAtLjM3LjI1LS40My40My0uMzEgMS0uNTcgMi4wNy0uODYgMy4xMXEtLjE5LjctLjQgMS4zOWMtLjExLjM1LS4zOS4zNC0uNjYuMjgtLjU4LS4xMy0xLjE2LS4yOC0xLjczLS40My0xLjYyLS40Mi0zLjI0LS44NC00Ljg2LTEuMjhhNi41NSA2LjU1IDAgMCAxLTEtLjQuMzQuMzQgMCAwIDEtLjEyLS4zYy4yMS0xIC40MS0xLjkzLjY2LTIuODkuMzMtMS4yNC43Mi0yLjQ3IDEtMy43Mi4zOC0xLjQ4LjcyLTMgMS4wOC00LjQ3LjIyLS44OS40Ni0xLjc4LjY4LTIuNjguMTgtLjcyLjM0LTEuNDUuNTItMi4xN3MuMzItMS4yMy41Mi0xLjgzLjM4LS41NS44OC0uNDJhNi43NCA2Ljc0IDAgMCAwIC45Mi4xNWMxLjIuMTUgMi4zOS4yOCAzLjU5LjQ0bDUuNi43NSA0LjYxLjU3Yy44NS4xMSAxLjY5LjI1IDIuNTMuMzYuMyAwIC40Ny4xOS40NC41MXYuNDNjLS4xMyAxLjI0LS4yMiAyLjQ5LS40IDMuNzJzLS40NSAyLjM4LS42NiAzLjU4Yy0uMDYuMzQtLjIzLjQ3LS41NS40MmwtMi4xNC0uMzVhMi4yIDIuMiAwIDAgMC0uNDcgMGMtLjQgMC0uNTcuMjItLjQyLjU5YTcuOTIgNy45MiAwIDAgMCAuNzEgMS4zNCAyNC45NCAyNC45NCAwIDAgMCAzLjUyIDQuMjFjLjkxLjg4IDEuODIgMS43NiAyLjc4IDIuNTdhMTkgMTkgMCAwIDAgNC4yOSAyLjY5YzEuMTEuNTEgMi4yMiAxIDMuMzcgMS40N3MyLjM4LjggMy41OCAxLjE4YTIgMiAwIDAgMCAuNTEuMDUuNDcuNDcgMCAwIDAgLjUyLS40IDIuOTEgMi45MSAwIDAgMCAuMDctLjU1Yy4wNy0zLjYuMTgtNy4xOS4yLTEwLjc5LjA1LTguMzIuMDYtMTYuNjQuMDgtMjVWNTQuODVjMC0uOS0uMi0xLjA5LTEuMS0xLjA5aC0xNmExMy41MSAxMy41MSAwIDAgMS0yLjc4LS4zOSAxLjMxIDEuMzEgMCAwIDEtLjczLS43IDMuNDUgMy40NSAwIDAgMS0uMzMtMS4zNXYtNC4zMWEzLjQ1IDMuNDUgMCAwIDEgLjMxLTEuMSAxIDEgMCAwIDEgLjk1LS42M2MxLjMtLjExIDIuNi0uMjQgMy45MS0uMjYgMy42MyAwIDcuMjUgMCAxMC44OC0uMDVoMy44M2MuNjYgMCAxLS4yNyAxLS45M1YzMi41NmExLjQzIDEuNDMgMCAwIDAtLjc1LTEuMzQgMTAuNDkgMTAuNDkgMCAwIDEtMy41NS0zLjU2IDcuNTcgNy41NyAwIDAgMS0xLjI5LTMuN2MtLjA2LTEuMTkgMC0yLjM5IDAtMy41OEE4LjM1IDguMzUgMCAwIDEgNTguNDEgMTdhOS41IDkuNSAwIDAgMSA0LTMuNzYgNi41MyA2LjUzIDAgMCAxIDIuNjgtMWMuNzMtLjA4IDEuNDQtLjMgMi4xNy0uMzRhNi4xNiA2LjE2IDAgMCAxIDEuNDIuMjJjLjEzIDAgLjI1LjA4LjM3LjA5YTEwLjM1IDEwLjM1IDAgMCAxIDUgMi4zNSA3LjYyIDcuNjIgMCAwIDEgMi4xOCAyLjhjLjQ2LjkzLjggMS45MyAxLjE3IDIuOWEyLjEyIDIuMTIgMCAwIDEgLjEuNjd2MS40NWE4LjEyIDguMTIgMCAwIDEtLjcxIDMuNTUgMTIuMzEgMTIuMzEgMCAwIDEtMi4xNyAzLjYzIDUuOCA1LjggMCAwIDEtMS45MyAxLjU3IDEuNjggMS42OCAwIDAgMC0xLjA2IDEuNzR2MTEuMjZjMCAuNjIuMjkuODYuOTIuODhIODUuNjljMS43NiAwIDMuNTIuMTQgNS4yOC4xNmExLjgyIDEuODIgMCAwIDEgMS42OCAxLjg1djQuNjFhMi4zMyAyLjMzIDAgMCAxLS41NyAxLjQ0IDEuMzUgMS4zNSAwIDAgMS0uNy40MSAyMC4wNyAyMC4wNyAwIDAgMS01LjE4LjM0SDcyLjY3Yy0uOTEgMC0xLjA3LjE2LTEuMDcgMS4wNnEuMDUgMTIuMzQuMDUgMjQuNjJabS00LjQ5LTUxLjU1YTUuNzQgNS43NCAwIDAgMCA1LjcxLTUuNjQgNS44MiA1LjgyIDAgMCAwLTYuMDgtNS42M2MtMi41Mi4wNS01LjExIDIuODMtNS4wNyA1LjcxYTUuNiA1LjYgMCAwIDAgNS40NCA1LjU2WiIvPjxwYXRoIGQ9Ik04MC45NCA3Ny41YTIwIDIwIDAgMCAxLTIuNjktLjM3IDcuMzMgNy4zMyAwIDAgMS00LjM0LTMgNy43IDcuNyAwIDAgMS0xLTYuMjQgNy43OCA3Ljc4IDAgMCAxIDMuNzYtNSAxMC4yNSAxMC4yNSAwIDAgMSA2LjM4LTEuNTEgOC4xIDguMSAwIDAgMSA2LjE3IDMuNEE3LjY1IDcuNjUgMCAwIDEgOTAuNTcgNzFhNi40NiA2LjQ2IDAgMCAxLTIuMTQgMy40NiAxMi4yNyAxMi4yNyAwIDAgMS0zLjQ2IDIuMjEgMTAuNjQgMTAuNjQgMCAwIDEtNC4wMy44M1ptMy01LjY2YTYuNjkgNi42OSAwIDAgMCAwLS44NSAyMi41IDIyLjUgMCAwIDAtMS4xNy00Ljc3IDEuODMgMS44MyAwIDAgMC0xLjQ4LTEuMzFjLTEuMjYtLjEzLTEuOTIgMS0xLjggMi4xOWEyMy43MiAyMy43MiAwIDAgMCAuNjQgMy40IDEzLjA3IDEzLjA3IDAgMCAwIC44NiAyLjM5IDEuNDggMS40OCAwIDAgMCAyLjMzLjU2IDEuODEgMS44MSAwIDAgMCAuNjEtMS42M1pNNDMuOTQgNzMuMzFhMy44NyAzLjg3IDAgMCAxIDItMy42QTguOTEgOC45MSAwIDAgMSA1MSA2OC4zOWE1LjU5IDUuNTkgMCAwIDAgLjYgMCAxIDEgMCAwIDAgMS0xIDEwIDEwIDAgMCAwLS4yNy0yLjU2IDEuMzMgMS4zMyAwIDAgMC0yLjM0LS41NGMtLjU3LjU1LTEgMS4yMS0xLjU3IDEuNzlhMi41NiAyLjU2IDAgMCAxLTIuMjIuOTQgMS40NyAxLjQ3IDAgMCAxLTEuMjEtMiAzLjkzIDMuOTMgMCAwIDEgMi0yLjA5IDEzLjI2IDEzLjI2IDAgMCAxIDIuNTctMS4wOCAxMC4zMSAxMC4zMSAwIDAgMSA1LjEzLS4yNyA3LjM1IDcuMzUgMCAwIDEgMi45MyAxLjM2QTMuMzggMy4zOCAwIDAgMSA1OSA2NS4zOWMuMDcgMS4yNy4wOCAyLjU0LjE1IDMuODEuMDYgMSAuMTYgMiAuMjYgM2ExLjIzIDEuMjMgMCAwIDAgLjg4IDEuMDVjLjY3LjI3Ljc0LjQ2LjU3IDEuMTRhMy44IDMuOCAwIDAgMS0yIDIuMzUgNC4zOCA0LjM4IDAgMCAxLTMuNjguNDUgMy4zIDMuMyAwIDAgMS0xLjE1LS42OWMtLjc0LS42OC0uODItLjc1LTEuNjItLjE5YTYuMjEgNi4yMSAwIDAgMS00LjY5IDEgNC4yMSA0LjIxIDAgMCAxLTMuMS0xLjgxIDMuMSAzLjEgMCAwIDEtLjY4LTIuMTlabTcuNy0yLjkxYTIgMiAwIDAgMC0xLjE3IDMuNDMgMS4yMiAxLjIyIDAgMCAwIDEuNzQtLjI0IDIuOSAyLjkgMCAwIDAgLjI2LTIuNjIuNzYuNzYgMCAwIDAtLjgyLS41N1oiLz48L2c+PC9zdmc+", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "net.tkn.near": { + "spec": "ft-1.0.0", + "name": "near express", + "symbol": "Net", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "nd.tkn.near": { + "spec": "ft-1.0.0", + "name": "NearDog", + "symbol": "ND", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 8 + }, + "hak.tkn.near": { + "spec": "ft-1.0.0", + "name": "Hakuna Matata", + "symbol": "HAK", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "lfg.tkn.near": { + "spec": "ft-1.0.0", + "name": "L.F.G.!", + "symbol": "LFG", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "nexp.near": { + "spec": "ft-1.0.0", + "name": "NEXP", + "symbol": "NEXP", + "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpCN0Y4OTQ5NEMxQTJFQzExOTYyRDlEQzhBQzkzREZEOSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCMEEzMTExNEEyQ0ExMUVDODFGN0YzNjM5NzNDOTI5MSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCMEEzMTExM0EyQ0ExMUVDODFGN0YzNjM5NzNDOTI5MSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkI3Rjg5NDk0QzFBMkVDMTE5NjJEOURDOEFDOTNERkQ5IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkI3Rjg5NDk0QzFBMkVDMTE5NjJEOURDOEFDOTNERkQ5Ii8+IDwvcmRmOkRlc2NyaXB0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", + "reference": null, + "reference_hash": null, + "decimals": 4 + }, + "token.paras.near": { + "spec": "ft-1.0.0", + "name": "PARAS", + "symbol": "PARAS", + "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAMAAABrrFhUAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAn1BMVEUAAAAAAK8AALsAALkAALoAALoAALkAALsAALsAALsAALoAALgAALsAALgAALoAALcAAL8AALkAALoAALkAALgAALYAALrf3/a/v+6Pj+FQUNBAQMvPz/L///+vr+qAgNwwMMegoOXv7/twcNgQEL+QkOBgYNRQUM8gIMOvr+kQEL6fn+V/f91wcNmQkOGwsOrf3/cfH8LPz/MgIMJgYNPUXweEAAAAFnRSTlMAEHCv32BQ749/73CvsM9gEN+QgJBQjziFHwAAAAFiS0dEHesDcZEAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQflCAkCHB+v3qAcAAAIFElEQVR42u2dfV8bNxCEj4bQBEhomhaf37DxOYfBlLgv3/+z1cYJNGnQ7t3M3Sw/NH+DvfdYGmmlla4odjr46dXh+YvS4avXxaOOflbHI2HwgOCNOhSV3u6f/606Dp3e7J7/tToKpY62AF6Y+32r44OX3QDOz0+KU3UIWr0r3qtD0OqwUEegVgagDkCtDEAdgFoZgDoAtTIAdQBqZQDqANTKANQBqJUBqANQKwNQB6BWBqAOQK0MQB2AWhmAOgC1MgB1AGplAOoA1MoA1AGolQGoA1ArA1AHoFYGoA5ArQxAHYBaCIBBORyN1Q+gBDCZ7jS5mI3m6sfQALicPmhRDqvxUv0wfQP4NP1OWwzPrjEgAOrpD/W8+gQC4Gr6tJ5Nn0AArKaWBvH7BDQPMAF87RPVeKV+0E4ADJwEIvcJCMB1AwBRDRICcNkYwGOfiNIYIABVSwCR+gQEoEYABOkTEIA5DmCvUtcnIAA3LABf+4QgucTWAxZUApI+gQGY8AE8NIaepk4YgLbjoK8trPuAgAH4hD9mWoOLquP+gAEgjIO2FuWswyECA3CFP55Tk+GoGwgYADshZmrbEqIB8CbENA3WbEsAATRJiEma1JEANE+IGc2AiQAE0OlEIIGAN0EAAUAJMaLbIAB6mQh0SgAEQEuIm2sYAgA3IW6mPyIA6CIhdosyLUIBdJUQezSIAEA0Du41CwCg84Q4pQUhP0IBpMfB5fxqdt1hLyE0ARRAOiEe3f/NclzdlZ24JaEJoADSCXH1n7/cYrgu4zUBuEosGd/n//05uU8s9ACSCfFTA9X4itUn4LkADCCdEKf6KMUaSjmA9ERgZP4/2idQG4QBpBPiO+enzLd9YtMKAGqDMID0ROBzk4/a9YnGjQHtAzCAdELc3KWX27bQiMCfYgA3XYS3nTK43bFq9Q08AEZCbLvgU5pXvpYA9gEcQLrXel3wh1pdeowRGwdwAOlxEPx9Vo50u30j4wBIJ8TwXNVed4YaGQGAsTAMmrSDwF9iAMYOcQ1/gdkLIBPAARg7xFgD3enGGhGh/VLCoal0dHC2cn4+MwBAMwECgPQOMZ6xm01gLQZg7BDDLmiuvEIuSABghFfj3zBOfwPUyAgAjHEKd0GzDgMZBggAjHGQ4IKWDSLDAAGAsUNMcEGrD9RaANYOMaOsKT0OIOMg4/C0MUrVhK9IZ8aIzTAAGMtYDBdMjzTIRIABwJisY8nKXsSVxw4AGB7NcMF0woEMNAwAVqUUwwWTX4BUSjAAGIMUumx5r1Y7cH0BsEqmoWTliyaRAVgl0wwXTGdcagBWyTShkuUyNACrZJrggrEBWJVSBBeMDcBauCW4YGwA1tEhQkVjbABmyTTugrEBmCXTeFVvEgAy2ebcJWat3OMumMyH5RMhs2Qad8HgAKzdK9wFk3MtdTZo793gLjiNDcA8OoS6YDrfUq8I2Qkx7ILpL1CvCTrOEKMumJ5rIrWCpCs1LQCoC6bTLaRIhgTAPEMMumD68xGHIQEwzxBjLmjMtZENaBIA8+gQ5oJGuol8NAmAWcmELN1bG0Pq+oCdzLs0IBc0BhkILgmAfYYYcUFjoglVzJMA2GeIkaHKGGMgg2VdrW0WdwM/kzXRFtcJ7mUedAA6qtEA1JWie5nlnO1XbW6NT8am2SwAZkLceraysnpXHQKAfZdGSxdcmbNs7EIVFgB7HGyXs65Mc9lggbMA2JdqtVq2Gds3NYGZNu0NE+Y42MIFl0Pz8eHFJhoA+6dq6oLzW8/JMbAH8ADYl2pdVKPx/G/fpy3HQ+fpQXStiQbAfZfGYlOW69msfkLVbLhucooWXW6lARBdqoX2AB6A/i6X/EZ1GAD9Xi75IPhaORoAzaVa+KYj701TgsslCQ2ACEBxqRah9oYHQHGpFuFiSR4AOyGO2ACIAASXSzJuFuUB6P9yScZlckQAvU8E4EkgGUDfl0tuOFfrEgH0PBEg3bFNBNDvLdP/kKImAujzcskF6/mZAHpMiDe8O+aJAPpLiEviu0eIAPoaBxeMQ1hdAOgpIb7jvmqD+eLlHsbBxR37zTtMAJ0nxGXFf9EKE0CnCfGirJxL6joAnSXEm3V3L6NjAvAkxIuNW5OyXK9n9VUnP3wnADwJMeMygbAAPBMBxjHasAA8CTHjMoG4ADwTAcLFUnEBeBLiWv3EXQLwJMTRXJAKwJMQMy6WCgvAkxBHc0EqAFdCHMwFqQBcCXGtfuQOAbjGwWAuyAXgSYiDuSAXgCchDuaCXACuhDiWC3IBuHaIa/UzdwjAtUMcywW5AFwTAewEXWwArh3iWC5IBuBaGQ/lgmQArh1i7I0IsQG4dohDuSAZgGuHOJQLkgG4dogp7woNCsC3Q9zVJkcAAL4d4kguSAbgGwepG/zBALh2iCO5IBuAa4c4kguyAfh2iAO5IBuAr2Sa8tbwmAB8JdOBXJANwDcRYBT6BwXgK5kO5IJ0AL5SsTguSAfgK5mO44J0AL6S6TguSAfgK5mO44J0AL6S6TguSAfgLJkO44J0AM9NGYA6ALUyAHUAamUA6gDUygDUAaiVAagDUCsDUAegVgagDkCtDEAdgFoZgDoAtTIAdQBqZQDqANTKANQBqJUBqANQKwNQB6BWBqAOQK0MQB2AWhmAOgC1MgB1AGoVh+oItHpfnKpD0OpdcaIOQauz4pdjdQxKfSiK4kgdhFJnWwDFr+oodPpY3OujOg6Vfiu+6OyDOhSFjn8vHnV2+l4dT786PD05uH/yfwGfzk1OHMRnUAAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMS0wOC0wOFQxOToyODozMSswNzowMIUIpr0AAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjEtMDgtMDhUMTk6Mjg6MzErMDc6MDD0VR4BAAAAAElFTkSuQmCC", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "xtoken.ref-finance.near": { + "spec": "ft-1.0.0", + "name": "xRef Finance Token", + "symbol": "xREF", + "icon": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNjIiIHZpZXdCb3g9IjAgMCA1NiA2MiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEuODU2OTMgMTcuODg1NkMxLjg1NjkzIDE2LjAyNzggMi44ODY5MiAxNC4zMjMyIDQuNTMxNTEgMTMuNDU5MkwyNS45MjE2IDIuMjIxNzJDMjcuMzc3NSAxLjQ1NjgzIDI5LjExNjUgMS40NTY4MyAzMC41NzI0IDIuMjIxNzJMNTEuOTYyNCAxMy40NTkyQzUzLjYwNyAxNC4zMjMyIDU0LjYzNyAxNi4wMjc4IDU0LjYzNyAxNy44ODU2VjQ1LjYzMDRDNTQuNjM3IDQ3LjYwMjEgNTMuNDc4MiA0OS4zODk4IDUxLjY3ODMgNTAuMTk0N0wzMC4yODgyIDU5Ljc2MDZDMjguOTg5NCA2MC4zNDE0IDI3LjUwNDYgNjAuMzQxNSAyNi4yMDU3IDU5Ljc2MDZMNC44MTU3IDUwLjE5NDdDMy4wMTU3NCA0OS4zODk4IDEuODU2OTMgNDcuNjAyMSAxLjg1NjkzIDQ1LjYzMDRMMS44NTY5MyAxNy44ODU2WiIgZmlsbD0idXJsKCNwYWludDBfbGluZWFyXzEyNDYxXzIwNzUpIiBzdHJva2U9IiMwMEM2QTIiIHN0cm9rZS13aWR0aD0iMiIvPgo8cGF0aCBkPSJNMTMuNjk3OCAyMC4zMzJMMjguMjQ3MSAxNEwyOC4yMjAyIDMwLjU0MTdMMjAuMjgwMyAyMy43MTE2TDEyLjMxMzUgMzAuOTI5NVYyMi4zNjU0QzEyLjMxNTIgMjEuNDkyMiAxMi44NTM4IDIwLjY5OTMgMTMuNjk3OCAyMC4zMzJaIiBmaWxsPSIjMDBDNkEyIiBmaWxsLW9wYWNpdHk9IjAuNSIvPgo8cGF0aCBkPSJNMTQuMTAyMyA0Mi43NjQ1TDI4LjI0NzEgNDYuODYyNkwyOC4yMjAyIDM0LjU5NDRMMjAuMjc5NCAyNy45NDE0TDEyLjMxMzUgMzQuOTcyMlY0MC41Mjc0QzEyLjMxMzUgNDEuNTUxNSAxMy4wMzY3IDQyLjQ1NTkgMTQuMTAyMyA0Mi43NjQ1WiIgZmlsbD0iIzAwQzZBMiIgZmlsbC1vcGFjaXR5PSIwLjUiLz4KPHBhdGggZD0iTTQzLjY0NDUgNDIuNzYzM0wyOC4yNzQ0IDQ2Ljg2MzJMMjguMjQ2OCAzNC41MTU3TDQzLjIyMSAyMi40NjQ4QzQzLjIyMSAyMi40NjQ4IDQ1Ljc5MyAyNC4zOTk2IDQ1LjAzNzMgMjcuODE5NkM0My43MDQ4IDMzLjg1MTEgMzUuMTc5NiAzNS45ODY5IDM1LjE3OTYgMzUuOTg2OUw0My45MDk2IDQxLjE1NjFDNDQuNjE1NSA0MS41NzggNDQuNDU1NCA0Mi41NDcgNDMuNjQ0NSA0Mi43NjMzWiIgZmlsbD0iIzQ1RkZERSIvPgo8cGF0aCBkPSJNMzguNTkwMyAxOC45NzkzTDI4LjI3MzQgMTRMMjguMjQ2OCAzMC40MzE1TDQwLjY5NSAyMC4zNTA5QzQwLjY5NSAyMC4zNTA5IDQwLjQyNzEgMjAuMDU5NyAzOS42OTAxIDE5LjU4MDVDMzkuNDI4OSAxOS40MTE0IDM4LjU5MDMgMTguOTc5MyAzOC41OTAzIDE4Ljk3OTNaIiBmaWxsPSIjNDVGRkRFIi8+CjxwYXRoIGQ9Ik00MC41NTEgMTYuMDEwMUw0Ni42NjAyIDE4LjI4MDVDNDYuOTY3NSAxOC4zOTQzIDQ3LjE2OCAxOC42NjU2IDQ3LjE2OCAxOC45NjVWMjMuMTIwN0M0Ny4xNjggMjMuNDM4OCA0Ni43MjYgMjMuNTgyMiA0Ni41MDQyIDIzLjMzNDNMNDAuMjU1MyAxNi4zNjg3QzQwLjA4OTMgMTYuMTgzMSA0MC4zMDYyIDE1LjkxODEgNDAuNTUxIDE2LjAxMDFaIiBmaWxsPSIjNDVGRkRFIi8+CjxkZWZzPgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MF9saW5lYXJfMTI0NjFfMjA3NSIgeDE9IjI4LjI0NyIgeTE9IjEiIHgyPSIyOC4yNDciIHkyPSI2MC42NzM1IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IiMwMTEzMjAiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMDAxMzIwIi8+CjwvbGluZWFyR3JhZGllbnQ+CjwvZGVmcz4KPC9zdmc+Cg==", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "v2-nearx.stader-labs.near": { + "spec": "ft-1.0.0", + "name": "NearX", + "symbol": "NearX", + "icon": "data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M24 12C24 18.6274 18.6274 24 12 24C5.37258 24 0 18.6274 0 12C0 5.37258 5.37258 0 12 0C18.6274 0 24 5.37258 24 12ZM17.1421 21.3847L21.3848 17.1421L19.3669 15.1243C18.5576 17.0302 17.0303 18.5576 15.1243 19.3669L17.1421 21.3847ZM9.4329 19.5792C7.45318 18.9089 5.82112 17.4847 4.87847 15.6484L3.24263 17.2842L7.48527 21.5269L9.4329 19.5792ZM4.63307 8.87568C5.4424 6.96973 6.96977 5.44237 8.87573 4.63305L7.24263 2.99995L2.99999 7.24259L4.63307 8.87568ZM15.6484 4.87847L17.3848 3.14209L21.6274 7.38473L19.5792 9.4329C18.9089 7.45318 17.4847 5.82112 15.6484 4.87847Z' fill='%232FA8AF'/%3E%3Cpath d='M8.00119 11.9921C8.00119 11.0268 8.00119 10.0615 8.00119 9.09612C8.00119 8.50505 8.16497 8.1743 8.56285 8.05781C8.97778 7.93628 9.40619 7.97917 9.79565 8.45228C11.3533 10.3447 12.9343 12.218 14.5092 14.0959C14.5692 14.1676 14.6117 14.3122 14.734 14.2626C14.8496 14.2157 14.7858 14.0805 14.786 13.9878C14.7904 12.6326 14.7898 11.2774 14.7868 9.92226C14.7868 9.83668 14.838 9.7162 14.7271 9.67372C14.6401 9.64029 14.5824 9.74185 14.522 9.79358C14.0492 10.1981 13.5804 10.6073 13.1088 11.0133C13.0208 11.089 12.9332 11.2118 12.8002 11.1012C12.6657 10.9894 12.7696 10.8872 12.8364 10.7881C13.3547 10.0186 13.8728 9.24898 14.3909 8.47919C14.6656 8.07085 15.0079 7.92282 15.4056 8.04141C15.786 8.15475 15.9986 8.48592 15.9992 8.97668C16.0007 10.0905 15.9996 11.2045 15.9996 12.3183C15.9996 13.2094 16.0003 14.1005 15.9994 14.9916C15.999 15.4826 15.8137 15.798 15.4512 15.9324C15.0256 16.0901 14.5767 15.9683 14.2734 15.6058C12.6823 13.705 11.0924 11.8029 9.50198 9.90144C9.46029 9.85161 9.42303 9.7961 9.37377 9.75489C9.28998 9.68487 9.21967 9.68108 9.21314 9.81797C9.20999 9.88273 9.21188 9.94791 9.21188 10.0129C9.21188 11.3496 9.21062 12.6862 9.2142 14.0227C9.21441 14.1186 9.15609 14.2557 9.26114 14.3038C9.38093 14.3587 9.45061 14.2178 9.52998 14.1503C9.98259 13.7651 10.4291 13.3728 10.8805 12.9859C10.9729 12.9066 11.0626 12.7651 11.208 12.8973C11.3402 13.0176 11.2213 13.1196 11.159 13.2127C10.6323 13.9989 10.1032 14.7837 9.57145 15.5663C9.32788 15.9248 8.9881 16.056 8.61085 15.9488C8.23739 15.8428 8.00498 15.5246 8.00287 15.0827C7.99761 14.0523 8.00119 13.022 8.00119 11.9917V11.9921Z' fill='white'/%3E%3C/svg%3E%0A", + "reference": "https://near.staderlabs.com", + "reference_hash": null, + "decimals": 24 + }, + "dogsheng.tkn.near": { + "spec": "ft-1.0.0", + "name": "spittor", + "symbol": "dogsheng", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "d9c2d319cd7e6177336b0a9c93c21cb48d84fb54.factory.bridge.near": { + "spec": "ft-1.0.0", + "name": "HAPI", + "symbol": "HAPI", + "icon": "data:image/svg+xml,%3Csvg version='1.1' id='Layer_2' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' width='600px' height='600px' viewBox='0 0 600 600' enable-background='new 0 0 600 600' xml:space='preserve'%3E %3Cg%3E %3Cg%3E %3Cpath fill='%23141414' d='M263.7,122.8c-3.6,0.3-7.1,0.9-10.7,1.8c-24.5,6-40.3,18.1-50.4,31c24.5-4.7,49.9,1.3,67.3,7.4 c0.5,0.2,1,0.4,1.6,0.6c-2.7-4.2-5.2-9-7.2-14.4C261.2,141.1,261.6,131.6,263.7,122.8z'/%3E %3Cpath fill='%23141414' d='M201.2,197.7c-9.8-1.1-19.1-2.1-24.6-2.1c-0.7,0-1.4,0-2,0.1c-38.1,2.6-67.2,37.3-69.1,82.4 c-1.4,32.2,13.5,53.1,23.3,63.4c-1.5-12.5-0.1-25,4.3-37.3c11.7-32.6,34.3-42.1,60.6-53.1c10.8-4.5,22.5-9.5,34.3-16.6l50.1-39.6 c-10.1,2.2-24.4,4.5-42.9,5.3C227.1,200.6,213.9,199.1,201.2,197.7z'/%3E %3Cpath fill='%23141414' d='M319.1,176.5c-0.5,1.1,0.9,2.1,1.8,1.2c5.3-5.4,16.3-14.3,30.8-14.2c15.6,0.1,35.5,10.2,40.5,22.1 c4,9.8-6.6,16.5-6.6,16.5l0,0c-2.5-2.7-8-6.3-18.2-6.6c-15-0.5-25.3,12.1-24.1,12.9c7.5,4.7,17.3,3.7,23.1,3.5 c5.8-0.2,15.1-2.5,17.8-3.5c4.7-1.8,11.7-7.8,14.9-16.1c2.5-6.5,8.4-28.7-25.2-34.4C352.7,154.3,327,159.6,319.1,176.5z'/%3E %3Cpath fill='%23141414' d='M473.1,225.1c-0.5-0.6-1.1-1.3-1.7-2l-0.3-0.3c-3.9-4.4-7.6-8.3-9.4-10.1c1.2-4.2,4-16.2,1-26.1 c-2.3-7.7-6.8-15.5-9.2-19.4l-0.8-1.2h0c-0.4-0.6-0.8-1.2-1.1-1.7c-0.3-0.4-0.5-0.7-0.6-1l-0.2-0.7c-2.5-7-8.6-22.3-16.4-28.1 l59.4-91.7c2.3-3.5-2.1-7.5-5.4-5l-86.8,66.5c-8.7-12.3-21.1-21.8-21.8-22.4c-0.8-0.6-2-0.7-2.9-0.2c-0.9,0.5-1.4,1.6-1.3,2.6 c0,0.1,0.6,5.9-2.9,17.6c7.5,2.7,13.9,6,19.3,9.7l-4.5,3.5c-8.8-5.7-20-10.5-34.3-12.6c-17.7-2.6-31.9,1-42.1,10.7c0,0,0,0,0,0 c5.9,3.8,13.1,8.7,17,12.4c0.8,0.7,1.5,1.5,2.2,2.3c-3.1,0.9-6.2,1.9-9.3,2.9c-0.3-0.2-0.5-0.5-0.8-0.7c-1.9-1.7-4.4-3.4-7-5.3 c-5.4-3.8-11.7-8.3-15.8-14c-2.2-3.1-3.8-6.5-4.3-10.4c-0.3-2.4-1-4-2.2-4.9c0,0,0,0,0,0c0,0,0,0,0,0c-0.6-0.5-2.8-2-5.8,0.3 c-2,1.6-4.4,5.3-6.5,10.3c-5.2,12.3-8.7,32.1-1.8,46.1c1.2,2.3,2.4,4.5,3.7,6.6c-0.4,1-0.7,2.1-0.9,3.1c-0.6,3.4-0.9,7.8-1.2,12.7 c-19.8-8.3-50.5-17.5-78.5-10.7c-23.9,5.8-39.4,17.5-49.6,30c7.4-3.1,15.2-5,23.5-5.6c5.6-0.4,16.4,0.8,27.9,2.1 c11.8,1.3,25.3,2.8,32.9,2.4c19.2-0.8,33.7-3.3,43.5-5.6c0,5.4,0.1,11.1,0.4,16.9c0.7,16.8,2.5,34.3,5,46.5 c3.6,17.9,16.5,55.2,31.4,64.6c5.5,3.5,13.5,8.2,22.9,13.4c-2.5,6.4-5.1,15.1-5.1,23.5c0,15.2,5.2,26.6,11,37 c4.6,8.2,9.6,15.7,12.8,24c2.5,6.5-2.7,27.7-5.6,38.9c-1.2,4.5-1.9,7.3-1.7,7c3.7-5.1,7.5-10.8,11.3-16.8 c15.3-24.2,19.4-47,19.5-48l0.2-1.4l-1.1-1c-0.2-0.2-17.2-15.7-18.3-33.3c-0.4-6.9,1-11.5,4.3-13.8c0.5-0.3,1-0.6,1.6-0.9 c7.5,3.7,15,7.3,22.2,10.5c2.8,3.5,9,9.4,11.8,12c3.4,3.2,6.9,7.8,12.2,7.8c5.3,0,15.9,0,21.3,0s13.1,0,17.3-2.1 c4.2-2.1,10.9-5.6,11-12.6c0-1.5,0.4-3.9,0.9-6.8c3.7-4.9,4.1-10.6,4.8-19.2c0.5-5.7,1.7-15.5,3-25.9c2-15.7,4.1-32,3.9-37.9 c-0.2-8.2-1.1-14.3-1.4-16.2C475.3,249.4,479.5,232.4,473.1,225.1z M318,310.6c-13.3-8.4-25.6-44.6-29-61.2 c-4.8-23.9-6.9-68.5-3.9-86.8c2.7-16.7,49-34.5,81.7-35.6c1.9-0.1,3.8-0.1,5.6-0.1c1,0,2,0,3,0c-0.1,4.9,1.3,15.6,13.8,25.5 c13.9,11,30.4,5,30.4,5l12.1-18.7c4.5,3.5,9.4,12.7,13,22.1c-0.9-0.4-1.9-0.7-3.1-0.9c-8.1-1.3-31.6-0.9-24,31.3 c1,4,5.2,9.4,17.2,22.3c2.8,3,5.1,5.3,7,7.2c5.6,5.6,7.4,7.4,7.5,11.8c0,0.3-0.2,1.6-0.4,3c-0.8-0.6-1.9-1.1-3.4-1 c-3.6-0.2-33.7,5.6-42.4,15.1c-1.7,1.9-4.5,2.6-6.7,1.4c-0.1-0.1-0.2-0.1-0.3-0.2c-1.4-0.8-2.3-1.9-2.8-3.5 c-1.3-5.1,2.9-13.2,4.6-16c0.6-1,0.3-2.3-0.6-2.9c-1-0.6-2.3-0.3-2.9,0.6c-0.1,0.2-0.9,1.5-1.9,3.5c-3.3,6.6-8.2,12.2-14.3,16.3 c-9.8,6.6-24,15.2-35.5,18.2c-18,4.7-24.9-8.2-25.2-8.8c-0.5-1-1.8-1.4-2.8-0.9c-1,0.5-1.5,1.8-0.9,2.8 c0.1,0.1,6.3,12.1,21.5,12.1c0.6,0,1.4-0.1,2.2-0.2c4.3-0.5,8.6,0.5,12.3,2.7c3.5,2.1,8,4.7,12.5,7c12.6,6.3,14.7,6.2,19.5,5.4 c1.1-0.2,49.8-2.4,80.1-8.2l3.6,0.2c2.4,0.1,4.3,2.3,4,4.7l0,0.1c-0.2,1.4-1,2.6-2.2,3.3c-2.7,1.5-6.5,3.5-9.9,4.9 c-1.6,0.6-3.3,1.2-5.1,1.6c-5.5,1.3-11.1,1.6-11.1,1.6s-5.4,1.2-13.5,2.1c-3.4,0.4-7.2,0.7-11.3,0.9c-14,0.7-13,1.6-24.8,1 c-2.9-0.1-5.7-0.3-8.3-0.6c-2.5-0.3-3.2,3.4-0.7,4c6.1,1.5,13.3,2.6,21.3,2.5c1,0,1.9,0,2.9,0c12.8-0.1,24.4,7.5,29.4,19.3 c2.1,5,4.1,12,5.4,18.5c1.8,8.4-5.3,16.1-13.8,15.3c-12.5-1.3-26.6-4.8-34.6-8.3C365.3,338.1,332.4,319.8,318,310.6z M448.7,169.2 l1.2,1.9c2.4,4,5.9,10.5,7.9,16.9c3.1,10.4-1.4,24.4-1.4,24.5l-0.5,1.5l1.1,1.1c0,0.1,5,5.2,10.3,11.1l0.1,0.2 c0.6,0.7,1.2,1.3,1.8,2c3.7,4.3,1.9,17-0.1,23.9l-0.2,0.6l0.1,0.6c0,0,0.3,1.5,0.6,3.9c-2.7,0.3-4.7,2.7-4.4,5.5l0.8,7.5l-8.6,0.1 l-13.5-15.3c-1-1.2-1-3,0.2-4c0,0,0,0,0,0c7.1-6.4,8.1-9.5,8.3-10.7c0.9-5.4,1.2-7.4,1.2-8.1c0-6.1-2.9-9-8.7-14.8 c-1.9-1.9-4.2-4.2-6.9-7.1c-0.6-0.6-1.1-1.2-1.7-1.8c2.1,0.6,4.9,1.2,8.5,1.5c8.4,0.7,10.9-1.4,10.9-1.4s1.5-2.7-1.1-6.6 c-2.6-3.9-6.2-6.7-13.2-6.9c-5-0.2-9.5,3.7-11.7,6c-0.9-1-2.9-4.7-3.8-10.9c-1.5-9.7,2.1-14.2,4.7-16.4c4.6-3.9,10.9-7.7,14.4-7.5 c0.9,0.1,1.9,0.2,2.7,0.4C447.8,167.7,448.2,168.4,448.7,169.2z M463.4,332.9c-0.7,8.2-1.1,12.8-3.8,16.5c-2.3,3.1-7.3,0.8-6.6-3 c0.4-2.1,0.7-4.3,0.8-6.4c0.3-10.7-4.9-20.9-6.7-27.7c0,0,0-0.1,0-0.1c-0.9-3.8,1.2-7.7,4.8-9.3c1.6-0.7,3.4-1.6,5.3-2.6 c4.6-2.3,9.9,1.3,9.2,6.4l0,0.1C465.2,317.2,463.9,327.1,463.4,332.9z M385.1,249.4c1.8-1.3,4.4-0.8,5.6,1.2 c0.8,1.4,1.9,2.9,3.4,4.1c4.5,3.7,9.8,3.5,13.2,3.5c3.3,0,5.4-0.6,6-0.8c0,0,0,0,0,0c2.4-0.5,4.3,2,3.1,4.2 c-2.6,4.8-6.1,11.1-6.5,11.4c-0.7,0.5-22.8,5.1-25.6,5.4s-11.6,1.2-18.2-3c-2.8-1.7-5.5-3.7-7.7-5.3c-1.7-1.2-1.4-3.8,0.4-4.7 C368.8,260.4,378.7,253.9,385.1,249.4z M436.8,263.8l8.3,9.1c1.5,1.7,0.5,4.4-1.7,4.7c-5,0.6-10,1.2-14.9,1.7 c-2.3,0.2-3.9-2.3-2.7-4.3c1.9-3,4.3-7,6.5-10.8C433.2,262.6,435.5,262.4,436.8,263.8z M396.4,117.1l83.5-69.1l-76.9,76.9 c-2.5,2.4-6.6,1.6-8.1-1.5h0C393.9,121.2,394.5,118.5,396.4,117.1z'/%3E %3Cpath fill='%23141414' d='M196.6,258.1c-25.6,10.7-45.8,19.2-56.4,48.7c-15.1,42,9.4,88.5,62.5,120.1c-17.4-68,3.5-93.1,22.1-115.3 c6.4-7.7,12.5-15,16.9-23.7c12.9-25.8,12.3-50.5,11.1-62C233.7,242.5,214.1,250.8,196.6,258.1z'/%3E %3C/g%3E %3Cg%3E %3Cpath d='M201.6,477.1h-9.1l-2.8,17.1h-14.3l2.8-17.1h-9.1l-2.8,17.1h-9.3l-1.5,9.1h9.3l-2.3,14h-9.4l-1.5,9.1h9.4l-2.8,17.1h9.1 l2.8-17.1h14.3l-2.8,17.1h9.1l2.8-17.1h9.3l1.5-9.1h-9.3l2.3-14h9.4l1.5-9.1h-9.4L201.6,477.1z M186,517.4h-14.3l2.3-14h14.3 L186,517.4z'/%3E %3Cpolygon points='260.8,505.3 230,505.3 230,477.1 218,477.1 218,543.6 230,543.6 230,515.4 260.8,515.4 260.8,543.6 272.9,543.6 272.9,477.1 260.8,477.1 '/%3E %3Cpath d='M307.1,477.1l-23.4,66.4h12.8l5.5-16.4h25l5.5,16.4h12.8l-23.4-66.4H307.1z M305.3,517.5l9-26.8h0.5l9,26.8H305.3z'/%3E %3Cpath d='M394,480c-3.5-1.9-7.8-2.9-12.9-2.9h-24.9v66.4h12v-22.4H381c5.1,0,9.4-0.9,12.9-2.8s6.2-4.5,7.9-7.8 c1.8-3.3,2.7-7.1,2.7-11.3c0-4.2-0.9-8-2.7-11.3C400.1,484.5,397.4,481.9,394,480z M390.9,505.4c-0.9,1.8-2.3,3.2-4.2,4.3 c-1.9,1-4.3,1.6-7.3,1.6h-11.1v-24h11c3,0,5.5,0.5,7.4,1.5c1.9,1,3.3,2.4,4.2,4.2c0.9,1.8,1.4,3.9,1.4,6.2 S391.8,503.6,390.9,505.4z'/%3E %3Crect x='417.1' y='477.1' width='12' height='66.4'/%3E %3C/g%3E %3C/g%3E %3C/svg%3E", + "reference": "", + "reference_hash": "", + "decimals": 18 + }, + "feral.tkn.near": { + "spec": "ft-1.0.0", + "name": "Feral", + "symbol": "FERAL", + "icon": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAARCABgAGADASIAAhEBAxEB/8QAHQAAAgIDAQEBAAAAAAAAAAAABQcEBgIDCAABCf/EADoQAAEDAgUCBQAIBQQDAQAAAAECAwQFEQAGEiExB0ETIlFhcRQVIzKBobHRFzNCkcEIFlLwYnKC4f/EABoBAAIDAQEAAAAAAAAAAAAAAAMEAQIFBgD/xAAuEQABAwMDAgMHBQAAAAAAAAABAAIRAyExBBJBBRMiUWEUFXGRobHxJDKBwfD/2gAMAwEAAhEDEQA/APzlbnFFkH7RChcHiwHpiUZCFoTrIQskaSk8jEIR16TKYShwJ8pQObHuf3xlG+0bLbgCf+CiOD2wsqAlToL1QS8iaFhLrZUpNz/3YjF7oMSpVh9EmNRvEfcFlL1kJTcHzW47Eeu2BWR8i16va6jGpzz0NhQS+5/SB63Pb9MMibnOmZDiR2I7Af0uWs0nUoqvvb129MQbYV2gHK30zovVnm26rXXhHSt8pXq5VZQGw+Lj+2LRlbpU+9IcZp05pb61pLI18gnyD5Pp+2C2W0UnqGqHU0uKFLWyVrS2o/zCLaUjhO4sd+3fBljqbQcrvqpGWqKwJqWigPBsXR5d1BRuTwe47dsU3I4pjPCLfwvzJHS23U5DLIV5UuLUBf0uBuB74lIyNIpiFNqrDLiWxq1JbV4YG/8AVbfjG6DnVcik/TkVdr6Vo8J6S8ARo3Fkad/+PoN8VKtMTYLYmM5vfd8qVpQ21qQFKUTzc2FwNxvscRqP1dIUqpkDCJQDdJUNWmLlWB2hVmIlWhIfQfNds38vJP640fWMh2SEuqKS0LaSm2/x7D9cY0RVcmRBTqdWUfSVq0qkIdCltoVupVibA27XPPvgrKp8BcdDZS8y62LB0WdUtIsFLcVq/wDokf8ALjGHqelgCaS2KGv3GHrONUfDQkLVf4xLaqKDcAC/Y3viuy4s2nFLcixQSdC0m6VD1Bx5iX4S9aSbW74xH0y0w4XWqxwdcFcIpeQkFyKFqX209vkc4ZPRrpbM6oV7TIbLFOjLH0tak7FRB0gW3ubHuP8AGFvDS/IkNxgyfGKgARYfl/bHcXSajy+nXTmJTIEFRlVptEibLKQlKdQ2SFg2BSDfkcm3Nh3ZMCVxFOn3HQcKx/wzdYo3+0qIw3S4jCggoQFKOk/1bm5OyuT2wvc0ZK6XZApc2bVqXMqdSmU56TT25rK3EMixS2ClAGpa1pvov5Uje97Yu1LytFrdWZlzq3WJb/iFh1cMNqLp2NjY3BsRe4vzzth9Km9LOmWWVVirxo8SkxLGa4pPiPuC/a5sVE7fj25wvVp90tDj4QZIHNrAnym/rELQpO7YcWgB0WJvF7kDzi3ouKeiuU8+v9Ps11J6m+CyqfFcpCS2lkuFaVB7QlISCkDR5iLX474rWZKTXsmIArUZyPKfTruFaxbiwI55HH4HDh6i9a8v9S5LWWsh1WNlpuY5pZEoqIcPa60p5sBsQLb7nGqP0wqbFKKZdZj5gU2n7VbpSptRHKU33B9N/fDBa0HEDyShJfzJ80l6HnpxgutNICQ5dOjiw7i5wdbzpDjS/pb91xCCgsOboJsNVgdyAb/pfG7PtfyRlOO+W8kuNBKdC34w8ROux8q0E6kcc8be+EbV3+oOdYz2YaTSnotKjIWpvw0FZ8JPJ2H3Rcb8YjwCL5woDXumOLn0+Ke7PUSahu9OWw6pSwgtlJSBbbSQnYjfi21tjj5T+otboU41KTVW0x3VbMlSXCB32vYX9D7bYQVEp2amnTIrk11ssJDygsfaIQbWUT2BuLEXxb5Ul5uKiUmYl1DyNLbjhKVDb7v5H88eIAJCgPIuF0/l7qHRMxNJarBLQVqK2vvKKb7BFj5e39sEqplyTChKrEItPQC6UAocClN77BY7HgY5ZyxWpEByQ0/FcCyAFuJcAA/9lGx9e2+Gx076rxYzzVJnPKehKWAtC1EpJtuLAW33whq9EyuJ5WlpNcaZgpIdMfCrmZ4UaoBcdmOS5ZJB02AFhYnbb0GOqs05roJoMSPBp9ZqHgr0ORGlFDKgbbKvz6898cxdIY8pypJqcuSt9LI1JO5APba+HDVc0O04OpU+8pqQnQoBzzAkHzW2/fD1RIaaACSrRljPNOywt2dTYculSShCj9qFFzSAAlYVcegKrX2wN6t/6kaFm/IsnKFblMyG1LQbKCQ7qH3uNj2PG1tsIxyl5q6g9SaJ0ryfNWl/MUxuMJCifsmz/MdUedKEBSj7JOLF1Ep/RNMepwMqU9VRpVBn/VP12ZGlyU6hKda0A+UIJvY7E35Awu6t2nNLhYn8fVPUNMdS1zGG8fPz+iN9PujfTWq1VNWr9enS31BLjMUFTUbfdI1JNz+NsMDM/UODk1KcuKZEBtLZcYSywPASQdIUbc/dAv8AlhVZEqmVp0xNMyLIqVTjohiW43KZUFxwPvoJuQQNrkXG+xOBOfanUHcwOP0uqPTXWW/PEkOlVgEnsb8De4vhgPFV1ykatI0BYJryKzBqtPfrklMMrHkbe1Ju7YWPlG/J4OKfW/rrOuXl5dynNYokltstORA0AxNaC9ZSVJHkJ9PukAA2xQcrv1GPFNeykWXg8tUeqwCorUARcuWJ7b76ffBCm5gUzMcMZ110sOJTpTuV2NrDbnf1/DEgAODuRj7IZe5zS04OfXkJo5d6NS6bRKjmzNrMN6sViA7TqXR4C0uaQuxK3FDYJTYbkmw3Jvhc9QumOYsn0uAw82qX9LCVFSk7J5Gq1rpuTtfvhkQ+oNcjMj6vEqE4wLeMpdttuDfcD0tbG2oZ5rlfaMStpTKQ8U6rhWu52vaxBFu2FdPRdSqVKtV25zz8AAMAD7nlN1qrH0WUKbdobPqSTkk/wIHCQ7cxcZuO59WObnQ6SNWpSRYEC+9gSbm3GMZWZFw2PFiqebeWbl0JAudOkE3+Pnv74vUuPGZfcdWhpYKSEFSVaSLkC44CgPjAPOWRGKjS2KnRUsBTzepSEo0W9AL8b39cNggmClCx0SES6RFxulvlmOkpBBUpxBUL/AG2M60h+ZVPEeWr7NRALaToNgdlb3x7JnjQ6QPCcCnFbqSq/HbBeS25IlsKeKlPLsSoqJTt3uDY4rk3VoO0QkZnDMlaomal1HLNRkwpTTLsYyYylIXocbU24AeQFIWpJ+TioOS6tTYL9EMxxMR94LeYB8qnE8Kt2OHJm/KyqjW5bbViVKOq1gTf/H74I5O6YsUupy8015MWUzMS8iJBfZSvUlV0+Iq/At93v3272dUZSZL0/wBJ6VrOsan2fSNk8nAA5JPl+EZ/08dWMrdEehefa99XN1HO2b3G6FSmXUHTEgpTrekEkWspZSkAbko9AcUKlVlvOTT1Qm6YkyCx4jshB8MKQCATcnfewtiyVPJcvN+YYVBjNpaa4XoRs00kXVsBYWAP5YVWeYzMXMMmJDbKIrCyy2n/AMRtvhNg3vL8F32C6LqPSGaWgQHbmsME4lxzHoB/SuYqAgvQKtTnXW5iVXW9F8oeFuSLn3B7YyjzmHp0moNsuukPKe0Apsd78/tbjC8h5kqcSDDpTaGlMBbvl8MFRKiBuedrbfji1eO2IDMxqa02ltJCgkjxNY/pt39cHIc3K5NzW5bhXilZgmfQXGJFTcQkqTpKHAEpCibjVf43529sFGagiKpC1pUp3RdDwkAalA7bevPO98LCPPlhBVGYU6FkrIRsseilI+784nQarNW408uM2ptabHxnQe3p7EbD9MUuF4EJlVqstymkKQHSSAFqUo6VkXP9I/PvjZSH9Kt0h1HKQolVhyR6gnex3+DiliUlyGnXOQ7psrU2kpSkj2t6c88YN0SpxUNhovKWptJS2gKOlXcG3J74s3Cku8S2QpKachEdQ++jURqNh+GNVSrFQW4lVPcLrTYuUFIH6DYfOJFVhJVGSlLqE2TpKUo2v2/HFLVUpFPkCO6PD0qGh1Shv/jHpkqDLRBXQfS6ndP6nWSx1BkopsatUiQmJNcKgIkpKNaF3AuRqSUkeiu2CNLowr9ZptOpMliZKK24phxkKWVKUQE6bWISQQQTsRikxZ7KaDQ604gmVocQ24ACm+qwvp3IJxAY6nVXJ+Yo+cspzVRKlDWX4zqENqSFkWKlAi3CRce3xYL2dzHC6PoXWPcr3Oc3cHiDwf8ASnhU8vZN6Ux6tUq/VY7M9cdbLUdy2ttVrqA79rfjjmDL/S7+ID0yYxVYLCQHJMiTIX5GTpK9Atex4Fz3xRM8VXqBn3M8nM1entuSn3VO/wAywRdV7hN9t8epInxIrkNzMU8Jk7vMMukNuX2NwNsMMaWneYmI+CH1DrrdXT9lY0hgcXTNyTAv8sfVMKq5I6XZXoUqmx6oKjXHGSW3QrUppZsVeUbFI33sdr98LeiZeqtJqCZswsEupuylzcknhdrW/wA4Izqy/CI+jLA+jIshy/iKCbWIucBH6lPA+lh5bjQ8ylkAkC/N/wC+LsbAO4ySuf1GoNSA0QAjRptRUp1TzwcUEBSvMpJ02I0jSLb34O/GPiqWllbaZTCbeKUWRq0lIAuRY9wRcHnEKRLzAhgin1ALQ8A4kpAF022t/fE+FUcxPlDDrjCFBpKGy4Cry2247/uMVdAuEJuYKJx7RoKlsuNNgG6rHkeoF/YjE2PPmOTVspDWopAS4lHa907WsLi439ecCyhfhBVT8LTq+0KBqSdyLEEXHPwOb72xtQIBUHHH0tJbFyUnT32sO442Hf0wPdZG2mVeHkmRHSENB9SU3INwAB35sMVeu0xp+O4pxGojdO+wUPXue3pgs/qAbcQ6kOr3NyR7W+fbf5wDzFCneGl+JKSlCzYpUUlSRfcjm3zgV5kIpiIIRTKOf6QKKKFUn0Mzoy1FtRQdC2yQdIN+b8cYFZgZdbecSEKTchTaynUm5Jt23Fv0GKBW4ympHissrShNvMTdRV89zfAr/clbYuwJryUcaQsiwwdtIvO5qB3bbXBXOUGYylOO7JWkgknQDvfYi9t/Ud/xxHTIpywREShMhNvDS8TY3NwAeCfy9hiuIrxksrZloN1CxUDx743sTo8lKKcpsFoAWcPb3xcBw/cqOLSbKY7UYsV9RSXGlG4U0tB0kc3/AH743UsEfbwA66zYByK6q6XUEdjz6bYiSVKRFbkBCCfFShKT3ABBvgzRnBHdW1D8JbWsKT3It7+mJJEKoBJha5EZxTANOpbwaNiLLsUG29vSxxrUjOEdamo6/snUA2dSHLp+bXHYH4wYbEl2a67AeUytOlSQN0qBFiCPkDGbjdVelqEZbVgbDxFEjm21+174GXBEDDxKCFGZw94rrqENups4hINj/wDuJdNo5Q4tbz5cTyE2v7/lgnObdbbbcdkBor2KEmwUf+/p84jMzhHQFqKDY7+wwF9S0BMU6V5cv//Z", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "shit.tkn.near": { + "spec": "ft-1.0.0", + "name": "Pile of Shit (rare)", + "symbol": "SHIT", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48.factory.bridge.near": { + "spec": "ft-1.0.0", + "name": "USD Coin", + "symbol": "USDC.e", + "icon": "data:image/svg+xml,%3Csvg width='32' height='32' viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none'%3E%3Ccircle cx='16' cy='16' r='16' fill='%232775C9'/%3E%3Cpath d='M15.75 27.5C9.26 27.5 4 22.24 4 15.75S9.26 4 15.75 4 27.5 9.26 27.5 15.75A11.75 11.75 0 0115.75 27.5zm-.7-16.11a2.58 2.58 0 00-2.45 2.47c0 1.21.74 2 2.31 2.33l1.1.26c1.07.25 1.51.61 1.51 1.22s-.77 1.21-1.77 1.21a1.9 1.9 0 01-1.8-.91.68.68 0 00-.61-.39h-.59a.35.35 0 00-.28.41 2.73 2.73 0 002.61 2.08v.84a.705.705 0 001.41 0v-.85a2.62 2.62 0 002.59-2.58c0-1.27-.73-2-2.46-2.37l-1-.22c-1-.25-1.47-.58-1.47-1.14 0-.56.6-1.18 1.6-1.18a1.64 1.64 0 011.59.81.8.8 0 00.72.46h.47a.42.42 0 00.31-.5 2.65 2.65 0 00-2.38-2v-.69a.705.705 0 00-1.41 0v.74zm-8.11 4.36a8.79 8.79 0 006 8.33h.14a.45.45 0 00.45-.45v-.21a.94.94 0 00-.58-.87 7.36 7.36 0 010-13.65.93.93 0 00.58-.86v-.23a.42.42 0 00-.56-.4 8.79 8.79 0 00-6.03 8.34zm17.62 0a8.79 8.79 0 00-6-8.32h-.15a.47.47 0 00-.47.47v.15a1 1 0 00.61.9 7.36 7.36 0 010 13.64 1 1 0 00-.6.89v.17a.47.47 0 00.62.44 8.79 8.79 0 005.99-8.34z' fill='%23FFF'/%3E%3C/g%3E%3C/svg%3E", + "reference": "", + "reference_hash": "", + "decimals": 6 + }, + "tckt.tkn.near": { + "spec": "ft-1.0.0", + "name": "Mintickt", + "symbol": "TCKT", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "mrktng.tkn.near": { + "spec": "ft-1.0.0", + "name": "Marketing token", + "symbol": "MRKTNG", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 6 + }, + "testing-token.staderlabs-test.near": { + "spec": "ft-1.0.0", + "name": "testing", + "symbol": "testing", + "icon": null, + "reference": "https://nearX.app", + "reference_hash": null, + "decimals": 24 + }, + "usdt.mocks.near": { + "spec": "ft-1.0.0", + "name": "Mock Tether USD", + "symbol": "MOCK-USDT.e", + "icon": "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Ccircle cx='16' cy='16' r='16' fill='%2326A17B'/%3E%3Cpath fill='%23FFF' d='M17.922 17.383v-.002c-.11.008-.677.042-1.942.042-1.01 0-1.721-.03-1.971-.042v.003c-3.888-.171-6.79-.848-6.79-1.658 0-.809 2.902-1.486 6.79-1.66v2.644c.254.018.982.061 1.988.061 1.207 0 1.812-.05 1.925-.06v-2.643c3.88.173 6.775.85 6.775 1.658 0 .81-2.895 1.485-6.775 1.657m0-3.59v-2.366h5.414V7.819H8.595v3.608h5.414v2.365c-4.4.202-7.709 1.074-7.709 2.118 0 1.044 3.309 1.915 7.709 2.118v7.582h3.913v-7.584c4.393-.202 7.694-1.073 7.694-2.116 0-1.043-3.301-1.914-7.694-2.117'/%3E%3C/g%3E%3C/svg%3E", + "reference": "", + "reference_hash": "", + "decimals": 6 + }, + "finarix.near": { + "spec": "ft-1.0.0", + "name": "Finarix", + "symbol": "FNRIX", + "icon": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJ5ZXMiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MiIgaGVpZ2h0PSI4MiI+CjxwYXRoIHN0eWxlPSJmaWxsOiNmZWZlZmY7IHN0cm9rZTpub25lOyIgZD0iTTAgMEwwIDgyTDgyIDgyTDgyIDBMMCAweiIvPgo8cGF0aCBzdHlsZT0iZmlsbDojYzRjZWZjOyBzdHJva2U6bm9uZTsiIGQ9Ik0zOSA2TDM5IDdMNDUgN0wzOSA2TTMzLjY2NjcgNy4zMzMzNEwzNC4zMzMzIDcuNjY2NjZMMzMuNjY2NyA3LjMzMzM0eiIvPgo8cGF0aCBzdHlsZT0iZmlsbDojOTBhM2ZhOyBzdHJva2U6bm9uZTsiIGQ9Ik0zNSA3TDM2IDhMMzUgN3oiLz4KPHBhdGggc3R5bGU9ImZpbGw6Izc2OGVmODsgc3Ryb2tlOm5vbmU7IiBkPSJNMzYgN0wzNyA4TDM2IDd6Ii8+CjxwYXRoIHN0eWxlPSJmaWxsOiM1Nzc1Zjc7IHN0cm9rZTpub25lOyIgZD0iTTE1IDU5QzI3LjcxNDMgNTMuMDcwOSA0My45MzU4IDM0LjQ0OCA1MiAyM0w1MyAyM0w1OSAyOUw1OSAzMEM0Ny41NTIgMzguMDY0MiAyOC45MjkxIDU0LjI4NTcgMjMgNjdDNTUuMDU1OCA4Ny44NzUyIDkzLjE1ODcgNDUuMjczNCA2NS45MDY2IDE3LjA0MDFDMzguMTEzNiAtMTEuNzUzNiAtNi40NzQ1NyAyNi4xMjk2IDE1IDU5eiIvPgo8cGF0aCBzdHlsZT0iZmlsbDojNzY4ZWY4OyBzdHJva2U6bm9uZTsiIGQ9Ik00NyA3TDQ4IDhMNDcgN3oiLz4KPHBhdGggc3R5bGU9ImZpbGw6IzkwYTNmYTsgc3Ryb2tlOm5vbmU7IiBkPSJNNDguNjY2NyA3LjMzMzM0TDQ5LjMzMzMgNy42NjY2Nkw0OC42NjY3IDcuMzMzMzR6Ii8+CjxwYXRoIHN0eWxlPSJmaWxsOiNjNGNlZmM7IHN0cm9rZTpub25lOyIgZD0iTTUwIDdMNTEgOEw1MCA3TTMwIDhMMzEgOUwzMCA4eiIvPgo8cGF0aCBzdHlsZT0iZmlsbDojOTBhM2ZhOyBzdHJva2U6bm9uZTsiIGQ9Ik0zMSA4TDMyIDlMMzEgOHoiLz4KPHBhdGggc3R5bGU9ImZpbGw6Izc2OGVmODsgc3Ryb2tlOm5vbmU7IiBkPSJNNTIgOEw1MyA5TDUyIDh6Ii8+CjxwYXRoIHN0eWxlPSJmaWxsOiNjNGNlZmM7IHN0cm9rZTpub25lOyIgZD0iTTUzIDhMNTQgOUw1MyA4TTI3IDlMMjggMTBMMjcgOXoiLz4KPHBhdGggc3R5bGU9ImZpbGw6IzkwYTNmYTsgc3Ryb2tlOm5vbmU7IiBkPSJNMjggOUwyOSAxMEwyOCA5TTU1IDlMNTYgMTBMNTUgOXoiLz4KPHBhdGggc3R5bGU9ImZpbGw6I2M0Y2VmYzsgc3Ryb2tlOm5vbmU7IiBkPSJNNTYgOUw1NyAxMEw1NiA5eiIvPgo8cGF0aCBzdHlsZT0iZmlsbDojOTBhM2ZhOyBzdHJva2U6bm9uZTsiIGQ9Ik0yNiAxMEwyNyAxMUwyNiAxME01NyAxMEw1OCAxMUw1NyAxMHoiLz4KPHBhdGggc3R5bGU9ImZpbGw6I2M0Y2VmYzsgc3Ryb2tlOm5vbmU7IiBkPSJNMjQgMTFMMjUgMTJMMjQgMTFNNTkgMTFMNjAgMTJMNTkgMTF6Ii8+CjxwYXRoIHN0eWxlPSJmaWxsOiM5MGEzZmE7IHN0cm9rZTpub25lOyIgZD0iTTIzIDEyTDI0IDEzTDIzIDEyTTYwIDEyTDYxIDEzTDYwIDEyeiIvPgo8cGF0aCBzdHlsZT0iZmlsbDojYzRjZWZjOyBzdHJva2U6bm9uZTsiIGQ9Ik0yMSAxM0wyMiAxNEwyMSAxM002MiAxM0w2MyAxNEw2MiAxM3oiLz4KPHBhdGggc3R5bGU9ImZpbGw6IzkwYTNmYTsgc3Ryb2tlOm5vbmU7IiBkPSJNMjAgMTRMMjEgMTVMMjAgMTRNNjMgMTRMNjQgMTVMNjMgMTRNMTkgMTVMMjAgMTZMMTkgMTV6Ii8+CjxwYXRoIHN0eWxlPSJmaWxsOiM3NjhlZjg7IHN0cm9rZTpub25lOyIgZD0iTTY0IDE1TDY1IDE2TDY0IDE1TTE4IDE2TDE5IDE3TDE4IDE2TTY1IDE2TDY2IDE3TDY1IDE2eiIvPgo8cGF0aCBzdHlsZT0iZmlsbDojOTBhM2ZhOyBzdHJva2U6bm9uZTsiIGQ9Ik0xNyAxN0wxOCAxOEwxNyAxN3oiLz4KPHBhdGggc3R5bGU9ImZpbGw6Izc2OGVmODsgc3Ryb2tlOm5vbmU7IiBkPSJNNjYgMTdMNjcgMThMNjYgMTd6Ii8+CjxwYXRoIHN0eWxlPSJmaWxsOiM5MGEzZmE7IHN0cm9rZTpub25lOyIgZD0iTTE2IDE4TDE3IDE5TDE2IDE4TTY3IDE4TDY4IDE5TDY3IDE4eiIvPgo8cGF0aCBzdHlsZT0iZmlsbDojYzRjZWZjOyBzdHJva2U6bm9uZTsiIGQ9Ik0xNSAxOUwxNiAyMEwxNSAxOU02OCAxOUw2OSAyMEw2OCAxOXoiLz4KPHBhdGggc3R5bGU9ImZpbGw6IzkwYTNmYTsgc3Ryb2tlOm5vbmU7IiBkPSJNMTQgMjFMMTUgMjJMMTQgMjFNNjkgMjFMNzAgMjJMNjkgMjF6Ii8+CjxwYXRoIHN0eWxlPSJmaWxsOiNjNGNlZmM7IHN0cm9rZTpub25lOyIgZD0iTTEzIDIyTDE0IDIzTDEzIDIyTTcwIDIyTDcxIDIzTDcwIDIyeiIvPgo8cGF0aCBzdHlsZT0iZmlsbDojNzY4ZWY4OyBzdHJva2U6bm9uZTsiIGQ9Ik01MiAyM0w1NyAzMUw1OCAzMUw1OSAyOUw1MiAyM3oiLz4KPHBhdGggc3R5bGU9ImZpbGw6IzkwYTNmYTsgc3Ryb2tlOm5vbmU7IiBkPSJNMTIgMjRMMTMgMjVMMTIgMjRNNTEgMjRMNTIgMjVMNTEgMjR6Ii8+CjxwYXRoIHN0eWxlPSJmaWxsOiNjNGNlZmM7IHN0cm9rZTpub25lOyIgZD0iTTUyIDI0TDUzIDI1TDUyIDI0eiIvPgo8cGF0aCBzdHlsZT0iZmlsbDojOTBhM2ZhOyBzdHJva2U6bm9uZTsiIGQ9Ik03MSAyNEw3MiAyNUw3MSAyNE01MCAyNUw1MSAyNkw1MCAyNXoiLz4KPHBhdGggc3R5bGU9ImZpbGw6I2M0Y2VmYzsgc3Ryb2tlOm5vbmU7IiBkPSJNNTMgMjVMNTQgMjZMNTMgMjVNNzIgMjVMNzMgMjZMNzIgMjV6Ii8+CjxwYXRoIHN0eWxlPSJmaWxsOiM5MGEzZmE7IHN0cm9rZTpub25lOyIgZD0iTTExIDI2TDEyIDI3TDExIDI2TTQ5IDI2TDUwIDI3TDQ5IDI2eiIvPgo8cGF0aCBzdHlsZT0iZmlsbDojYzRjZWZjOyBzdHJva2U6bm9uZTsiIGQ9Ik01NCAyNkw1NSAyN0w1NCAyNnoiLz4KPHBhdGggc3R5bGU9ImZpbGw6IzkwYTNmYTsgc3Ryb2tlOm5vbmU7IiBkPSJNNzIgMjZMNzMgMjdMNzIgMjZNNDggMjdMNDkgMjhMNDggMjd6Ii8+CjxwYXRoIHN0eWxlPSJmaWxsOiNjNGNlZmM7IHN0cm9rZTpub25lOyIgZD0iTTU1IDI3TDU2IDI4TDU1IDI3TTEwIDI4TDExIDI5TDEwIDI4eiIvPgo8cGF0aCBzdHlsZT0iZmlsbDojOTBhM2ZhOyBzdHJva2U6bm9uZTsiIGQ9Ik00NyAyOEw0OCAyOUw0NyAyOHoiLz4KPHBhdGggc3R5bGU9ImZpbGw6I2M0Y2VmYzsgc3Ryb2tlOm5vbmU7IiBkPSJNNTYgMjhMNTcgMjlMNTYgMjhNNzMgMjhMNzQgMjlMNzMgMjh6Ii8+CjxwYXRoIHN0eWxlPSJmaWxsOiM5MGEzZmE7IHN0cm9rZTpub25lOyIgZD0iTTEwIDI5TDExIDMwTDEwIDI5TTQ2IDI5TDQ3IDMwTDQ2IDI5eiIvPgo8cGF0aCBzdHlsZT0iZmlsbDojYzRjZWZjOyBzdHJva2U6bm9uZTsiIGQ9Ik01NyAyOUw1OCAzMEw1NyAyOXoiLz4KPHBhdGggc3R5bGU9ImZpbGw6IzkwYTNmYTsgc3Ryb2tlOm5vbmU7IiBkPSJNNzMgMjlMNzQgMzBMNzMgMjlNNDUgMzBMNDYgMzFMNDUgMzB6Ii8+CjxwYXRoIHN0eWxlPSJmaWxsOiNjNGNlZmM7IHN0cm9rZTpub25lOyIgZD0iTTkuMzMzMzMgMzEuNjY2N0w5LjY2NjY3IDMyLjMzMzNMOS4zMzMzMyAzMS42NjY3eiIvPgo8cGF0aCBzdHlsZT0iZmlsbDojOTBhM2ZhOyBzdHJva2U6bm9uZTsiIGQ9Ik00NCAzMUw0NSAzMkw0NCAzMXoiLz4KPHBhdGggc3R5bGU9ImZpbGw6Izc2OGVmODsgc3Ryb2tlOm5vbmU7IiBkPSJNNTYgMzFMNTcgMzJMNTYgMzF6Ii8+CjxwYXRoIHN0eWxlPSJmaWxsOiNjNGNlZmM7IHN0cm9rZTpub25lOyIgZD0iTTc0LjMzMzMgMzEuNjY2N0w3NC42NjY3IDMyLjMzMzNMNzQuMzMzMyAzMS42NjY3eiIvPgo8cGF0aCBzdHlsZT0iZmlsbDojOTBhM2ZhOyBzdHJva2U6bm9uZTsiIGQ9Ik00MyAzMkw0NCAzM0w0MyAzMnoiLz4KPHBhdGggc3R5bGU9ImZpbGw6Izc2OGVmODsgc3Ryb2tlOm5vbmU7IiBkPSJNNTUgMzJMNTYgMzNMNTUgMzJ6Ii8+CjxwYXRoIHN0eWxlPSJmaWxsOiM5MGEzZmE7IHN0cm9rZTpub25lOyIgZD0iTTkgMzNMMTAgMzRMOSAzM000MiAzM0w0MyAzNEw0MiAzM3oiLz4KPHBhdGggc3R5bGU9ImZpbGw6Izc2OGVmODsgc3Ryb2tlOm5vbmU7IiBkPSJNNTQgMzNMNTUgMzRMNTQgMzN6Ii8+CjxwYXRoIHN0eWxlPSJmaWxsOiM5MGEzZmE7IHN0cm9rZTpub25lOyIgZD0iTTc0IDMzTDc1IDM0TDc0IDMzeiIvPgo8cGF0aCBzdHlsZT0iZmlsbDojNzY4ZWY4OyBzdHJva2U6bm9uZTsiIGQ9Ik05IDM0TDEwIDM1TDkgMzR6Ii8+CjxwYXRoIHN0eWxlPSJmaWxsOiM5MGEzZmE7IHN0cm9rZTpub25lOyIgZD0iTTQxIDM0TDQyIDM1TDQxIDM0eiIvPgo8cGF0aCBzdHlsZT0iZmlsbDojNzY4ZWY4OyBzdHJva2U6bm9uZTsiIGQ9Ik01MyAzNEw1NCAzNUw1MyAzNE03NCAzNEw3NSAzNUw3NCAzNHoiLz4KPHBhdGggc3R5bGU9ImZpbGw6IzkwYTNmYTsgc3Ryb2tlOm5vbmU7IiBkPSJNNDAgMzVMNDEgMzZMNDAgMzV6Ii8+CjxwYXRoIHN0eWxlPSJmaWxsOiM3NjhlZjg7IHN0cm9rZTpub25lOyIgZD0iTTUyIDM1TDUzIDM2TDUyIDM1eiIvPgo8cGF0aCBzdHlsZT0iZmlsbDojOTBhM2ZhOyBzdHJva2U6bm9uZTsiIGQ9Ik0zOSAzNkw0MCAzN0wzOSAzNnoiLz4KPHBhdGggc3R5bGU9ImZpbGw6Izc2OGVmODsgc3Ryb2tlOm5vbmU7IiBkPSJNNTEgMzZMNTIgMzdMNTEgMzZ6Ii8+CjxwYXRoIHN0eWxlPSJmaWxsOiM5MGEzZmE7IHN0cm9rZTpub25lOyIgZD0iTTM4IDM3TDM5IDM4TDM4IDM3eiIvPgo8cGF0aCBzdHlsZT0iZmlsbDojNzY4ZWY4OyBzdHJva2U6bm9uZTsiIGQ9Ik01MCAzN0w1MSAzOEw1MCAzN3oiLz4KPHBhdGggc3R5bGU9ImZpbGw6IzkwYTNmYTsgc3Ryb2tlOm5vbmU7IiBkPSJNMzcgMzhMMzggMzlMMzcgMzh6Ii8+CjxwYXRoIHN0eWxlPSJmaWxsOiM3NjhlZjg7IHN0cm9rZTpub25lOyIgZD0iTTQ5IDM4TDUwIDM5TDQ5IDM4eiIvPgo8cGF0aCBzdHlsZT0iZmlsbDojYzRjZWZjOyBzdHJva2U6bm9uZTsiIGQ9Ik03NSAzOEw3NSA0Mkw3NiA0Mkw3NSAzOE04LjMzMzMzIDM5LjY2NjdMOC42NjY2NyA0MC4zMzMzTDguMzMzMzMgMzkuNjY2N3oiLz4KPHBhdGggc3R5bGU9ImZpbGw6IzkwYTNmYTsgc3Ryb2tlOm5vbmU7IiBkPSJNMzYgMzlMMzcgNDBMMzYgMzl6Ii8+CjxwYXRoIHN0eWxlPSJmaWxsOiM3NjhlZjg7IHN0cm9rZTpub25lOyIgZD0iTTQ4IDM5TDQ5IDQwTDQ4IDM5eiIvPgo8cGF0aCBzdHlsZT0iZmlsbDojOTBhM2ZhOyBzdHJva2U6bm9uZTsiIGQ9Ik0zNSA0MEwzNiA0MUwzNSA0MHoiLz4KPHBhdGggc3R5bGU9ImZpbGw6Izc2OGVmODsgc3Ryb2tlOm5vbmU7IiBkPSJNNDcgNDBMNDggNDFMNDcgNDB6Ii8+CjxwYXRoIHN0eWxlPSJmaWxsOiM5MGEzZmE7IHN0cm9rZTpub25lOyIgZD0iTTM0IDQxTDM1IDQyTDM0IDQxeiIvPgo8cGF0aCBzdHlsZT0iZmlsbDojNzY4ZWY4OyBzdHJva2U6bm9uZTsiIGQ9Ik00NiA0MUw0NyA0Mkw0NiA0MXoiLz4KPHBhdGggc3R5bGU9ImZpbGw6IzkwYTNmYTsgc3Ryb2tlOm5vbmU7IiBkPSJNMzMgNDJMMzQgNDNMMzMgNDJ6Ii8+CjxwYXRoIHN0eWxlPSJmaWxsOiM3NjhlZjg7IHN0cm9rZTpub25lOyIgZD0iTTQ1IDQyTDQ2IDQzTDQ1IDQyeiIvPgo8cGF0aCBzdHlsZT0iZmlsbDojOTBhM2ZhOyBzdHJva2U6bm9uZTsiIGQ9Ik0zMiA0M0wzMyA0NEwzMiA0M3oiLz4KPHBhdGggc3R5bGU9ImZpbGw6Izc2OGVmODsgc3Ryb2tlOm5vbmU7IiBkPSJNNDQgNDNMNDUgNDRMNDQgNDN6Ii8+CjxwYXRoIHN0eWxlPSJmaWxsOiM5MGEzZmE7IHN0cm9rZTpub25lOyIgZD0iTTMxIDQ0TDMyIDQ1TDMxIDQ0eiIvPgo8cGF0aCBzdHlsZT0iZmlsbDojNzY4ZWY4OyBzdHJva2U6bm9uZTsiIGQ9Ik00MyA0NEw0NCA0NUw0MyA0NE05IDQ1TDEwIDQ2TDkgNDV6Ii8+CjxwYXRoIHN0eWxlPSJmaWxsOiM5MGEzZmE7IHN0cm9rZTpub25lOyIgZD0iTTMwIDQ1TDMxIDQ2TDMwIDQ1eiIvPgo8cGF0aCBzdHlsZT0iZmlsbDojNzY4ZWY4OyBzdHJva2U6bm9uZTsiIGQ9Ik00MiA0NUw0MyA0Nkw0MiA0NU03NCA0NUw3NSA0Nkw3NCA0NXoiLz4KPHBhdGggc3R5bGU9ImZpbGw6IzkwYTNmYTsgc3Ryb2tlOm5vbmU7IiBkPSJNOSA0NkwxMCA0N0w5IDQ2TTI5IDQ2TDMwIDQ3TDI5IDQ2eiIvPgo8cGF0aCBzdHlsZT0iZmlsbDojNzY4ZWY4OyBzdHJva2U6bm9uZTsiIGQ9Ik00MSA0Nkw0MiA0N0w0MSA0NnoiLz4KPHBhdGggc3R5bGU9ImZpbGw6IzkwYTNmYTsgc3Ryb2tlOm5vbmU7IiBkPSJNNzQgNDZMNzUgNDdMNzQgNDZ6Ii8+CjxwYXRoIHN0eWxlPSJmaWxsOiNjNGNlZmM7IHN0cm9rZTpub25lOyIgZD0iTTkgNDdMMTAgNDhMOSA0N3oiLz4KPHBhdGggc3R5bGU9ImZpbGw6IzkwYTNmYTsgc3Ryb2tlOm5vbmU7IiBkPSJNMjggNDdMMjkgNDhMMjggNDd6Ii8+CjxwYXRoIHN0eWxlPSJmaWxsOiM3NjhlZjg7IHN0cm9rZTpub25lOyIgZD0iTTQwIDQ3TDQxIDQ4TDQwIDQ3eiIvPgo8cGF0aCBzdHlsZT0iZmlsbDojYzRjZWZjOyBzdHJva2U6bm9uZTsiIGQ9Ik03NC4zMzMzIDQ3LjY2NjdMNzQuNjY2NyA0OC4zMzMzTDc0LjMzMzMgNDcuNjY2N3oiLz4KPHBhdGggc3R5bGU9ImZpbGw6IzkwYTNmYTsgc3Ryb2tlOm5vbmU7IiBkPSJNMjcgNDhMMjggNDlMMjcgNDh6Ii8+CjxwYXRoIHN0eWxlPSJmaWxsOiM3NjhlZjg7IHN0cm9rZTpub25lOyIgZD0iTTM5IDQ4TDQwIDQ5TDM5IDQ4eiIvPgo8cGF0aCBzdHlsZT0iZmlsbDojOTBhM2ZhOyBzdHJva2U6bm9uZTsiIGQ9Ik0yNiA0OUwyNyA1MEwyNiA0OXoiLz4KPHBhdGggc3R5bGU9ImZpbGw6Izc2OGVmODsgc3Ryb2tlOm5vbmU7IiBkPSJNMzggNDlMMzkgNTBMMzggNDl6Ii8+CjxwYXRoIHN0eWxlPSJmaWxsOiM5MGEzZmE7IHN0cm9rZTpub25lOyIgZD0iTTEwIDUwTDExIDUxTDEwIDUwTTI1IDUwTDI2IDUxTDI1IDUweiIvPgo8cGF0aCBzdHlsZT0iZmlsbDojNzY4ZWY4OyBzdHJva2U6bm9uZTsiIGQ9Ik0zNyA1MEwzOCA1MUwzNyA1MHoiLz4KPHBhdGggc3R5bGU9ImZpbGw6IzkwYTNmYTsgc3Ryb2tlOm5vbmU7IiBkPSJNNzMgNTBMNzQgNTFMNzMgNTB6Ii8+CjxwYXRoIHN0eWxlPSJmaWxsOiNjNGNlZmM7IHN0cm9rZTpub25lOyIgZD0iTTEwIDUxTDExIDUyTDEwIDUxeiIvPgo8cGF0aCBzdHlsZT0iZmlsbDojOTBhM2ZhOyBzdHJva2U6bm9uZTsiIGQ9Ik0yNCA1MUwyNSA1MkwyNCA1MXoiLz4KPHBhdGggc3R5bGU9ImZpbGw6Izc2OGVmODsgc3Ryb2tlOm5vbmU7IiBkPSJNMzYgNTFMMzcgNTJMMzYgNTF6Ii8+CjxwYXRoIHN0eWxlPSJmaWxsOiNjNGNlZmM7IHN0cm9rZTpub25lOyIgZD0iTTczIDUxTDc0IDUyTDczIDUxeiIvPgo8cGF0aCBzdHlsZT0iZmlsbDojOTBhM2ZhOyBzdHJva2U6bm9uZTsiIGQ9Ik0yMyA1MkwyNCA1M0wyMyA1MnoiLz4KPHBhdGggc3R5bGU9ImZpbGw6Izc2OGVmODsgc3Ryb2tlOm5vbmU7IiBkPSJNMzUgNTJMMzYgNTNMMzUgNTJ6Ii8+CjxwYXRoIHN0eWxlPSJmaWxsOiM5MGEzZmE7IHN0cm9rZTpub25lOyIgZD0iTTExIDUzTDEyIDU0TDExIDUzTTIyIDUzTDIzIDU0TDIyIDUzeiIvPgo8cGF0aCBzdHlsZT0iZmlsbDojNzY4ZWY4OyBzdHJva2U6bm9uZTsiIGQ9Ik0zNCA1M0wzNSA1NEwzNCA1M3oiLz4KPHBhdGggc3R5bGU9ImZpbGw6IzkwYTNmYTsgc3Ryb2tlOm5vbmU7IiBkPSJNNzIgNTNMNzMgNTRMNzIgNTNNMjEgNTRMMjIgNTVMMjEgNTR6Ii8+CjxwYXRoIHN0eWxlPSJmaWxsOiM3NjhlZjg7IHN0cm9rZTpub25lOyIgZD0iTTMzIDU0TDM0IDU1TDMzIDU0eiIvPgo8cGF0aCBzdHlsZT0iZmlsbDojYzRjZWZjOyBzdHJva2U6bm9uZTsiIGQ9Ik0xMiA1NUwxMyA1NkwxMiA1NXoiLz4KPHBhdGggc3R5bGU9ImZpbGw6IzkwYTNmYTsgc3Ryb2tlOm5vbmU7IiBkPSJNMjAgNTVMMjEgNTZMMjAgNTV6Ii8+CjxwYXRoIHN0eWxlPSJmaWxsOiM3NjhlZjg7IHN0cm9rZTpub25lOyIgZD0iTTMyIDU1TDMzIDU2TDMyIDU1eiIvPgo8cGF0aCBzdHlsZT0iZmlsbDojOTBhM2ZhOyBzdHJva2U6bm9uZTsiIGQ9Ik03MSA1NUw3MiA1Nkw3MSA1NXoiLz4KPHBhdGggc3R5bGU9ImZpbGw6Izc2OGVmODsgc3Ryb2tlOm5vbmU7IiBkPSJNMTMgNTZMMTQgNTdMMTMgNTZ6Ii8+CjxwYXRoIHN0eWxlPSJmaWxsOiM5MGEzZmE7IHN0cm9rZTpub25lOyIgZD0iTTE5IDU2TDIwIDU3TDE5IDU2eiIvPgo8cGF0aCBzdHlsZT0iZmlsbDojNzY4ZWY4OyBzdHJva2U6bm9uZTsiIGQ9Ik0zMSA1NkwzMiA1N0wzMSA1Nk03MCA1Nkw3MSA1N0w3MCA1NnoiLz4KPHBhdGggc3R5bGU9ImZpbGw6I2M0Y2VmYzsgc3Ryb2tlOm5vbmU7IiBkPSJNMTMgNTdMMTQgNThMMTMgNTd6Ii8+CjxwYXRoIHN0eWxlPSJmaWxsOiM5MGEzZmE7IHN0cm9rZTpub25lOyIgZD0iTTE4IDU3TDE5IDU4TDE4IDU3eiIvPgo8cGF0aCBzdHlsZT0iZmlsbDojNzY4ZWY4OyBzdHJva2U6bm9uZTsiIGQ9Ik0zMCA1N0wzMSA1OEwzMCA1N3oiLz4KPHBhdGggc3R5bGU9ImZpbGw6I2M0Y2VmYzsgc3Ryb2tlOm5vbmU7IiBkPSJNNzAgNTdMNzEgNThMNzAgNTd6Ii8+CjxwYXRoIHN0eWxlPSJmaWxsOiM5MGEzZmE7IHN0cm9rZTpub25lOyIgZD0iTTE0IDU4TDE1IDU5TDE0IDU4TTE3IDU4TDE4IDU5TDE3IDU4eiIvPgo8cGF0aCBzdHlsZT0iZmlsbDojNzY4ZWY4OyBzdHJva2U6bm9uZTsiIGQ9Ik0yOSA1OEwzMCA1OUwyOSA1OHoiLz4KPHBhdGggc3R5bGU9ImZpbGw6IzkwYTNmYTsgc3Ryb2tlOm5vbmU7IiBkPSJNNjkgNThMNzAgNTlMNjkgNTh6Ii8+CjxwYXRoIHN0eWxlPSJmaWxsOiM3NjhlZjg7IHN0cm9rZTpub25lOyIgZD0iTTE1IDU5TDE2IDYwTDE1IDU5eiIvPgo8cGF0aCBzdHlsZT0iZmlsbDojOTBhM2ZhOyBzdHJva2U6bm9uZTsiIGQ9Ik0xNiA1OUwxNyA2MEwxNiA1OXoiLz4KPHBhdGggc3R5bGU9ImZpbGw6Izc2OGVmODsgc3Ryb2tlOm5vbmU7IiBkPSJNMjggNTlMMjkgNjBMMjggNTlNNjggNTlMNjkgNjBMNjggNTlNMjcgNjBMMjggNjFMMjcgNjB6Ii8+CjxwYXRoIHN0eWxlPSJmaWxsOiNjNGNlZmM7IHN0cm9rZTpub25lOyIgZD0iTTY4IDYwTDY5IDYxTDY4IDYweiIvPgo8cGF0aCBzdHlsZT0iZmlsbDojNzY4ZWY4OyBzdHJva2U6bm9uZTsiIGQ9Ik0yNiA2MUwyNyA2MkwyNiA2MXoiLz4KPHBhdGggc3R5bGU9ImZpbGw6I2M0Y2VmYzsgc3Ryb2tlOm5vbmU7IiBkPSJNNjcgNjFMNjggNjJMNjcgNjF6Ii8+CjxwYXRoIHN0eWxlPSJmaWxsOiM3NjhlZjg7IHN0cm9rZTpub25lOyIgZD0iTTI1IDYyTDI2IDYzTDI1IDYyeiIvPgo8cGF0aCBzdHlsZT0iZmlsbDojOTBhM2ZhOyBzdHJva2U6bm9uZTsiIGQ9Ik02NiA2Mkw2NyA2M0w2NiA2MnoiLz4KPHBhdGggc3R5bGU9ImZpbGw6Izc2OGVmODsgc3Ryb2tlOm5vbmU7IiBkPSJNMjQgNjNMMjUgNjRMMjQgNjN6Ii8+CjxwYXRoIHN0eWxlPSJmaWxsOiM5MGEzZmE7IHN0cm9rZTpub25lOyIgZD0iTTY1IDYzTDY2IDY0TDY1IDYzeiIvPgo8cGF0aCBzdHlsZT0iZmlsbDojNzY4ZWY4OyBzdHJva2U6bm9uZTsiIGQ9Ik0yMyA2NEwyNCA2NUwyMyA2NHoiLz4KPHBhdGggc3R5bGU9ImZpbGw6IzkwYTNmYTsgc3Ryb2tlOm5vbmU7IiBkPSJNNjQgNjRMNjUgNjVMNjQgNjR6Ii8+CjxwYXRoIHN0eWxlPSJmaWxsOiM3NjhlZjg7IHN0cm9rZTpub25lOyIgZD0iTTIyLjMzMzMgNjUuNjY2N0wyMi42NjY3IDY2LjMzMzNMMjIuMzMzMyA2NS42NjY3eiIvPgo8cGF0aCBzdHlsZT0iZmlsbDojYzRjZWZjOyBzdHJva2U6bm9uZTsiIGQ9Ik02MyA2NUw2NCA2Nkw2MyA2NU0yMSA2NkwyMiA2N0wyMSA2NnoiLz4KPHBhdGggc3R5bGU9ImZpbGw6Izc2OGVmODsgc3Ryb2tlOm5vbmU7IiBkPSJNNjEgNjZMNjIgNjdMNjEgNjZ6Ii8+CjxwYXRoIHN0eWxlPSJmaWxsOiNjNGNlZmM7IHN0cm9rZTpub25lOyIgZD0iTTYyIDY2TDYzIDY3TDYyIDY2eiIvPgo8cGF0aCBzdHlsZT0iZmlsbDojOTBhM2ZhOyBzdHJva2U6bm9uZTsiIGQ9Ik0yMyA2N0wyNCA2OEwyMyA2N002MCA2N0w2MSA2OEw2MCA2N3oiLz4KPHBhdGggc3R5bGU9ImZpbGw6I2M0Y2VmYzsgc3Ryb2tlOm5vbmU7IiBkPSJNMjQgNjhMMjUgNjlMMjQgNjh6Ii8+CjxwYXRoIHN0eWxlPSJmaWxsOiM3NjhlZjg7IHN0cm9rZTpub25lOyIgZD0iTTI1IDY4TDI2IDY5TDI1IDY4TTU4IDY4TDU5IDY5TDU4IDY4eiIvPgo8cGF0aCBzdHlsZT0iZmlsbDojYzRjZWZjOyBzdHJva2U6bm9uZTsiIGQ9Ik01OSA2OEw2MCA2OUw1OSA2OE0yNiA2OUwyNyA3MEwyNiA2OU01NyA2OUw1OCA3MEw1NyA2OXoiLz4KPHBhdGggc3R5bGU9ImZpbGw6IzkwYTNmYTsgc3Ryb2tlOm5vbmU7IiBkPSJNMjggNzBMMjkgNzFMMjggNzBNNTUgNzBMNTYgNzFMNTUgNzB6Ii8+CjxwYXRoIHN0eWxlPSJmaWxsOiNjNGNlZmM7IHN0cm9rZTpub25lOyIgZD0iTTMwIDcxTDMxIDcyTDMwIDcxeiIvPgo8cGF0aCBzdHlsZT0iZmlsbDojOTBhM2ZhOyBzdHJva2U6bm9uZTsiIGQ9Ik0zMSA3MUwzMiA3MkwzMSA3MXoiLz4KPHBhdGggc3R5bGU9ImZpbGw6Izc2OGVmODsgc3Ryb2tlOm5vbmU7IiBkPSJNMzIgNzFMMzMgNzJMMzIgNzFNNTEgNzFMNTIgNzJMNTEgNzF6Ii8+CjxwYXRoIHN0eWxlPSJmaWxsOiM5MGEzZmE7IHN0cm9rZTpub25lOyIgZD0iTTUyIDcxTDUzIDcyTDUyIDcxeiIvPgo8cGF0aCBzdHlsZT0iZmlsbDojYzRjZWZjOyBzdHJva2U6bm9uZTsiIGQ9Ik01MyA3MUw1NCA3Mkw1MyA3MU0zNCA3MkwzNSA3M0wzNCA3MnoiLz4KPHBhdGggc3R5bGU9ImZpbGw6IzkwYTNmYTsgc3Ryb2tlOm5vbmU7IiBkPSJNMzUuNjY2NyA3Mi4zMzMzTDM2LjMzMzMgNzIuNjY2N0wzNS42NjY3IDcyLjMzMzN6Ii8+CjxwYXRoIHN0eWxlPSJmaWxsOiM3NjhlZjg7IHN0cm9rZTpub25lOyIgZD0iTTM3IDcyTDM4IDczTDM3IDcyeiIvPgo8cGF0aCBzdHlsZT0iZmlsbDojOTBhM2ZhOyBzdHJva2U6bm9uZTsiIGQ9Ik00Ny42NjY3IDcyLjMzMzNMNDguMzMzMyA3Mi42NjY3TDQ3LjY2NjcgNzIuMzMzM3oiLz4KPHBhdGggc3R5bGU9ImZpbGw6I2M0Y2VmYzsgc3Ryb2tlOm5vbmU7IiBkPSJNNDkgNzJMNTAgNzNMNDkgNzJ6Ii8+Cjwvc3ZnPgo=", + "reference": null, + "reference_hash": null, + "decimals": 8 + }, + "cafe.devtest.near": { + "spec": "ft-1.0.0", + "name": "CAFE", + "symbol": "CAFE", + "icon": "data:image/png;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 12 + }, + "tamil.tkn.near": { + "spec": "ft-1.0.0", + "name": "TAMIL CRYPTO", + "symbol": "TAMIL", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "ntrash.tkn.near": { + "spec": "ft-1.0.0", + "name": "NEAR TRASH", + "symbol": "nTRASH", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "utopia.secretskelliessociety.near": { + "spec": "ft-1.0.0", + "name": "Utopia", + "symbol": "UTO", + "icon": "data:image/svg+xml,%3Csvg id='Layer_1' data-name='Layer 1' xmlns='http://www.w3.org/2000/svg' viewBox='-40 -40 600 600'%3E%3Cdefs%3E%3Cstyle%3E .cls-1%7Bfill:%239f9f9f%7D.cls-2%7Bfill:%23fefefe%7D.cls-4%7Bfill:%23030303%7D %3C/style%3E%3C/defs%3E%3Cpath d='M371.65 15v23.92l-.47.71C368.82 41.48 366 41 363.36 41q-36.94.09-73.88 0h-176c-3.06 0-6.31.67-9.1-1.37l-.47-.71V15ZM55.21 355.33H31.66a2.81 2.81 0 0 1-.26-.3.82.82 0 0 1-.13-.37v-24H6.67V136.41h24.6l.69.44c2 2.64 1.38 5.75 1.39 8.67q.07 73.11 0 146.2c0 12.44.26 12.68 12.64 12.76 3 0 6-.29 8.85 1a3 3 0 0 1 1.23 1.1 12.38 12.38 0 0 1 1.18 6.17q.1 18 0 36.05c0 2.09.17 4.28-1.36 6.06ZM420.4 452.82v23.51c-3.87.66-178.64.93-195 .29v-23.8l.47-.71c2.79-2 6-1.37 9.1-1.37q75.33-.09 150.68 0c9.25 0 18.49-.06 27.74 0 2.25 0 4.6-.25 6.54 1.37ZM176.66 428H128v-23.83H79.16v-24.9l.39-.66c1.9-1.69 4.27-1.4 6.51-1.42 10.55-.08 21.09 0 31.63-.05 6.6-.05 7.89-1.5 8.12-8.1.16-4.52-.77-9.14 1.06-13.53a2.94 2.94 0 0 1 1.1-1.14 58.19 58.19 0 0 1 24.44-.12 3 3 0 0 1 1.2 1.07c1.29 2.36 1.19 4.95 1.2 7.5v30.75c.05 6.74 1.61 8.24 8.36 8.37 3.7.08 7.41-.1 11.1.23 2.23.2 3.9 1.14 4.1 3.54a107.23 107.23 0 0 1-.06 20 3.93 3.93 0 0 1-1 1.85c-.2.17-.43.31-.65.44Z'/%3E%3Cpath d='M225.4 452.82h-48.74V428c1.46-1.94 3.61-2 5.74-2.06 6.36-.1 12.72-.14 19.08.09 6.33-.23 12.67-.21 19-.07 1.93 0 4-.19 5.56 1.42 2.71 7.57 1.34 15.33 1 23-.04 1.09-.97 1.72-1.64 2.44ZM31.27 136.41V87.67h23.94l.7.45c1.36 1.51 1.34 3.39 1.35 5.22q.18 18.9 0 37.8a11.41 11.41 0 0 1-1 5 3.12 3.12 0 0 1-1.12 1.24c-7.1 2.15-14.32 1.17-21.51.74-1.03-.12-1.63-1.04-2.36-1.71Z'/%3E%3Cpath d='M55.21 87.67v-24.8h23.95l.69.44a3.53 3.53 0 0 1 1 1.84c.36 7.46 1.36 14.94-.69 22.33A3 3 0 0 1 79 88.65c-7.08 2-14.25 1.13-21.4.67-1.07-.06-1.67-.99-2.39-1.65ZM469.14 404.07V428h-24.8l-.71-.47a5.34 5.34 0 0 1-1.24-3.54q-.37-8.07 0-16.15a7 7 0 0 1 1.61-4.3 8.54 8.54 0 0 1 5.24-1.52c5-.13 10-.14 15 0 1.86.09 3.65.41 4.9 2.05Z'/%3E%3Cpath d='M79.16 62.87V38.92H104c.79.8 1.71 1.56 1.76 2.78.29 7 1.2 14-.69 20.86a3 3 0 0 1-1.13 1.23C96.52 66 89 64.92 81.56 64.53c-1.07-.06-1.68-1-2.4-1.66ZM444.34 428v24.8H420.4c-.67-.72-1.62-1.34-1.66-2.38-.33-7.7-1.67-15.44 1-23 1.15-1.33 2.78-1.33 4.32-1.4 5.11-.22 10.23-.18 15.35 0 1.9.03 3.68.36 4.93 1.98ZM79.16 379.27H55.21v-23.94c.52-.48.95-1.21 1.63-1.34a70.78 70.78 0 0 1 21.55-.16c1.55.19 2.36 1.57 2.5 3.09a109.82 109.82 0 0 1 0 19.53 4.76 4.76 0 0 1-1.73 2.82ZM444.34 111.61h24.8v73.54c-1.36 1.8-3.33 2-5.35 2-5 .13-9.94.18-14.9 0-5.5-.2-6.49-1.05-6.55-6.57-.18-14.62-.28-29.24.06-43.86-.24-6.35-.22-12.7-.12-19.06 0-2-.09-4 1.36-5.63ZM395.59 62.87h24.81v24.8c-.15.23-.3.46-.44.69a3.62 3.62 0 0 1-1.84 1c-7.43.4-14.88 1.3-22.25-.61a3 3 0 0 1-1.2-1.1c-1.72-8.12-2.21-16.24.23-24.32Z'/%3E%3Cpath d='M420.4 87.67h23.94v23.94c-.79.79-1.55 1.71-2.77 1.76-7 .29-14 1.2-20.87-.69a3.11 3.11 0 0 1-1.23-1.13c-2.14-7.1-1.16-14.3-.74-21.49.07-1.06 1-1.67 1.67-2.39ZM371.65 38.92h23.94v23.95c-.79.79-1.55 1.7-2.77 1.75-7 .3-14 1.2-20.87-.68a3.18 3.18 0 0 1-1.23-1.13c-2.13-7.1-1.16-14.31-.73-21.49.06-1.07 1.01-1.67 1.66-2.4Z'/%3E%3Cpath class='cls-1' d='M371.65 38.92v23.95c-.9 1.57-2.44 1.81-4 2-1.85.17-3.7.15-5.55.15q-124.27 0-248.55-.06c-3.25 0-6.93 1.15-9.57-2.05V38.92Z'/%3E%3Cpath class='cls-2' d='M104 62.87h267.65c1.92 1.47 2 3.6 2.07 5.74.1 3.68-.12 7.36.14 11 .28 4.05 1.77 5.54 5.81 5.83 3.53.25 7.07 0 10.6.14 2 .07 4 .3 5.32 2.07 1.93 1.47 2 3.6 2.08 5.74.11 3.53-.09 7.07.15 10.6.23 3.35 2 5.16 5.38 5.38 3.82.24 7.64 0 11.45.15 2.15.06 4.28.15 5.75 2.07 1.92 1.47 2 3.6 2.07 5.75.1 3.67-.12 7.35.13 11 .28 4 1.78 5.54 5.82 5.83 3.53.25 7.07 0 10.6.14 2 .06 4 .29 5.32 2.06v48.74h24.8v72.69c-1.25 1.62-3 2-4.92 2-3 .11-6 .06-9 .08-7.41.08-8.77 1.36-8.79 8.67-.05 14.34 0 28.68 0 43 0 3.27-.09 6.54 0 9.8.21 5.2 1.79 6.74 7.07 6.93 3.4.12 6.81 0 10.22.09 2 .06 4 .29 5.35 2.06v24.8c-1.45 1.93-3.59 2-5.71 2.05-6.32.1-12.64.16-19-.11-8 .24-16 .29-24 0-6.61.26-13.22.21-19.84.11a11 11 0 0 1-4.52-.85 3.53 3.53 0 0 1-1.28-.81c-1.44-2.28-1.36-4.85-1.38-7.4 0-3.11.09-6.23-.06-9.34-.22-4.62-1.65-6.06-6.2-6.29a67.32 67.32 0 0 0-7.65 0c-4.07.28-5.5 1.71-5.74 5.85-.22 3.68 0 7.37-.11 11.05-.06 2.4-.11 4.83-1.82 6.81-4.08 1.73-8.36.85-12.56 1s-8.19.09-12.28-.15c-6.36.26-12.72.22-19.08.12a11 11 0 0 1-4.54-.85 3.47 3.47 0 0 1-1.28-.82c-1.36-2.15-1.35-4.57-1.37-7 0-3.26.09-6.53-.07-9.79-.22-4.59-1.67-6-6.26-6.25-2.4-.12-4.82-.09-7.23 0-5.4.14-6.83 1.53-7 6.83-.11 3.54 0 7.09-.08 10.63-.07 2.27-.19 4.55-1.89 6.36-2.12 1.1-4.43.92-6.69.92q-29.41.09-58.84 0c-2.41 0-4.85.08-7.08-1.09-2.15-1.51-2.23-3.84-2.31-6.12-.14-3.56 0-7.12-.09-10.68-.17-5.33-1.6-6.72-7-6.86-2.13-.06-4.27-.09-6.41 0-4.58.25-6 1.68-6.19 6.35-.18 5.55.05 11.11-.27 16.67.34 6.24.22 12.48.14 18.72a11 11 0 0 1-1 4.55 2.94 2.94 0 0 1-1 1.19c-7.82 2.28-15.77 1.2-23.67.74-2.42-.14-2.95-2.34-3.11-4.45-.3-4 0-8-.22-11.93-.23-5.19-1.87-6.82-7-7-3.12-.14-6.25 0-9.38-.11-2-.07-4-.27-5.36-2.05-1.78-1.35-2-3.28-2.07-5.32-.09-3.82.1-7.65-.12-11.46-.24-4.14-1.67-5.57-5.75-5.83a69.87 69.87 0 0 0-8.92 0c-4.09.26-5.51 1.69-5.75 5.83-.23 3.81 0 7.64-.12 11.46 0 2-.29 4-2.07 5.32-.52.48-1 1.22-1.62 1.35a70.79 70.79 0 0 1-21.6.17c-2.15-.26-2.53-2.44-2.67-4.35-.32-4.26 0-8.53-.23-12.78-.22-5.2-1.85-6.83-7-7-4.26-.17-8.52 0-12.78-.2-3.1-.17-4.62-1.69-4.78-4.79-.22-4 0-8-.21-11.93-.23-5.18-1.86-6.8-7-7-3.12-.14-6.25 0-9.38-.11-2-.07-4-.28-5.36-2.05a5.39 5.39 0 0 1-2-4.1c-.09-1.71-.14-3.41-.14-5.12V145.58c0-3.16-.87-6.66 2.07-9.22 1.37-1.78 3.35-2 5.37-2 3.14-.11 6.27 0 9.4-.11 5.22-.22 6.91-1.8 7-7 .18-10.54 0-21.07.1-31.61 0-2.78-.52-5.79 2.08-7.93 1.47-1.93 3.6-2 5.74-2.08 3.68-.1 7.36.13 11-.13 4-.29 5.54-1.78 5.82-5.83.26-3.66 0-7.34.14-11 .15-2.2.21-4.33 2.21-5.8ZM469.14 404.07h-24.8l-.71-.47a5.84 5.84 0 0 1-1.28-3.92c-.19-5.76-.23-11.51 0-17.26.07-1.4.18-2.84 1.39-3.84 7.57-2.59 15.3-1.31 23-1 1 0 1.66 1 2.37 1.65Z'/%3E%3Cpath class='cls-1' d='M469.14 379.27h-24.8c-1.66-.8-1.87-2.36-1.95-3.92-.26-5.33-.25-10.66 0-16a5.23 5.23 0 0 1 1.95-4h24.8Z'/%3E%3Cpath d='M469.14 330.53h-24.36c-.65-3.68-.88-58.4-.29-72.69h24.65Z'/%3E%3Cpath class='cls-1' d='M55.21 136.41v170.18H31.72a2.76 2.76 0 0 1-.3-.29.64.64 0 0 1-.15-.36V136.41Z'/%3E%3Cpath d='M55.21 306.59H78.7a1.67 1.67 0 0 1 .31.28.73.73 0 0 1 .14.36v23.15h24.21a4.48 4.48 0 0 1 .45.45.8.8 0 0 1 .14.36v24.14h24v23.94H79.16v-23.94H55.21Z' fill='%23a1a1a1'/%3E%3Cpath class='cls-1' d='M420.4 428v24.8h-195V428c.7-1.53 2.11-1.78 3.55-1.94a48.57 48.57 0 0 1 5.12-.17h177.66c2.95.11 6.36-.98 8.67 2.11ZM152.71 355.33h23.49a1.72 1.72 0 0 1 .31.29.7.7 0 0 1 .14.36v23.29h24.8c2 1.24 2 3.31 2 5.26q.24 19.08 0 38.16c0 2-.25 4-2 5.33h-24.8v-23.5a1.7 1.7 0 0 0-.3-.3.62.62 0 0 0-.36-.14h-23.28Z'/%3E%3Cpath class='cls-1' d='M127.91 355.33V331a1.64 1.64 0 0 1 .29-.3.62.62 0 0 1 .36-.14h24.15v24.8Z'/%3E%3Cpath class='cls-2' d='M201.46 428v-48.73c1.48-1.95 3.64-2 5.79-2 6-.09 11.95-.17 17.92.12 7-.27 14-.31 20.93-.08 5.06.17 5.88 1.07 6.13 6.13.21 4-.06 8 .17 12 .27 4.69 1.92 6.25 6.65 6.56 11.72.77 13-.4 13-12.27 0-12.46 0-12.47 12.37-12.48h30.76c2.41 0 4.86-.13 7.15.88a3.53 3.53 0 0 1 1.27.77c2.32 4.12 1.32 8.63 1.39 13 .15 9.66.55 10.16 10.16 10.16h.85c7.68 0 8.7-1 8.75-8.55v-8.54a11.49 11.49 0 0 1 1.24-5.78 3 3 0 0 1 1.23-1 13.24 13.24 0 0 1 5.42-.92c14.31 0 28.63-.21 42.94.11 6.25-.24 12.51-.16 18.76-.12a14.32 14.32 0 0 1 6.23 1.14c1.93 1.13 1.76 3.1 1.84 4.9.2 4 0 7.93.14 11.88.2 5 1.73 6.58 6.68 6.8 3.26.15 6.51 0 9.77.1 2 .07 4 .29 5.33 2.06V428H201.46Z'/%3E%3Cpath class='cls-1' d='M79.16 87.67v48.74H55.21V87.67ZM104 62.87v24.8H79.16v-24.8ZM444.34 136.41H420.4v-24.8h23.94ZM395.59 87.67h-23.94v-24.8h23.94ZM420.4 111.61h-24.81V87.67h24.81Z'/%3E%3Cpath d='M322.9 379.27h-48.27a2.07 2.07 0 0 0-.31.27.68.68 0 0 0-.16.36v24h-23.67c.06.06-.06 0-.14-.14a.7.7 0 0 1-.14-.36v-24.15H225.4c-.46-.52-1.24-.92-1.33-1.59-.92-7.32-1.93-14.66.63-21.89l.7-.46h72.7c4-3.06 20.75-3.06 24.8 0 3.1 4.03 3.1 20.08 0 23.96ZM274.15 257.84H225.4V209.1c1.37-1.8 3.35-2 5.37-2q19-.19 38 0c2 0 4 .24 5.37 2 1.8 1.36 2 3.34 2 5.37q.19 19 0 38c.03 2.03-.14 4.01-1.99 5.37ZM395.59 257.84h-48.74V209.1c1.36-1.8 3.34-2 5.36-2q19-.19 38 0c2 0 4 .24 5.37 2 1.81 1.36 2 3.34 2 5.37q.21 19 0 38c.03 2.03-.18 4.01-1.99 5.37Z'/%3E%3Cpath class='cls-1' d='M395.59 257.84V209.1H420c.64 3.58.85 35.66.29 48.74Z'/%3E%3Cpath d='M444.34 404.07H420.4v-24.8c-3-4-3-19.92 0-23.94h23.94v48.74ZM395.59 379.27h-48.74c-.36-.45 0 .24-.35-.23-2.73-3.92-2.49-20 .35-23.71h24.8c4-3 19.93-3 23.94 0 3.04 4.02 3.04 19.93 0 23.94Z'/%3E%3Cpath class='cls-1' d='M274.15 209.1H225.4v-23.5c3.58-.64 35.65-.85 48.75-.3ZM395.59 209.1h-48.74v-23.5c3.58-.64 35.65-.85 48.74-.3ZM274.15 257.84V209.1h23.5c.64 3.58.85 35.65.3 48.74ZM322.9 355.33h-24.8V331a1.64 1.64 0 0 1 .29-.3.62.62 0 0 1 .36-.14h24.15ZM395.59 355.33h-23.94V331a1.64 1.64 0 0 1 .29-.3.62.62 0 0 1 .36-.14h23.29Z'/%3E%3Cpath d='M201.46 355.33V331a1.64 1.64 0 0 1 .29-.3.62.62 0 0 1 .36-.14h23.29v24.8c-4.01 3-19.93 3-23.94-.03Z'/%3E%3Cpath class='cls-1' d='M127.78 136.53v23.73h-23.64v-23.73ZM346.85 355.33v23.94c-4 3-19.93 3-24 0v-23.94ZM152.83 111.49V87.76h23.64v23.73Z'/%3E%3Cpath d='M322.9 379.27h24v24.35a2.07 2.07 0 0 1-.29.3.67.67 0 0 1-.37.15H322.9Z'/%3E%3Cpath class='cls-1' d='M127.79 136.27V111.7h24.91v24.57ZM201.45 379.25v-23.91h23.94v23.91ZM395.57 379.25v-23.91h24.86v23.91Z'/%3E%3Cpath class='cls-4' d='M469.17 404.08v-73.61h23.92v73.61ZM469.17 257.76v-72.61h23.92v72.61Z'/%3E%3C/svg%3E%0A", + "reference": null, + "reference_hash": null, + "decimals": 8 + }, + "f5cfbc74057c610c8ef151a439252680ac68c6dc.factory.bridge.near": { + "spec": "ft-1.0.0", + "name": "Octopus Network Token", + "symbol": "OCT", + "icon": "data:image/svg+xml,%3Csvg version='1.1' id='O' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 113.39 113.39' style='enable-background:new 0 0 113.39 113.39;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0%7Bfill:%23014299;%7D .st1%7Bfill:%23FFFFFF;%7D %3C/style%3E%3Ccircle class='st0' cx='56.69' cy='56.69' r='56.69'/%3E%3Cg%3E%3Cpath class='st1' d='M44.25,59.41c-1.43,0-2.59,1.16-2.59,2.59v20.28c0,1.43,1.16,2.59,2.59,2.59c1.43,0,2.59-1.16,2.59-2.59V62 C46.84,60.57,45.68,59.41,44.25,59.41z'/%3E%3Cpath class='st1' d='M56.69,59.41c-1.45,0-2.62,1.17-2.62,2.62v26.47c0,1.45,1.17,2.62,2.62,2.62s2.62-1.17,2.62-2.62V62.02 C59.31,60.58,58.14,59.41,56.69,59.41z'/%3E%3Cpath class='st1' d='M79.26,78.87c-0.33,0.15-0.64,0.28-0.95,0.38c0,0-0.01,0-0.01,0c-0.59,0.19-1.13,0.29-1.63,0.31h-0.06 c-1,0.03-1.84-0.27-2.59-0.75c-0.49-0.32-0.91-0.73-1.25-1.23c-0.3-0.43-0.53-0.93-0.71-1.51c0-0.01-0.01-0.02-0.01-0.03 c-0.22-0.74-0.34-1.61-0.34-2.59V62.02c0-1.45-1.17-2.62-2.62-2.62c-1.45,0-2.62,1.17-2.62,2.62v11.43c0,4.5,1.64,8.03,4.63,9.96 c1.5,0.97,3.21,1.45,5.04,1.45c1.68,0,3.45-0.41,5.25-1.22c1.32-0.59,1.9-2.14,1.31-3.46C82.13,78.86,80.57,78.27,79.26,78.87z'/%3E%3Cpath class='st1' d='M68.33,45.9c0-2.15-1.75-3.9-3.9-3.9c-2.15,0-3.9,1.75-3.9,3.9s1.75,3.9,3.9,3.9 C66.58,49.8,68.33,48.05,68.33,45.9z'/%3E%3Cpath class='st1' d='M48.96,41.99c-2.15,0-3.9,1.75-3.9,3.9s1.75,3.9,3.9,3.9s3.9-1.75,3.9-3.9S51.11,41.99,48.96,41.99z'/%3E%3Cpath class='st1' d='M56.69,22.28c-15.17,0-27.52,12.34-27.52,27.52v15.09c0,1.46,1.18,2.64,2.64,2.64s2.64-1.18,2.64-2.64V49.8 c0-12.26,9.98-22.24,22.24-22.24c12.26,0,22.24,9.98,22.24,22.24v15.09c0,1.46,1.18,2.64,2.64,2.64s2.64-1.18,2.64-2.64V49.8 C84.21,34.62,71.87,22.28,56.69,22.28z'/%3E%3C/g%3E%3C/svg%3E", + "reference": "", + "reference_hash": "", + "decimals": 18 + }, + "damn.tkn.near": { + "spec": "ft-1.0.0", + "name": "DAMN", + "symbol": "DAMN", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "frigg.tkn.near": { + "spec": "ft-1.0.0", + "name": "frigg", + "symbol": "frigg", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "ndn.electrik.near": { + "spec": "ft-1.0.0", + "name": "ELECTRIK", + "symbol": "ELECTRIK", + "icon": "data:image/png;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 2 + }, + "d3g3n.tkn.near": { + "spec": "ft-1.0.0", + "name": "DEGENERATE PONZI SCAM SECOND DOG COIN", + "symbol": "D3G3N", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 18 + }, + "far.tkn.near": { + "spec": "ft-1.0.0", + "name": "FAR", + "symbol": "FAR", + "icon": "data:image/jpeg;base64,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", + "reference": null, + "reference_hash": null, + "decimals": 8 + } +} \ No newline at end of file diff --git a/src/chains/polygon/polygon.ts b/src/chains/polygon/polygon.ts new file mode 100644 index 0000000000..c971b79196 --- /dev/null +++ b/src/chains/polygon/polygon.ts @@ -0,0 +1,90 @@ +import abi from '../../services/ethereum.abi.json'; +import { logger } from '../../services/logger'; +import { Contract, Transaction, Wallet } from 'ethers'; +import { EthereumBase } from '../../services/ethereum-base'; +import { getEthereumConfig as getPolygonConfig } from '../ethereum/ethereum.config'; +import { Provider } from '@ethersproject/abstract-provider'; +import { QuickswapConfig } from '../../connectors/quickswap/quickswap.config'; +import { UniswapConfig } from '../../connectors/uniswap/uniswap.config'; +import { Ethereumish } from '../../services/common-interfaces'; +import { ConfigManagerV2 } from '../../services/config-manager-v2'; + +export class Polygon extends EthereumBase implements Ethereumish { + private static _instances: { [name: string]: Polygon }; + private _gasPrice: number; + private _nativeTokenSymbol: string; + private _chain: string; + + private constructor(network: string) { + const config = getPolygonConfig('polygon', network); + super( + 'polygon', + config.network.chainID, + config.network.nodeURL, + config.network.tokenListSource, + config.network.tokenListType, + config.manualGasPrice, + config.gasLimitTransaction, + ConfigManagerV2.getInstance().get('database.nonceDbPath'), + ConfigManagerV2.getInstance().get('database.transactionDbPath') + ); + this._chain = config.network.name; + this._nativeTokenSymbol = config.nativeCurrencySymbol; + this._gasPrice = config.manualGasPrice; + } + + public static getInstance(network: string): Polygon { + if (Polygon._instances === undefined) { + Polygon._instances = {}; + } + if (!(network in Polygon._instances)) { + Polygon._instances[network] = new Polygon(network); + } + + return Polygon._instances[network]; + } + + public static getConnectedInstances(): { [name: string]: Polygon } { + return Polygon._instances; + } + + public get gasPrice(): number { + return this._gasPrice; + } + + public get nativeTokenSymbol(): string { + return this._nativeTokenSymbol; + } + + public get chain(): string { + return this._chain; + } + + getContract(tokenAddress: string, signerOrProvider?: Wallet | Provider) { + return new Contract(tokenAddress, abi.ERC20Abi, signerOrProvider); + } + + getSpender(reqSpender: string): string { + let spender: string; + if (reqSpender === 'uniswap') { + spender = UniswapConfig.config.uniswapV3SmartOrderRouterAddress( + this._chain + ); + } else if (reqSpender === 'uniswapLP') { + spender = UniswapConfig.config.uniswapV3NftManagerAddress(this._chain); + } else if (reqSpender === 'quickswap') { + spender = QuickswapConfig.config.routerAddress(this._chain); + } else { + spender = reqSpender; + } + return spender; + } + + // cancel transaction + async cancelTx(wallet: Wallet, nonce: number): Promise { + logger.info( + 'Canceling any existing transaction(s) with nonce number ' + nonce + '.' + ); + return super.cancelTxWithGasPrice(wallet, nonce, this._gasPrice * 2); + } +} diff --git a/src/chains/polygon/polygon.validators.ts b/src/chains/polygon/polygon.validators.ts new file mode 100644 index 0000000000..cdd6ad9597 --- /dev/null +++ b/src/chains/polygon/polygon.validators.ts @@ -0,0 +1,42 @@ +import { + mkRequestValidator, + mkValidator, + RequestValidator, + Validator, + validateAmount, + validateToken, + validateTokenSymbols, +} from '../../services/validators'; +import { + isAddress, + validateNonce, + validateAddress, +} from '../ethereum/ethereum.validators'; + +export const invalidSpenderError: string = + 'The spender param is not a valid Polygon address (0x followed by 40 hexidecimal characters).'; + +// given a request, look for a key called spender that is 'uniswap', 'sushi' or an Ethereum address +export const validateSpender: Validator = mkValidator( + 'spender', + invalidSpenderError, + (val) => + typeof val === 'string' && + (val === 'uniswap' || + val === 'uniswapLP' || + val === 'sushi' || + val === 'quickswap' || + isAddress(val)) +); + +export const validatePolygonApproveRequest: RequestValidator = + mkRequestValidator([ + validateAddress, + validateSpender, + validateToken, + validateAmount, + validateNonce, + ]); + +export const validatePolygonAllowancesRequest: RequestValidator = + mkRequestValidator([validateAddress, validateSpender, validateTokenSymbols]); diff --git a/src/chains/polygon/polygon_tokens_mainnet.json b/src/chains/polygon/polygon_tokens_mainnet.json new file mode 100644 index 0000000000..bccb614261 --- /dev/null +++ b/src/chains/polygon/polygon_tokens_mainnet.json @@ -0,0 +1,25880 @@ +{ + "name": "Polygon Tokens", + "version": { + "major": 3, + "minor": 0, + "patch": 0 + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/matic.svg", + "keywords": [ + "polygon", + "default", + "tokens" + ], + "tags": { + "stablecoin": { + "name": "Stablecoin", + "description": "Tokens that are fixed to an external asset, e.g. the US dollar" + }, + "swapable": { + "name": "Swapable", + "description": "Tokens are eligible for swaps" + }, + "erc20": { + "name": "erc20", + "description": "Tokens are of ERC20 token type" + }, + "pos": { + "name": "PoS", + "description": "PoS tokens" + }, + "plasma": { + "name": "Plasma", + "description": "Plasma tokens" + }, + "metaTx": { + "name": "MetaTx", + "description": "Tokens are eligible for meta transactions" + }, + "customWithdrawEventSig": { + "name": "Custom Withdraw Event Signature", + "description": "The token has a custom withdraw event signature" + }, + "noDeposit": { + "name": "Deposit Disabled", + "description": "Tokens are not eligible for deposits" + }, + "noWithdraw": { + "name": "Withdraw Disabled", + "description": "Tokens are not eligible for withdraws" + } + }, + "timestamp": "2022-11-29T05:57:13.384Z", + "tokens": [ + { + "chainId": 137, + "name": "Ether - PoS", + "symbol": "ETH", + "decimals": 18, + "address": "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619", + "logoURI": "https://wallet-asset.matic.network/img/tokens/eth.svg", + "tags": [ + "pos", + "erc20", + "swapable", + "metaTx" + ], + "extensions": { + "rootAddress": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee" + } + }, + { + "chainId": 137, + "name": "Ether - Plasma", + "symbol": "ETH", + "decimals": 18, + "address": "0x8cc8538d60901d19692f5ba22684732bc28f54a3", + "logoURI": "https://wallet-asset.matic.network/img/tokens/eth.svg", + "tags": [ + "plasma", + "erc20", + "noDeposit" + ], + "extensions": { + "rootAddress": "0xa45b966996374e9e65ab991c6fe4bfce3a56dde8" + } + }, + { + "chainId": 137, + "name": "Matic Token", + "symbol": "MATIC", + "decimals": 18, + "address": "0x0000000000000000000000000000000000001010", + "logoURI": "https://wallet-asset.matic.network/img/tokens/matic.svg", + "tags": [ + "plasma", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0" + } + }, + { + "chainId": 137, + "name": "Wrapped Matic", + "decimals": 18, + "address": "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270", + "symbol": "WMATIC" + }, + { + "chainId": 137, + "name": "USD Coin", + "symbol": "USDC", + "decimals": 6, + "address": "0x2791bca1f2de4661ed88a30c99a7a9449aa84174", + "logoURI": "https://wallet-asset.matic.network/img/tokens/usdc.svg", + "tags": [ + "pos", + "erc20", + "swapable", + "metaTx", + "stablecoin" + ], + "extensions": { + "rootAddress": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48" + } + }, + { + "chainId": 137, + "name": "Tether USD", + "symbol": "USDT", + "decimals": 6, + "address": "0xc2132d05d31c914a87c6611c10748aeb04b58e8f", + "logoURI": "https://wallet-asset.matic.network/img/tokens/usdt.svg", + "tags": [ + "pos", + "stablecoin", + "erc20", + "swapable", + "metaTx" + ], + "extensions": { + "rootAddress": "0xdac17f958d2ee523a2206206994597c13d831ec7" + } + }, + { + "chainId": 137, + "name": "Dai - PoS", + "symbol": "DAI", + "decimals": 18, + "address": "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", + "logoURI": "https://wallet-asset.matic.network/img/tokens/dai.svg", + "tags": [ + "pos", + "stablecoin", + "erc20", + "swapable", + "metaTx" + ], + "extensions": { + "rootAddress": "0x6b175474e89094c44da98b954eedeac495271d0f" + } + }, + { + "chainId": 137, + "name": "Dai - Plasma", + "symbol": "DAI", + "decimals": 18, + "address": "0x84000b263080bc37d1dd73a29d92794a6cf1564e", + "logoURI": "https://wallet-asset.matic.network/img/tokens/dai.svg", + "tags": [ + "plasma", + "stablecoin", + "erc20", + "noDeposit" + ], + "extensions": { + "rootAddress": "0x6b175474e89094c44da98b954eedeac495271d0f" + } + }, + { + "chainId": 137, + "name": "Aave", + "symbol": "AAVE", + "decimals": 18, + "address": "0xd6df932a45c0f255f85145f286ea0b292b21c90b", + "logoURI": "https://wallet-asset.matic.network/img/tokens/aave.svg", + "tags": [ + "pos", + "erc20", + "swapable", + "metaTx" + ], + "extensions": { + "rootAddress": "0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9" + } + }, + { + "chainId": 137, + "name": "ChainLink Token", + "symbol": "LINK", + "decimals": 18, + "address": "0x53e0bca35ec356bd5dddfebbd1fc0fd03fabad39", + "logoURI": "https://wallet-asset.matic.network/img/tokens/link.svg", + "tags": [ + "pos", + "erc20", + "swapable", + "metaTx" + ], + "extensions": { + "rootAddress": "0x514910771AF9Ca656af840dff83E8264EcF986CA" + } + }, + { + "chainId": 137, + "name": "Wrapped BTC", + "symbol": "WBTC", + "decimals": 8, + "address": "0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6", + "logoURI": "https://wallet-asset.matic.network/img/tokens/wbtc.svg", + "tags": [ + "pos", + "erc20", + "swapable", + "metaTx" + ], + "extensions": { + "rootAddress": "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599" + } + }, + { + "chainId": 137, + "name": "Uniswap", + "symbol": "UNI", + "decimals": 18, + "address": "0xb33eaad8d922b1083446dc23f610c2567fb5180f", + "logoURI": "https://wallet-asset.matic.network/img/tokens/uni.svg", + "tags": [ + "pos", + "erc20", + "swapable", + "metaTx" + ], + "extensions": { + "rootAddress": "0x1f9840a85d5af5bf1d1762f925bdaddc4201f984" + } + }, + { + "chainId": 137, + "name": "SushiToken", + "symbol": "SUSHI", + "decimals": 18, + "address": "0x0b3f868e0be5597d5db7feb59e1cadbb0fdda50a", + "logoURI": "https://wallet-asset.matic.network/img/tokens/sushi.svg", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x6b3595068778dd592e39a122f4f5a5cf09c90fe2" + } + }, + { + "chainId": 137, + "name": "Quickswap", + "symbol": "QUICK", + "decimals": 18, + "address": "0x831753dd7087cac61ab5644b308642cc1c33dc13", + "logoURI": "https://wallet-asset.matic.network/img/tokens/quick.svg", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x6c28AeF8977c9B773996d0e8376d2EE379446F2f" + } + }, + { + "chainId": 137, + "name": "QuickSwap - new", + "symbol": "QUICK", + "decimals": 18, + "address": "0xB5C064F955D8e7F38fE0460C556a72987494eE17", + "logoURI": "https://wallet-asset.matic.network/img/tokens/quick.svg", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xd2bA23dE8a19316A638dc1e7a9ADdA1d74233368" + } + }, + { + "chainId": 137, + "name": "Aavegotchi GHST Token", + "symbol": "GHST", + "decimals": 18, + "address": "0x385eeac5cb85a38a9a07a70c73e0a3271cfb54a7", + "logoURI": "https://polygonscan.com/token/images/aavegotchighst_32.png", + "tags": [ + "pos", + "erc20", + "swapable", + "metaTx" + ], + "extensions": { + "rootAddress": "0x3F382DbD960E3a9bbCeaE22651E88158d2791550" + } + }, + { + "chainId": 137, + "name": "Telcoin", + "symbol": "TEL", + "decimals": 2, + "address": "0xdf7837de1f2fa4631d716cf2502f8b230f1dcc32", + "logoURI": "https://wallet-asset.matic.network/img/tokens/tel.svg", + "tags": [ + "pos", + "erc20", + "swapable", + "metaTx" + ], + "extensions": { + "rootAddress": "0x467bccd9d29f223bce8043b84e8c8b282827790f" + } + }, + { + "chainId": 137, + "name": "Balancer", + "symbol": "BAL", + "decimals": 18, + "address": "0x9a71012b13ca4d3d0cdc72a177df3ef03b0e76a3", + "logoURI": "https://wallet-asset.matic.network/img/tokens/bal.svg", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xba100000625a3754423978a60c9317c58a424e3d" + } + }, + { + "chainId": 137, + "name": "EthermonToken", + "symbol": "EMON", + "decimals": 18, + "address": "0xd6a5ab46ead26f49b03bbb1f9eb1ad5c1767974a", + "logoURI": "https://polygonscan.com/token/images/ethermontoken2_32.png", + "tags": [ + "pos", + "erc20", + "swapable", + "metaTx" + ], + "extensions": { + "rootAddress": "0xd6a5ab46ead26f49b03bbb1f9eb1ad5c1767974a" + } + }, + { + "chainId": 137, + "name": "Furucombo", + "symbol": "COMBO", + "decimals": 18, + "address": "0x6ddb31002abc64e1479fc439692f7ea061e78165", + "logoURI": "https://polygonscan.com/token/images/furucombo_32.png", + "tags": [ + "pos", + "erc20", + "swapable", + "metaTx" + ], + "extensions": { + "rootAddress": "0xffffffff2ba8f66d4e51811c5190992176930278" + } + }, + { + "chainId": 137, + "name": "Binance USD", + "symbol": "BUSD", + "decimals": 18, + "address": "0xdab529f40e671a1d4bf91361c21bf9f0c9712ab7", + "logoURI": "https://wallet-asset.matic.network/img/tokens/busd.svg", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x4fabb145d64652a948d72533023f6e7a623c7c53" + } + }, + { + "chainId": 137, + "name": "Mintopoly Money", + "symbol": "MM", + "decimals": 8, + "address": "0xf6a09deadf5a10aa7822d95e3228b2315de8f6fa", + "logoURI": "https://etherscan.io/token/images/mintopolymoney_32.png", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xf6a09deadf5a10aa7822d95e3228b2315de8f6fa" + } + }, + { + "chainId": 137, + "name": "Revv", + "symbol": "REVV", + "decimals": 18, + "address": "0x70c006878a5a50ed185ac4c87d837633923de296", + "logoURI": "https://etherscan.io/token/images/revv_32.png", + "tags": [ + "pos", + "erc20", + "customWithdrawEventSig", + "swapable" + ], + "extensions": { + "rootAddress": "0x557b933a7c2c45672b610f8954a3deb39a51a8ca", + "withdrawEventSig": "0x7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5" + } + }, + { + "chainId": 137, + "name": "Decentral Games ICE", + "symbol": "ICE", + "decimals": 18, + "address": "0xc6C855AD634dCDAd23e64DA71Ba85b8C51E5aD7c", + "logoURI": "https://wallet-asset.matic.network/img/tokens/ice.svg", + "tags": [ + "pos", + "erc20", + "noDeposit", + "noWithdraw", + "swapable" + ], + "extensions": { + "rootAddress": "0x0000000000000000000000000000000000000000" + } + }, + { + "chainId": 137, + "name": "GAME Credits", + "symbol": "GAME", + "decimals": 18, + "address": "0x8d1566569d5b695d44a9a234540f68D393cDC40D", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "logoURI": "https://svgshare.com/i/fJw.svg", + "extensions": { + "rootAddress": "0x63f88A2298a5c4AEE3c216Aa6D926B184a4b2437" + } + }, + { + "chainId": 137, + "name": "CoinPoker Chips", + "symbol": "CHP", + "decimals": 18, + "address": "0x59B5654a17Ac44F3068b3882F298881433bB07Ef", + "logoURI": "https://coinpoker.com/assets/img/logox2.png", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x0a6E18fB2842855C3AF925310B0F50a4BfA17909" + } + }, + { + "chainId": 137, + "name": "Dreamr Platform Token", + "symbol": "DMR", + "decimals": 18, + "address": "0x955ce23f20217a6aa205620b40ede4c9e83d325f", + "logoURI": "https://gateway.pinata.cloud/ipfs/QmepiCxpZqks5sjB6r55gErgCXqhGdCsbXYpuauG5yxCyB", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xf74941046389c78f12fe44784c0ec9ca7ceb7dc2" + } + }, + { + "chainId": 137, + "name": "Yup", + "symbol": "YUP", + "decimals": 18, + "address": "0x086373fad3447F7F86252fb59d56107e9E0FaaFa", + "logoURI": "https://i.imgur.com/QC2UG1G.png", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x69bbc3f8787d573f1bbdd0a5f40c7ba0aee9bcc9" + } + }, + { + "chainId": 137, + "name": "Paint", + "symbol": "PAINT", + "decimals": 18, + "address": "0x7c28F627eA3aEc8B882b51eb1935f66e5b875714", + "logoURI": "https://gateway.pinata.cloud/ipfs/QmSqt6RAgNYWq3kJRhEoLquY2xcZ7QXAJGovaeaxmZYCVJ", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x4C6eC08CF3fc987c6C4BEB03184D335A2dFc4042" + } + }, + { + "chainId": 137, + "name": "Swash Token", + "symbol": "SWASH", + "decimals": 18, + "address": "0xbA3CB8329D442E6F9Eb70fafe1E214251df3D275", + "logoURI": "https://github.com/swashapp/token/blob/main/logo/Logo.png", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xA130E3a33a4d84b04c3918c4E5762223Ae252F80" + } + }, + { + "chainId": 137, + "name": "Angel", + "symbol": "ANGEL", + "decimals": 18, + "address": "0xa78da5d9f0c488c51b9712434f0498cbb7bff23d", + "logoURI": "https://i.imgur.com/I8S1GPZ.png", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x14d86EaeB7F669a6b84D51E1ac14b3F2723fA08D" + } + }, + { + "chainId": 137, + "name": "ExSports", + "symbol": "EXS", + "decimals": 18, + "address": "0x11928CFCbC0398b9206C6D57ff7D8201555D6773", + "logoURI": "https://img.ex-sports.io/imgs/icons/exs.png", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x7331355e2DaD3b55f9ce0fd460D082558952099e" + } + }, + { + "chainId": 137, + "name": "Royale (PoS)", + "symbol": "ROYA", + "decimals": 18, + "address": "0x0bD820aD2d7Ab7305b5C9538ba824C9b9bEb0561", + "logoURI": "https://assets.coingecko.com/coins/images/13602/small/roya.png?1636031771", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x7eaf9c89037e4814dc0d9952ac7f888c784548db" + } + }, + { + "chainId": 137, + "name": "PRUF", + "symbol": "PRUF", + "decimals": 18, + "address": "0xAdf72D32E511eE00c6E0FF5D62Cd5C7C40A6aDEA", + "logoURI": "https://pruf.io/assets/images/prufcircle-1200x1200.png", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xa49811140e1d6f653dec28037be0924c811c4538" + } + }, + { + "chainId": 137, + "name": "Arch Ethereum Web3", + "symbol": "WEB3", + "decimals": 18, + "address": "0xBcD2C5C78000504EFBC1cE6489dfcaC71835406A", + "logoURI": "https://arch-finance-basket-logos.s3.amazonaws.com/ETHWEB3.png", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xe8e8486228753E01Dbc222dA262Aa706Bd67e601" + } + }, + { + "chainId": 137, + "name": "Unlock Discount Token", + "symbol": "UDT", + "decimals": 18, + "address": "0xf7e78d9c4c74df889a83c8c8d6d05bf70ff75876", + "logoURI": "https://github.com/unlock-protocol/unlock/blob/master/design/brand/1808-Unlock-Identity_Unlock-LogoMark-Circle.svg", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x90de74265a416e1393a450752175aed98fe11517" + } + }, + { + "chainId": 137, + "name": "Altafin", + "symbol": "AFN", + "decimals": 18, + "address": "0xB4A055786EE8B9c9a09156bb185EBA7B91540eE5", + "logoURI": "https://images.ctfassets.net/dj2ij87ekk1y/6QLADorHyGFcr804X0spbG/a11f3a582c9f6b40bc7b010d481c9242/AltaFin-Logo-Square-700x.png", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xE46F290Cd59195a83e757891430d8D517d16b334" + } + }, + { + "chainId": 137, + "name": "UCT Cash", + "symbol": "UCTC", + "decimals": 18, + "address": "0xD4b42287F1EE04aF246aD792153C39D62733f826", + "logoURI": "https://www.uct-token.org/wp-content/uploads/2021/06/UCT-token-transp-500-500.png", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x2707ab358B5383D087FE4736Da36c1C70179e3BD" + } + }, + { + "chainId": 137, + "name": "UCT Token", + "symbol": "UCT", + "decimals": 18, + "address": "0xfd5962484BE2c3574D70131BF5D452CcC7C69F67", + "logoURI": "https://www.uct-token.org/wp-content/uploads/2021/06/UCT-token-transp-500-500.png", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xCC7dCc3F649Cb3932857d4edC6268e0eF4960995" + } + }, + { + "chainId": 137, + "name": "IQ", + "symbol": "IQ", + "decimals": 18, + "address": "0xB9638272aD6998708de56BBC0A290a1dE534a578", + "logoURI": "https://www.dropbox.com/sh/g97lq77b9mv9lfz/AABRnKWx9aiv6x8KShkIgDgla/Brain%20Logo%20Design-03.png?dl=0", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x579CEa1889991f68aCc35Ff5c3dd0621fF29b0C9" + } + }, + { + "chainId": 137, + "name": "Polytrade (PoS)", + "symbol": "TRADE", + "decimals": 18, + "address": "0x692AC1e363ae34b6B489148152b12e2785a3d8d6", + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/10465.png", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x6e5970dbd6fc7eb1f29c6d2edf2bc4c36124c0c1" + } + }, + { + "chainId": 137, + "name": "Fleato coin", + "symbol": "FLEATO", + "decimals": 18, + "address": "0x6804b07d883d0169c05233332ccf17aa956424c5", + "logoURI": "https://www.fleato.com/images/flea120.png", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xAF4dE4076095A20A37E4E885B255C58f9917366e" + } + }, + { + "chainId": 137, + "name": "Efinity Token", + "symbol": "EFI", + "decimals": 18, + "address": "0x891254dbb6112cf938d16c1880540b8469df6c0e", + "logoURI": "https://cdn.efinity.io/static/logo.svg", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x656c00e1bcd96f256f224ad9112ff426ef053733" + } + }, + { + "chainId": 137, + "name": "Pillar", + "symbol": "PLR", + "decimals": 18, + "address": "0xa6b37fC85d870711C56FbcB8afe2f8dB049AE774", + "logoURI": "https://etherscan.io/token/images/pillar_32.png", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xe3818504c1B32bF1557b16C238B2E01Fd3149C17" + } + }, + { + "chainId": 137, + "name": "Equalizer", + "symbol": "EQZ", + "decimals": 18, + "address": "0xEAf631ac57F3CDDDd261770dD47F85066131a156", + "logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0x1Da87b114f35E1DC91F72bF57fc07A768Ad40Bb0/logo.png", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x1Da87b114f35E1DC91F72bF57fc07A768Ad40Bb0" + } + }, + { + "chainId": 137, + "name": "GoBlank Token", + "symbol": "BLANK", + "decimals": 18, + "address": "0xf4C83080E80AE530d6f8180572cBbf1Ac9D5d435", + "logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0x41A3Dba3D677E573636BA691a70ff2D606c29666/logo.png", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x41A3Dba3D677E573636BA691a70ff2D606c29666" + } + }, + { + "chainId": 137, + "name": "Cryptopia Token", + "symbol": "CRT", + "decimals": 18, + "address": "0x7348565F0A5077252D310392C3CeCD8dB87a7704", + "logoURI": "https://cryptopia.com/images/icons/icon_CRT.png", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xABdD22dFE5Db2be20262050523470B650E91F246" + } + }, + { + "chainId": 137, + "name": "BTU Protocol", + "symbol": "BTU", + "decimals": 18, + "address": "0xfdc26cda2d2440d0e83cd1dee8e8be48405806dc", + "logoURI": "https://btu-protocol.com/images/log-BTU-256w.png", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xb683D83a532e2Cb7DFa5275eED3698436371cc9f" + } + }, + { + "chainId": 137, + "name": "Trips", + "symbol": "TRIPS", + "decimals": 18, + "address": "0x77F0F7d657f362C4b703417B800B83B989a288a2", + "logoURI": "https://gateway.pinata.cloud/ipfs/QmVxZCAvxab8bUhaScwqw6NWABmqz4jmjJ3qnYUbdKweEf/trips_T_logo256x256.png", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x1350fbe8ce27762ec19134bf8fc405a427fe9bf1" + } + }, + { + "chainId": 137, + "name": "0xMonero", + "symbol": "0xMR", + "decimals": 18, + "address": "0x52ede6bba83b7b4ba1d738df0df713d6a2036b71", + "logoURI": "https://avatars.githubusercontent.com/u/65775032?v=4", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x035df12e0f3ac6671126525f1015e47d79dfeddf" + } + }, + { + "chainId": 137, + "name": "Ispolink", + "symbol": "ISP", + "decimals": 18, + "address": "0x1e289178612f5b6d32f692e312dcf783c74b2162", + "logoURI": "https://raw.githubusercontent.com/mikyjo/crypto_assets/main/tokens/ispolink/ispolink_icon_white_400x400.jpg", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xc8807f0f5ba3fa45ffbdc66928d71c5289249014" + } + }, + { + "chainId": 137, + "name": "Gistcoin", + "symbol": "GIST", + "decimals": 18, + "address": "0xF6db73D0495Fe4648d494046cCbdc5625F2740F0", + "logoURI": "https://etherscan.io/token/images/gistcoin_32.png", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x6cd775540cce9adb01872db9f794142f53595c71" + } + }, + { + "chainId": 137, + "name": "Orbs Token", + "symbol": "ORBS", + "decimals": 18, + "address": "0x614389EaAE0A6821DC49062D56BDA3d9d45Fa2ff", + "logoURI": "https://raw.githubusercontent.com/orbs-network/graphical-assets/main/orbs/ethereum/token/logo256.png", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xff56Cc6b1E6dEd347aA0B7676C85AB0B3D08B0FA" + } + }, + { + "chainId": 137, + "name": "InsurAce", + "symbol": "INSUR", + "decimals": 18, + "address": "0x8a0e8b4b0903929f47C3ea30973940D4a9702067", + "logoURI": "https://app.insurace.io/asset/token/insur.png", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x544c42fBB96B39B21DF61cf322b5EDC285EE7429" + } + }, + { + "chainId": 137, + "name": "MASQ", + "symbol": "MASQ", + "decimals": 18, + "address": "0xee9a352f6aac4af1a5b9f467f6a93e0ffbe9dd35", + "logoURI": "https://github.com/MASQ-Project/MASQ-contract/raw/master/MASQ%20Logo%20Blue%20Solo%20Transparent.png", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x06F3C323f0238c72BF35011071f2b5B7F43A054c" + } + }, + { + "chainId": 137, + "name": "Voltage", + "symbol": "VOLT", + "decimals": 18, + "address": "0xe8a05e85883f9663b18a38d7aa89853deaba56e3", + "logoURI": "https://assets.coingecko.com/coins/images/18515/small/volt.png?1632219924", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xffbf315f70e458e49229654dea4ce192d26f9b25" + } + }, + { + "chainId": 137, + "name": "Pinjour", + "symbol": "PIN", + "decimals": 18, + "address": "0x1d5278cbd93ff50260fddc93282e2e67ca3317c9", + "logoURI": "https://d26jz7p3kula4l.cloudfront.net/static/img/pinjour-192x192.png", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x76c9a9583bda3ac6440fc153c7ffd89f99823a2c" + } + }, + { + "chainId": 137, + "name": "Candle", + "symbol": "CNDL", + "decimals": 18, + "address": "0x5423063af146F5abF88Eb490486E6B53FA135eC9", + "logoURI": "https://i.ibb.co/86yLQRZ/candlelogo.png", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xbc138bD20C98186CC0342C8e380953aF0cb48BA8" + } + }, + { + "chainId": 137, + "name": "Tower Token", + "symbol": "TOWER", + "decimals": 18, + "address": "0x2bC07124D8dAc638E290f401046Ad584546BC47b", + "logoURI": "https://crazydefenseheroes.com/static/media/logo-tower.2bca4bdd.svg", + "tags": [ + "pos", + "erc20", + "customWithdrawEventSig", + "swapable" + ], + "extensions": { + "rootAddress": "0x1C9922314ED1415c95b9FD453c3818fd41867d0B", + "withdrawEventSig": "0x7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5" + } + }, + { + "chainId": 137, + "name": "Meeds", + "symbol": "MEED", + "decimals": 18, + "address": "0x6aca77cf3bab0c4e8210a09b57b07854a995289a", + "logoURI": "https://github.com/Meeds-io/.github/raw/main/profile/meeds-256x256.png", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x8503a7b00b4b52692cc6c14e5b96f142e30547b7" + } + }, + { + "chainId": 137, + "name": "inSure DeFi", + "symbol": "SURE", + "decimals": 18, + "address": "0xF88332547c680F755481Bf489D890426248BB275", + "logoURI": "https://insuretoken.net/images/logo-grey-circle.png", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xcb86c6a22cb56b6cf40cafedb06ba0df188a416e" + } + }, + { + "chainId": 137, + "name": "Beverage Token", + "symbol": "DRINK", + "decimals": 18, + "address": "0x366a39a2f73de32df17cc9bdd027aa054f6ba9cb", + "logoURI": "https://raw.githubusercontent.com/Beverage-Finance/beverage-docs/main/assets/beverage-token-logos/beverage-200X200.png", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x9257fb8fab616867cEe67C3289547403617B1938" + } + }, + { + "chainId": 137, + "name": "Wrapped CHI", + "symbol": "WCHI", + "decimals": 8, + "address": "0xE79feAAA457ad7899357E8E2065a3267aC9eE601", + "logoURI": "https://arweave.net/cLtOpcOcgshTnA3aWe8a1lKRG0baZHfWGsi1mq5Cgt4", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x6DC02164d75651758aC74435806093E421b64605" + } + }, + { + "chainId": 137, + "name": "Indorse", + "symbol": "IND", + "decimals": 18, + "address": "0x9611452965b63cFeA2C9774e5386AB6D4F0abf16", + "logoURI": "https://drive.google.com/file/d/1Wbw4t_hibR5zMBdrLysvhfJvSIe34q9N/view?usp=sharing", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xf8e386EDa857484f5a12e4B5DAa9984E06E73705" + } + }, + { + "chainId": 137, + "name": "Germoney", + "symbol": "GER", + "decimals": 2, + "address": "0x03a68f78107d102d26353e5476733b067950bab6", + "logoURI": "https://www.germoney.cash/static/media/logo.7c3abfc4.png", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x844Af22fBEC4D1bb9C062F33D29e4Ad8d0EFc01D" + } + }, + { + "chainId": 137, + "name": "ScaleSwapToken", + "symbol": "SCA", + "decimals": 18, + "address": "0x11a819Beb0AA3327E39f52F90d65Cc9bCA499F33", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x1FbD3dF007eB8A7477A1Eab2c63483dCc24EfFD6" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/sca.svg" + }, + { + "chainId": 137, + "name": "Megaverse", + "symbol": "MEGA", + "decimals": 18, + "address": "0xD87958D9Cc146aBe382Ee20D1EF278321E61ADe9", + "logoURI": "https://i.imgur.com/1pDWnjT.jpeg", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xCF9b27399447f92462Dad69491edbA304a063591" + } + }, + { + "chainId": 137, + "name": "RocketX", + "symbol": "RVF", + "decimals": 18, + "address": "0x2ce13e4199443fdfff531abb30c9b6594446bbc7", + "logoURI": "https://drive.google.com/file/d/106QzWJ-42p2FVsgZQ4pVCw_cTTAudU39/view?usp=sharing", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xdc8af07a7861bedd104b8093ae3e9376fc8596d2" + } + }, + { + "chainId": 137, + "name": "Forest Knight", + "symbol": "KNIGHT", + "decimals": 18, + "address": "0x4455eF8B4B4A007a93DaA12DE63a47EEAC700D9D", + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/11324.png", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x4455eF8B4B4A007a93DaA12DE63a47EEAC700D9D" + } + }, + { + "chainId": 137, + "name": "Lepasa", + "symbol": "LEPA", + "decimals": 18, + "address": "0xF9a4BBAa7fA1DD2352F1A47d6d3fcfF259A6D05F", + "logoURI": "https://www.lepasa.com/assets/img/logo_256.png", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xbBa6C7c7d673c48d90069ad2e9d2fE587fcB6bc3" + } + }, + { + "chainId": 137, + "name": "Civilization", + "symbol": "CIV", + "decimals": 18, + "address": "0x42F6bdCfd82547e89F1069Bf375aa60e6c6c063d", + "logoURI": "https://app.civfund.org/CIV_logo_txt_192x192.png", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x37fE0f067FA808fFBDd12891C0858532CFE7361d" + } + }, + { + "chainId": 137, + "name": "Move", + "symbol": "MOVE", + "decimals": 18, + "address": "0x521CddC0CBa84F14c69C1E99249F781AA73Ee0BC", + "logoURI": "https://assets.coingecko.com/coins/images/13719/small/o0KIvs7T_400x400.jpg?1617672818", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x3fa729b4548becbad4eab6ef18413470e6d5324c" + } + }, + { + "chainId": 137, + "name": "Stacker Ventures Token", + "symbol": "STACK", + "decimals": 18, + "address": "0xccBe9B810d6574701d324fD6DbE0A1b68f9d5bf7", + "logoURI": "https://assets.coingecko.com/coins/images/14218/small/stack.jpg?1615000614", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xe0955f26515d22e347b17669993fcefcc73c3a0a" + } + }, + { + "chainId": 137, + "name": "TRAXX", + "symbol": "TRAXX", + "decimals": 18, + "address": "0xd43be54c1aedf7ee4099104f2dae4ea88b18a249", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xd43be54c1aedf7ee4099104f2dae4ea88b18a249" + } + }, + { + "chainId": 137, + "name": "NOIIRE COIN", + "symbol": "NOIIRE", + "decimals": 18, + "address": "0x92a33f4017eca323f00424a36b3c52598035fc16", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xee93b9479e2fdd9bf58d7c11474ad347f5b1eb09" + } + }, + { + "chainId": 137, + "name": "VAIOT Token", + "symbol": "VAI", + "decimals": 18, + "address": "0x51738017dc69f23deb5db8de97685cf3b7001e79", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x51738017dc69f23deb5db8de97685cf3b7001e79" + } + }, + { + "chainId": 137, + "name": "AdBank", + "symbol": "ADB", + "decimals": 18, + "address": "0xb92d60d0ecbef38dee6a125181825567fccd9dc7", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x2baac9330cf9ac479d819195794d79ad0c7616e3" + } + }, + { + "chainId": 137, + "name": "SatoMotive Token", + "symbol": "SV2X", + "decimals": 18, + "address": "0x9b9026901999e612bc396bb285e8fbe3dcc7b78e", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x37810173b70e86b8435f8c28590e8faceff59044" + } + }, + { + "chainId": 137, + "name": "Sprocket", + "symbol": "SPROCKET", + "decimals": 18, + "address": "0x0d98eae620491d8f6836a39ac45e54b286fdd2d7", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xa9364d93a4a6d8dc51781236ded2dc4325b668b8" + } + }, + { + "chainId": 137, + "name": "UniCandy", + "symbol": "UCD", + "decimals": 18, + "address": "0x546c825f0109353ab4315139e82674f0d86e39d8", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xb1db366890eeb8f28c2813c6a6084353e0b90713" + } + }, + { + "chainId": 137, + "name": "CLIK", + "symbol": "CLIK", + "decimals": 18, + "address": "0x76b0ef26d41d55201a7d8c3437c21caef9857149", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xf273e3bc6acdf27c01b8b1c35d39c33b067153dd" + } + }, + { + "chainId": 137, + "name": "Lockable", + "symbol": "LC", + "decimals": 18, + "address": "0x41a7e62e231bad6026b82952c78fab6e61d96958", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x41a7e62e231bad6026b82952c78fab6e61d96958" + } + }, + { + "chainId": 137, + "name": "Forta", + "symbol": "FORT", + "decimals": 18, + "address": "0x9ff62d1fc52a907b6dcba8077c2ddca6e6a9d3e1", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x41545f8b9472d758bb669ed8eaeeecd7a9c4ec29" + } + }, + { + "chainId": 137, + "name": "MetaMEMO", + "symbol": "MEMO", + "decimals": 18, + "address": "0x2710ed3f5d44268dcb89f549050718aa237c8a47", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xeb8eec5a2dbf6e6f4cc542ad31cce706f8f80419" + } + }, + { + "chainId": 137, + "name": "InventoryClub Token", + "symbol": "VNT", + "decimals": 18, + "address": "0x2c63b97ec0976e76098371f4300e7fe89f087a02", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xe912b8ba2513d7e29b7b2e5b14398dbf77503fb4" + } + }, + { + "chainId": 137, + "name": "Kevin", + "symbol": "KEVIN", + "decimals": 9, + "address": "0x9720d05952cd56893fc5982aaec4508d46a589cb", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xc9f1b23074849d5d6de462af57dae5d3309a1ecc" + } + }, + { + "chainId": 137, + "name": "Hedron", + "symbol": "HDRN", + "decimals": 9, + "address": "0x0a436cfe3190c141c5e910fc217e3b27d44042f3", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x3819f64f282bf135d62168c1e513280daf905e06" + } + }, + { + "chainId": 137, + "name": "CERE Network", + "symbol": "CERE", + "decimals": 10, + "address": "0x2da719db753dfa10a62e140f436e1d67f2ddb0d6", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x2da719db753dfa10a62e140f436e1d67f2ddb0d6" + } + }, + { + "chainId": 137, + "name": "InnovaMinex", + "symbol": "MINX", + "decimals": 6, + "address": "0x4bf6daa0f3b2f8b338836b29f17b9e7ff0e68b53", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xae353daeed8dcc7a9a12027f7e070c0a50b7b6a4" + } + }, + { + "chainId": 137, + "name": "THUG", + "symbol": "THUG", + "decimals": 18, + "address": "0xb22ecdfe16bef29ce48a63cde0add3e8b536d122", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xb22ecdfe16bef29ce48a63cde0add3e8b536d122" + } + }, + { + "chainId": 137, + "name": "Coorest", + "symbol": "CRST", + "decimals": 18, + "address": "0x91f0484f9b65dc5187e414dae5ed37ea7a4b8af4", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x776aaca47ee579ff63f6c00a921377eb21359e59" + } + }, + { + "chainId": 137, + "name": "OMI Token", + "symbol": "OMI", + "decimals": 18, + "address": "0x9cd42aed7d44ee801c827a8e5dcf41df534e9e82", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xed35af169af46a02ee13b9d79eb57d6d68c1749e" + } + }, + { + "chainId": 137, + "name": "Minato", + "symbol": "MNTO", + "decimals": 18, + "address": "0x4c9f66b2806538cf00ef596e09fb05bcb0d17dc8", + "logoURI": "https://minatodao.com/wp-content/uploads/2022/03/pcs-96x96.svg", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x97a9bac06f90940bce9caec2b880ff17707519e4" + } + }, + { + "chainId": 137, + "name": "Lucky Races Sliver", + "symbol": "$SLIVER", + "decimals": 18, + "address": "0xa95b410743e8c2f7b64f1373d3ca2b3454864a94", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xf5112170ec586385333fbfa15e4a7a4aa9f82cfc" + } + }, + { + "chainId": 137, + "name": "$ZKP Token", + "symbol": "$ZKP", + "decimals": 18, + "address": "0x9a06db14d639796b25a6cec6a1bf614fd98815ec", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x909e34d3f6124c324ac83dcca84b74398a6fa173" + } + }, + { + "chainId": 137, + "name": "Banana", + "symbol": "BANANA", + "decimals": 18, + "address": "0xbc91347e80886453f3f8bbd6d7ac07c122d87735", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x94e496474f1725f1c1824cb5bdb92d7691a4f03a" + } + }, + { + "chainId": 137, + "name": "MetaBillionaireUtilityCoin", + "symbol": "MBUC", + "decimals": 18, + "address": "0xecd3c4f21dceebc8f308af7c3a7f1a4265bb52e9", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xecaf45a19565fff9d058257b326e52a253343f78" + } + }, + { + "chainId": 137, + "name": "Akiverse Governance", + "symbol": "AKV", + "decimals": 18, + "address": "0xf0af7795765273aebfd8a908460b728bdc3fc937", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x08c38d80b45e4c1e3a6bece6b49312e5fc30b0fb" + } + }, + { + "chainId": 137, + "name": "BRIX Token", + "symbol": "BRIX", + "decimals": 18, + "address": "0xabffedaf784dc40a4c1947f9d5ddb3afe2075353", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x8f10eb64923bf30215e7944c416e891d30e742a1" + } + }, + { + "chainId": 137, + "name": "CRIPTORO COIN", + "symbol": "CTRO", + "decimals": 10, + "address": "0x7dc06244536fc5a86123034ee6d9204e436a3e91", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xb3ab2b676a1efdb16a227e151dc31f5bd3856744" + } + }, + { + "chainId": 137, + "name": "TiqCoin", + "symbol": "TIQ", + "decimals": 18, + "address": "0x124e383a31f871a91b923bbcdbf3b0fae625c691", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xb8949b6de0869735d71d0f07d1e899e57f1076d6" + } + }, + { + "chainId": 137, + "name": "AssaultToken", + "symbol": "ASLT", + "decimals": 18, + "address": "0x4b2dc203d164702d6e453ab2abeccbcae95ee36b", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x2b8b09ce791a4b1036137cf8ac8260cd1e619f29" + } + }, + { + "chainId": 137, + "name": "Staked MATIC", + "symbol": "stMATIC", + "decimals": 18, + "address": "0x3a58a54c066fdc0f2d55fc9c89f0415c92ebf3c4", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x9ee91f9f426fa633d227f7a9b000e28b9dfd8599" + } + }, + { + "chainId": 137, + "name": "Metaverse Alliance DAO", + "symbol": "MAD", + "decimals": 18, + "address": "0x158dbdd4820f95698442eac7cd4f70d08f39b3c6", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x6e35ecbdc138e64a5029c2487296e83bbba6b77c" + } + }, + { + "chainId": 137, + "name": "BANX", + "symbol": "BANX", + "decimals": 18, + "address": "0x288e8ad3d61e6f931290a5df1ae31f16b8274770", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x0e2e120f5e18f2d0a1afd0fab02b09aa37a17f7e" + } + }, + { + "chainId": 137, + "name": "Flame", + "symbol": "XFL", + "decimals": 18, + "address": "0x8ca608e14934c1e986429d0d3644b8ba3a3e279c", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x469861bdfd02e7ebce7cdeb281e8eec53069cf5f" + } + }, + { + "chainId": 137, + "name": "CybeeDAO", + "symbol": "CBD", + "decimals": 18, + "address": "0x73a79f01c3365b6b50101b47860f428a8c3cebff", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x9b812c65529ec7d20ab630235ae20fde022c8ad3" + } + }, + { + "chainId": 137, + "name": "Babycoin", + "symbol": "BABYCOIN", + "decimals": 18, + "address": "0xcfeda1807147dbbcb1808e2518edde0142f419f5", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xd2cb4366d8111d65ebff6c29852fef7a1628ae80" + } + }, + { + "chainId": 137, + "name": "Shina Inu", + "symbol": "SHI", + "decimals": 18, + "address": "0x4ede9608a5d6154cb349f472063f6f0a95f9afc1", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x243cacb4d5ff6814ad668c3e225246efa886ad5a" + } + }, + { + "chainId": 137, + "name": "Democracy", + "symbol": "DEM", + "decimals": 18, + "address": "0xaddffb740019ddf9318699e9fd1be138a311f584", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xc589d3d92ae2b4461e9bb2e689b36c4e3c9c4fa3" + } + }, + { + "chainId": 137, + "name": "PITCH", + "symbol": "PITCH", + "decimals": 9, + "address": "0x4f6b7ffb1427d6312305e23aebce6fc2994d8f91", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x87f56ee356b434187105b40f96b230f5283c0ab4" + } + }, + { + "chainId": 137, + "name": "EZDEX", + "symbol": "EZX", + "decimals": 18, + "address": "0xe2a1257ac6f49b767fce903686fcbd7713af4a5d", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x9e8bfe46f9af27c5ea5c9c72b86d71bb86953a0c" + } + }, + { + "chainId": 137, + "name": "Cask Token", + "symbol": "CASK", + "decimals": 18, + "address": "0xdc185ade9a3362f9203191f136499ffe512527c1", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x0645314c1afd4d9711d609e3e755265ababc95eb" + } + }, + { + "chainId": 137, + "name": "Rickle", + "symbol": "rkl", + "decimals": 18, + "address": "0x9fdc23fe295104ac55fef09363c56451d0e37cfa", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x0ff80a1708191c0da8aa600fa487f7ac81d7818c" + } + }, + { + "chainId": 137, + "name": "Doge Pixel (239, 375)", + "symbol": "DOGPIX", + "decimals": 18, + "address": "0xff93b30c021beedab0f6e28a7a08bddd155b15a4", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x0332713aef01faedbf821473c165ae25079372e0" + } + }, + { + "chainId": 137, + "name": "MOONEY", + "symbol": "MOONEY", + "decimals": 18, + "address": "0x74ac7664abb1c8fa152d41bb60e311a663a41c7e", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x20d4db1946859e2adb0e5acc2eac58047ad41395" + } + }, + { + "chainId": 137, + "name": "Orbler", + "symbol": "ORBR", + "decimals": 18, + "address": "0xc2fbfab885b9c98ad51edf3b03e2510ff97471b0", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xda30f261a962d5aae94c9ecd170544600d193766" + } + }, + { + "chainId": 137, + "name": "BYTES", + "symbol": "BYTES", + "decimals": 18, + "address": "0x6735d8de3b8f81a08727a1860cc9a68e8ed93b96", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x7d647b1a0dcd5525e9c6b3d14be58f27674f8c95" + } + }, + { + "chainId": 137, + "name": "tokenpartners", + "symbol": "TOE", + "decimals": 18, + "address": "0x32e10b5ae57c9eec97bf5e67e243bf29993c9e71", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xcf44278fd9932b76df313f4a278c10618d7726d2" + } + }, + { + "chainId": 137, + "name": "EnoToken", + "symbol": "ENO", + "decimals": 18, + "address": "0x7f36c54da31b2dd355caffec0249f26da41e3fcd", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xeea509c221c5c6979e974f4501b4829be0ab2f8c" + } + }, + { + "chainId": 137, + "name": "ICHI", + "symbol": "ICHI", + "decimals": 18, + "address": "0x111111517e4929d3dcbdfa7cce55d30d4b6bc4d6", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x111111517e4929d3dcbdfa7cce55d30d4b6bc4d6" + } + }, + { + "chainId": 137, + "name": "StripCoin", + "symbol": "STRIP", + "decimals": 18, + "address": "0x500ad628a390cd4ce8a062f07f68f63e9ef30362", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xe9cb6838902ccf711f16a9ea5a1170f8e9853c02" + } + }, + { + "chainId": 137, + "name": "Egg n Partners", + "symbol": "EGGT", + "decimals": 18, + "address": "0x74c96c05d87c86cd640de3eeb7b073811006b991", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x096cc1544fe972039353f3401bce92f8e3978693" + } + }, + { + "chainId": 137, + "name": "CoinWealth", + "symbol": "CNW", + "decimals": 6, + "address": "0x0a307bd521701f9d70fb29bfa9e2e36dc998dadb", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x433fce7dfbec729a79999eaf056cb073b2153eba" + } + }, + { + "chainId": 137, + "name": "Mytrade Token", + "symbol": "MYT", + "decimals": 18, + "address": "0x4535e52cdf3ab787b379b7b72b5990767e6747e4", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x0bf0d26a527384bcc4072a6e2bca3fc79e49fa2d" + } + }, + { + "chainId": 137, + "name": "!IdleCDO AA Tranche - idleDAIYield", + "symbol": "AA_idleDAIYield", + "decimals": 18, + "address": "0x36f514bfb1dec83910c8c46752ad2987b7c72c5b", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xe9ada97bdb86d827ecbaacca63ebcd8201d8b12e" + } + }, + { + "chainId": 137, + "name": "!IdleCDO BB Tranche - idleDAIYield", + "symbol": "BB_idleDAIYield", + "decimals": 18, + "address": "0x8db0b3ee49348be4e6f3eaab952de2aa7106f7ec", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x730348a54ba58f64295154f0662a08cbde1225c2" + } + }, + { + "chainId": 137, + "name": "Fancy Games", + "symbol": "FNC", + "decimals": 18, + "address": "0x7f280dac515121dcda3eac69eb4c13a52392cace", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x7f280dac515121dcda3eac69eb4c13a52392cace" + } + }, + { + "chainId": 137, + "name": "solace", + "symbol": "SOLACE", + "decimals": 18, + "address": "0x2857686536f58dd835dbf43c9f549676296ef336", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x501ace9c35e60f03a2af4d484f49f9b1efde9f40" + } + }, + { + "chainId": 137, + "name": "Dataphora", + "symbol": "DATAPHORA", + "decimals": 18, + "address": "0x8da41a3bc942b19a44d6bdf0e30f058df3ab8ba9", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x8da41a3bc942b19a44d6bdf0e30f058df3ab8ba9" + } + }, + { + "chainId": 137, + "name": "VitaDAO Token", + "symbol": "VITA", + "decimals": 18, + "address": "0x6cb02c92611f001f605c891fbfde7d1a26de54b9", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x81f8f0bb1cb2a06649e51913a151f0e7ef6fa321" + } + }, + { + "chainId": 137, + "name": "CubToken", + "symbol": "CUBT", + "decimals": 18, + "address": "0xebbe09afdab74872dbc975d7bda1ddf5595e4c8a", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xbf9e72eeb5adb8b558334c8672950b7a379d4266" + } + }, + { + "chainId": 137, + "name": "Medici Token", + "symbol": "MDC", + "decimals": 18, + "address": "0xe1cc4db580022b0185a0208d5830e5b64fa14b86", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x96f5094998a20008839487369012bb4d3c56eafc" + } + }, + { + "chainId": 137, + "name": "LandOrc", + "symbol": "LORC", + "decimals": 18, + "address": "0x5e2cfc52d1c9166202226fbb0b26b8dc16a8c4e0", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x148958884544a8ad7c4895e6ffe2723932e0523a" + } + }, + { + "chainId": 137, + "name": "iNTROVERSE", + "symbol": "iNTRO", + "decimals": 8, + "address": "0x7df231024f80ca7f63032c25b6232b1cc655df77", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x7912c3eff24cb62865e93dbc59264b1a293cc593" + } + }, + { + "chainId": 137, + "name": "Carchain Coin", + "symbol": "CCC", + "decimals": 18, + "address": "0xe81e0a387d2585fbc5353f56a57afd20331ef12d", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xb9c72a65cbd593b7942cd65992eca9108a6273a3" + } + }, + { + "chainId": 137, + "name": "Fweb3", + "symbol": "FWEB3", + "decimals": 18, + "address": "0x4a14ac36667b574b08443a15093e417db909d7a3", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x95cd50f9d591630db85d95c932bbc704dc0ae92a" + } + }, + { + "chainId": 137, + "name": "Citizen Token", + "symbol": "CDAO", + "decimals": 18, + "address": "0x8a23d240763057432ce048a43f9a3a1b2cc22404", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x57ea7178505f7d33c2bdb4450e041561513dbd9b" + } + }, + { + "chainId": 137, + "name": "Kromatika", + "symbol": "KROM", + "decimals": 18, + "address": "0x14af1f2f02dccb1e43402339099a05a5e363b83c", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x3af33bef05c2dcb3c7288b77fe1c8d2aeba4d789" + } + }, + { + "chainId": 137, + "name": "PhunToken", + "symbol": "PHTK", + "decimals": 18, + "address": "0x322584098ea29e2127a81322b417ebba356d8f22", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x1fee5588cb1de19c70b6ad5399152d8c643fae7b" + } + }, + { + "chainId": 137, + "name": "Bread Token", + "symbol": "BRD", + "decimals": 18, + "address": "0x11c3eba9851d245221e00e9a8e73e6f1439325d3", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x558ec3152e2eb2174905cd19aea4e34a23de9ad6" + } + }, + { + "chainId": 137, + "name": "BOBL", + "symbol": "BOBL", + "decimals": 18, + "address": "0x9dbdc7b58b4dfcc73daf45fc386b266262d11c41", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xac3a44115560064adfc2d2e90b5bd34f9454cafd" + } + }, + { + "chainId": 137, + "name": "CoinCasso Exchange Token", + "symbol": "CCX", + "decimals": 18, + "address": "0x357e1bfb47911528965bb9c6916eeea622d4bb27", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x395dc9a82e3eef962b0355a3d4e6819e9af776d2" + } + }, + { + "chainId": 137, + "name": "Centaurify", + "symbol": "CENT", + "decimals": 18, + "address": "0x7b9c2d37fc0b45a5ec022d2023f18685fda832e7", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x08ba718f288c3b12b01146816bef9fa03cc635bc" + } + }, + { + "chainId": 137, + "name": "The Myth Of America", + "symbol": "GUMP", + "decimals": 0, + "address": "0xaa3622e6c36a95ce8a8d3a66c166ac916a88d9c1", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x496f0b5af74e24c6ffdb182d8945f116c7077aba" + } + }, + { + "chainId": 137, + "name": "Vufi.finance", + "symbol": "VUFI", + "decimals": 18, + "address": "0x5530aa1823573af28b6315d7e75138573eabf6e4", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xf036c451e6e5b3c89cc86fd6affa877b2809501f" + } + }, + { + "chainId": 137, + "name": "Syndicate Token", + "symbol": "SYNR", + "decimals": 18, + "address": "0xe6bd67b9e9c1171583d5e13edaaec6d93b05ce96", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xbc6e06778708177a18210181b073da747c88490a" + } + }, + { + "chainId": 137, + "name": "Biznek", + "symbol": "BIZN", + "decimals": 18, + "address": "0x2c763b519ece33bb2c57e63c40e09465dbe7637b", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xd91d72087f747db1abfda6bda40f4abe034fd03a" + } + }, + { + "chainId": 137, + "name": "RED MWAT", + "symbol": "MWAT", + "decimals": 18, + "address": "0x2b160eea11604f81d5adbbd2dcfe5b6cd983652b", + "logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/2533.png", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x6425c6be902d692ae2db752b3c268afadb099d3b" + } + }, + { + "chainId": 137, + "name": "Bay Area Excitement", + "symbol": "BAE", + "decimals": 18, + "address": "0x3df5d4d3926d55df9c10683bf0b0bde7a2dc3851", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xd3ba270f82cadabd0596d3d30233448621d561bb" + } + }, + { + "chainId": 137, + "name": "Kollect", + "symbol": "KOL", + "decimals": 18, + "address": "0xe31c6667537bbc819b1fd7017ed6703cfa8f1871", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x1cc30e2eac975416060ec6fe682041408420d414" + } + }, + { + "chainId": 137, + "name": "Cryptoodles Toodle Token", + "symbol": "TODL", + "decimals": 18, + "address": "0xec97734ed00d65d05d10316d1641c09d1daab96f", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x98933f2396dbaabf812b6e6d27da4df109c4c55f" + } + }, + { + "chainId": 137, + "name": "Wrapped XRP", + "symbol": "WXRP", + "decimals": 18, + "address": "0xaef23cee6c50930bae8b4843c9b35c4c293e8906", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x39fbbabf11738317a448031930706cd3e612e1b9" + } + }, + { + "chainId": 137, + "name": "Test137", + "symbol": "Test137", + "decimals": 18, + "address": "0xcbb975186a8d742561319ecf0e04a6eabeb1853c", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x3db715989da05c1d17441683b5b41d4510512722" + } + }, + { + "chainId": 137, + "name": "Zipmex Token", + "symbol": "ZMT", + "decimals": 18, + "address": "0x7d3daeb4ccd6cf0bf95c6420cac6d10438bd5116", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xaa602de53347579f86b996d2add74bb6f79462b2" + } + }, + { + "chainId": 137, + "name": "Charge", + "symbol": "CHARGE", + "decimals": 18, + "address": "0x36778b659267e74d35dda15a51a5296b3fdaf7a7", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x0235a4fa8374fd49bb2f01ac953f99748756f3bd" + } + }, + { + "chainId": 137, + "name": "Biconomy Token", + "symbol": "BICO", + "decimals": 18, + "address": "0x91c89a94567980f0e9723b487b0bed586ee96aa7", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xf17e65822b568b3903685a7c9f496cf7656cc6c2" + } + }, + { + "chainId": 137, + "name": "NFTBunny", + "symbol": "BUN", + "decimals": 18, + "address": "0x97116250d81a937e41b70cee60a817705dd7960a", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xf70209f73aa9716c6a303080687550cccd6d69f5" + } + }, + { + "chainId": 137, + "name": "Bronze TOWER Chest", + "symbol": "TWR.BRNZ", + "decimals": 18, + "address": "0x3f3190628aaeea6c329559b37e60c6ab471e0a6a", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x0bb9a88920b6b4dd59c87afb5ee29d6e1c6c8942" + } + }, + { + "chainId": 137, + "name": "Silver TOWER Chest", + "symbol": "TWR.SLVR", + "decimals": 18, + "address": "0xaa3fbde8b65130bad47a987cfb2dd27e1d9ed75e", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x129f772760d569fca9a301d3ed44450eac5fc7a5" + } + }, + { + "chainId": 137, + "name": "Gold TOWER Chest", + "symbol": "TWR.GOLD", + "decimals": 18, + "address": "0xb58869e737191b4b062dcb1b67c9f92d623c3006", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x9b253a5655997e3896e518111f3595c0bd6fed1c" + } + }, + { + "chainId": 137, + "name": "Rai.Finance", + "symbol": "SOFI", + "decimals": 18, + "address": "0x7cb810ecbfd6125e65f451cfbd8ae657dffdd6b4", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xb49fa25978abf9a248b8212ab4b87277682301c0" + } + }, + { + "chainId": 137, + "name": "President Brandon Token", + "symbol": "XLVI", + "decimals": 2, + "address": "0x40dc7491cb56ff50a9913f7228feae802db99920", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x9b3007568341382b2de292d056ff7e41870d0a0e" + } + }, + { + "chainId": 137, + "name": "Presearch", + "symbol": "PRE", + "decimals": 18, + "address": "0x2492e3626b7136be7afb67483a87d716925a61e5", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xec213f83defb583af3a000b1c0ada660b1902a0f" + } + }, + { + "chainId": 137, + "name": "Kitty Party Reward Token", + "symbol": "KPT", + "decimals": 18, + "address": "0x7d369731e3d7f86417aa86ef4be26e309080bd2f", + "logoURI": "https://bafkreiawezzhlphckhopkolrkxsz4mtayjz4cjxz4bgsvvkjsclqacf2be.ipfs.nftstorage.link/", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x444f20a5d578862bf84b6d14ec3ca0c8be8e555f" + } + }, + { + "chainId": 137, + "name": "Friends With Benefits Pro", + "symbol": "FWB", + "decimals": 18, + "address": "0xcb016f83d242771a8cda42f9e391f18b93b6ae63", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x35bd01fc9d6d5d81ca9e055db88dc49aa2c699a8" + } + }, + { + "chainId": 137, + "name": "WIVA", + "symbol": "WIVA", + "decimals": 18, + "address": "0x784641e51c300120a8d15bfdb3b45375d4352748", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xa00055e6ee4d1f4169096ecb682f70caa8c29987" + } + }, + { + "chainId": 137, + "name": "LooksRare Token", + "symbol": "LOOKS", + "decimals": 18, + "address": "0xc3d8222c2f1223df5db3a0ee845eafc3f67e76a3", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xf4d2888d29d722226fafa5d9b24f9164c092421e" + } + }, + { + "chainId": 137, + "name": "Chroma", + "symbol": "CHR", + "decimals": 6, + "address": "0x594c984e3318e91313f881b021a0c4203ff5e59f", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x8a2279d4a90b6fe1c4b30fa660cc9f926797baa2" + } + }, + { + "chainId": 137, + "name": "GaugeField", + "symbol": "GAUF", + "decimals": 18, + "address": "0x58171d74fc6526df600214ca18dc2ee4895c6f7b", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x8ce7386fe7688417885adebcbfc01a5445226b2c" + } + }, + { + "chainId": 137, + "name": "Bitcoin Stable", + "symbol": "BTST", + "decimals": 18, + "address": "0x53cf566cf80e1a26bfc16d055c866a72fdcbaee7", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xd70804c98ebe9749e3337621eaafbe366cbb1963" + } + }, + { + "chainId": 137, + "name": "Wrapped Hachiko", + "symbol": "WHachiko", + "decimals": 18, + "address": "0x4a63428963e18cc2411f43d49826ed09d1bfa0da", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xf5ea35fa36bd111adc3b81eef82259d35d88d305" + } + }, + { + "chainId": 137, + "name": "Convex CRV", + "symbol": "cvxCRV", + "decimals": 18, + "address": "0x6220d3d80020a4023eb29a9f9e206100f7bb581e", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x62b9c7356a2dc64a1969e19c23e4f579f9810aa7" + } + }, + { + "chainId": 137, + "name": "Gamma", + "symbol": "GAMMA", + "decimals": 18, + "address": "0x9620330926467ed3279ffcfba8327c24625732ea", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x6bea7cfef803d1e3d5f7c0103f7ded065644e197" + } + }, + { + "chainId": 137, + "name": "FLIP Token", + "symbol": "FLP", + "decimals": 18, + "address": "0x22593803b4c628d8ee2537ac0ffb996ca104ad25", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x3a1bda28adb5b0a812a7cf10a1950c920f79bcd3" + } + }, + { + "chainId": 137, + "name": "Flex Ungovernance Token", + "symbol": "FLX", + "decimals": 18, + "address": "0x0f6d1c52ba0bb9e68601632a74d9f4d07afb555f", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x6243d8cea23066d098a15582d81a598b4e8391f4" + } + }, + { + "chainId": 137, + "name": "DerivaDAO", + "symbol": "DDX", + "decimals": 18, + "address": "0x26f5fb1e6c8a65b3a873ff0a213fa16eff5a7828", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x3a880652f47bfaa771908c07dd8673a787daed3a" + } + }, + { + "chainId": 137, + "name": "Inuyasha", + "symbol": "Inuyasha", + "decimals": 18, + "address": "0xed49826b1a5a147b612ad16e27f3961d3cdce218", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x5bddbfdc228e1bbdb9ef5ca1dc56b54c4d6d6621" + } + }, + { + "chainId": 137, + "name": "Guzzler", + "symbol": "GZLR", + "decimals": 18, + "address": "0x6c6fcdec44990079baac5c3062e8f0dac5c4ba8e", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x9f4909cc95fb870bf48c128c1fdbb5f482797632" + } + }, + { + "chainId": 137, + "name": "BoneShards", + "symbol": "BONESHARDS", + "decimals": 18, + "address": "0x84cf3e9f5ec08a77bbc4c437eaea411b44673cfc", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x6c716bdb4289283e0ad1926c47b54412bd2c257b" + } + }, + { + "chainId": 137, + "name": "Temple", + "symbol": "TEMPLE", + "decimals": 18, + "address": "0xee55dd8d0ccbe835b8ef163590c9afeaace5978b", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x470ebf5f030ed85fc1ed4c2d36b9dd02e77cf1b7" + } + }, + { + "chainId": 137, + "name": "Animal Concerts Token", + "symbol": "ANML", + "decimals": 18, + "address": "0xecc4176b90613ed78185f01bd1e42c5640c4f09d", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x38b0e3a59183814957d83df2a97492aed1f003e2" + } + }, + { + "chainId": 137, + "name": "Hotpot Funds", + "symbol": "HPT", + "decimals": 18, + "address": "0xcc0ef74ae3ef3d2c0139558ba2bdafab98ade3ed", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x615d8e5e1344b36a95f6ecd8e6cda020e84dc25b" + } + }, + { + "chainId": 137, + "name": "OverOneGold", + "symbol": "OOG", + "decimals": 18, + "address": "0xec24c04868da7abba292c2ba46fe77788a3f5f74", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xb72a91ac402eec1977a6b2bd02d3f0aa1a261b93" + } + }, + { + "chainId": 137, + "name": "WorldChainShare", + "symbol": "WCS", + "decimals": 0, + "address": "0xb72a91ac402eec1977a6b2bd02d3f0aa1a261b93", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xfd2e95937a9a1b4a87b8c47fd3e9acc123314c0e" + } + }, + { + "chainId": 137, + "name": "EarnBet Token", + "symbol": "BET", + "decimals": 4, + "address": "0x134257dd9a557b8083c4a196b4a259bbbd1146a6", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xfdd4e938bb067280a52ac4e02aaf1502cc882ba6" + } + }, + { + "chainId": 137, + "name": "\"Ethereum Push Notification Service", + "symbol": "PUSH", + "decimals": 18, + "address": "0x58001cc1a9e17a20935079ab40b1b8f4fc19efd1", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xf418588522d5dd018b425e472991e52ebbeeeeee" + } + }, + { + "chainId": 137, + "name": "FeelGrid Token", + "symbol": "GFEE", + "decimals": 18, + "address": "0x19fcab6c824570c82a3508ee0b520686cde62fcc", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xa2d17610a0106f3106d8ff0e2d88ab7b9e51b71b" + } + }, + { + "chainId": 137, + "name": "Screenist Token", + "symbol": "NIS", + "decimals": 8, + "address": "0xfd2e95937a9a1b4a87b8c47fd3e9acc123314c0e", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xb316c4057202cfa2c94d01f06a2a930a4b0cd83b" + } + }, + { + "chainId": 137, + "name": "Convex FXS", + "symbol": "cvxFXS", + "decimals": 18, + "address": "0xe145524abf229cce1d536623d32bf4794bb02a61", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xfeef77d3f69374f66429c91d732a244f074bdf74" + } + }, + { + "chainId": 137, + "name": "GratitudeCoin", + "symbol": "GRTFUL", + "decimals": 18, + "address": "0x01a8d35b2fd85dd2e73760d4e6300f1bdd47a118", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x6563b5d8925ad3684bdb5923d56b0b24044eb90f" + } + }, + { + "chainId": 137, + "name": "Faith Tribe", + "symbol": "FTRB", + "decimals": 18, + "address": "0xc3f56d567e7663e8932e65d85ae4be7eb5575ca7", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x2596825a84888e8f24b747df29e11b5dd03c81d7" + } + }, + { + "chainId": 137, + "name": "Dopex Governance Token", + "symbol": "DPX", + "decimals": 18, + "address": "0x025a1405e9f917313a4e17fd365d0611cccf43e1", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xeec2be5c91ae7f8a338e1e5f3b5de49d07afdc81" + } + }, + { + "chainId": 137, + "name": "Tokemak", + "symbol": "TOKE", + "decimals": 18, + "address": "0xe1708abde4847b4929b70547e5197f1ba1db2250", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x2e9d63788249371f1dfc918a52f8d799f4a38c94" + } + }, + { + "chainId": 137, + "name": "MarvelousNFT", + "symbol": "MNFT", + "decimals": 18, + "address": "0xd281af594cbb99e8469f3591d57a0c72eb725bdb", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x33be7644c0e489b3a0c639d103392d4f3e338158" + } + }, + { + "chainId": 137, + "name": "Pupper", + "symbol": "PUP", + "decimals": 18, + "address": "0x2cbf640e8f0301e86392ecf8009a034178ef2415", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x81dbc1c8e40c3095071949eda9800c2209a7279a" + } + }, + { + "chainId": 137, + "name": "Polygon Dev Wrapper", + "symbol": "WDEV", + "decimals": 18, + "address": "0xa5577d1cec2583058a6bd6d5deac44797c205701", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x4a5df63b0c37b38515e4ee51baf40edd420bf7d5" + } + }, + { + "chainId": 137, + "name": "The Rise Of The Aztecs - Gold", + "symbol": "ROAG", + "decimals": 18, + "address": "0xe465128cd5316c4a08e879c32cc89d8f794c02e4", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xe465128cd5316c4a08e879c32cc89d8f794c02e4" + } + }, + { + "chainId": 137, + "name": "Swee Token", + "symbol": "SWEE", + "decimals": 18, + "address": "0xd813b1500db50c755a37850ab29ca7a6ce24b25b", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x83d7d7315b918bc002376f73fcd07ea0708e44ef" + } + }, + { + "chainId": 137, + "name": "YourGamify Token", + "symbol": "GAM", + "decimals": 18, + "address": "0x0fdfee86a85cf73c1eced1e2f8d8a358c5c7127d", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x05e4de681283bdf7c35ef7de4b87e465e80a6216" + } + }, + { + "chainId": 137, + "name": "Aquest Token", + "symbol": "AQU", + "decimals": 18, + "address": "0xa68c10cb0bf5c45f223a9db23ffc1f5614388287", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x7756edf05ef3c2b321a85d77b5cbf7c8a9a7c247" + } + }, + { + "chainId": 137, + "name": "EnkronosToken", + "symbol": "ENK", + "decimals": 18, + "address": "0xa810289daa9235aff550fbacc68703c2ffc3cd80", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x92b914f1ddcbb1d117a718e83c9ed7eb32fc44d1" + } + }, + { + "chainId": 137, + "name": "wxBTRFLY", + "symbol": "wxBTRFLY", + "decimals": 18, + "address": "0x3c7681320cc5d558480a8ff2f19a01c312535364", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x186e55c0bebd2f69348d94c4a27556d93c5bd36c" + } + }, + { + "chainId": 137, + "name": "NFT Worlds", + "symbol": "WRLD", + "decimals": 18, + "address": "0xd5d86fc8d5c0ea1ac1ac5dfab6e529c9967a45e9", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xd5d86fc8d5c0ea1ac1ac5dfab6e529c9967a45e9" + } + }, + { + "chainId": 137, + "name": "Sipher Token", + "symbol": "SIPHER", + "decimals": 18, + "address": "0x2eca05abf0adf9f208e973d4682503fb6ae8f942", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x9f52c8ecbee10e00d9faaac5ee9ba0ff6550f511" + } + }, + { + "chainId": 137, + "name": "RAYS", + "symbol": "RAYS", + "decimals": 18, + "address": "0x2d027e55b85429e9f205930a8aff6d8e6c8c3021", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x6db5f284660b3129ce2e8f563bf849c59f372f61" + } + }, + { + "chainId": 137, + "name": "ERC20", + "symbol": "ERC20", + "decimals": 18, + "address": "0x9300169b33a02f968e5c2a00607e0ece26248752", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xc3761eb917cd790b30dad99f6cc5b4ff93c4f9ea" + } + }, + { + "chainId": 137, + "name": "SWARM", + "symbol": "SWM", + "decimals": 18, + "address": "0x3505f494c3f0fed0b594e01fa41dd3967645ca39", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x3505f494c3f0fed0b594e01fa41dd3967645ca39" + } + }, + { + "chainId": 137, + "name": "ECX Token", + "symbol": "ECX", + "decimals": 18, + "address": "0x90b9597bbfdcbc86253d27d6b9a13079c5155f9f", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x9c8071c501c8226ab906a68d9ef9da6e0bd3a8ba" + } + }, + { + "chainId": 137, + "name": "B.Protocol", + "symbol": "BPRO", + "decimals": 18, + "address": "0x0c560bf15acccca2892053589b1805b5ef18a21f", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xbbbbbbb5aa847a2003fbc6b5c16df0bd1e725f61" + } + }, + { + "chainId": 137, + "name": "Arke Token", + "symbol": "ARKES", + "decimals": 18, + "address": "0x0784d958ee09ff8e876a82d3c6e798912c0f0a11", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xaeab9861bd9479daaa538a2d7f57d5e1d1c86c5e" + } + }, + { + "chainId": 137, + "name": "unification.com/xfund", + "symbol": "xFUND", + "decimals": 9, + "address": "0x77a3840f78e4685afaf9c416b36e6eae6122567b", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x892a6f9df0147e5f079b0993f486f9aca3c87881" + } + }, + { + "chainId": 137, + "name": "FiscoCoin", + "symbol": "FSCC", + "decimals": 8, + "address": "0x5ccfefd833ed1f648d227b32ff96f045a0d2fa8d", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x0789dbae94fb18e5789b8e4489bcb7a1adb58622" + } + }, + { + "chainId": 137, + "name": "Theranos Coin", + "symbol": "LIZ", + "decimals": 18, + "address": "0x6094a3ced47335b068efba7789ea578af1434947", + "logoURI": "https://www.theranosco.in/logo.svg", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x102e941b77bcaa7e35d368cafe51ef8f79c8d1ef" + } + }, + { + "chainId": 137, + "name": "DePo Token", + "symbol": "DEPO", + "decimals": 18, + "address": "0xe854d408482319bae8e3e3965c2eee9135e936c2", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xa5def515cfd373d17830e7c1de1639cb3530a112" + } + }, + { + "chainId": 137, + "name": "DegenArts.com Coin", + "symbol": "DAC", + "decimals": 18, + "address": "0xbe69e683c56c2816d3eeec1183c882dd73ea5914", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x8281ee37f164c0e26e6b6f87e7695baac256df07" + } + }, + { + "chainId": 137, + "name": "hyfi.token", + "symbol": "HyFi", + "decimals": 18, + "address": "0x5cf6e36dcf6e6132e251ca0f5590bb7c8055bb3d", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x79a1ca1768fe91867be916efa2b1630c7fc83422" + } + }, + { + "chainId": 137, + "name": "Let's Go Brandon", + "symbol": "LGB", + "decimals": 18, + "address": "0xc712f8e6ffd1b6a40eb8735c8d2db2a55612268c", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x21e783bcf445b515957a10e992ad3c8e9ff51288" + } + }, + { + "chainId": 137, + "name": "CXD Token", + "symbol": "CXD", + "decimals": 18, + "address": "0x178745ca4ba60b22e25cf92df47f177a7db7b4f8", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xefa815c439c1697dbb6b88d1434153f67697e0b8" + } + }, + { + "chainId": 137, + "name": "Zenith", + "symbol": "ZENX", + "decimals": 18, + "address": "0x9cd44af7fb46a946484ebe377bb2712eabb610ad", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x67f7e5e9dbed6c52dc52d7a83ac3608ad2648e12" + } + }, + { + "chainId": 137, + "name": "YUGEN", + "symbol": "YGN", + "decimals": 18, + "address": "0xa33aaa07853038943ef2c32cde73a094cf993ee0", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x397e10ee5e315f69b23cb6c8a913a589b5850c80" + } + }, + { + "chainId": 137, + "name": "Gas DAO", + "symbol": "GAS", + "decimals": 18, + "address": "0x7a9568ae827cd28bf8365fd51baa2dbcd7d3f465", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x6bba316c48b49bd1eac44573c5c871ff02958469" + } + }, + { + "chainId": 137, + "name": "Domination Finance Token", + "symbol": "DOM", + "decimals": 18, + "address": "0xc8aaee7f1deac631259b8bf2c65e71207cc53b0c", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xef5fa9f3dede72ec306dfff1a7ea0bb0a2f7046f" + } + }, + { + "chainId": 137, + "name": "PlannerDAO Opportunity Index", + "symbol": "PDAO", + "decimals": 18, + "address": "0x2b4fa97b84698dc1540d13d33754757bac3c8115", + "logoURI": "https://uploads-ssl.webflow.com/6096909a9f570cf818e33cf5/61e658c8fb13b00b5a4c40c2_Untitled%20design.png", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xa025f41f1a973e6649931f3ac96979071bda4c9f" + } + }, + { + "chainId": 137, + "name": "Anime Coin", + "symbol": "ANME", + "decimals": 18, + "address": "0x60ff7b0744d5981d8a3dfb8b84716f381652508d", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x5c77583c1d729c94baac79579c26ff70c46145b5" + } + }, + { + "chainId": 137, + "name": "bHome", + "symbol": "bHOME", + "decimals": 6, + "address": "0x58743aabed5bb772845d1a779f7ea592ac744023", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xb8919522331c59f5c16bdfaa6a121a6e03a91f62" + } + }, + { + "chainId": 137, + "name": "Bankless DeFi Innovation Index", + "symbol": "GMI", + "decimals": 18, + "address": "0x7fb27ee135db455de5ab1ccec66a24cbc82e712d", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x47110d43175f7f2c2425e7d15792acc5817eb44f" + } + }, + { + "chainId": 137, + "name": "Plush", + "symbol": "PLSH", + "decimals": 18, + "address": "0x33044d2c29686795228b89b11d2d34727b8df9bc", + "logoURI": "https://raw.githubusercontent.com/PlushFamily/plush-design-assets/main/logos/plush/svg/plush-logo.svg", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x26a22c97dd308657ada714d9ee0c08233b05fd48" + } + }, + { + "chainId": 137, + "name": "Diabolo", + "symbol": "DCASH", + "decimals": 10, + "address": "0x74ba6a10978f643a84c0b37fcb599081079811cb", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xcf8f32e032f432b02393636b2092a6bef975fbf9" + } + }, + { + "chainId": 137, + "name": "Venice Coin", + "symbol": "VENICE", + "decimals": 18, + "address": "0xc4b00de48c795666c2b0ad0ed4b9ac7e22fd10e1", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xf6d4fbc3b86811df25d829a14dae0269a3ee5462" + } + }, + { + "chainId": 137, + "name": "Spheroid", + "symbol": "SPH", + "decimals": 18, + "address": "0x2c9d233914f46b88e9ae08326fa60e40ea3faa12", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xa0cf46eb152656c7090e769916eb44a138aaa406" + } + }, + { + "chainId": 137, + "name": "LogiTron", + "symbol": "LTR", + "decimals": 18, + "address": "0x7d29968f96d475186a479e4be99b43b8b8a20dbc", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xa4c7963b98838e8f958cf7b87a039249044fe2db" + } + }, + { + "chainId": 137, + "name": "XPOP Entertainment", + "symbol": "XPOP", + "decimals": 18, + "address": "0x0ae1daf8329923cce587e994df500a8f1dd5fc6f", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x0f3a02baec9607f2b52b3ab629cbcea2047e1124" + } + }, + { + "chainId": 137, + "name": "BIOS", + "symbol": "BIOS", + "decimals": 18, + "address": "0xe20d2df5041f8ed06976846470f727295cdd4d23", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xaaca86b876ca011844b5798eca7a67591a9743c8" + } + }, + { + "chainId": 137, + "name": "Simracer Coin", + "symbol": "SRC", + "decimals": 18, + "address": "0xf0c3c4ac63be272a94712bccc39490a159cd0d7c", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x16587cf43f044aba0165ffa00acf412631194e4b" + } + }, + { + "chainId": 137, + "name": "Nemesis Downfall", + "symbol": "NMSIS", + "decimals": 18, + "address": "0x3f5b2063e500492463589b17f9ea9cf2af9771cf", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x7b6bbbeac6a7f5681ec8e250b9aeb45a42bdc2cf" + } + }, + { + "chainId": 137, + "name": "Matic-PTY", + "symbol": "MPTY", + "decimals": 18, + "address": "0xfa8cf47d8bc10f6f7272f2b9b0ed042e8b8e120d", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x959f71f60333d05856a35cb000fb42829b1ec1c1" + } + }, + { + "chainId": 137, + "name": "MOI", + "symbol": "MOI", + "decimals": 18, + "address": "0x42b171dee4a4a4c918eb53e438346df47b07c6f2", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xce78fe539ef8b6c77b5726113c7b2e78f71dc6ab" + } + }, + { + "chainId": 137, + "name": "SENATE", + "symbol": "SENATE", + "decimals": 18, + "address": "0x18428bb593f8a1ec3fb80418e4844439b03f5001", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x34be5b8c30ee4fde069dc878989686abe9884470" + } + }, + { + "chainId": 137, + "name": "Vader", + "symbol": "VADER", + "decimals": 18, + "address": "0x13e5f8e18376d51203156a47a809254c717cf9b7", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x2602278ee1882889b946eb11dc0e810075650983" + } + }, + { + "chainId": 137, + "name": "Qawalla Token", + "symbol": "QWLA", + "decimals": 18, + "address": "0x4fafad147c8cd0e52f83830484d164e960bdc6c3", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x1d96fd43ee07aa79f8fd003cbdf404fb5ce41ad2" + } + }, + { + "chainId": 137, + "name": "ASYAGRO", + "symbol": "ASY", + "decimals": 18, + "address": "0x7e4413ed294a9fb86d6534edbcc46355a83c1ef7", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x017b584acfd16d767541ae9e80cdc702f4527b0b" + } + }, + { + "chainId": 137, + "name": "SOS", + "symbol": "SOS", + "decimals": 18, + "address": "0x8c059898ca6274750b6bf1cf38f2848347c490cc", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x3b484b82567a09e2588a13d54d032153f0c0aee0" + } + }, + { + "chainId": 137, + "name": "Polylend Token", + "symbol": "PCOIN", + "decimals": 18, + "address": "0x86589a8fa4945657a41ed013633ff26ca9a26a2b", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x12393ba26e2c5dafeb81c803d0be7beb50971cc1" + } + }, + { + "chainId": 137, + "name": "LEEDO Project ERC20", + "symbol": "LEEDO", + "decimals": 18, + "address": "0x94576423d85b47575bba515a1f328a265e6318e6", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x3eede143adb9a80c6a44c63dad76269d33e2c8d1" + } + }, + { + "chainId": 137, + "name": "microETH", + "symbol": "uETH", + "decimals": 18, + "address": "0x40eebe8541ac5a232e5897226aa3491677bfa9dd", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xbb7be7cc5abb65d3a29d7982236481ddf4f10b09" + } + }, + { + "chainId": 137, + "name": "Black Abyss", + "symbol": "BLYS", + "decimals": 18, + "address": "0x0142666baa520bc49b32ad44c505421346c69164", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x2e3dd59619efa2afa811236235648f0607e0ee66" + } + }, + { + "chainId": 137, + "name": "DogeGF", + "symbol": "DOGEGF", + "decimals": 18, + "address": "0x0e7252706393470ffb0629da2caa39fc9340f2d4", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xfb130d93e49dca13264344966a611dc79a456bc5" + } + }, + { + "chainId": 137, + "name": "Trazable", + "symbol": "TRZ", + "decimals": 18, + "address": "0x9d0be2730a8af6061f058ce2c951d52e4f886f18", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x394a16744dcd805bb0ca7252e70691f0dcac56aa" + } + }, + { + "chainId": 137, + "name": "renDGB", + "symbol": "renDGB", + "decimals": 8, + "address": "0x6d54d243f144e16b6489a295f100146e11286ec0", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xe3cb486f3f5c639e98ccbaf57d95369375687f80" + } + }, + { + "chainId": 137, + "name": "ScallopX", + "symbol": "SCLP", + "decimals": 18, + "address": "0x2fc711518aae7c87d7002566c5d43b0e5d2b1932", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x3f6d1649a1366b0e82173d33e365953f9f1cc84c" + } + }, + { + "chainId": 137, + "name": "Amasa Token", + "symbol": "AMAS", + "decimals": 18, + "address": "0xc4d6d290bf5f28278fe30f5e28b0a482eac330f0", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x65a8fba02f641a13bb7b01d5e1129b0521004f52" + } + }, + { + "chainId": 137, + "name": "TNodeOrange", + "symbol": "TNO", + "decimals": 8, + "address": "0x2ea3e8f750cbc55c293e6008e8b5a654ebbd0600", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x992d6ef73506a28d084dd092722f686fb5570e38" + } + }, + { + "chainId": 137, + "name": "Niftify", + "symbol": "NIFT", + "decimals": 18, + "address": "0x4a1d542b52a95ad01ddc70c2e7df0c7bbaadc56f", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x4a1d542b52a95ad01ddc70c2e7df0c7bbaadc56f" + } + }, + { + "chainId": 137, + "name": "Mondo Community Coin", + "symbol": "MNDCC", + "decimals": 18, + "address": "0x78c192f6b1260d53d7ff871d267364f334897f08", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xcdb9d30a3ba48cdfcb0ecbe19317e6cf783672f1" + } + }, + { + "chainId": 137, + "name": "Rotharium", + "symbol": "RTH", + "decimals": 18, + "address": "0xb9abdd78a153b8b59d09dfc196254718145f3a20", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x3fd8f39a962efda04956981c31ab89fab5fb8bc8" + } + }, + { + "chainId": 137, + "name": "Chase", + "symbol": "Chase", + "decimals": 6, + "address": "0x6484117fbdc339c99c973bde96650039f3469c09", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x77b9b390f88b5eafd7ceb8d233535cfd8e6b62a2" + } + }, + { + "chainId": 137, + "name": "Burp", + "symbol": "BURP", + "decimals": 18, + "address": "0x538d47d142f6993038a667e9d6210d3735749b36", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x33f391f4c4fe802b70b77ae37670037a92114a7c" + } + }, + { + "chainId": 137, + "name": "CannaSwap", + "symbol": "NOID", + "decimals": 18, + "address": "0x80387ff8b58c82fbaf385a3380d4627234763659", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x42624903735dc6396643200242f7f7b6c7b619ea" + } + }, + { + "chainId": 137, + "name": "ParaSwap", + "symbol": "PSP", + "decimals": 18, + "address": "0x42d61d766b85431666b39b89c43011f24451bff6", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xcafe001067cdef266afb7eb5a286dcfd277f3de5" + } + }, + { + "chainId": 137, + "name": "Terrapass Coin", + "symbol": "TPSC", + "decimals": 18, + "address": "0x0a2a95978ce57395dbf33696d34e222e1eacde4e", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x88d8da2a8d0fa5b1f4e38030ac486ade0afa2798" + } + }, + { + "chainId": 137, + "name": "Outernet Players Token", + "symbol": "OPT", + "decimals": 18, + "address": "0x8338bd2dbcc83f1f0190be068779aca296380209", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x0FaB50cfEf9919cA35D0831b376d4d96b033230e" + } + }, + { + "chainId": 137, + "name": "MetaBrands", + "symbol": "MAGE", + "decimals": 18, + "address": "0xb044d04c406952c0927579e153c49c222ef2c870", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xd52aae39a2b5cc7812f7b9450ebb61dfef702b15" + } + }, + { + "chainId": 137, + "name": "Neighbourhoods Token", + "symbol": "NHT", + "decimals": 18, + "address": "0x84342e932797fc62814189f01f0fb05f52519708", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x84342e932797FC62814189f01F0Fb05F52519708" + } + }, + { + "chainId": 137, + "name": "GP", + "symbol": "GP", + "decimals": 18, + "address": "0xD10bCCDd789fa11239D903FeA93DB2C8c92CfbE7", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x38Ec27c6F05a169e7eD03132bcA7d0cfeE93C2C5" + } + }, + { + "chainId": 137, + "name": "Whales Game Islands", + "symbol": "ISLAND", + "decimals": 18, + "address": "0x96f57e3f4f1e11b8c5fdc98ab45f5843ab66821f", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xE0Be84ca5c7bEaA2051057f02449ECB0495Bf50e" + } + }, + { + "chainId": 137, + "name": "Wrapped Whales", + "symbol": "wWH", + "decimals": 18, + "address": "0xca69c315b644a45a35b25fe23fbaf6620599a063", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xD0c99622c3f0C09b4B08f5f13Dd28BeE13f6E3c7" + } + }, + { + "chainId": 137, + "name": "Wrapped Fishermen", + "symbol": "wFM", + "decimals": 18, + "address": "0xdeba42d0a9da63697eaf745b2863393e02505a3a", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xcE113e6e2386197917D70d58DDdE148bfA4F58Ca" + } + }, + { + "chainId": 137, + "name": "Swarm Markets", + "symbol": "SMT", + "decimals": 18, + "address": "0xE631DABeF60c37a37d70d3B4f812871df663226f", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xB17548c7B510427baAc4e267BEa62e800b247173" + } + }, + { + "chainId": 137, + "name": "Mobilum Token", + "symbol": "MBM", + "decimals": 18, + "address": "0x5A98291b9A7643448f5366Fe4a4918f7cb566912", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x281F5B914b0D589F8193cd5e711c6920874E00C8" + } + }, + { + "chainId": 137, + "name": "Kounotori", + "symbol": "KTO", + "decimals": 9, + "address": "0xbf59a84274f57C6ab3a5F3aD4864dE0dF3faff4E", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x616ef40d55c0d2c506f4d6873bda8090b79bf8fc" + } + }, + { + "chainId": 137, + "name": "EVE Exchange", + "symbol": "EVE", + "decimals": 18, + "address": "0xaE29AC47A9E3b0a52840E547aDf74B912999F7fc", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x0f628641d0ea1ecab9341e58d4982c0018a51c6b" + } + }, + { + "chainId": 137, + "name": "Searching for Satoshi", + "symbol": "S4S", + "decimals": 18, + "address": "0x7bfC8637B8fDb2b13291639bA65C25A22A9e59f0", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x8091CBDF4bF6D449b0fCd3c797d4990E4229A820" + } + }, + { + "chainId": 137, + "name": "MYCE PLATFORM", + "symbol": "MYCE", + "decimals": 18, + "address": "0xDcC1F05C5Ad40972ce9FBaF2841cbedE6f933b07", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xE9966C1184f8552Fcb16F65addba9Dd08fe8f4EA" + } + }, + { + "chainId": 137, + "name": "GenomesDAO Governance", + "symbol": "GNOME", + "decimals": 18, + "address": "0x6E8a8726639d12935b3219892155520bdC57366B", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xE58Eb0Bb13a71d7B95c4C3cBE6Cb3DBb08f9cBFB" + } + }, + { + "chainId": 137, + "name": "GenomesDAO", + "symbol": "GENE", + "decimals": 18, + "address": "0x34667ED7C36cBBbF2d5d5c5c8d6Eb76a094EDb9F", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x21413c119b0C11C5d96aE1bD328917bC5C8ED67E" + } + }, + { + "chainId": 137, + "name": "Nitro", + "symbol": "NITRO", + "decimals": 18, + "address": "0x695FC8B80F344411F34bDbCb4E621aA69AdA384b", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x0335A7610D817aeCA1bEBbEfbd392ecC2eD587B8" + } + }, + { + "chainId": 137, + "name": "PlannerDAO", + "symbol": "PLAN", + "decimals": 18, + "address": "0xaf28b7702e239e7ed107b6e036851f56e0415188", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x8D7acC5d07818f187ab70b6033c690FD67C96D98" + } + }, + { + "chainId": 137, + "name": "Daniel Token 2", + "symbol": "DAN2", + "decimals": 6, + "address": "0xa35816AD75206102812363541dfb9C88E8bB1A8f", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x55E9d73f7bF359Ab7C2e6F441f425E212aD615e8" + } + }, + { + "chainId": 137, + "name": "Materia", + "symbol": "GIL", + "decimals": 18, + "address": "0xBE6159775a9050E5c4CBF81718390818702bf801", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x020810d775fc019480cd56ecb960389d3477039d" + } + }, + { + "chainId": 137, + "name": "PYLNT", + "symbol": "PYLNT", + "decimals": 18, + "address": "0xE411D55Fb9D8d9d2A0b4161F08AdF768b23A584B", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xD8924385CD46e6AF6F377871C732BDe2F8e9dD18" + } + }, + { + "chainId": 137, + "name": "Wurstcoin", + "symbol": "WURST", + "decimals": 18, + "address": "0xd71951630e7afb497ee6F9d9B4510a8614869A59", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x67e74603df95cabbebc6795478c2402a01ea1517" + } + }, + { + "chainId": 137, + "name": "MetaWorld", + "symbol": "METW", + "decimals": 18, + "address": "0x1B042246d67C44a745dc8BaD735c84059A1Fa0a7", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x18cdc8ecad3DA54AcA6bE823B1eA29F514d4856d" + } + }, + { + "chainId": 137, + "name": "Metaverse", + "symbol": "MV", + "decimals": 18, + "address": "0xA3c322Ad15218fBFAEd26bA7f616249f7705D945", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xAE788F80F2756A86aa2F410C651F2aF83639B95b" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/mv.svg" + }, + { + "chainId": 137, + "name": "NFTWiki Token", + "symbol": "NFTK", + "decimals": 18, + "address": "0x514267D21BcB99b43657eF4Ed80b26E18ca9E8f0", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xCCb4dFdb4f95697ab5c389185f0Ba9042A78576F" + } + }, + { + "chainId": 137, + "name": "Veritaseum", + "symbol": "VERI", + "decimals": 18, + "address": "0xA8FC7CD1ea3A65574368fAddB4B1190aa3Fd6560", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x8f3470A7388c05eE4e7AF3d01D8C722b0FF52374" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/veri.svg" + }, + { + "chainId": 137, + "name": "ThunderDAO", + "symbol": "TDAO", + "decimals": 18, + "address": "0x6C3Ec80Fae6F067cC5F0222eFd957101b626291e", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x13bb3586478f7725b0e7b404c97939cc2cbc530d" + } + }, + { + "chainId": 137, + "name": "Vufi Shares", + "symbol": "VUFIS", + "decimals": 18, + "address": "0xf0533E7Ef9d9aA5d5554be649e60315E528Ce3a7", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x36417d9f5a927b3af2f03fe8c8d4fde715601b83" + } + }, + { + "chainId": 137, + "name": "Degen$ Farm Bags", + "symbol": "BAGZ", + "decimals": 0, + "address": "0x345DF42b1E4963d70909E09935b9a1f7ef832114", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xBABA0d970e735c7E48bba07C1164c4e0449AE9b8" + } + }, + { + "chainId": 137, + "name": "Genesis Mechanism", + "symbol": "GeM", + "decimals": 18, + "address": "0x2f911F789d9D599B34D403a2cFc0C5B3f7E8cE7a", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xebc27d9bd8ac268934784dcdf1eaa10dfaf97a9f" + } + }, + { + "chainId": 137, + "name": "CosplayToken", + "symbol": "COT", + "decimals": 18, + "address": "0x8d520c8E66091cfD6743fe37Fbe3A09505616C4b", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x5cac718a3ae330d361e39244bf9e67ab17514ce8" + } + }, + { + "chainId": 137, + "name": "PAWER Network", + "symbol": "PAWR", + "decimals": 18, + "address": "0xd9ce16aC93B783e069353a57220bf0E9C5315daf", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x7693A7D03D35808b75742D33d6fbB000359E693c" + } + }, + { + "chainId": 137, + "name": "BitDegree Token", + "symbol": "BDG", + "decimals": 18, + "address": "0x293b3B56cCf37FCE9bd4d8A3E276ff6c24Bc72B4", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x1961B3331969eD52770751fC718ef530838b6dEE" + } + }, + { + "chainId": 137, + "name": "Smoke", + "symbol": "SMOKE", + "decimals": 18, + "address": "0xc54a5024b6c5e565772729b783021f60a8f9139c", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x67725FB3751c257920a88c543ba9b4BA8CfbfA5D" + } + }, + { + "chainId": 137, + "name": "Ember NFT Index", + "symbol": "ENFTI", + "decimals": 18, + "address": "0xE50C778924604B2AA3e66Fb5C2D378D5FC15FcD5", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x3c6591ceDD3d60C022f6dA4F83B36d23A633b512" + } + }, + { + "chainId": 137, + "name": "GAMESTA", + "symbol": "GSG", + "decimals": 18, + "address": "0x778949e707A0eb6c32ca20b1F9E0Db9685d18024", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x55cd00764e85aa3b6b34130c983fff9eb458250c" + } + }, + { + "chainId": 137, + "name": "DecentraWeb", + "symbol": "DWEB", + "decimals": 18, + "address": "0x8839e639F210B80ffea73AedF51baed8DAc04499", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xE7f58A92476056627f9FdB92286778aBd83b285F" + } + }, + { + "chainId": 137, + "name": "Limelight", + "symbol": "LMLT", + "decimals": 18, + "address": "0x1F435c17d7Ff631218827F9BA43a696650a9D512", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x5eA1dd3f3F3685C32D771B2E89A70d9c5cCf8A0C" + } + }, + { + "chainId": 137, + "name": "dHealth", + "symbol": "DHP", + "decimals": 18, + "address": "0x194Dd5b6b7225C9d2F2e2b2aF7a4FfC8e77fd479", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xc40F23A3E9613E012944f7957edCe97899Fa920d" + } + }, + { + "chainId": 137, + "name": "ROTTSCHILD.com", + "symbol": "ROTTS", + "decimals": 9, + "address": "0x510379859D138d1854E925C7472674F4A827296a", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xfb40e79e56cc7d406707b66c4fd175e07eb2ae3c" + } + }, + { + "chainId": 137, + "name": "P125 Token", + "symbol": "P125", + "decimals": 18, + "address": "0x83000597e8420aD7e9EDD410b2883Df1b83823cF", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xA9033952ac045168243A1A50c889516445247618" + } + }, + { + "chainId": 137, + "name": "Shiblon Moon", + "symbol": "SHIBLONMOON", + "decimals": 18, + "address": "0xbCC4a4dc490500161A4d91bC1ccE5929224EC385", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x2cCEa629BA92490136B2206379809737C57AC409" + } + }, + { + "chainId": 137, + "name": "Ooki Token", + "symbol": "OOKI", + "decimals": 18, + "address": "0xCd150B1F528F326f5194c012f32Eb30135C7C2c9", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x0De05F6447ab4D22c8827449EE4bA2D5C288379B" + } + }, + { + "chainId": 137, + "name": "Moss Carbon Credit", + "symbol": "MCO2", + "decimals": 18, + "address": "0xaa7dbd1598251f856c12f63557a4c4397c253cea", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xfc98e825a2264d890f9a1e68ed50e1526abccacd" + } + }, + { + "chainId": 137, + "name": "Element 69", + "symbol": "EL69", + "decimals": 18, + "address": "0xAC05696A96fbF947200876ABb8e71b9e18Ef3D6A", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xa1fF4Ee88b53124b73eE16b315F61623CDacc987" + } + }, + { + "chainId": 137, + "name": "Team Clean Seas", + "symbol": "TCS", + "decimals": 9, + "address": "0xCDCB83ff608E7DEcb66ff597dA9d438F8896BdB1", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x592f77f18893c8657cbf7cfc93e3f7cf7b02662d" + } + }, + { + "chainId": 137, + "name": "Auditchain", + "symbol": "AUDT", + "decimals": 18, + "address": "0x91c5A5488c0dEcde1Eacd8a4F10e0942fb925067", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xB90cb79B72EB10c39CbDF86e50B1C89F6a235f2e" + } + }, + { + "chainId": 137, + "name": "Krill Token", + "symbol": "KRILL", + "decimals": 18, + "address": "0xDa9f97B9dE8509938c65DB0F0CB0ff9Ea425E9a0", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xf59BfEED034092E399Cc43Ff79EdAb15e2e18735" + } + }, + { + "chainId": 137, + "name": "Polygen", + "symbol": "PGEN", + "decimals": 18, + "address": "0x01d35cbC2070a3B76693Ce2b6364Eae24eb88591", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xf6719e1A8fcBB1B9c290019E37e004966A8916C9" + } + }, + { + "chainId": 137, + "name": "Sunder Goverance Token", + "symbol": "Sunder", + "decimals": 18, + "address": "0xaE36Df61954A67c88ea8e0b8a9B0aF378abB013b", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xbDbf245c690d54b67C6e610A28486A2C6dE08bE6" + } + }, + { + "chainId": 137, + "name": "Gold Fever Native Gold", + "symbol": "NGL", + "decimals": 18, + "address": "0xF95c5f961CF676ae927DfF05342a0741b99E3564", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x2653891204F463fb2a2F4f412564b19e955166aE" + } + }, + { + "chainId": 137, + "name": "Phantasma Stake", + "symbol": "SOUL", + "decimals": 8, + "address": "0xE79378Aaf2386452960a365fB8D720AC888c9614", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x79c75e2e8720b39e258f41c37cc4f309e0b0ff80" + } + }, + { + "chainId": 137, + "name": "Forsan Coin", + "symbol": "FORS", + "decimals": 18, + "address": "0x56a25375e6930114Fe0B428df5CCDc753db99898", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xa5Bd86e212097F95415AfF92B7F0752BAe39F7e5" + } + }, + { + "chainId": 137, + "name": "$", + "symbol": "$", + "decimals": 18, + "address": "0x5B3dcB07244dCCBd22A42080AE8b35E7a7593ED3", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xDd3892eacc10c3E6A56EB29Fa0cdC18C4E4bF9Ae" + } + }, + { + "chainId": 137, + "name": "Data Transaction Token", + "symbol": "XD", + "decimals": 18, + "address": "0x9a0e65942615DE1eb5f5dD0CCB89090719231410", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x24dcc881e7dd730546834452f21872d5cb4b5293" + } + }, + { + "chainId": 137, + "name": "Agrolot Token", + "symbol": "AGLT", + "decimals": 18, + "address": "0x136B7098a3FE98cbB8Eb00f5cfed393E96E317E3", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x72c9Fb7ED19D3ce51cea5C56B3e023cd918baaDf" + } + }, + { + "chainId": 137, + "name": "UniX Gaming", + "symbol": "UNIX", + "decimals": 18, + "address": "0x8C4476DFEC8e7EEdf2DE3e9E9461B7c14C828d46", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xddd6a0ecc3c6f6c102e5ea3d8af7b801d1a77ac8" + } + }, + { + "chainId": 137, + "name": "Fodl", + "symbol": "FODL", + "decimals": 18, + "address": "0x5314bA045a459f63906Aa7C76d9F337DcB7d6995", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x4c2e59d098df7b6cbae0848d66de2f8a4889b9c3" + } + }, + { + "chainId": 137, + "name": "MonoX Token", + "symbol": "MONO", + "decimals": 18, + "address": "0x05323017c00874198Cf1b0832922074BeEA0db83", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x2920f7d6134f4669343e70122cA9b8f19Ef8fa5D" + } + }, + { + "chainId": 137, + "name": "KOROMARU", + "symbol": "KOROMARU", + "decimals": 9, + "address": "0x0b80BFcfd006c446aF4157b87aA7D7F13c8F549A", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xd0d42005e7b3c0812b1268f0e5faf97ff2423651" + } + }, + { + "chainId": 137, + "name": "Bluemel", + "symbol": "BLUEMEL", + "decimals": 18, + "address": "0x1F7826D9562F42e745823BdBB690902E00D995f6", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xe921401d18ed1ea4d64169d1576c32f9a7439694" + } + }, + { + "chainId": 137, + "name": "KwikTrust", + "symbol": "KTX", + "decimals": 18, + "address": "0x60E6895184448f3e8EF509D083e3cC3AC31F82Fd", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x6CA8F7f73599834FeE845EF884562bb5479318a0" + } + }, + { + "chainId": 137, + "name": "TattooMoney", + "symbol": "TAT2", + "decimals": 18, + "address": "0x2596A8B90D39EB89d5668ca5B6deE54E9ae3d4C0", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xb487d0328b109e302b9d817b6f46cbd738ea08c2" + } + }, + { + "chainId": 137, + "name": "Signata", + "symbol": "SATA", + "decimals": 18, + "address": "0x2E0f9A07d0ef445dB402d1c656ea6b71af81cb65", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x3ebb4A4e91Ad83BE51F8d596533818b246F4bEe1" + } + }, + { + "chainId": 137, + "name": "Mechanium", + "symbol": "$MECHA", + "decimals": 18, + "address": "0xaCd4E2d936Be9B16c01848A3742A34B3D5A5bDfa", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xc5bcc8ba3f33ab0d64f3473e861bdc0685b19ef5" + } + }, + { + "chainId": 137, + "name": "BeverageBar", + "symbol": "xDRINK", + "decimals": 18, + "address": "0x5a7aAdDD5F1d343fA4248c3e2A02d8a18626b9d0", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xf6344740921c858229c7b39be530d6cb2b704f7a" + } + }, + { + "chainId": 137, + "name": "ANGLE", + "symbol": "ANGLE", + "decimals": 18, + "address": "0x900F717EA076E1E7a484ad9DD2dB81CEEc60eBF1", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x31429d1856ad1377a8a0079410b297e1a9e214c2" + } + }, + { + "chainId": 137, + "name": "agEUR", + "symbol": "agEUR", + "decimals": 18, + "address": "0xE0B52e49357Fd4DAf2c15e02058DCE6BC0057db4", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x1a7e4e63778b4f12a199c062f3efdd288afcbce8" + } + }, + { + "chainId": 137, + "name": "Decentral Games Governance", + "symbol": "xDG", + "decimals": 18, + "address": "0xc6480Da81151B2277761024599E8Db2Ad4C388C8", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x4f81c790581b240a5c948afd173620ecc8c71c8d" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/xdg.svg" + }, + { + "chainId": 137, + "name": "DoubleDice Token", + "symbol": "DODI", + "decimals": 18, + "address": "0x5B03aC408938C97e50db3bC5675d182606A01377", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x4E08F03079c5CD3083eA331Ec61bCC87538B7665" + } + }, + { + "chainId": 137, + "name": "Decentral Games", + "symbol": "DG", + "decimals": 18, + "address": "0xef938b6da8576a896f6E0321ef80996F4890f9c4", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x4b520c812e8430659fc9f12f6d0c39026c83588d" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/dg.svg" + }, + { + "chainId": 137, + "name": "AWACOIN", + "symbol": "AWA", + "decimals": 18, + "address": "0xb915894B10e0C30B8A9c8bf2a0c521961bb18593", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xdeccdc7fc3f0959e9e384db33e87086208701e2c" + } + }, + { + "chainId": 137, + "name": "Hub Token", + "symbol": "HUB", + "decimals": 18, + "address": "0xA4f40Bd861431186aA0648B9c57aF0313d2d2f57", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xba358B6f5b4c0215650444B8C30D870B55050D2D" + } + }, + { + "chainId": 137, + "name": "Shibnobi", + "symbol": "SHINJA", + "decimals": 9, + "address": "0x184BC6A6040F139027e9659dC2b87BFcfde4a39e", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xab167e816e4d76089119900e941befdfa37d6b32" + } + }, + { + "chainId": 137, + "name": "MultiChainCapital", + "symbol": "MCC", + "decimals": 9, + "address": "0xE499140A7362927bB23889c4D60A6B9b3347F8ca", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x1a7981d87e3b6a95c1516eb820e223fe979896b3" + } + }, + { + "chainId": 137, + "name": "#The Wanderers — Down The Wormhole", + "symbol": "WDW", + "decimals": 18, + "address": "0x822c03792acd5274237B031EC8e48456f48E1211", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xf021ed0785812c1b74365b7ee4395cd1b274d95b" + } + }, + { + "chainId": 137, + "name": "Reach Four the Stars", + "symbol": "R4S", + "decimals": 18, + "address": "0x1B0cC1A5D296fda5971d582dbb87B07fB120B92c", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x8c930c8574f9c3a6f1252e5a2e912dc69b463a0c" + } + }, + { + "chainId": 137, + "name": "X Guardian Marks the Spot", + "symbol": "XGMTS", + "decimals": 18, + "address": "0xD53cb20f90187636bbA1b08B4f96a018a141dE63", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x2950f509ce6db2294e9a7f61b1e3d96bcd5b1138" + } + }, + { + "chainId": 137, + "name": "Sniper Squad 17", + "symbol": "SS17", + "decimals": 18, + "address": "0xC226374dd015445084A2b4c348Bde4aFfd950Ad9", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xc795ed2ab78ad1c451af4a6db87d878760b9072e" + } + }, + { + "chainId": 137, + "name": "Sniper Squad 16", + "symbol": "SS16", + "decimals": 18, + "address": "0xaEF7E3Da2bb3438D8540A6AbE27095EA89f3B3B0", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xa958f28358771ac95a570d2921cf410f51d176c2" + } + }, + { + "chainId": 137, + "name": "MAX Token", + "symbol": "MAX", + "decimals": 18, + "address": "0x9634aF3af2f392505369fCFe56691790CEa345B4", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xe7976c4efc60d9f4c200cc1bcef1a1e3b02c73e7" + } + }, + { + "chainId": 137, + "name": "BBGO", + "symbol": "BBG", + "decimals": 18, + "address": "0x3Afe98235d680e8d7A52e1458a59D60f45F935C0", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x3Afe98235d680e8d7A52e1458a59D60f45F935C0" + } + }, + { + "chainId": 137, + "name": "VMart Token", + "symbol": "VMC", + "decimals": 18, + "address": "0x2694e54166a1Aa849131781273Cd3bf214309642", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x715c218A882bb4fa3627D4CE15a6324716D3CDFA" + } + }, + { + "chainId": 137, + "name": "LUXY", + "symbol": "LUXY", + "decimals": 18, + "address": "0xD4945a3D0De9923035521687D4bf18cC9B0c7c2A", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x5e0fDcDb61Ec98D5Ed4E23b3d539Fb3722C940A6" + } + }, + { + "chainId": 137, + "name": "Simarglum", + "symbol": "GLUM", + "decimals": 8, + "address": "0x481791e5c37cF831Ed03742C7C5B5cFFA83A27D4", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xddbe9cc1dfd7e305df1f70b69590ada38878024f" + } + }, + { + "chainId": 137, + "name": "Request Token", + "symbol": "REQ", + "decimals": 18, + "address": "0xAdf2F2Ed91755eA3f4bcC9107a494879f633ae7C", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x8f8221afbb33998d8584a2b05749ba73c37a938a" + } + }, + { + "chainId": 137, + "name": "Luffy Inu", + "symbol": "LUFFY", + "decimals": 9, + "address": "0x8449d85Fc7989Ad7F34F8dA986F512aEa9E6920E", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xc1bfccd4c29813ede019d00d2179eea838a67703" + } + }, + { + "chainId": 137, + "name": "PROTEIN", + "symbol": "PRTN", + "decimals": 18, + "address": "0x67561239d0fd07A37B5621ae7C2b2F1413491033", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xfec2fa7edd428171103e8f81911af5be9d31eeba" + } + }, + { + "chainId": 137, + "name": "Unbox.Art", + "symbol": "UBA", + "decimals": 18, + "address": "0xE24C8E7c61d4545eB69f13Dc9b1f40Cff679bA07", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x817e2aDdceAA4907623666A7800b1553Ca21192d" + } + }, + { + "chainId": 137, + "name": "I Bet You", + "symbol": "IBY", + "decimals": 18, + "address": "0x059eb35959B5Ad5A37Ce9198726CAB84824fd690", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x6a68de599e8e0b1856e322ce5bd11c5c3c79712b" + } + }, + { + "chainId": 137, + "name": "Lattice Token", + "symbol": "LTX", + "decimals": 8, + "address": "0x641675a002021f645117287c92A20059b6A347F9", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xa393473d64d2F9F026B60b6Df7859A689715d092" + } + }, + { + "chainId": 137, + "name": "Verse", + "symbol": "VERSE", + "decimals": 18, + "address": "0xa67C1CC2ADF4969667980811b65A456D204D7Ce5", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xe18841d7a75866688e291703bde66c3378bd74a3" + } + }, + { + "chainId": 137, + "name": "Aidi Inu", + "symbol": "AIDI", + "decimals": 9, + "address": "0x5BA499a413E6AfCAFc7a79A73AaCE4bd94a8a33A", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xda1e53e088023fe4d1dc5a418581748f52cbd1b8" + } + }, + { + "chainId": 137, + "name": "Tuo Luo BlockChain", + "symbol": "TLBC", + "decimals": 2, + "address": "0x3FC98379bB51bBefDfb882bE2Bb928D118a1990A", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x3fca60965bb0035d38b95cb528ef231ed8905911" + } + }, + { + "chainId": 137, + "name": "TLB", + "symbol": "TLB", + "decimals": 8, + "address": "0xd4744644449c47FE07b110B53aB0c5415b2Ec346", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x317aB43DE10c70802De1A5e79E7C6A745520ceB0" + } + }, + { + "chainId": 137, + "name": "Refraction", + "symbol": "REFRACT", + "decimals": 18, + "address": "0x1c483C609fa8BB24a27d97752876a9Fb9FBDB749", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xc6e86dad13ece397f23c6ab3ed85f894daab6884" + } + }, + { + "chainId": 137, + "name": "Sarcophagus", + "symbol": "SARCO", + "decimals": 18, + "address": "0x80Ae3B3847E4e8Bd27A389f7686486CAC9C3f3e8", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x7697b462a7c4ff5f8b55bdbc2f4076c2af9cf51a" + } + }, + { + "chainId": 137, + "name": "Follow", + "symbol": "FOLO", + "decimals": 18, + "address": "0xeF205F99bD869e74b16050199d54327a0eCd343D", + "logoURI": "https://etherscan.io/token/images/alphaimpact_32.png", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xb2a63a5dd36c91ec2da59b188ff047f66fac122a" + } + }, + { + "chainId": 137, + "name": "SHAMAN KING INU", + "symbol": "SHAMAN", + "decimals": 9, + "address": "0x353bb01c07e5DcA9819bf7b004c2a3465D29851f", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xf98e38c3f287304a1f2d4879e741d2bf55474e84" + } + }, + { + "chainId": 137, + "name": "Hokage Inu", + "symbol": "HOKAGE", + "decimals": 9, + "address": "0x83CC0e81467ED905DfF9b3621f570D01906AcBd5", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x1a90bb2a0024b35b54c8b8c6b5313c32470c134b" + } + }, + { + "chainId": 137, + "name": "EtherDoge", + "symbol": "EDOGE", + "decimals": 18, + "address": "0x303B2d090E5aE3A9AAFAe3551F2fF3837820c296", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x8a7b7b9b2f7d0c63f66171721339705a6188a7d5" + } + }, + { + "chainId": 137, + "name": "Edge", + "symbol": "EDGE", + "decimals": 18, + "address": "0x439207292E5452F82ABeD7D5b74089e2b46C85c5", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x4ec1b60b96193a64acae44778e51f7bff2007831" + } + }, + { + "chainId": 137, + "name": "Safe Shield", + "symbol": "SFSHLD", + "decimals": 9, + "address": "0xB08AdF932641B1E99250150ff3287f45B30685F0", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x11a605d7e12b64d713e93c487277d819a1d14b99" + } + }, + { + "chainId": 137, + "name": "DeFI Trade Token", + "symbol": "DTT", + "decimals": 18, + "address": "0x1214D61f3dAA45Af4a5f301075C58fBE57c8E6d7", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x1214d61f3daa45af4a5f301075c58fbe57c8e6d7" + } + }, + { + "chainId": 137, + "name": "Vault Hill City", + "symbol": "VHC", + "decimals": 18, + "address": "0x51b5619F5180e333d18b6310C8D540AEa43a0371", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x60E14651d0Df26D114E5B55be970B76eC9f3eF74" + } + }, + { + "chainId": 137, + "name": "IGRY Coin", + "symbol": "IGRY", + "decimals": 18, + "address": "0xAFbABAa1591d1Afa0F62935E95265cb937C2facF", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xaeF9F1e06805201fc4644267ee05Ac0905F767b9" + } + }, + { + "chainId": 137, + "name": "Saitama Inu", + "symbol": "SAITAMA", + "decimals": 9, + "address": "0x7582a64734f40c1eAa23144Fc43cA1a748723527", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x8B3192f5eEBD8579568A2Ed41E6FEB402f93f73F" + } + }, + { + "chainId": 137, + "name": "Wrapped Anchor UST Token", + "symbol": "aUST", + "decimals": 18, + "address": "0x522a3Bd54d5D6a9CC67592e31Cc1A745630daF50", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xa8de3e3c934e2a1bb08b010104ccabbd4d6293ab" + } + }, + { + "chainId": 137, + "name": "PICIPO", + "symbol": "PICIPO", + "decimals": 18, + "address": "0xD49E6e4Ea56eB71e45809ff208eaFD053653D95C", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x1e05f68B29b286FB3BbAd3c688D7e2ABda549b80" + } + }, + { + "chainId": 137, + "name": "ZUG", + "symbol": "ZUG", + "decimals": 18, + "address": "0x9582b02d5AC3eb6940AE02E6d4ab220c3ca9d317", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xfEE5F54e1070e7eD31Be341e0A5b1E847f6a84Ab" + } + }, + { + "chainId": 137, + "name": "Tiger King", + "symbol": "TKING", + "decimals": 18, + "address": "0xc79745bf7C00D7D78cF7A3713c798fAee8f7DC45", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x24e89bdf2f65326b94e36978a7edeac63623dafa" + } + }, + { + "chainId": 137, + "name": "Seed", + "symbol": "SEED", + "decimals": 18, + "address": "0xEAeCC18198a475c921B24b8A6c1C1f0f5F3F7EA0", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x30cf203b48edaa42c3b4918e955fed26cd012a3f" + } + }, + { + "chainId": 137, + "name": "DOG COLLAR", + "symbol": "COLLAR", + "decimals": 18, + "address": "0xd5fa77A860FeA9cFf31DA91BbF9e0FaEa9538290", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x9783b81438c24848f85848f8df31845097341771" + } + }, + { + "chainId": 137, + "name": "CANDI", + "symbol": "CANDI", + "decimals": 18, + "address": "0xa06657B69bD9462a468ad6533B4B819CAeE8B29E", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x3aa1bd53318a73d2fc41a1dd5de1aa9a0206a5d8" + } + }, + { + "chainId": 137, + "name": "Sustainable Opportunity Matrix", + "symbol": "SOM", + "decimals": 9, + "address": "0x10C5A602c7661E916a863B3BD164796D6CdD3d72", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x4Cb5108603BC702F951A7a1D777Ee24E21303B95" + } + }, + { + "chainId": 137, + "name": "Zombie Inu", + "symbol": "ZINU", + "decimals": 9, + "address": "0xbF979592FB6B57B4293D0D7EEd0E093478a5C890", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xc50ef449171a51fbeafd7c562b064b6471c36caa" + } + }, + { + "chainId": 137, + "name": "JAX Token", + "symbol": "JAX", + "decimals": 18, + "address": "0x5cfDF4CCa482d419dA979C10B70039c28F2a1f08", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xE34f533f537b0BdfC2FDDC6fF2a85fF0cb1A75D1" + } + }, + { + "chainId": 137, + "name": "BitcoinVend", + "symbol": "BCVT", + "decimals": 18, + "address": "0x07fcd81Bf6156e49c64f0ba70f962A9F5111D39d", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x8d717ab5eac1016b64c2a7fd04720fd2d27d1b86" + } + }, + { + "chainId": 137, + "name": "AXIA COIN", + "symbol": "AXC", + "decimals": 18, + "address": "0x83Ce0b442Ec51CfA62310Aa1789210CFE2c5556E", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x37c430c2b5f9Ff85e534873C715871818Ab1623E" + } + }, + { + "chainId": 137, + "name": "Shiryo-Inu", + "symbol": "Shiryo-Inu", + "decimals": 9, + "address": "0xBB812fd66b98A38f2bF6A22759462f0993C1DBBE", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x1E2F15302B90EddE696593607b6bD444B64e8F02" + } + }, + { + "chainId": 137, + "name": "Dogs Of Elon", + "symbol": "DOE", + "decimals": 18, + "address": "0x07D496919669c88CCeC363c55df98d494fd4D796", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xf8e9f10c22840b613cda05a0c5fdb59a4d6cd7ef" + } + }, + { + "chainId": 137, + "name": "Kitty Inu", + "symbol": "kitty", + "decimals": 9, + "address": "0xCBEa86af7581594d85d44469429bC6A273F9B562", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x044727e50ff30DB57fad06Ff4F5846eAb5eA52a2" + } + }, + { + "chainId": 137, + "name": "Ethereum Name Service", + "symbol": "ENS", + "decimals": 18, + "address": "0xbD7A5Cf51d22930B8B3Df6d834F9BCEf90EE7c4f", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xc18360217d8f7ab5e7c516566761ea12ce7f9d72" + } + }, + { + "chainId": 137, + "name": "WhaleStreet $hrimp Token", + "symbol": "$HRIMP", + "decimals": 18, + "address": "0xb8218785cb4d14dBdD94Bf314F361542579b4815", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x9077f9e1efe0ea72867ac89046b2a6264cbcaef5" + } + }, + { + "chainId": 137, + "name": "SOCIETY OF GALACTIC EXPLORATION", + "symbol": "SGE", + "decimals": 9, + "address": "0x6041551eca4fDcB55e3Fb91fe8d9f460C4Ddeca7", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xab456bdb0a373bbac6c4a76176e9f159cacd5752" + } + }, + { + "chainId": 137, + "name": "RDomainToken For 0xac2c11ea5d4a4826f418d3befbf0537de7f13572d2a433edfe4a7314ea5dc896", + "symbol": "ac2c11ea", + "decimals": 18, + "address": "0x31168476A4a722f639C2EDB69281E0B2585eefCF", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xc4911f7eed42aef8e4cf24020f63f5e8b7b56372" + } + }, + { + "chainId": 137, + "name": "National Bank of Coin", + "symbol": "NBC", + "decimals": 18, + "address": "0x4Fb19d9Cc639c556Db433e7cb63722ceB2289AF0", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x96E12Ec9e0D333a52f87713ee03f23fB715FC228" + } + }, + { + "chainId": 137, + "name": "Finiko", + "symbol": "FNK", + "decimals": 18, + "address": "0x2ca402536721Db44286564dC0Dd807aeaB60cec5", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xb5fe099475d3030dde498c3bb6f3854f762a48ad" + } + }, + { + "chainId": 137, + "name": "Kiba Inu", + "symbol": "KIBA", + "decimals": 9, + "address": "0x73Bee5D745dA8b0c39437Df8EAf64CE0589A6575", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x4b2c54b80b77580dc02a0f6734d3bad733f50900" + } + }, + { + "chainId": 137, + "name": "Gods Unchained", + "symbol": "GODS", + "decimals": 18, + "address": "0xF88fc6b493eda7650E4bcf7A290E8d108F677CfE", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xccc8cb5229b0ac8069c51fd58367fd1e622afd97" + } + }, + { + "chainId": 137, + "name": "StarLink", + "symbol": "STARL", + "decimals": 18, + "address": "0xe8b6f80454B9c2e6905FE2b1BD5DB5223657Fa21", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x8e6cd950ad6ba651f6dd608dc70e5886b1aa6b24" + } + }, + { + "chainId": 137, + "name": "Nolly Coin", + "symbol": "NOLLY", + "decimals": 18, + "address": "0x350c8db3E569D4445dD81AD0F1C628f7f6e0187f", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xb69096a89389638518725adfcf279f3f82efa2de" + } + }, + { + "chainId": 137, + "name": "Lith Token", + "symbol": "LITH", + "decimals": 18, + "address": "0xFd75cd593AacE53731f240F32Ec4756A957b3344", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xf8a4a419c2d7140e49ef952a7e7ae1bd4a8b6b9c" + } + }, + { + "chainId": 137, + "name": "Dobermann", + "symbol": "DOBE", + "decimals": 18, + "address": "0x24705371bE6eE97E5780646fb60B8396058C1798", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xe7ab45162f5979f09b0bda1cc7dfc97c270ea3d5" + } + }, + { + "chainId": 137, + "name": "BitSpawn Token", + "symbol": "SPWN", + "decimals": 18, + "address": "0xD882b0ac8cCc38c88eB1486B6Ce8486f102FE3Ac", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xe516d78d784c77d479977be58905b3f2b1111126" + } + }, + { + "chainId": 137, + "name": "KickToken", + "symbol": "KICK", + "decimals": 10, + "address": "0xE64ACF4ec1dc9a112Ab705ad927ccB17427aEFb5", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x824a50df33ac1b41afc52f4194e2e8356c17c3ac" + } + }, + { + "chainId": 137, + "name": "BankSocial", + "symbol": "BSL", + "decimals": 8, + "address": "0xE439273659B86e33716BCF7Ad22408B541df50B1", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x0af55d5ff28a3269d69b98680fd034f115dd53ac" + } + }, + { + "chainId": 137, + "name": "Somnium Space Cubes", + "symbol": "CUBE", + "decimals": 8, + "address": "0x276C9cbaa4BDf57d7109a41e67BD09699536FA3d", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xdf801468a808a32656d2ed2d2d80b72a129739f4" + } + }, + { + "chainId": 137, + "name": "Derived Ether", + "symbol": "dEth", + "decimals": 18, + "address": "0xB8e89dCd3025b05784cc5DaeA3108b697Ffb6697", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x51863Ec92BA14ede7B17fb2B053145C90E215A57" + } + }, + { + "chainId": 137, + "name": "Value Network Token", + "symbol": "VNTW", + "decimals": 18, + "address": "0xFBa8a25156c33FEcbE84f57c2d45C1d50f5afcd0", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xd0f05d3d4e4d1243ac826d8c6171180c58eaa9bc" + } + }, + { + "chainId": 137, + "name": "MatrixETF DAO Finance", + "symbol": "MDF", + "decimals": 18, + "address": "0x700B9dE93E2Fd5455cB91C474DAd6cfEa6598F64", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x1a57367c6194199e5d9aea1ce027431682dfb411" + } + }, + { + "chainId": 137, + "name": "Illuvium", + "symbol": "ILV", + "decimals": 18, + "address": "0xFA46dAf9909e116DBc40Fe1cC95fC0Bb1f452aBE", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x767fe9edc9e0df98e07454847909b5e959d7ca0e" + } + }, + { + "chainId": 137, + "name": "BlueSparrowToken", + "symbol": "BlueSparrow", + "decimals": 9, + "address": "0x3c6D9c9296f8a87BE0Cb639167E152D46c831087", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x4d67edef87a5ff910954899f4e5a0aaf107afd42" + } + }, + { + "chainId": 137, + "name": "Phantasma Energy", + "symbol": "KCAL", + "decimals": 10, + "address": "0xEf101840250783B6F1004510333c7a6F37B1452a", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x14EB60F5f270B059B0c788De0Ddc51Da86f8a06d" + } + }, + { + "chainId": 137, + "name": "Blastoise Inu", + "symbol": "BLAST", + "decimals": 9, + "address": "0x95f3B277b5A688f78Ab0047bD298f09fB263E089", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x5167f7cdeb771417d8722e654ccc3e1734a01878" + } + }, + { + "chainId": 137, + "name": "Feisty Doge NFT", + "symbol": "NFD", + "decimals": 18, + "address": "0x0A5926027d407222F8fe20f24cB16e103f617046", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xdfdb7f72c1f195c5951a234e8db9806eb0635346" + } + }, + { + "chainId": 137, + "name": "Alpha Fund", + "symbol": "AVA", + "decimals": 18, + "address": "0x422361E0E97CbfD5f95d5A50f50598A6fC4D8ce6", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xa16001dd47f505b7b7c5639c710a52209e4e8904" + } + }, + { + "chainId": 137, + "name": "the metaverse game hub", + "symbol": "MGH", + "decimals": 18, + "address": "0xc3C604F1943B8C619c5D65cd11A876e9C8eDCF10", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x8765b1a0eb57ca49be7eacd35b24a574d0203656" + } + }, + { + "chainId": 137, + "name": "gameswap.org", + "symbol": "GSWAP", + "decimals": 18, + "address": "0xB6Ff0EAaC1b4b415a5175803f16896b09B2Db175", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xaac41ec512808d64625576eddd580e7ea40ef8b2" + } + }, + { + "chainId": 137, + "name": "DefiOptions", + "symbol": "DOD", + "decimals": 18, + "address": "0x7E6663D14F058880FAD199BCb745a81c46407809", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xfc7e3cFA47fbF90310ec203F46fEe1af2771548c" + } + }, + { + "chainId": 137, + "name": "THX Network", + "symbol": "THX", + "decimals": 18, + "address": "0x2934b36ca9A4B31E633C5BE670C8C8b28b6aA015", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xe632ea2ef2cfd8fc4a2731c76f99078aef6a4b31" + } + }, + { + "chainId": 137, + "name": "Popcorn", + "symbol": "POP", + "decimals": 18, + "address": "0xC5B57e9a1E7914FDA753A88f24E5703e617Ee50c", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xd0cd466b34a24fcb2f87676278af2005ca8a78c4" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/pop.svg" + }, + { + "chainId": 137, + "name": "ChilliSwap Token", + "symbol": "CHLI", + "decimals": 18, + "address": "0x12b54baA8FFcFd6679CcF1AE618ca3006cFcc2aC", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x12b54baA8FFcFd6679CcF1AE618ca3006cFcc2aC" + } + }, + { + "chainId": 137, + "name": "Piccolo Inu", + "symbol": "PINU", + "decimals": 9, + "address": "0x298018eEEC6D4A38Aa33AB73Bf4954b9D1af68fC", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x3a1311b8c404629e38f61d566cefefed083b9670" + } + }, + { + "chainId": 137, + "name": "Mononoke Inu", + "symbol": "Mononoke-Inu", + "decimals": 9, + "address": "0x0e857076EA922630C844A047f4bB7342f2ED59e2", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x4da08a1bff50be96bded5c7019227164b49c2bfc" + } + }, + { + "chainId": 137, + "name": "Wrapped Kagra", + "symbol": "WKGR", + "decimals": 18, + "address": "0xfAf25C39eA29c3Aa4A0bFbdbcf2dd99845192695", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xEb6D29A33D129407a734C2824288e6A0a6a5EF12" + } + }, + { + "chainId": 137, + "name": "GOL", + "symbol": "GOL", + "decimals": 8, + "address": "0x700481409de3f632F61a2AC9BFd76138357714da", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x48094ebe2266cb1cbe5d3ec81933784e2e9561d8" + } + }, + { + "chainId": 137, + "name": "THIS", + "symbol": "THIS", + "decimals": 18, + "address": "0x1b89c7E4C0967E7052144b446FA6cD4Ac94abd2B", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xDe03B301C22613EAc93a74526d55D40D6a8B923b" + } + }, + { + "chainId": 137, + "name": "Sandclock", + "symbol": "QUARTZ", + "decimals": 18, + "address": "0xA91FE5a535967F52D3abEBDFFb3B306D964ace13", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xbA8A621b4a54e61C442F5Ec623687e2a942225ef" + } + }, + { + "chainId": 137, + "name": "PIXA Token", + "symbol": "PIXA", + "decimals": 0, + "address": "0xcA8C6dEa40a6De9BE3b4C73a1AeFAafdb4754f73", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xeaf211cD484118a23AD71C3F9073189C43d1311c" + } + }, + { + "chainId": 137, + "name": "sUKHI", + "symbol": "sUKH", + "decimals": 18, + "address": "0x6BD9da80D6A7AA03D739353096df36Ec18738C99", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x538429C057c8695c62194028c57B540C4Bf13a6c" + } + }, + { + "chainId": 137, + "name": "bUKHI", + "symbol": "bUKH", + "decimals": 18, + "address": "0xef3943736181F259A4e94D9D6D8658996fB9F785", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xeFe2aFB5f2a9EA8Ec6D8a57FE88fEBCFE29db813" + } + }, + { + "chainId": 137, + "name": "MerchDAO", + "symbol": "MRCH", + "decimals": 18, + "address": "0x4dF071FB2D145bE595b767f997C91818694A6CE1", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xbed4ab0019ff361d83ddeb74883dac8a70f5ea1e" + } + }, + { + "chainId": 137, + "name": "holon", + "symbol": "HLN", + "decimals": 18, + "address": "0xfb57dc345cB5e155B0437A71B5e28557B557488a", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x1aAE3148F5B5F576159835c4C56fF844a7Da4f7e" + } + }, + { + "chainId": 137, + "name": "Nexity Network", + "symbol": "NXT", + "decimals": 18, + "address": "0x76B032370987e91c515d1b96eBD04DE059BeC534", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xebeef419bb5a347e3d98f7d2168055214d12cbdb" + } + }, + { + "chainId": 137, + "name": "Sesamers", + "symbol": "SESAME", + "decimals": 18, + "address": "0xadA94b6C6D263807070AB7378FCA3dfA45ec8E4c", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x69d0391F9fE3f29BB226814c27896fc0558B370E" + } + }, + { + "chainId": 137, + "name": "ASIA COIN", + "symbol": "ASIA", + "decimals": 18, + "address": "0x50bCBC40306230713239Ae1BdDD5eefEEaa273Dc", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xF519381791C03DD7666C142D4E49Fd94d3536011" + } + }, + { + "chainId": 137, + "name": "BitcoinSoV", + "symbol": "BSOV", + "decimals": 8, + "address": "0x955afB81880f439A2Db194f051aFEd078Fb2Ec2E", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x26946ada5ecb57f3a1f91605050ce45c482c9eb1" + } + }, + { + "chainId": 137, + "name": "Nemesis", + "symbol": "NMS", + "decimals": 18, + "address": "0xf41DF3B8084f1bcbf8D72C8366392170E7a0cFFD", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x77252494c25444f8598a0c74ffc90adc535291a9" + } + }, + { + "chainId": 137, + "name": "Tribe", + "symbol": "TRIBE", + "decimals": 18, + "address": "0x8676815789211E799a6DC86d02748ADF9cF86836", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xc7283b66eb1eb5fb86327f08e1b5816b0720212b" + } + }, + { + "chainId": 137, + "name": "Tanks", + "symbol": "TANKS", + "decimals": 18, + "address": "0xf4BF1B42181198c1c2E12e24e3e57c8d70b89411", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xf604d1e51122592e0babe63ac334c0e647222f2d" + } + }, + { + "chainId": 137, + "name": "Crypto Nijigen", + "symbol": "NGN", + "decimals": 10, + "address": "0x4C2C04E6f0ec30EbD60b2fFbE11814C3d59910f7", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x2b5C21578594F7988C7c80D258d0C927C756a848" + } + }, + { + "chainId": 137, + "name": "Unique Utility Token", + "symbol": "UNQT", + "decimals": 18, + "address": "0x3bEeff1b01122F11149B11604a2bC4f9e33D77aF", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xa80f2C8f61c56546001f5FC2eb8D6E4e72c45d4C" + } + }, + { + "chainId": 137, + "name": "Mork", + "symbol": "MORK", + "decimals": 4, + "address": "0xa707734BD310883e133e0ca23F6C166AEB2A1A7a", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xf552b656022c218c26dad43ad88881fc04116f76" + } + }, + { + "chainId": 137, + "name": "UNCL", + "symbol": "UNCL", + "decimals": 18, + "address": "0x97C415D4c8ea982aaabCBb65506D37FA6631C351", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x2f4eb47A1b1F4488C71fc10e39a4aa56AF33Dd49" + } + }, + { + "chainId": 137, + "name": "AGAIN", + "symbol": "AGAIN", + "decimals": 18, + "address": "0x05bE4f635b558E791b68B500FD9210f60E4f3Db8", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xc01a327e30b0fbf32861333f238b5c36a60abc09" + } + }, + { + "chainId": 137, + "name": "LikeCoin", + "symbol": "LIKE", + "decimals": 9, + "address": "0x522250b17AdcaECE287E9dA25dC1dDAd742213C0", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x7588fEFd8D087A7EE3F568087190209F7B449b28" + } + }, + { + "chainId": 137, + "name": "BakedToken", + "symbol": "BAKED", + "decimals": 18, + "address": "0x32515ffdc3a84cfbf9AD4dB14EF8f0A535c7Afd6", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xa4cb0dce4849bdcad2d553e9e68644cf40e26cce" + } + }, + { + "chainId": 137, + "name": "Sandalwood", + "symbol": "Sandalwood", + "decimals": 18, + "address": "0xe99e95ec6DCae4c85806F13CDf1351aE0FEf55Be", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x4FA80013F5d13DB10f2c5DC2987081cb48c7c069" + } + }, + { + "chainId": 137, + "name": "BLOCKS", + "symbol": "BLOCKS", + "decimals": 18, + "address": "0x983C0083127b9b65000E918b10d65A0F5d7500F5", + "tags": [ + "pos", + "erc20" + ], + "logoURI": "https://changenow.io/images/sprite/currencies/blocks.svg", + "extensions": { + "rootAddress": "0x8a6d4c8735371ebaf8874fbd518b56edd66024eb" + } + }, + { + "chainId": 137, + "name": "Genesis Worlds", + "symbol": "GENESIS", + "decimals": 18, + "address": "0x51869836681BcE74a514625c856aFb697a013797", + "logoURI": "https://svgshare.com/i/fJk.svg", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x6b6F09997EbFa93F4E111c33825da3b938462FF1" + } + }, + { + "chainId": 137, + "name": "Euro Tether", + "symbol": "EURT", + "decimals": 6, + "address": "0x7BDF330f423Ea880FF95fC41A280fD5eCFD3D09f", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xc581b735a1688071a1746c968e0798d642ede491" + } + }, + { + "chainId": 137, + "name": "NZD Stablecoin", + "symbol": "NZDS", + "decimals": 6, + "address": "0xeaFE31Cd9e8E01C8f0073A2C974f728Fb80e9DcE", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xDa446fAd08277B4D2591536F204E018f32B6831c" + } + }, + { + "chainId": 137, + "name": "Matic Mike Juice", + "symbol": "HGH", + "decimals": 18, + "address": "0xE97a60f5D34dA4f68bc1f1b9CE2C19Ec1A33E928", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x45fFdeC3fc3b475220c0Fdd3e80c3692bc711E0e" + } + }, + { + "chainId": 137, + "name": "CRE8R DAO", + "symbol": "CRE8R", + "decimals": 18, + "address": "0x079202AD852ccc46d8E73815f10Ff055049D3916", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xaa61d5dec73971cd4a026ef2820bb87b4a4ed8d6" + } + }, + { + "chainId": 137, + "name": "Wallstreetbets", + "symbol": "WSB", + "decimals": 18, + "address": "0x4CB9050EA02395a8941715ceeffe0cDf60c59f07", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x8DF586aa346c3d9d1c99A21316A2735d71355eC8" + } + }, + { + "chainId": 137, + "name": "Virtual Cash", + "symbol": "vCASH", + "decimals": 18, + "address": "0x7621eE0CE0F686b88dD70551B05F90dd3C04d6e9", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x532D7ebE4556216490c9d03460214b58e4933454" + } + }, + { + "chainId": 137, + "name": "HashRush", + "symbol": "RUSH", + "decimals": 8, + "address": "0x8e8f8DF6dcE311A011A5B09788ddA689A82d9F37", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xcfcd43d7ee21416a71c2eb9888587d52716fc77a" + } + }, + { + "chainId": 137, + "name": "Enjinstarter", + "symbol": "EJS", + "decimals": 18, + "address": "0x71A6e3D6A6629F700D1A4D79D326e2A3F74eDd5f", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x96610186F3ab8d73EBEe1CF950C750f3B1Fb79C2" + } + }, + { + "chainId": 137, + "name": "Bored Banana Token", + "symbol": "$BANANA", + "decimals": 0, + "address": "0x6393c0a63712601e3Dda577dc5Bfaf0189e89169", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xe17093967e43D37Ad615a64cb86aE11826D6e58b" + } + }, + { + "chainId": 137, + "name": "Daily COP", + "symbol": "DLYCOP", + "decimals": 18, + "address": "0x1659fFb2d40DfB1671Ac226A0D9Dcc95A774521A", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x1659fFb2d40DfB1671Ac226A0D9Dcc95A774521A" + } + }, + { + "chainId": 137, + "name": "SushiBar", + "symbol": "xSUSHI", + "decimals": 18, + "address": "0x6811079E3c63ED96Eb005384d7E7ec8810E3D521", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x8798249c2E607446EfB7Ad49eC89dD1865Ff4272" + } + }, + { + "chainId": 137, + "name": "Folder Coin", + "symbol": "FOL", + "decimals": 18, + "address": "0xA8F0634F1Ab83Bc31e4cE33905db29E36958C5cc", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xa8580f3363684d76055bdc6660caefe8709744e1" + } + }, + { + "chainId": 137, + "name": "Bollycoin", + "symbol": "BOLLY", + "decimals": 18, + "address": "0x7Dc47Cfb674bEb5827283F6140F635680A5cE992", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x6bd361e10c1afed0d95259e7C0115f3A60e4ea99" + } + }, + { + "chainId": 137, + "name": "Ojamu Token", + "symbol": "OJA", + "decimals": 18, + "address": "0x26373EC913876C9e6d38494dde458Cb8649cb30c", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x0aa7efe4945db24d95ca6e117bba65ed326e291a" + } + }, + { + "chainId": 137, + "name": "NIFTSY", + "symbol": "NIFTSY", + "decimals": 18, + "address": "0x432cdbC749FD96AA35e1dC27765b23fDCc8F5cf1", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x7728cd70b3dD86210e2bd321437F448231B81733" + } + }, + { + "chainId": 137, + "name": "Dexmex", + "symbol": "DEXM", + "decimals": 18, + "address": "0xd9C774a5BB7fdE18c3e03a59c40d7c77d0B90910", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x0020d80229877b495D2bf3269a4c13f6f1e1B9D3" + } + }, + { + "chainId": 137, + "name": "Entropy", + "symbol": "ERP", + "decimals": 18, + "address": "0x28accA4ed2F6186c3D93e20e29e6e6a9Af656341", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x0a0e3bfD5a8cE610E735D4469Bc1b3b130402267" + } + }, + { + "chainId": 137, + "name": "Nexen", + "symbol": "NXN", + "decimals": 18, + "address": "0x4E6A6cE59Ca7AA0CBc52dbD81aB2dEA89D7ECcF2", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xbec8d5c639778652dc2440da996a6bcf43f07746" + } + }, + { + "chainId": 137, + "name": "MovieBizCoin", + "symbol": "MBZ", + "decimals": 8, + "address": "0xf932A6F93432517192C71db155bE3d9C7402fbbA", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xd8b110beee01e74dba9be687fc247c550a41cffe" + } + }, + { + "chainId": 137, + "name": "Human Token", + "symbol": "HMT", + "decimals": 18, + "address": "0xc748B2A084F8eFc47E086ccdDD9b7e67aEb571BF", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xd1ba9bac957322d6e8c07a160a3a8da11a0d2867" + } + }, + { + "chainId": 137, + "name": "ethbox Token", + "symbol": "EBOX", + "decimals": 18, + "address": "0x8c48aC62F1ECd20EC72f0B1a9a3Bc33eb4B93828", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x33840024177a7daca3468912363bed8b425015c5" + } + }, + { + "chainId": 137, + "name": "OBORTECH", + "symbol": "OBOT", + "decimals": 18, + "address": "0x3522898a74959A16C43F59055392b2Fce48727d0", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xedadeb5faa413e6c8623461849dfd0b7c3790c32" + } + }, + { + "chainId": 137, + "name": "50MM", + "symbol": "50MM", + "decimals": 18, + "address": "0xE4e8056A49E35dbDe67384bEdCEE310B9693D4d6", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x3239ebFA182B04DfCA2A15ccf81AF97C024ce0e0" + } + }, + { + "chainId": 137, + "name": "Wrapped PECO", + "symbol": "PECO", + "decimals": 18, + "address": "0x13607B1ca022368c81f2f2709b181ee8e0f42dD6", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x9d3EE6B64e69Ebe12a4bF0b01D031CB80F556eE4" + } + }, + { + "chainId": 137, + "name": "MaidCoin", + "symbol": "$MAID", + "decimals": 18, + "address": "0xCf9F8BBfB65BA5F7491e61e542c72F00Ff4DACc4", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x4Af698B479D0098229DC715655c667Ceb6cd8433" + } + }, + { + "chainId": 137, + "name": "KingToken", + "symbol": "$KING", + "decimals": 18, + "address": "0xB31BAc3b0Ff9F588fD07B00859555F7970950015", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xd2057d71fe3f5b0dc1e3e7722940e1908fc72078" + } + }, + { + "chainId": 137, + "name": "MOE Token", + "symbol": "MOE", + "decimals": 18, + "address": "0x3be6601208c404a022612d06bfc8db5c88c8217c", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x6d9cf12482b14888453b63a0821b7b0e854f59a2" + } + }, + { + "chainId": 137, + "name": "Safaia Gabanansu", + "symbol": "GABA", + "decimals": 5, + "address": "0xD1e3F2FE09D92E47868F6fEb653344932bCF5091", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xc9e823929b74720990f0e3914ef718c37480494f" + } + }, + { + "chainId": 137, + "name": "Weird", + "symbol": "WEIRD", + "decimals": 18, + "address": "0xcB8BCDb991B45bF5D78000a0b5C0A6686cE43790", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xff5a1a18650fac5afa7c94a8dcb3ebf73b00ddb7" + } + }, + { + "chainId": 137, + "name": "Junø", + "symbol": "JUNO", + "decimals": 6, + "address": "0xc6bdB9dD7F33FF11EfDD3A84b2C1c99b8CC93052", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x413e8196E7D6d2C02A6BCcc46366F881017ea479" + } + }, + { + "chainId": 137, + "name": "BitCanna", + "symbol": "BCNA", + "decimals": 6, + "address": "0xbcAe3a93bFa5258fEDB78758d45E03e3C2bda3E8", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xeB5Bea778339e5F0C8D9419cf9891445af823A29" + } + }, + { + "chainId": 137, + "name": "e-Money EUR", + "symbol": "EEUR", + "decimals": 6, + "address": "0x2D27E0E31f86bd8889300E5D8148BA7b231Cf1c1", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x714bfD06Da6EB24fAc379f0d9DEBFa85261bF439" + } + }, + { + "chainId": 137, + "name": "Microtick", + "symbol": "TICK", + "decimals": 6, + "address": "0x4305fF9f3714C8bEFE7854D401c4C2e395662Db4", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xcf9902B43D01D7C6cd5c12e0c1112cc2C4FC4Ec5" + } + }, + { + "chainId": 137, + "name": "e-Money", + "symbol": "NGM", + "decimals": 6, + "address": "0xc54FF1b09Ab25B01275cD1093c2Ba311A18c00Eb", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x56667705DF047677A15D3D417A138b10B6ed62C4" + } + }, + { + "chainId": 137, + "name": "ixo", + "symbol": "IXO", + "decimals": 6, + "address": "0x4a8D681bF9FC7A32d8284B6f2d869eb1CB14A7f0", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x8Ea2645CD39D5e0C901bCA25dF8d0998a6926cf2" + } + }, + { + "chainId": 137, + "name": "Certik", + "symbol": "CTK", + "decimals": 6, + "address": "0x799a88F32EBB23aA9Ef440a7A1cb37653af74422", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x4c67B8392fC17892338d590e5AE1aB7BE485BE50" + } + }, + { + "chainId": 137, + "name": "Starname", + "symbol": "IOV", + "decimals": 6, + "address": "0x6ec60377b874782408EA493BeCCCce39347A911A", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x3dE8006B2c571eBC19a5d3a85a0940A7a9339470" + } + }, + { + "chainId": 137, + "name": "TrailerPark", + "symbol": "PARK", + "decimals": 18, + "address": "0xD6CC9119650b5591dc44a761754aFC83F259ab41", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x6a2523c3eb9159fe4321ca70c06cbc04b3732a63" + } + }, + { + "chainId": 137, + "name": "Anyswap", + "symbol": "ANY", + "decimals": 18, + "address": "0x99Cd301508Ac0020AA2D5E4572f846590C5aB3AD", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xf99d58e463a2e07e5692127302c20a191861b4d6" + } + }, + { + "chainId": 137, + "name": "PreKlima", + "symbol": "pKLIMA", + "decimals": 18, + "address": "0x0aF5deE6678869201924930D924a435F6E4839c9", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xc497b856b1b8e952521154d24f9e951b758ed84d" + } + }, + { + "chainId": 137, + "name": "WFAIR Token", + "symbol": "WFAIR", + "decimals": 18, + "address": "0xb6B5CDF74606181a1b05bfC0B9F17fC2A64B0cD5", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xC6065B9fc8171Ad3D29bad510709249681758972" + } + }, + { + "chainId": 137, + "name": "Alkemi_Network_DAO_Token", + "symbol": "ALK", + "decimals": 18, + "address": "0x3F3713030d836A0E1B774f1428c1F1f2148DaB64", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x6c16119b20fa52600230f074b349da3cb861a7e3" + } + }, + { + "chainId": 137, + "name": "Direwolftoken.com", + "symbol": "DIREWOLF", + "decimals": 2, + "address": "0x8135532bC7765818eFECF49A295FEA4262121e36", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xBdea5bB640DBFC4593809DEeC5CdB8F99b704Cd2" + } + }, + { + "chainId": 137, + "name": "CryptoQuantumTradingFund", + "symbol": "CQTF", + "decimals": 18, + "address": "0xcCBBA38E41d5428FD82cf42efE5385AEF6f80826", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x4e2721c261C056D2F7bD6F6b2388C6853D22dA78" + } + }, + { + "chainId": 137, + "name": "pTokens ORE", + "symbol": "ORE", + "decimals": 18, + "address": "0xD52f6CA48882Be8fbaa98ce390db18e1dbe1062d", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x4f640F2529ee0cF119A2881485845FA8e61A782A" + } + }, + { + "chainId": 137, + "name": "Fly Dollar", + "symbol": "FUSD", + "decimals": 18, + "address": "0x5973aC9378d0D3e982A37Cc43D480d455C19ae8a", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x2ee7d743d97173bacd150f3d06e7c4518d393918" + } + }, + { + "chainId": 137, + "name": "Witch Token", + "symbol": "WITCH", + "decimals": 18, + "address": "0x842e4B170021cE14c9c1b7859f3452a63b4f6841", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xdc524e3c6910257744c1f93cf15e9f472b5bd236" + } + }, + { + "chainId": 137, + "name": "QuiverX", + "symbol": "QRX", + "decimals": 18, + "address": "0x0cC013A6971fAF2Ec8beEe2cd6AdccA6F801a29c", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x6e0dade58d2d89ebbe7afc384e3e4f15b70b14d8" + } + }, + { + "chainId": 137, + "name": "Ino Coin", + "symbol": "INO", + "decimals": 0, + "address": "0xba19a5b5029AEa6Fe018742E6eFc5a204a58c14d", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xc9859fccC876e6b4B3C749C5D29EA04F48aCb74F" + } + }, + { + "chainId": 137, + "name": "Adaptech Design Co", + "symbol": "ADCO", + "decimals": 18, + "address": "0xd8A805447b1ce5BAE810f029dF5536A57F71b91C", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x83cc32d627C66e70C69f86f13Ad836FeA07d7407" + } + }, + { + "chainId": 137, + "name": "Pozzle Planet", + "symbol": "POZ", + "decimals": 18, + "address": "0x701fD77F1B00547BE745957Ddf1cc92F9D088B6B", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x099945992A6678A724a64CE96B3D348259d17e45" + } + }, + { + "chainId": 137, + "name": "Orbitum", + "symbol": "ORBTM", + "decimals": 18, + "address": "0xE93C4431494B45115ea656274ea75B987f541B17", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x93ca2df0bf96936bd0b59e3ceff0162180574ebc" + } + }, + { + "chainId": 137, + "name": "ARTM", + "symbol": "ARTM", + "decimals": 18, + "address": "0xcBEA63B905d62bAd6506e2C47b1Ea00C56D8f93d", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x19ebaa7f212b09de2aee2a32d40338553c70e2e3" + } + }, + { + "chainId": 137, + "name": "FlyCoin", + "symbol": "FLY", + "decimals": 18, + "address": "0x486FFAf06A681bf22B5209e9fFCE722662A60E8C", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x4e568ab95F029E8dF1e39b30c9d6D076eaA15945" + } + }, + { + "chainId": 137, + "name": "Sekuritance", + "symbol": "SKRT", + "decimals": 18, + "address": "0xE51E88dD08499762B8e4EB3a9f3Da9b8e79608c3", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x887168120cb89fb06f3e74dc4af20d67df0977f6" + } + }, + { + "chainId": 137, + "name": "Empty Set Share", + "symbol": "ESS", + "decimals": 18, + "address": "0x5362dAf94A6bd0E9078aC3070f575861F12A2E77", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x24ae124c4cc33d6791f8e8b63520ed7107ac8b3e" + } + }, + { + "chainId": 137, + "name": "Digital Standard Unit", + "symbol": "DSU", + "decimals": 18, + "address": "0x777211c3C0b03D9fF2Aaa288a016b1a3b64DDB8C", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x605d26fbd5be761089281d5cec2ce86eea667109" + } + }, + { + "chainId": 137, + "name": "Global Digital Content", + "symbol": "GDC", + "decimals": 18, + "address": "0x2e8FaF0f7918c4914E890716E22A74E675115D52", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x301c755ba0fca00b1923768fffb3df7f4e63af31" + } + }, + { + "chainId": 137, + "name": "Eliot", + "symbol": "ELIOT", + "decimals": 18, + "address": "0xB83a45Bbb5699ae47B39c32B20A145b28B446fCa", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xf17E3bD04465f2b60aB31A42414fB7474E52D62D" + } + }, + { + "chainId": 137, + "name": "Goji", + "symbol": "GOJ", + "decimals": 10, + "address": "0x3Ee21b6d44a3879EeF12084423B4C7a9A286D00D", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xec4a1c7a4e9fdc7cc621b548a931c92bc08a679a" + } + }, + { + "chainId": 137, + "name": "Mia Neko", + "symbol": "MIA", + "decimals": 10, + "address": "0x424EB54e29868E15e44FdA6BD17F55D1Ac5EcFb5", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x8d52061af43c52204c717d0610ea8f52f955ce0b" + } + }, + { + "chainId": 137, + "name": "Fair Trader", + "symbol": "FTP", + "decimals": 18, + "address": "0x8AC24ae89cd33BA285A65d3A7039de3B23C9f83e", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x6B71cDc52B6B5e007E9e018D65B233AbeD8589C7" + } + }, + { + "chainId": 137, + "name": "GTS Coin", + "symbol": "GTS", + "decimals": 18, + "address": "0xa6BE18a7870D464c97c76a457d965CB74bE0dB3f", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xebD8af559699136EF01c3f06fdD1131Fd64EFA87" + } + }, + { + "chainId": 137, + "name": "PureFi Token", + "symbol": "UFI", + "decimals": 18, + "address": "0x3c205C8B3e02421Da82064646788c82f7bd753B9", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xcDa4e840411C00a614aD9205CAEC807c7458a0E3" + } + }, + { + "chainId": 137, + "name": "UnirisToken", + "symbol": "UCO", + "decimals": 18, + "address": "0x3C720206bFaCB2d16fA3ac0ed87D2048Dbc401Fc", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x8a3d77e9d6968b780564936d15b09805827c21fa" + } + }, + { + "chainId": 137, + "name": "BlockTV", + "symbol": "BLTV", + "decimals": 18, + "address": "0x2C1084a041B976b96B769d1C250562864317c1Aa", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xe08854b668958657064fa20f309F6BA7a19D5Af2" + } + }, + { + "chainId": 137, + "name": "AurusGOLD", + "symbol": "AWG", + "decimals": 18, + "address": "0xAEe0ffb690B37449B7f1C49B199E1E3ec6084490", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x696acc2de564b48682d71d0847b3632f87c9a402" + } + }, + { + "chainId": 137, + "name": "XMANNA TOKEN", + "symbol": "XMAN", + "decimals": 18, + "address": "0x6db9dd7342e9aE835Ed498d141A85970813F1E9c", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x9Fff5F700196269079cA4dAbC9Ff7319346e6DbF" + } + }, + { + "chainId": 137, + "name": "Web4", + "symbol": "WEB4", + "decimals": 18, + "address": "0x362d55939b3b914BDAe5992F7e80FA03d4Df2B15", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x75239ba45ccd3ec2e25f1b44e7e56f2edf0f80a8" + } + }, + { + "chainId": 137, + "name": "Rentible", + "symbol": "RNB", + "decimals": 18, + "address": "0x4D53d5CF63ed51DDA047B363F3a6F62677d37613", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x2a039b1d9bbdccbb91be28691b730ca893e5e743" + } + }, + { + "chainId": 137, + "name": "VectorspaceAI", + "symbol": "VXV", + "decimals": 18, + "address": "0x5DecD638E9E6C7b3533Ef40788094b5e6231826a", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x7D29A64504629172a429e64183D6673b9dAcbFCe" + } + }, + { + "chainId": 137, + "name": "ACY", + "symbol": "ACY", + "decimals": 18, + "address": "0x8b1f836491903743fE51ACd13f2CC8Ab95b270f6", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xaf9db9e362e306688af48c4acb9618c06db38ac3" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/acy.svg" + }, + { + "chainId": 137, + "name": "Strong", + "symbol": "STRONG", + "decimals": 18, + "address": "0xf4487f1FF4f7e38c640AeA91d7bb47AeA98c09a7", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x990f341946a3fdb507ae7e52d17851b87168017c" + } + }, + { + "chainId": 137, + "name": "Olympus", + "symbol": "OHM", + "decimals": 9, + "address": "0xfA49101D56734aF877AA312a6a40f634d4E3729d", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x383518188c0c6d7730d91b2c03a03c837814a899" + } + }, + { + "chainId": 137, + "name": "Hue", + "symbol": "HUE", + "decimals": 4, + "address": "0xd9Cc6BC0569c22a16d804B46e6774611A93dD90B", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xdcfe18bc46f5a0cd0d3af0c2155d2bcb5ade2fc5" + } + }, + { + "chainId": 137, + "name": "SRSC Chiz Token", + "symbol": "CHIZ", + "decimals": 18, + "address": "0x383180a2f52c8F2C67a5a10e2f0752276274E442", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x5c761c1a21637362374204000e383204d347064c" + } + }, + { + "chainId": 137, + "name": "Gian Ferrer", + "symbol": "GIAN", + "decimals": 18, + "address": "0x8527aBEf4EDE978af2B753543f8864EC85FD55c6", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xC48752b8e1DC43F9d70504099b5C17c4380Ac605" + } + }, + { + "chainId": 137, + "name": "AlchemistKlima", + "symbol": "alKLIMA", + "decimals": 18, + "address": "0xd50EC6360f560a59926216Eafb98395AC430C9fD", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x0f92565e9ba96918b2db48537616dd9d0b09502b" + } + }, + { + "chainId": 137, + "name": "GGToken", + "symbol": "GGTK", + "decimals": 18, + "address": "0x49B1bE61A8Ca3f9A9F178d6550e41E00D9162159", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xfa99a87b14b02e2240c79240c5a20f945ca5ef76" + } + }, + { + "chainId": 137, + "name": "Compound USD Coin", + "symbol": "cUSDC", + "decimals": 8, + "address": "0xd871B40646E1a6dbDED6290B6B696459a69C68A0", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x39AA39c021dfbaE8faC545936693aC917d5E7563" + } + }, + { + "chainId": 137, + "name": "Harrison First", + "symbol": "FIRST", + "decimals": 4, + "address": "0x25B3A129907B675E19cE6Dd3F2A6db50023eCF80", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x9903A4Cd589DA8e434f264deAFc406836418578E" + } + }, + { + "chainId": 137, + "name": "AurusDeFi", + "symbol": "AWX", + "decimals": 18, + "address": "0x56a0efefc9f1fbb54fbd25629ac2aa764f1b56f7", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xa51fc71422a30fa7ffa605b360c3b283501b5bf6" + } + }, + { + "chainId": 137, + "name": "Dogira", + "symbol": "DOGIRA", + "decimals": 9, + "address": "0x23274CD85642068B22EbF61Ff64402CF4252c7f5", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xD8C1232FcD219286E341271385bd70601503B3D7" + } + }, + { + "chainId": 137, + "name": "FastArgmag20L1N", + "symbol": "FastArgmag20L1S", + "decimals": 18, + "address": "0xc9b7Bc25AaA5D2a26e508eb0cB0b3AF08a4cA6F8", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xA494e64fe7a4E329C23aD961ad16dF983e322c62" + } + }, + { + "chainId": 137, + "name": "vEmpire Gamer Token", + "symbol": "VEMP", + "decimals": 18, + "address": "0x7Fb7DdB3a3ec90e1c7A3E58Ff6670DA82F73c1cF", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xcfeb09c3c5f0f78ad72166d55f9e6e9a60e96eec" + } + }, + { + "chainId": 137, + "name": "RevolutionPopuli ERC20 Token", + "symbol": "RVP", + "decimals": 18, + "address": "0x120cA63f5F79B6760324B1ddE6BeA4C7F01FBa0E", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x17ef75aa22dd5f6c2763b8304ab24f40ee54d48a" + } + }, + { + "chainId": 137, + "name": "Argmag20L1Name", + "symbol": "Argmag20L1Sym", + "decimals": 18, + "address": "0x1fB39C88Df91c9fDB83D0e8761c8D2D2A4Ab5335", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x7235a194451B9cb6D7c2F1E4ED3976C2aDAe7E22" + } + }, + { + "chainId": 137, + "name": "+Blockchain Cuties Universe Governance Token", + "symbol": "BCUG", + "decimals": 18, + "address": "0xbd3859443377e0882dc58812E1f7C9EE057B64Be", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x14da7b27b2e0fedefe0a664118b0c9bc68e2e9af" + } + }, + { + "chainId": 137, + "name": "LGCY Network", + "symbol": "LGCY", + "decimals": 18, + "address": "0x834dfb4Df4425BDeC02F2A1CAFdf0cc39c3c0A59", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xae697f994fc5ebc000f8e22ebffee04612f98a0d" + } + }, + { + "chainId": 137, + "name": "LeftHouse", + "symbol": "LEFT", + "decimals": 4, + "address": "0xeB4a74e9882273B7D9d985098d7b7C7512001c31", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x4804FB55e75BD1c32aB06CD053C5510c1b80Fd26" + } + }, + { + "chainId": 137, + "name": "THEOS", + "symbol": "THEOS", + "decimals": 18, + "address": "0xDb982a636807B3ACD9FD28a99410B68c2159Fb32", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x9e10f61749c4952c320412a6b26901605ff6da1d" + } + }, + { + "chainId": 137, + "name": "Continuum", + "symbol": "UM", + "decimals": 18, + "address": "0x3B1A0c9252ee7403093fF55b4a5886d49a3d837a", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xb19Dd661F076998e3B0456935092a233e12C2280" + } + }, + { + "chainId": 137, + "name": "AlphaKlima", + "symbol": "aKLIMA", + "decimals": 18, + "address": "0xEb935614447185eeea0aBC756Ff2ddC99FBB9047", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x6b4d5e9ec2aceA23D4110F4803Da99E25443c5Df" + } + }, + { + "chainId": 137, + "name": "Quant", + "symbol": "QNT", + "decimals": 18, + "address": "0x36B77a184bE8ee56f5E81C56727B20647A42e28E", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x4a220e6096b25eadb88358cb44068a3248254675" + } + }, + { + "chainId": 137, + "name": "AqarChain", + "symbol": "AQR", + "decimals": 18, + "address": "0x7467afa7C48132e8f8C90A919fC2ebA041207195", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x7467afa7C48132e8f8C90A919fC2ebA041207195" + } + }, + { + "chainId": 137, + "name": "Scam Inu", + "symbol": "SINU", + "decimals": 18, + "address": "0xe99eF864CC6035a68e6eb4A813FbC6c034277cAc", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xDB6F6C8b940110617cf66E50c271E2278c8a32Df" + } + }, + { + "chainId": 137, + "name": "NFTicket Token", + "symbol": "NTT", + "decimals": 18, + "address": "0x8B0180f2101c8260d49339abfEe87927412494B4", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x023ecaebc57fae26579ae395dcd431d63c072339" + } + }, + { + "chainId": 137, + "name": "Ripio Coin", + "symbol": "RPC", + "decimals": 18, + "address": "0xe1e516Ed179E8f448f5ebD5eca4F2A892368b78b", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xEd025A9Fe4b30bcd68460BCA42583090c2266468" + } + }, + { + "chainId": 137, + "name": "DIGITAL FITNESS", + "symbol": "DEFIT", + "decimals": 18, + "address": "0xb070d0166A4CE2D47d8af1178847886aA240895D", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x84cffa78B2fBbeeC8c37391d2B12A04d2030845e" + } + }, + { + "chainId": 137, + "name": "IMPULSEVEN", + "symbol": "i7", + "decimals": 18, + "address": "0xF8d7195eEB28c7449f7ef8557fF9A4Da86da0c64", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x560cC7De81B2A594F6518713cBE122bCF297A6E8" + } + }, + { + "chainId": 137, + "name": "NEUY", + "symbol": "NEUY", + "decimals": 18, + "address": "0x62a872d9977Db171d9e213A5dc2b782e72ca0033", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xa80505c408C4DEFD9522981cD77e026f5a49FE63" + } + }, + { + "chainId": 137, + "name": "HoboNickels", + "symbol": "HOBO", + "decimals": 8, + "address": "0x36FF415d0BcEdF976d60E85c72E01D19230FBd29", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x6Ee2AbfBF98D85c7090B5459103334a3638649c4" + } + }, + { + "chainId": 137, + "name": "Seed Of The Universe", + "symbol": "SOTU", + "decimals": 18, + "address": "0xb89FB010b3a409929E5e4a99F7cd0BEec18e0bC4", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xa91c82b6933105c23298e631a0c1be751d239162" + } + }, + { + "chainId": 137, + "name": "Tuschay Coin", + "symbol": "TSHY", + "decimals": 18, + "address": "0xD8f9a909649BA317175A4f2F5416958Af64a0BFC", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xCa9FEEb9f20F0c61a2e2c5C24897BD0206dD899A" + } + }, + { + "chainId": 137, + "name": "Mobius Token", + "symbol": "MOT", + "decimals": 18, + "address": "0x2db0Db271a10661e7090b6758350E18F6798a49D", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x1E02cdbbA6729B6470de81Ad4D2cCA4c514521b9" + } + }, + { + "chainId": 137, + "name": "UNIC", + "symbol": "UNIC", + "decimals": 18, + "address": "0x21CE5251d47AA72d2d1dc849b1Bcce14d2467D1b", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x94e0bab2f6ab1f19f4750e42d7349f2740513ad5" + } + }, + { + "chainId": 137, + "name": "Amun Wrapped Weth", + "symbol": "AWW", + "decimals": 18, + "address": "0x229F692adA2f4405789D5AEEac832877e4C0750E", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x229F692adA2f4405789D5AEEac832877e4C0750E" + } + }, + { + "chainId": 137, + "name": "EMotiveToken", + "symbol": "EMOT", + "decimals": 18, + "address": "0x23DB3a5dF58eb5EB74b79fF1c64Cf200B07De5ee", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x176b7f05b31ee23cea1c934ed68bc0c3dff43f46" + } + }, + { + "chainId": 137, + "name": "CRYPTOPUNT Token", + "symbol": "PUN", + "decimals": 18, + "address": "0x908435624Fc23130fDA2d07b10C91cA2B6A57abA", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x31903E333809897eE57Af57567f4377a1a78756c" + } + }, + { + "chainId": 137, + "name": "Cashpayz Token", + "symbol": "CPC", + "decimals": 8, + "address": "0xe0B4Af6c2E9cb2E43DFe5A357a00CED16da4547b", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x28ea81fac7b1719138cbf61267198155b433e00e" + } + }, + { + "chainId": 137, + "name": "ChilliTest Token", + "symbol": "CHLITEST", + "decimals": 18, + "address": "0x8c7f28BD18ee3BBe766b2036c9E8A8357B07CACa", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x8c7f28bd18ee3bbe766b2036c9e8a8357b07caca" + } + }, + { + "chainId": 137, + "name": "RADIAN", + "symbol": "RADI", + "decimals": 18, + "address": "0x57a0E527611Bcd7e466407a621ce02Bf923C0d15", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x8cd0bdeef4a97f788fa8cb5d21185ae10c74dcfa" + } + }, + { + "chainId": 137, + "name": "BITE POINT", + "symbol": "BITEPT", + "decimals": 18, + "address": "0x5c1A50c4Cd26AD2a3A156c2F4B1A8826E7f3a4e0", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x1a31c79C54214537cd893A572314996bB6fe472C" + } + }, + { + "chainId": 137, + "name": "Floki Kishu Inu", + "symbol": "FLOKII", + "decimals": 9, + "address": "0x3EcE64186c05f47e41657ccBf3F9419F76505377", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xFf4DB8E71a8e2655e9295C2C817aC86e65767db1" + } + }, + { + "chainId": 137, + "name": "Etherlands Playtest Token", + "symbol": "HOAP", + "decimals": 18, + "address": "0x9e416F2FCE870b8eDd91fc23C9280A77f4c4A928", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x7d60fc2f2219537c2605b827fb08f00d8ead44ae" + } + }, + { + "chainId": 137, + "name": "IRISnet", + "symbol": "IRIS", + "decimals": 6, + "address": "0x3dc6052a693E4a2fc28Eb2Ea12fe0CfD3BD221D1", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x76C4A2B59523eaE19594c630aAb43288dBB1463f" + } + }, + { + "chainId": 137, + "name": "Persistence", + "symbol": "XPRT", + "decimals": 6, + "address": "0xb3b9c016AD1E9f7EFdAE451b04EF696e05658b32", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xae837EacBAE2a6bA166ce0DEd5C72340f212835c" + } + }, + { + "chainId": 137, + "name": "HARD Protocol", + "symbol": "HARD", + "decimals": 6, + "address": "0x8bdC1239840D4a0DB234F2E7D65dF83164D18e49", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x1C700F95Df53fc31e83D89AC89e5DD778D4cD310" + } + }, + { + "chainId": 137, + "name": "Osmosis", + "symbol": "OSMO", + "decimals": 6, + "address": "0x8C7a56F2F2fD97DA0f5b4FAde180Fa8DC3fbEa8D", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x93A62Ccfcf1EfCB5f60317981F71ed6Fb39F4BA2" + } + }, + { + "chainId": 137, + "name": "Regen Network", + "symbol": "REGEN", + "decimals": 6, + "address": "0xEc482De9569a5EA3Dd9779039b79e53F15791fDE", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xeEE10b3736d5978924f392ED67497cfAE795128B" + } + }, + { + "chainId": 137, + "name": "Ion", + "symbol": "ION", + "decimals": 6, + "address": "0x68b741416153bBf5CB4FaEe0aA447f918fE5C322", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xee59B43149CEAD680aedF8778163ce8CB8c8A6fB" + } + }, + { + "chainId": 137, + "name": "Kava.io", + "symbol": "KAVA", + "decimals": 6, + "address": "0x87D32F2C0A3D6D091772890C81E321026454a125", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x0C356B7fD36a5357E5A017EF11887ba100C9AB76" + } + }, + { + "chainId": 137, + "name": "Polybius Token", + "symbol": "PLBT", + "decimals": 6, + "address": "0x65885a2Aa8888d2891246B9d811b0a8E15d75d48", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x0affa06e7fbe5bc9a764c979aa66e8256a631f02" + } + }, + { + "chainId": 137, + "name": "10Set Token", + "symbol": "10SET", + "decimals": 18, + "address": "0x602C6690A6cb2D2Fce95AD50Fe81d731dF0AD6ed", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x7FF4169a6B5122b664c51c95727d87750eC07c84" + } + }, + { + "chainId": 137, + "name": "CHARLI3", + "symbol": "C3", + "decimals": 18, + "address": "0xc73594aA7593182a516331e712fEA2d8C49FF8DD", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xf1a91c7d44768070f711c68f33a7ca25c8d30268" + } + }, + { + "chainId": 137, + "name": "GeroWallet", + "symbol": "GERO", + "decimals": 18, + "address": "0x99aB67C6D0b9BF4201cd9AAd66F84F5F524e0018", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x3431f91b3a388115f00c5ba9fdb899851d005fb5" + } + }, + { + "chainId": 137, + "name": "Zks", + "symbol": "ZKS", + "decimals": 18, + "address": "0x70B7B259001c1aF1583fc466C27f49105f38fbFd", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xe4815ae53b124e7263f08dcdbbb757d41ed658c6" + } + }, + { + "chainId": 137, + "name": "Zero.Exchange Token", + "symbol": "ZERO", + "decimals": 18, + "address": "0x96fEbBC05Bb00F83bb5A3F20DD97940454EC3b7d", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xf0939011a9bb95c3b791f0cb546377ed2693a574" + } + }, + { + "chainId": 137, + "name": "SmartKey", + "symbol": "Skey", + "decimals": 8, + "address": "0x2B642B8289780cA28ec283f2ab1932436d82AC02", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x06a01a4d579479dd5d884ebf61a31727a3d8d442" + } + }, + { + "chainId": 137, + "name": "Hanu Yokia", + "symbol": "HANU", + "decimals": 12, + "address": "0x709A4B6217584188DDb93c82f5d716D969accE1C", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x72e5390edb7727e3d4e3436451dadaff675dbcc0" + } + }, + { + "chainId": 137, + "name": "Cosmos", + "symbol": "ATOM", + "decimals": 6, + "address": "0xac51C4c48Dc3116487eD4BC16542e27B5694Da1b", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x8D983cb9388EaC77af0474fA441C4815500Cb7BB" + } + }, + { + "chainId": 137, + "name": "wLitiCapital", + "symbol": "wLITI", + "decimals": 18, + "address": "0x3674fFe94d5a306DdA2CDcdC0D735561E4E79bC8", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x0b63128c40737b13647552e0c926bcfeccc35f93" + } + }, + { + "chainId": 137, + "name": "XEND", + "symbol": "XEND", + "decimals": 18, + "address": "0x4A2B3c1527cf704D959390c0063FcF2A9E2bD9c1", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xE4CFE9eAa8Cdb0942A80B7bC68fD8Ab0F6D44903" + } + }, + { + "chainId": 137, + "name": "Andy Coin", + "symbol": "ANDY", + "decimals": 18, + "address": "0xcB816bEdd44D1d04870d4A171A2CD93903356960", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x1465140fac1cf3760093f1ea2c78289f6b0e432f" + } + }, + { + "chainId": 137, + "name": "The Doge NFT", + "symbol": "DOG", + "decimals": 18, + "address": "0x4d7d6e43ED36298Bfe287711a48c1018D87f272c", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xBAac2B4491727D78D2b78815144570b9f2Fe8899" + } + }, + { + "chainId": 137, + "name": "The 4th Pillar Token", + "symbol": "FOUR", + "decimals": 18, + "address": "0x48cBc913dE09317dF2365e6827Df50dA083701D5", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x4730fb1463a6f1f44aeb45f6c5c422427f37f4d0" + } + }, + { + "chainId": 137, + "name": "USDP Stablecoin", + "symbol": "USDP", + "decimals": 18, + "address": "0xD778beF166D19548799E5f4A5D6354b22883563d", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x1456688345527be1f37e9e627da0837d6f08c925" + } + }, + { + "chainId": 137, + "name": "Proxy", + "symbol": "PRXY", + "decimals": 18, + "address": "0x1441729568ab2A9871677edfeb13fBFCc7157a26", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x22acaee85ddb83a3a33b7f0928a0e2c3bfdb6a4f" + } + }, + { + "chainId": 137, + "name": "Wolves Of Wall Street", + "symbol": "WOWS", + "decimals": 18, + "address": "0x9661c0614A80319c8Be0FF360079902350aD547D", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x672EF7E4Fe230B5cA1466C5fDD40588d30FdF90a" + } + }, + { + "chainId": 137, + "name": "ZKCHAOS", + "symbol": "CHAOS", + "decimals": 18, + "address": "0x6B3C5075c01771d6E083D150212b3653030D4da4", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xb53de031602cd825febe9f2eedf962cd8cc3805d" + } + }, + { + "chainId": 137, + "name": "\"Silicon Valley Entrepreneurs Token", + "symbol": "SVET", + "decimals": 18, + "address": "0xF5499D8714e55DCf4E84C861cA1C8358e7E69cBA", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x434CE605FC30C456c178B5B5842e54fE7C023633" + } + }, + { + "chainId": 137, + "name": "VENT", + "symbol": "VENT", + "decimals": 18, + "address": "0xd116d8EA4dE1225D3F903FdA43493E93eb4b1D54", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x5f0bc16d50f72d10b719dbf6845de2e599eb5624" + } + }, + { + "chainId": 137, + "name": "+Wrapped Smart Advertising Transaction Token", + "symbol": "WSATT", + "decimals": 18, + "address": "0x4B6D775B7EA8E66499CB80777E65B895474f5C86", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x70A6395650b47D94A77dE4cFEDF9629f6922e645" + } + }, + { + "chainId": 137, + "name": "xIMX", + "symbol": "Staked IMX", + "decimals": 18, + "address": "0xfF52775dE813D060aA5854657055fB19b3a3DDa5", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x363B2DEaC84F0100d63C7427335F8350f596bf59" + } + }, + { + "chainId": 137, + "name": "MileShare", + "symbol": "MILE", + "decimals": 18, + "address": "0xBbc8cCC5d47E9EFfC15F0c71A4e0eE8046546385", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x925d53524783fA6883dE2FABCCB1eC466ee4E20b" + } + }, + { + "chainId": 137, + "name": "Torum", + "symbol": "XTM", + "decimals": 18, + "address": "0xE1C42BE9699Ff4E11674819c1885D43Bd92E9D15", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xCd1fAFf6e578Fa5cAC469d2418C95671bA1a62Fe" + } + }, + { + "chainId": 137, + "name": "Hypersign Identity Token", + "symbol": "HID", + "decimals": 18, + "address": "0x87847703D4bb4FCD42DB887FfdcB94496e77e3ab", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xb14ebf566511b9e6002bb286016ab2497b9b9c9d" + } + }, + { + "chainId": 137, + "name": "Dorayaki", + "symbol": "DORA", + "decimals": 18, + "address": "0x66147c74ABf6323A22C33e039DC761c07Df05878", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xbc4171f45ef0ef66e76f979df021a34b46dcc81d" + } + }, + { + "chainId": 137, + "name": "UniArts Network Token", + "symbol": "UART", + "decimals": 12, + "address": "0xf244E91A46A9cdd48da295cA5d0B27894f8032B1", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x507BDe03A87a6aA134d16634545E3D79c11c137D" + } + }, + { + "chainId": 137, + "name": "Dugg", + "symbol": "DUGG", + "decimals": 18, + "address": "0x4e0dD84d8D5CBd7753407D82824a344CE380fCDe", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x20ba4069294db3429d249fc4bc59b25b860a9ad1" + } + }, + { + "chainId": 137, + "name": "Polinate", + "symbol": "POLI", + "decimals": 18, + "address": "0x6fb54Ffe60386aC33b722be13d2549dd87BF63AF", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xa1a36D3537bBe375Cc9694795F663DDC8D516Db9" + } + }, + { + "chainId": 137, + "name": "Lionverse Juice", + "symbol": "LVJ", + "decimals": 18, + "address": "0x42f2fcb9A26ac8cDd3E96e51b89134c3d4Dc509f", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x87cdbe3c31F2A9E1c506DC2F827A02472A0660cE" + } + }, + { + "chainId": 137, + "name": "Snook", + "symbol": "SNK", + "decimals": 18, + "address": "0x689f8e5913C158fFB5Ac5aeb83b3C875F5d20309", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xF9a3b62C2c9faD5aEC118c706323cED3242c9551" + } + }, + { + "chainId": 137, + "name": "Pinkslip Finance", + "symbol": "PSLIP", + "decimals": 18, + "address": "0xdC92de2CDbE69FEA9B1E4939D934f7F5195Bb1c9", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x36ce7a52cda404b8fa87a98d0d17ec7dd0b144ed" + } + }, + { + "chainId": 137, + "name": "Adventure Gold", + "symbol": "AGLD", + "decimals": 18, + "address": "0x6a6bD53d677F8632631662C48bD47b1D4D6524ee", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x32353a6c91143bfd6c7d363b546e62a9a2489a20" + } + }, + { + "chainId": 137, + "name": "IPv6Token.com", + "symbol": "IPV6", + "decimals": 18, + "address": "0x06a0462e6b25793f306828C20033a7DB6E926394", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xf44217cadef3316e01c5d7b2a2401b5b7ab82e8b" + } + }, + { + "chainId": 137, + "name": "Wrapped Ether IOU", + "symbol": "iWETH", + "decimals": 18, + "address": "0x3DA47Ba3528FDcA867b94496027c65d504eef8e6", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x3DA47Ba3528FDcA867b94496027c65d504eef8e6" + } + }, + { + "chainId": 137, + "name": "Page", + "symbol": "PAGE", + "decimals": 8, + "address": "0x9ceE70895726B0ea14E6019C961dAf32222a7C2f", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x60e683c6514edd5f758a55b6f393bebbafaa8d5e" + } + }, + { + "chainId": 137, + "name": "dotmoovs", + "symbol": "MOOV", + "decimals": 18, + "address": "0xe46F5128B933e5A6F907Fe73EcE80059c222DB0A", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x24ec2ca132abf8f6f8a6e24a1b97943e31f256a7" + } + }, + { + "chainId": 137, + "name": "MCF token", + "symbol": "MCF", + "decimals": 10, + "address": "0x15E5C5C8CeFa0AafebeF55B1A43Db5d2c9A4B6AE", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xe33ae4e795114279721047484e5ad5cc7df24fcb" + } + }, + { + "chainId": 137, + "name": "DOGZ", + "symbol": "DOGZ", + "decimals": 18, + "address": "0x29198A281fe6ED6a49AbE32A5d6864aDcCD7E89e", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x82A77710495A35549D2aDD797412b4a4497D33eF" + } + }, + { + "chainId": 137, + "name": "PIGX", + "symbol": "PIGX", + "decimals": 18, + "address": "0x0eF2603Cd156E1934E19D0B07Cd64F415e1E7940", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x47e820df943170b0e31f9e18ecd5bdd67b77ff1f" + } + }, + { + "chainId": 137, + "name": "Z.com USD", + "symbol": "ZUSD", + "decimals": 6, + "address": "0x83a3b215b256df3f2Bc97DD0Fe1Fe32aF0d66D19", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xc56c2b7e71B54d38Aab6d52E94a04Cbfa8F604fA" + } + }, + { + "chainId": 137, + "name": "GMO JPY", + "symbol": "GYEN", + "decimals": 6, + "address": "0x482bc619eE7662759CDc0685B4E78f464Da39C73", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xC08512927D12348F6620a698105e1BAac6EcD911" + } + }, + { + "chainId": 137, + "name": "indaHash Coin", + "symbol": "IDH", + "decimals": 6, + "address": "0x95a54B74a4891A7f41f7f72f3713e1764eEFCd4B", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x5136c98a80811c3f46bdda8b5c4555cfd9f812f0" + } + }, + { + "chainId": 137, + "name": "Knit Finance", + "symbol": "KFT", + "decimals": 18, + "address": "0xdf6843eeAEC6213625bC85E6E2C3AEa0782a9748", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xEF53462838000184F35f7D991452e5f25110b207" + } + }, + { + "chainId": 137, + "name": "Neonious Token", + "symbol": "MDSIM", + "decimals": 18, + "address": "0xE454034b75Bb9D017f21228e61b9Ddbc889623C0", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xda48c42517affb3bf3fc13ce26561092e1a61a80" + } + }, + { + "chainId": 137, + "name": "DaTa eXchange Token", + "symbol": "DTX", + "decimals": 18, + "address": "0x3f717919deF69f81d17b80839bf8af35697ccbFa", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x765f0c16d1ddc279295c1a7c24b0883f62d33f75" + } + }, + { + "chainId": 137, + "name": "BITTOKEN", + "symbol": "BITT", + "decimals": 18, + "address": "0xfd0cbdDec28a93bB86B9db4A62258F5EF25fEfdE", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x9F9913853f749b3fE6D6D4e16a1Cc3C1656B6D51" + } + }, + { + "chainId": 137, + "name": "Shine", + "symbol": "SHN", + "decimals": 18, + "address": "0x53D76f967De13E7F95e90196438DCe695eCFA957", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x1C7ede23b1361acC098A1e357C9085D131b34a01" + } + }, + { + "chainId": 137, + "name": "PolkaBridge", + "symbol": "PBR", + "decimals": 18, + "address": "0x0D6ae2a429df13e44A07Cd2969E085e4833f64A0", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x298d492e8c1d909d3f63bc4a36c66c64acb3d695" + } + }, + { + "chainId": 137, + "name": "TknERC721Name", + "symbol": "TknERC721Sym", + "decimals": 18, + "address": "0x3b82319eF9e45c16621CC6F6b588324f5719a882", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x2e16ba24F298dC205aC58791e0dab4141E79f3D4" + } + }, + { + "chainId": 137, + "name": "ELDORADO TOKEN", + "symbol": "ERD", + "decimals": 2, + "address": "0x2df2DC62Cc1dFAc66867524942E83439D558D8b9", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x12dc767728105aa415dd720dfbd0ea1d85841172" + } + }, + { + "chainId": 137, + "name": "CelerToken", + "symbol": "CELR", + "decimals": 18, + "address": "0x91a4635F620766145C099E15889Bd2766906A559", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x4f9254c83eb525f9fcf346490bbb3ed28a81c667" + } + }, + { + "chainId": 137, + "name": "TORG", + "symbol": "TORG", + "decimals": 18, + "address": "0xe9993763E0B7f7d915A62A5f22A6E151F91d98A8", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xcfa0885131f602d11d4da248d2c65a62063567a9" + } + }, + { + "chainId": 137, + "name": "THE TRUTH", + "symbol": "UFO", + "decimals": 18, + "address": "0x57194feaca970A4E98A19C365FE144fB54F657DB", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x249e38ea4102d0cf8264d3701f1a0e39c4f2dc3b" + } + }, + { + "chainId": 137, + "name": "Float Protocol: FLOAT", + "symbol": "FLOAT", + "decimals": 18, + "address": "0xF0Ae1EFdE60BAb0a830673747138F12367858e8D", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xb05097849bca421a3f51b249ba6cca4af4b97cb9" + } + }, + { + "chainId": 137, + "name": "Wrapped Navcoin", + "symbol": "WNAV", + "decimals": 8, + "address": "0x1a6872038B633Bc9EbD2ea36df3f81eAcd9b8823", + "logoURI": "https://navcoin.org/images/nav-logo-border.svg", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x75571a52de30e2d7160af134798acfb80cc9c0be" + } + }, + { + "chainId": 137, + "name": "Party Of The Living Dead", + "symbol": "DEAD", + "decimals": 18, + "address": "0xeEEdf2960cdDA52cf2a5B3477B171B9F8b13d700", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x0c7060bf06a78aaaab3fac76941318a52a3f4613" + } + }, + { + "chainId": 137, + "name": "VERA", + "symbol": "VRA", + "decimals": 18, + "address": "0x0769C9a377a285DBCb5a66326fA90aE330E5F6D3", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xf411903cbc70a74d22900a5de66a2dda66507255" + } + }, + { + "chainId": 137, + "name": "Drops Ownership Power", + "symbol": "DOP", + "decimals": 18, + "address": "0x4f2b262AC2D30e88371ddf45690F0C10e9c7807E", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x6bB61215298F296C55b19Ad842D3Df69021DA2ef" + } + }, + { + "chainId": 137, + "name": "NFTMart Token", + "symbol": "NMT", + "decimals": 18, + "address": "0xCC12201E4b21B2ad0071b729F2dCC2f1E95977C5", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xd81b71cbb89b2800cdb000aa277dc1491dc923c3" + } + }, + { + "chainId": 137, + "name": "StaFi rMATIC", + "symbol": "rMATIC", + "decimals": 18, + "address": "0x9f28e2455f9FFcFac9EBD6084853417362bc5dBb", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x3dbb00c9be5a327e25caf4f650844c5dba81e34b" + } + }, + { + "chainId": 137, + "name": "MetaFactory", + "symbol": "ROBOT", + "decimals": 18, + "address": "0x540EBA0ab20E9d77998f9a26e75079317703D76d", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xfb5453340c03db5ade474b27e68b6a9c6b2823eb" + } + }, + { + "chainId": 137, + "name": "Miguel Piedrafita", + "symbol": "MIGUEL", + "decimals": 18, + "address": "0x4B9D66B1d0343EB2f16ebc427270718b7E010f78", + "logoURI": "https://miguelpiedrafita.com/images/_site/logo.png", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x9eeab5dacad364017c400bfbf717543a0e3c35cb" + } + }, + { + "chainId": 137, + "name": "Plexus Coin", + "symbol": "PLEXUS", + "decimals": 18, + "address": "0x0B6643f87c37280f5006808Ad4766C34FBF0996C", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xcFed2d8316D794426a4699a719Bcf18cecF36787" + } + }, + { + "chainId": 137, + "name": "Unreal Governance Token", + "symbol": "UGT", + "decimals": 18, + "address": "0xBa4c54Ea2d66b904C82847A7d2357d22B857E812", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x9cf98eb8a8b28c83e8612046cf55701ce3eb0063" + } + }, + { + "chainId": 137, + "name": "Yield Guild Games Token", + "symbol": "YGG", + "decimals": 18, + "address": "0x82617aA52dddf5Ed9Bb7B370ED777b3182A30fd1", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x25f8087ead173b73d6e8b84329989a8eea16cf73" + } + }, + { + "chainId": 137, + "name": "SPANK", + "symbol": "SPANK", + "decimals": 18, + "address": "0xfc574229a88292A0dcfd957Ad31B360495403723", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x42d6622dece394b54999fbd73d108123806f6a18" + } + }, + { + "chainId": 137, + "name": "IDEAOLOGY", + "symbol": "IDEA", + "decimals": 18, + "address": "0xD290C81dC2f51Cf8eEdc8C5FEAFE35e9003A0475", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x5d3a4F62124498092Ce665f865E0b38fF6F5FbEa" + } + }, + { + "chainId": 137, + "name": "Cryptomeda", + "symbol": "TECH", + "decimals": 18, + "address": "0x6286A9e6f7e745A6D884561D88F94542d6715698", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x6286A9e6f7e745A6D884561D88F94542d6715698" + } + }, + { + "chainId": 137, + "name": "Metis Token", + "symbol": "Metis", + "decimals": 18, + "address": "0x1B9D40715E757Bdb9bdEC3215B898E46d8a3b71a", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x9e32b13ce7f2e80a01932b42553652e053d6ed8e" + } + }, + { + "chainId": 137, + "name": "Couchain", + "symbol": "COU", + "decimals": 18, + "address": "0xB6027769f15bde8cFB29F3B14dE2e5622405Aa4C", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xf091cf09c51811819db705710e9634b8bf18f164" + } + }, + { + "chainId": 137, + "name": "Automata", + "symbol": "ATA", + "decimals": 18, + "address": "0x0df0f72EE0e5c9B7ca761ECec42754992B2Da5BF", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xa2120b9e674d3fc3875f415a7df52e382f141225" + } + }, + { + "chainId": 137, + "name": "ALICE", + "symbol": "ALICE", + "decimals": 6, + "address": "0x50858d870FAF55da2fD90FB6DF7c34b5648305C6", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xAC51066d7bEC65Dc4589368da368b212745d63E8" + } + }, + { + "chainId": 137, + "name": "Covalent Query Token", + "symbol": "CQT", + "decimals": 18, + "address": "0x93B0fF1C8828F6eB039D345Ff681eD735086d925", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xD417144312DbF50465b1C641d016962017Ef6240" + } + }, + { + "chainId": 137, + "name": "JustBet", + "symbol": "WINR", + "decimals": 18, + "address": "0x6d470424afaf9cC6476ce8A5d709B7b35F7Cc790", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x27460aac4b005de72e2326bd8391c27fb41780f8" + } + }, + { + "chainId": 137, + "name": "Pendle", + "symbol": "PENDLE", + "decimals": 18, + "address": "0x1D47e931F82bb9F8D967F0Cc3288268449835806", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x808507121b80c02388fad14726482e061b8da827" + } + }, + { + "chainId": 137, + "name": "SinCity", + "symbol": "SINS", + "decimals": 18, + "address": "0x2FAb6278BdfaEB333E4fCF99053349F4111246e5", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x59A9aD833d55783a266E098290E679cE987204da" + } + }, + { + "chainId": 137, + "name": "FREEDOMX", + "symbol": "FRDMX", + "decimals": 18, + "address": "0x3F9b2dF1e7F28E046F32aC97F6bdC2e1eEE5CB6a", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x1c8504180fcef6ce332c7736707582f661d1a019" + } + }, + { + "chainId": 137, + "name": "Tipcoin", + "symbol": "TIP", + "decimals": 18, + "address": "0x098eABED893edbA2b7a1855130F1B1fb181f132c", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x7d7df208e470a328c5768779a04ba456f1618bc4" + } + }, + { + "chainId": 137, + "name": "WheyTokenV2", + "symbol": "WHEYV2", + "decimals": 18, + "address": "0x0cfbBb89Fd58F6B49B7bF5665397ddc84003d47c", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x072cFb8233680B7B196fC8bA6E1aF76CBB5c49E6" + } + }, + { + "chainId": 137, + "name": "DAOventuresDeFi", + "symbol": "DVD", + "decimals": 18, + "address": "0xaa5eD3C460C38eB71fba089B853d0a91C0e71DD5", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x77dcE26c03a9B833fc2D7C31C22Da4f42e9d9582" + } + }, + { + "chainId": 137, + "name": "BurningDAO", + "symbol": "BURN", + "decimals": 18, + "address": "0x6562Ba24D787DBb6739786a3dF06553018Ec029F", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xfE9205D6943087B3317D5cF3D393C67d9E15Fec5" + } + }, + { + "chainId": 137, + "name": "ETH Price Action Candlestick Set", + "symbol": "ETHPA", + "decimals": 18, + "address": "0x3915905289344feDB847d4799D5422f74209Aba9", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x09e4bdfb273245063ef5e800d891eff7d04f9b83" + } + }, + { + "chainId": 137, + "name": "Alligator + Fractal Set", + "symbol": "GATOR", + "decimals": 18, + "address": "0x30dC1ebcbA423368c7Dfc0b2A5192890C7d7ce5B", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xf5c0e24aca5217bcbae662871cae1a86873f02db" + } + }, + { + "chainId": 137, + "name": "BTC RSI Crossover Yield Set", + "symbol": "BTCRSIAPY", + "decimals": 18, + "address": "0xDe08FF1Df4CB0bEfcF85E3802490CAeeF10aF60B", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x924E26fEe8E10c20726006CC2Bd307A538B0eBE5" + } + }, + { + "chainId": 137, + "name": "Chad Link Set", + "symbol": "CHADLINK", + "decimals": 18, + "address": "0x134D934Bc4C05C11e19B03342E5E01aBC4C5f27C", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x19F4a2f8E21915376F1429C26a3A9B9b1db5FF5A" + } + }, + { + "chainId": 137, + "name": "BURNS", + "symbol": "BURNING DAO", + "decimals": 18, + "address": "0x61C147570165c53Cf5e60a0B5E6A9e8791619Eb9", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x9B1Cc775292a42fBE9a224d076819B539507D029" + } + }, + { + "chainId": 137, + "name": "CryptoCat", + "symbol": "MEOW", + "decimals": 18, + "address": "0x0d7fB73C39411210088Bb76C0E0dB36816e7A951", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x68cd750e0617da0777f34a3c5e848a2471460e73" + } + }, + { + "chainId": 137, + "name": "Trace Token", + "symbol": "TRAC", + "decimals": 18, + "address": "0xA7b98d63a137bF402b4570799ac4caD0BB1c4B1c", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xaa7a9ca87d3694b5755f213b5d04094b8d0f0a6f" + } + }, + { + "chainId": 137, + "name": "Wrapped OMI Token", + "symbol": "wOMI", + "decimals": 18, + "address": "0xAAF165e75B4C9370d22b971AF08c630e76Bfa70c", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x04969cd041c0cafb6ac462bd65b536a5bdb3a670" + } + }, + { + "chainId": 137, + "name": "CFF", + "symbol": "CFF", + "decimals": 4, + "address": "0x770A1864921bAfb324810a2362f7DeF4AFeb1d53", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xe3049c12daca3e7c1ce05f2a8d3dce30860c3794" + } + }, + { + "chainId": 137, + "name": "BASENJI", + "symbol": "BSJ", + "decimals": 18, + "address": "0xF6a38Ce301700e28e0d0a3b021BaE6D4Fa1b5d1b", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x43901e05f08f48546fff8d6f8df108f60570498b" + } + }, + { + "chainId": 137, + "name": "Spell Token", + "symbol": "SPELL", + "decimals": 18, + "address": "0xcdB3C70CD25FD15307D84C4F9D37d5C043B33Fb2", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x090185f2135308bad17527004364ebcc2d37e5f6" + } + }, + { + "chainId": 137, + "name": "MatrixSwapToken", + "symbol": "MATRIX", + "decimals": 18, + "address": "0x211F4e76fcB811ed2B310A232a24B3445d95E3bC", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xc8D3DCb63C38607Cb0c9d3F55E8eccE628A01C36" + } + }, + { + "chainId": 137, + "name": "BDPToken", + "symbol": "BDP", + "decimals": 18, + "address": "0xa88Bebd0DF613eaCa1D8109A803736645a502961", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xf3dcbc6d72a4e1892f7917b7c43b74131df8480e" + } + }, + { + "chainId": 137, + "name": "I HOUSE TOKEN", + "symbol": "IHT", + "decimals": 18, + "address": "0x8a06bF3FAA72f7dcf796608d4Fd54ABb83461eC3", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xeda8b016efa8b1161208cf041cd86972eee0f31e" + } + }, + { + "chainId": 137, + "name": "Token for Television", + "symbol": "TTV", + "decimals": 18, + "address": "0xaFBb5E3873dE55dB4f2708A08A90677c7a685a6E", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xa838be6e4b760e6061d4732d6b9f11bf578f9a76" + } + }, + { + "chainId": 137, + "name": "xWIN Token from BSC", + "symbol": "XWIN", + "decimals": 18, + "address": "0xC2B6200a9ced47B12f95587f3e1E2640893a26D6", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x95d6bd26351ebc9fdb23555d2abf990cd17c6a46" + } + }, + { + "chainId": 137, + "name": "NOAH DECENTRALIZED STATE COIN", + "symbol": "NOAHP", + "decimals": 18, + "address": "0xA01749C95b876148c47A6F1FfB7Ea88C8e72903c", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x41b3F18c6384Dc9A39c33AFEcA60d9b8e61eAa9F" + } + }, + { + "chainId": 137, + "name": "BRL Coin", + "symbol": "BRLC", + "decimals": 6, + "address": "0x3aDdA29B608418Cc63385138F990A754901291e8", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x153799b3D83941B9301674f1F147506c91711c25" + } + }, + { + "chainId": 137, + "name": "Cook Token", + "symbol": "COOK", + "decimals": 18, + "address": "0x35BB0DB8210a2A6A333EF81aF92E9ebe4AAdC456", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xff75ced57419bcaebe5f05254983b013b0646ef5" + } + }, + { + "chainId": 137, + "name": "Amongus.finance", + "symbol": "AMONG", + "decimals": 18, + "address": "0xD74CE620dDF70E7c143aF75519712e8eaDA541f3", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xF841D292c1141cbF1460A1E2010916565a010cc8" + } + }, + { + "chainId": 137, + "name": "Pudgy Penguin #4815", + "symbol": "PENG4815", + "decimals": 18, + "address": "0x69377cC6f2929bd19039E88A54103FBC10BC4fA9", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x40f7b17cc65b90feda698d7c7e1572c0cbc06499" + } + }, + { + "chainId": 137, + "name": "The Crowd", + "symbol": "CROWD", + "decimals": 18, + "address": "0x7f556fcB59a27b3E0046E3EA400A425a6ad2040D", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x7ce217b011ab060196128ab86a27be7763802fbc" + } + }, + { + "chainId": 137, + "name": "Day By Day Token", + "symbol": "DBD", + "decimals": 18, + "address": "0x72b9f88e822cf08B031c2206612B025a82fb303C", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xa5f1dbb0e55bc31f32c6d032bee330288490e722" + } + }, + { + "chainId": 137, + "name": "Taraxa Coin", + "symbol": "TARA", + "decimals": 18, + "address": "0xBEd23818D193B3573CFe651792ED6AD484dCC629", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xf001937650bb4f62b57521824b2c20f5b91bea05" + } + }, + { + "chainId": 137, + "name": "Opacity", + "symbol": "OPCT", + "decimals": 18, + "address": "0xce6bF09e5c7A3E65B84F88DcC6475c88d38BA5eF", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xDb05EA0877A2622883941b939f0bb11d1ac7c400" + } + }, + { + "chainId": 137, + "name": "#Smart Advertising Transaction Token", + "symbol": "SATT", + "decimals": 18, + "address": "0xF9137CF627878a1C7e2b0EEb1e91e64BbdbcFd27", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xdf49c9f599a0a9049d97cff34d0c30e468987389" + } + }, + { + "chainId": 137, + "name": "ChartEx", + "symbol": "CHART", + "decimals": 18, + "address": "0xa09E1BF2205CDb1FBf57023258f3e731c5311b4d", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x1d37986f252d0e349522ea6c3b98cb935495e63e" + } + }, + { + "chainId": 137, + "name": "Cirus", + "symbol": "CIRUS", + "decimals": 18, + "address": "0x2a82437475A60BebD53e33997636fadE77604fc2", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xa01199c61841fce3b3dafb83fefc1899715c8756" + } + }, + { + "chainId": 137, + "name": "Ethereum Money", + "symbol": "ETHMNY", + "decimals": 2, + "address": "0x96f99063ECF25B72cEf4ed1473438AA623D27b82", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xbf4a2ddaa16148a9d0fa2093ffac450adb7cd4aa" + } + }, + { + "chainId": 137, + "name": "Presail", + "symbol": "PRESAIL", + "decimals": 18, + "address": "0x566BE1AE21A925896A7d267A80ffCA5501653F14", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x232A6D2B6ea24676209905f77d5706e395c271C1" + } + }, + { + "chainId": 137, + "name": "NFT Zoo", + "symbol": "ZOOBY", + "decimals": 18, + "address": "0x755Df36E63e6452FaB42DB97490cd09f3958A8d7", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xccddbab85426b81b6b2d5d804510aae07cb0d7e1" + } + }, + { + "chainId": 137, + "name": "bns.finance", + "symbol": "BNSD", + "decimals": 18, + "address": "0xFe457497A2A71bCE1eb93eA9e6a685057dd93dEe", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x668DbF100635f593A3847c0bDaF21f0a09380188" + } + }, + { + "chainId": 137, + "name": "BNS Token", + "symbol": "BNS", + "decimals": 8, + "address": "0x350bf84b899E3A7abC9048F28d25eaEBde8E9916", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x695106Ad73f506f9D0A9650a78019A93149AE07C" + } + }, + { + "chainId": 137, + "name": "yfii Tether USD", + "symbol": "iUSDT", + "decimals": 6, + "address": "0x6A3E4008aF5DCFc416e1B17130783dAEE13AB694", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x72cf258c852dc485a853370171d46b9d29fd3184" + } + }, + { + "chainId": 137, + "name": "DigitexFutures", + "symbol": "DGTX", + "decimals": 18, + "address": "0xE749Ea14A2D18E361eD092EbefbA64D77a8B4EaC", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xc666081073e8dff8d3d1c2292a29ae1a2153ec09" + } + }, + { + "chainId": 137, + "name": "Clover", + "symbol": "CLV", + "decimals": 6, + "address": "0x468041079d9d99c87F5a17b44Be6D6a529B5F597", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x22222c03318440305ac3e8a7820563d6a9fd777f" + } + }, + { + "chainId": 137, + "name": "AlphaToken", + "symbol": "ALPHA", + "decimals": 18, + "address": "0x3AE490db48d74B1bC626400135d4616377D0109f", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xa1faa113cbe53436df28ff0aee54275c13b40975" + } + }, + { + "chainId": 137, + "name": "Osinachi", + "symbol": "OSINA", + "decimals": 4, + "address": "0x574b21E8f0322acC3C9c31f4d291fD363867fbEe", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x39ad22c916f42af5f67371d6f2fb0dab42321a89" + } + }, + { + "chainId": 137, + "name": "Afrofuture", + "symbol": "AFTR", + "decimals": 8, + "address": "0x228a22bf6da9353Abbe37a31cf85c02dfC432456", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x56dfa98f363edb99240b63f8a5141d8b64cfaf6e" + } + }, + { + "chainId": 137, + "name": "Convex Token", + "symbol": "CVX", + "decimals": 18, + "address": "0x4257EA7637c355F81616050CbB6a9b709fd72683", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x4e3fbd56cd56c3e72c1403e103b45db9da5b9d2b" + } + }, + { + "chainId": 137, + "name": "dYdX", + "symbol": "DYDX", + "decimals": 18, + "address": "0x4C3bF0a3DE9524aF68327d1D2558a3B70d17D42a", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x92d6c1e31e14520e676a687f0a93788b716beff5" + } + }, + { + "chainId": 137, + "name": "Toshi Token", + "symbol": "TOSHI", + "decimals": 18, + "address": "0xfE31a87c001c7B0FcDF4c480621222d4FE793364", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xf136d7b0b7ae5b86d21e7b78dfa95375a7360f19" + } + }, + { + "chainId": 137, + "name": "GLOBALTRUSTFUND TOKEN", + "symbol": "GTF", + "decimals": 8, + "address": "0x8cB96E95C714E0996e6D299F617F518D965E352E", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x87befc1d367190f2b9cbe9b689e0e5ca658e3b71" + } + }, + { + "chainId": 137, + "name": "XCAD Token", + "symbol": "XCAD", + "decimals": 18, + "address": "0xA55870278d6389ec5B524553D03C04F5677c061E", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x7659ce147d0e714454073a5dd7003544234b6aa0" + } + }, + { + "chainId": 137, + "name": "AllyFocus", + "symbol": "XYR", + "decimals": 18, + "address": "0x85BD0Db4F1B8bAE55a6Dc741D332b18bFb26A13e", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x56910520988c1d3edfdeae2acbe965d819b2e26d" + } + }, + { + "chainId": 137, + "name": "ORO Token", + "symbol": "ORO", + "decimals": 18, + "address": "0x2651b9C63290E543902dA4eb63c34029382FF552", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xc3eb2622190c57429aac3901808994443b64b466" + } + }, + { + "chainId": 137, + "name": "GridZone.io", + "symbol": "ZONE", + "decimals": 18, + "address": "0x5Ab64dAAAa458d8f2019C0a3F2275FDc27e498D1", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xC1D9B5A0776d7C8B98b8A838e5a0DD1Bc5Fdd53C" + } + }, + { + "chainId": 137, + "name": "OddzToken", + "symbol": "ODDZ", + "decimals": 18, + "address": "0xC1e2ca002E03207F933d358DbDEcBaD108C4191a", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xcd2828fc4d8e8a0ede91bb38cf64b1a81de65bf6" + } + }, + { + "chainId": 137, + "name": "Epicenter Token", + "symbol": "ECR", + "decimals": 18, + "address": "0x89606fA5d084edA5E9949F7b8F750c65c609eB46", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x62De7d65739d2ac81C12CC30BBB1223c88753C23" + } + }, + { + "chainId": 137, + "name": "EtherCats.io", + "symbol": "ECAT", + "decimals": 18, + "address": "0xa1D6Cd1a37f82813Ac9852cd7E96f909cbccEa06", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x120cBc99bb2a713872C6B8d06306Ddb79c55E96f" + } + }, + { + "chainId": 137, + "name": "WIPcoin", + "symbol": "WIPC", + "decimals": 18, + "address": "0x8Cd9524406e9571EF524DBE8dFaCC7743fA72507", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xab47fbe8A0b75Baa4Ef846E99f6bB3b52007A115" + } + }, + { + "chainId": 137, + "name": "Kwikswap", + "symbol": "KWIK", + "decimals": 18, + "address": "0x8DF74088b3aeCfd0cB97BcFd053B173782f01e3A", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x286C0936c7Eaf6651099Ab5DAb9ee5A6cB5d229D" + } + }, + { + "chainId": 137, + "name": "Etherdieum", + "symbol": "ED", + "decimals": 8, + "address": "0x7Dadd73F6AE9e4cE0bA50d8818ebd8A7eC578b11", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x502d9bd338486432c3eddfd3d578e9dc9f0e6372" + } + }, + { + "chainId": 137, + "name": "HHKcoin", + "symbol": "HHK", + "decimals": 18, + "address": "0x82f735270cfcCbCbceA08141f93Ed1816B779874", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xc7b54f6d4d240aa2589d64f1e4608e614c84d60d" + } + }, + { + "chainId": 137, + "name": "GODL", + "symbol": "GODL", + "decimals": 18, + "address": "0xb233c90A0ebe7E19C30dB979B602803715cDB398", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x7f509465c38b66bdecec2cfdc842e11809cc8357" + } + }, + { + "chainId": 137, + "name": "Hot Cross Token", + "symbol": "HOTCROSS", + "decimals": 18, + "address": "0x3b737a181f7d2532cF49864f8050b3465a310593", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x4297394c20800e8a38a619a243e9bbe7681ff24e" + } + }, + { + "chainId": 137, + "name": "DAO Invest", + "symbol": "VEST", + "decimals": 18, + "address": "0x381caf412B45dAc0f62FBEeC89DE306D3eABE384", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x1f19f83fC9a25F3C861260143E36c17706257986" + } + }, + { + "chainId": 137, + "name": "IDEX Token", + "symbol": "IDEX", + "decimals": 18, + "address": "0x9Cb74C8032b007466865f060ad2c46145d45553D", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xb705268213d593b8fd88d3fdeff93aff5cbdcfae" + } + }, + { + "chainId": 137, + "name": "SMART TRADE NETWORKS 5", + "symbol": "STN5", + "decimals": 18, + "address": "0xE4f0EefC8b184d9AFDD5Cfb6e4281ec27B6f3095", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x55150E8378B81F930f310d4B62AB7e1252c30B9B" + } + }, + { + "chainId": 137, + "name": "Bankless BED Index", + "symbol": "BED", + "decimals": 18, + "address": "0xeEDa694439C6FB56CbAA011cC849650b7273285B", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x2af1df3ab0ab157e1e2ad8f88a7d04fbea0c7dc6" + } + }, + { + "chainId": 137, + "name": "SW Capital", + "symbol": "SWC", + "decimals": 18, + "address": "0x01aE14B9643a720Dc3181abfA05e65c528b5A30F", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x8dca21c5c8165886ea1fa800ff9321ec74fde2c0" + } + }, + { + "chainId": 137, + "name": "Wasabi", + "symbol": "WASABI", + "decimals": 18, + "address": "0x167F8C8A1AF9A4c851C8E541BA0f9939D395cCF1", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x896e145568624a498c5a909187363AE947631503" + } + }, + { + "chainId": 137, + "name": "Atlas Rising", + "symbol": "rising", + "decimals": 18, + "address": "0xa83D20E7B0e5c3483bbF65091c3591cEB7f75D97", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xf4383b0aeb7f6c3ad411dc5f3d83594592646b11" + } + }, + { + "chainId": 137, + "name": "ARPA Token", + "symbol": "ARPA", + "decimals": 18, + "address": "0xEE800B277A96B0f490a1A732e1D6395FAD960A26", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xba50933c268f567bdc86e1ac131be072c6b0b71a" + } + }, + { + "chainId": 137, + "name": "Nsure Network Token", + "symbol": "Nsure", + "decimals": 18, + "address": "0x2D61F243d1a4c16640c3961100f50222679EC89E", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x20945cA1df56D237fD40036d47E866C7DcCD2114" + } + }, + { + "chainId": 137, + "name": "Blockchain Certified Data Token", + "symbol": "BCDT", + "decimals": 18, + "address": "0xe7789178ddC4Edb3b038115B1826c66640C57Ecc", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xacfa209fb73bf3dd5bbfb1101b9bc999c49062a5" + } + }, + { + "chainId": 137, + "name": "Tyrannical", + "symbol": "TIN", + "decimals": 8, + "address": "0xEF6B7E511c18B5fC0099e680f17AE5C3b7601d26", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xA52360d0e1290023100D0787623faA0b1784E7ff" + } + }, + { + "chainId": 137, + "name": "Aragon Network Token", + "symbol": "ANT", + "decimals": 18, + "address": "0x2b8504ab5eFc246d0eC5Ec7E74565683227497de", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xa117000000f279d81a1d3cc75430faa017fa5a2e" + } + }, + { + "chainId": 137, + "name": "Dragon", + "symbol": "DRGN", + "decimals": 18, + "address": "0xE69Fa47DFe3aA7F5e5F5642110901f917513459b", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x419c4db4b9e25d6db2ad9691ccb832c8d9fda05e" + } + }, + { + "chainId": 137, + "name": "Cindicator Token", + "symbol": "CND", + "decimals": 18, + "address": "0x7f4e5fC5D43D1EB91447011AC83957F673e31E9A", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xd4c435f5b09f855c3317c8524cb1f586e42795fa" + } + }, + { + "chainId": 137, + "name": "UnoRe", + "symbol": "UNO", + "decimals": 18, + "address": "0xb7403EdAA4Ff25Fd05E5b8ee83DeE53F15C4DB39", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x474021845c4643113458ea4414bdb7fb74a01a77" + } + }, + { + "chainId": 137, + "name": "Bitcoin Black", + "symbol": "BLACK", + "decimals": 18, + "address": "0xEE619a5bC09d6FAC8eB05B1031e5B3379f92F29E", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xf7ae0daa230bf3fb3c0e5e01e7a6e0a142c6cf7e" + } + }, + { + "chainId": 137, + "name": "OpenOcean", + "symbol": "OOE", + "decimals": 18, + "address": "0x9d5565dA88e596730522CbC5a918d2A89dbC16d9", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x7778360f035c589fce2f4ea5786cbd8b36e5396b" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/ooe.svg" + }, + { + "chainId": 137, + "name": "Wirex Token", + "symbol": "WXT", + "decimals": 18, + "address": "0xC4d094E246B69BB1F2EeDde1e5026BEba532248e", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xa02120696c7B8fE16C09C749E4598819b2B0E915" + } + }, + { + "chainId": 137, + "name": "Gen Shards", + "symbol": "GS", + "decimals": 18, + "address": "0xBfa05E530f42999AAfC5F15F98AfdF0667e312Bc", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xe0B9a2C3E9f40CF74B2C7F591B2b0CCa055c3112" + } + }, + { + "chainId": 137, + "name": "$Poolz Finance", + "symbol": "POOLZ", + "decimals": 18, + "address": "0xa052EFCDd44F02073B1FDC42bF06017A0234ae03", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x69a95185ee2a045cdc4bcd1b1df10710395e4e23" + } + }, + { + "chainId": 137, + "name": "BasketDAO DeFi Index", + "symbol": "BDI", + "decimals": 18, + "address": "0x76b1575482BcAA7815964Ed6759FE4bc4b0eB8b2", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x0309c98B1bffA350bcb3F9fB9780970CA32a5060" + } + }, + { + "chainId": 137, + "name": "Sheesha Finance", + "symbol": "SHEESHA", + "decimals": 18, + "address": "0xAE8948Bc6b4ec35FfE7Decc6BEb205Ea6d077b57", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x232FB065D9d24c34708eeDbF03724f2e95ABE768" + } + }, + { + "chainId": 137, + "name": "GamyFi", + "symbol": "GFX", + "decimals": 18, + "address": "0x99aC53C1ab08BAA7c83f444Ebf442d0fcbb09DB6", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xE4fA3C576c31696322e8d7165C5965d5a1F6A1A5" + } + }, + { + "chainId": 137, + "name": "Cover Protocol Governance Token", + "symbol": "COVER", + "decimals": 18, + "address": "0x708CCa2f9EdED49918865Fd45442eF733155CAcb", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x4688a8b1F292FDaB17E9a90c8Bc379dC1DBd8713" + } + }, + { + "chainId": 137, + "name": "Lido DAO Token", + "symbol": "LDO", + "decimals": 18, + "address": "0xC3C7d422809852031b44ab29EEC9F1EfF2A58756", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x5A98FcBEA516Cf06857215779Fd812CA3beF1B32" + } + }, + { + "chainId": 137, + "name": "Base Protocol", + "symbol": "BASE", + "decimals": 9, + "address": "0xd4E3F03095A252323506Dd589810Dc78cEa0A923", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x07150e919B4De5fD6a63DE1F9384828396f25fDC" + } + }, + { + "chainId": 137, + "name": "DODO bird", + "symbol": "DODO", + "decimals": 18, + "address": "0xe4Bf2864ebeC7B7fDf6Eeca9BaCAe7cDfDAffe78", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x43Dfc4159D86F3A37A5A4B3D4580b888ad7d4DDd" + } + }, + { + "chainId": 137, + "name": "Ferrum Network Token", + "symbol": "FRM", + "decimals": 6, + "address": "0x0cdf14B01692c57fD8d066A053B3A0FA0Aa2Fc11", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xE5CAeF4Af8780E59Df925470b050Fb23C43CA68C" + } + }, + { + "chainId": 137, + "name": "DLP Duck Token", + "symbol": "DUCK", + "decimals": 18, + "address": "0x2B34c0efB7Eeb5bEd0A7253581dB085171dAcB71", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xC0bA369c8Db6eB3924965e5c4FD0b4C1B91e305F" + } + }, + { + "chainId": 137, + "name": "StorjToken", + "symbol": "STORJ", + "decimals": 8, + "address": "0xd72357dAcA2cF11A5F155b9FF7880E595A3F5792", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xB64ef51C888972c908CFacf59B47C1AfBC0Ab8aC" + } + }, + { + "chainId": 137, + "name": "OKB", + "symbol": "OKB", + "decimals": 18, + "address": "0x8F94400CDeF837F388100cfE56D7ebB8a3A3fb44", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x75231F58b43240C9718Dd58B4967c5114342a86c" + } + }, + { + "chainId": 137, + "name": "renBCH", + "symbol": "renBCH", + "decimals": 8, + "address": "0x627C50aa6A384933d6354448f70476D3BD02Fcc8", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x459086F2376525BdCebA5bDDA135e4E9d3FeF5bf" + } + }, + { + "chainId": 137, + "name": "renZEC", + "symbol": "renZEC", + "decimals": 8, + "address": "0x6f0CAd28165121Ab60d3D5504A702e77d644E367", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x1C5db575E2Ff833E46a2E9864C22F4B22E0B37C2" + } + }, + { + "chainId": 137, + "name": "Morpheus Infrastructure Token", + "symbol": "MITx", + "decimals": 18, + "address": "0x31042A4E66eDa0d12143ffc8cC1552D611dA4cbA", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x4a527d8fc13C5203AB24BA0944F4Cb14658D1Db6" + } + }, + { + "chainId": 137, + "name": "ASSY Index", + "symbol": "ASSY", + "decimals": 18, + "address": "0xd6d8fFC109a3EE48b0c1163a062eaD5Fcc83416e", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xFA2562da1Bba7B954f26C74725dF51fb62646313" + } + }, + { + "chainId": 137, + "name": "Shadows Network", + "symbol": "DOWS", + "decimals": 18, + "address": "0xf3681947a43F180ea68a8b949F5E7A18df946a09", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x661Ab0Ed68000491d98C796146bcF28c20d7c559" + } + }, + { + "chainId": 137, + "name": "Ampleforth", + "symbol": "AMPL", + "decimals": 9, + "address": "0x688AB7562301b3B58B67bEB614986B51ad3698eB", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xD46bA6D942050d489DBd938a2C909A5d5039A161" + } + }, + { + "chainId": 137, + "name": "yffi.finance", + "symbol": "YFFI", + "decimals": 18, + "address": "0xf862E6a988d0B7B7Bf2f87b8E28454fAfc5A4237", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xCee1d3c3A02267e37E6B373060F79d5d7b9e1669" + } + }, + { + "chainId": 137, + "name": "DuckDaoDime", + "symbol": "DDIM", + "decimals": 18, + "address": "0x0a5e1dE30E943421Ed9faAeC815125B6BdF9383e", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xFbEEa1C75E4c4465CB2FCCc9c6d6afe984558E20" + } + }, + { + "chainId": 137, + "name": "TrueFi", + "symbol": "TRU", + "decimals": 8, + "address": "0x5b77bCA482bd3E7958b1103d123888EfCCDaF803", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x4C19596f5aAfF459fA38B0f7eD92F11AE6543784" + } + }, + { + "chainId": 137, + "name": "BitMax token", + "symbol": "BTMX", + "decimals": 18, + "address": "0xf6a0277582919ea0A78078F54CD11a4bcCfd6Ac7", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xcca0c9c383076649604eE31b20248BC04FdF61cA" + } + }, + { + "chainId": 137, + "name": "TenX Pay Token", + "symbol": "PAY", + "decimals": 18, + "address": "0x163e9c8DF744B38Fe1975fBED2Eb3d9005c6655F", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xB97048628DB6B661D4C2aA833e95Dbe1A905B280" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/pay.svg" + }, + { + "chainId": 137, + "name": "Perlin", + "symbol": "PERL", + "decimals": 18, + "address": "0xB121FCD122DAAa153bB8a102754127b2682645CB", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xeca82185adCE47f39c684352B0439f030f860318" + } + }, + { + "chainId": 137, + "name": "Compound 0x", + "symbol": "cZRX", + "decimals": 8, + "address": "0x62059c1F748CD663798CEe1B31e86ce28bA73eC2", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xB3319f5D18Bc0D84dD1b4825Dcde5d5f7266d407" + } + }, + { + "chainId": 137, + "name": "Monolith TKN", + "symbol": "TKN", + "decimals": 8, + "address": "0xD98DeFAC38214426Ef58Cf7996DE8b373933f902", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xaAAf91D9b90dF800Df4F55c205fd6989c977E73a" + } + }, + { + "chainId": 137, + "name": "LoomToken", + "symbol": "LOOM", + "decimals": 18, + "address": "0x66EfB7cC647e0efab02eBA4316a2d2941193F6b3", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xA4e8C3Ec456107eA67d3075bF9e3DF3A75823DB0" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/loom.svg" + }, + { + "chainId": 137, + "name": "StableUSD", + "symbol": "USDS", + "decimals": 6, + "address": "0xb09C87726059f2a3d6b795cc7252A225292A53E1", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xA4Bdb11dc0a2bEC88d24A3aa1E6Bb17201112eBe" + } + }, + { + "chainId": 137, + "name": "Pundi X Token", + "symbol": "NPXS", + "decimals": 18, + "address": "0x8d42eCce45f4B30ff2435bD19a983f7616adD16e", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xA15C7Ebe1f07CaF6bFF097D8a589fb8AC49Ae5B3" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/npxs.svg" + }, + { + "chainId": 137, + "name": "Orion Protocol", + "symbol": "ORN", + "decimals": 8, + "address": "0x0EE392bA5ef1354c9bd75a98044667d307C0e773", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x0258F474786DdFd37ABCE6df6BBb1Dd5dfC4434a" + } + }, + { + "chainId": 137, + "name": "APYSwap", + "symbol": "APYS", + "decimals": 18, + "address": "0x0FfC26BEDf1EB59B27479f0b79D95f61DCFB200C", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xf7413489c474ca4399eeE604716c72879Eea3615" + } + }, + { + "chainId": 137, + "name": "DIAToken", + "symbol": "DIA", + "decimals": 18, + "address": "0x993f2CafE9dbE525243f4A78BeBC69DAc8D36000", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x84cA8bc7997272c7CfB4D0Cd3D55cd942B3c9419" + } + }, + { + "chainId": 137, + "name": "Geeq", + "symbol": "GEEQ", + "decimals": 18, + "address": "0x3Ea044a788fF278d4150CE1741c888fFed6Ce44F", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x6B9f031D718dDed0d681c20cB754F97b3BB81b78" + } + }, + { + "chainId": 137, + "name": "SIRIN", + "symbol": "SRN", + "decimals": 18, + "address": "0xb37Dc3620b3ed0D09bBD43BCB9ceF277a6a0f49B", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x68d57c9a1C35f63E2c83eE8e49A64e9d70528D25" + } + }, + { + "chainId": 137, + "name": "POA ERC20 on Foundation", + "symbol": "POA20", + "decimals": 18, + "address": "0xFc192E1943289d6731Ae72850da167f4c194ab91", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x6758B7d441a9739b98552B373703d8d3d14f9e62" + } + }, + { + "chainId": 137, + "name": "Synth sETH", + "symbol": "sETH", + "decimals": 18, + "address": "0x53c1AB7a25F1A44921dE8BF479F5528845fc1254", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x5e74C9036fb86BD7eCdcb084a0673EFc32eA31cb" + } + }, + { + "chainId": 137, + "name": "Compound Dai", + "symbol": "cDAI", + "decimals": 8, + "address": "0x6fe9C1631b37a2b438CFD3d67409E15503Ddd535", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643" + } + }, + { + "chainId": 137, + "name": "Digix Gold Token", + "symbol": "DGX", + "decimals": 9, + "address": "0xEd29195ecd25Da21E8942884C5fAebAfD4E07dab", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x4f3AfEC4E5a3F2A6a1A411DEF7D7dFe50eE057bF" + } + }, + { + "chainId": 137, + "name": "VIDT Datalink", + "symbol": "VIDT", + "decimals": 18, + "address": "0x9aAcb53AF37FE363E462A72Bc30F35a4d20f285f", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xfeF4185594457050cC9c23980d301908FE057Bb1" + } + }, + { + "chainId": 137, + "name": "Civic", + "symbol": "CVC", + "decimals": 8, + "address": "0x66Dc5A08091d1968e08C16aA5b27BAC8398b02Be", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x41e5560054824ea6b0732e656e3ad64e20e94e45" + } + }, + { + "chainId": 137, + "name": "XinFin XDCE", + "symbol": "XDCE", + "decimals": 18, + "address": "0xfdCA275366efac9204D2d8D3D7A9428CA947307B", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf2" + } + }, + { + "chainId": 137, + "name": "FunFair", + "symbol": "FUN", + "decimals": 8, + "address": "0x2c14C84D08b35a8135f57338816f5FcBEac08d35", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x419d0d8bdd9af5e606ae2232ed285aff190e711b" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/fun.svg" + }, + { + "chainId": 137, + "name": "BiLira", + "symbol": "TRYB", + "decimals": 6, + "address": "0x4Fb71290Ac171E1d144F7221D882BECAc7196EB5", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x2c537e5624e4af88a7ae4060c022609376c8d0eb" + } + }, + { + "chainId": 137, + "name": "AirSwap Token", + "symbol": "AST", + "decimals": 4, + "address": "0x04bEa9FCE76943E90520489cCAb84E84C0198E29", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x27054b13b1b798b345b591a4d22e6562d47ea75a" + } + }, + { + "chainId": 137, + "name": "DEXTools", + "symbol": "DEXT", + "decimals": 18, + "address": "0xff835562C761205659939B64583dd381a6AA4D92", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xfb7b4564402e5500db5bb6d63ae671302777c75a" + } + }, + { + "chainId": 137, + "name": "Reserve", + "symbol": "RSV", + "decimals": 18, + "address": "0xE1444fa4b5c530E46b79A47bA1a8DFE252B8A1c0", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x196f4727526eA7FB1e17b2071B3d8eAA38486988" + } + }, + { + "chainId": 137, + "name": "Reputation", + "symbol": "REPv2", + "decimals": 18, + "address": "0x6563c1244820CfBd6Ca8820FBdf0f2847363F733", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x221657776846890989a759BA2973e427DfF5C9bB" + } + }, + { + "chainId": 137, + "name": "Numeraire", + "symbol": "NMR", + "decimals": 18, + "address": "0x0Bf519071b02F22C17E7Ed5F4002ee1911f46729", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x1776e1f26f98b1a5df9cd347953a26dd3cb46671" + } + }, + { + "chainId": 137, + "name": "uDOO", + "symbol": "uDOO", + "decimals": 18, + "address": "0x0C2ea0623E1C19bfB984Dce137404671a95f3478", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x12f649A9E821F90BB143089a6e56846945892ffB" + } + }, + { + "chainId": 137, + "name": "XIO Network", + "symbol": "XIO", + "decimals": 18, + "address": "0x9C81077ffdd65b7E3833dd576AA94bf4B49b00F0", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x0f7f961648ae6db43c75663ac7e5414eb79b5704" + } + }, + { + "chainId": 137, + "name": "Rari Governance Token", + "symbol": "RGT", + "decimals": 18, + "address": "0x3b9dB434F08003A89554CDB43b3e0b1f8734BdE7", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xD291E7a03283640FDc51b121aC401383A46cC623" + } + }, + { + "chainId": 137, + "name": "Moss Coin", + "symbol": "MOC", + "decimals": 18, + "address": "0x4Ded021C6f02dB04C9e9A97b898d36348094B9b8", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x865ec58b06bF6305B886793AA20A2da31D034E68" + } + }, + { + "chainId": 137, + "name": "DOS Network Token", + "symbol": "DOS", + "decimals": 18, + "address": "0x0597a52b14B0DCA2158665d6961572E371Ff5678", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x0a913bead80f321e7ac35285ee10d9d922659cb7" + } + }, + { + "chainId": 137, + "name": "MATH Token", + "symbol": "MATH", + "decimals": 18, + "address": "0x347ACCAFdA7F8c5BdeC57fa34a5b663CBd1aeca7", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x08d967bb0134F2d07f7cfb6E246680c53927DD30" + } + }, + { + "chainId": 137, + "name": "Uptrennd", + "symbol": "1UP", + "decimals": 18, + "address": "0x77266e2B73adb5605D9877fE3d86b217eFA5cB49", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x07597255910a51509CA469568B048F2597E72504" + } + }, + { + "chainId": 137, + "name": "Liquidity Dividends Protocol", + "symbol": "LID", + "decimals": 18, + "address": "0xA9ADe7b8C8252b1E17cAFa53BF46FF1319F8532D", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x0417912b3a7AF768051765040A55BB0925D4DDcF" + } + }, + { + "chainId": 137, + "name": "PieDAO BTC++", + "symbol": "BTC++", + "decimals": 18, + "address": "0x6B3d5099c4827a3fC7C858865c1Cea15c3fe58ee", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x0327112423F3A68efdF1fcF402F6c5CB9f7C33fd" + } + }, + { + "chainId": 137, + "name": "Stox", + "symbol": "STX", + "decimals": 18, + "address": "0xB36e3391B22a970d31A9b620Ae1A414C6c256d2a", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x006BeA43Baa3f7A6f765F14f10A1a1b08334EF45" + } + }, + { + "chainId": 137, + "name": "NXM", + "symbol": "NXM", + "decimals": 18, + "address": "0xB2B613b771e5A5DDa496733B4024d34f309CC03d", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xd7c49cee7e9188cca6ad8ff264c1da2e69d4cf3b" + } + }, + { + "chainId": 137, + "name": "Compound USDT", + "symbol": "cUSDT", + "decimals": 8, + "address": "0x61B3c650154f9525dad3c1010de959fc6e2218F3", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xf650c3d88d12db855b8bf7d11be6c55a4e07dcc9" + } + }, + { + "chainId": 137, + "name": "Wrapped Centrifuge", + "symbol": "wCFG", + "decimals": 18, + "address": "0x90bb6fEB70A9a43CfAaA615F856BA309FD759A90", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xc221b7e65ffc80de234bbb6667abdd46593d34f0" + } + }, + { + "chainId": 137, + "name": "Wrapped ANC Token", + "symbol": "ANC", + "decimals": 18, + "address": "0x60E68D032deB4c238c2ba580EC0F22516ebcbc13", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x0f3adc247e91c3c50bc08721355a41037e89bc20" + } + }, + { + "chainId": 137, + "name": "Wrapped MIR Token", + "symbol": "MIR", + "decimals": 18, + "address": "0x1C5cccA2CB59145A4B25F452660cbA6436DDce9b", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x09a3ecafa817268f77be1283176b946c4ff2e608" + } + }, + { + "chainId": 137, + "name": "Wrapped Mirror AAPL Token", + "symbol": "mAAPL", + "decimals": 18, + "address": "0x7E4e3923005aC2942745480D96751Ca9DEc5C9B6", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xd36932143F6eBDEDD872D5Fb0651f4B72Fd15a84" + } + }, + { + "chainId": 137, + "name": "Wrapped Mirror GOOGL Token", + "symbol": "mGOOGL", + "decimals": 18, + "address": "0x41970f24B738aA21152fDF05d65a688A9A3C63c7", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x59A921Db27Dd6d4d974745B7FfC5c33932653442" + } + }, + { + "chainId": 137, + "name": "Wrapped Mirror NFLX Token", + "symbol": "mNFLX", + "decimals": 18, + "address": "0xB261387f5188c81DdD543e2A75c89309aB1bfD2C", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xC8d674114bac90148d11D3C1d33C61835a0F9DCD" + } + }, + { + "chainId": 137, + "name": "Wrapped Mirror QQQ Token", + "symbol": "mQQQ", + "decimals": 18, + "address": "0x20269A36538fbD3f33f1688919776E2220455567", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x13B02c8dE71680e71F0820c996E4bE43c2F57d15" + } + }, + { + "chainId": 137, + "name": "Wrapped Mirror TWTR Token", + "symbol": "mTWTR", + "decimals": 18, + "address": "0x5c7d670637CBAc5Cd71ddF3DF7DECee2A46dbFE2", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xEdb0414627E6f1e3F082DE65cD4F9C693D78CCA9" + } + }, + { + "chainId": 137, + "name": "Wrapped Mirror MSFT Token", + "symbol": "mMSFT", + "decimals": 18, + "address": "0xc4483AfED7159AF6b7D2eF41a18BC82F5081C063", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x41BbEDd7286dAab5910a1f15d12CBda839852BD7" + } + }, + { + "chainId": 137, + "name": "Wrapped Mirror AMZN Token", + "symbol": "mAMZN", + "decimals": 18, + "address": "0xC46e5F28f1A7AdeAC72b0d2bC0c710dF865776F1", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x0cae9e4d663793c2a2A0b211c1Cf4bBca2B9cAa7" + } + }, + { + "chainId": 137, + "name": "Wrapped Mirror BABA Token", + "symbol": "mBABA", + "decimals": 18, + "address": "0x0959CAD1298a204277C1b5C00F62D9F2cb0b6756", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x56aA298a19C93c6801FDde870fA63EF75Cc0aF72" + } + }, + { + "chainId": 137, + "name": "Wrapped Mirror IAU Token", + "symbol": "mIAU", + "decimals": 18, + "address": "0xB38B63CbcCd3239D72AB133771382BBbcf4BEd02", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x1d350417d9787E000cc1b95d70E9536DcD91F373" + } + }, + { + "chainId": 137, + "name": "Wrapped Mirror USO Token", + "symbol": "mUSO", + "decimals": 18, + "address": "0xe861920768dA0310B125C27A44ADDA11532ab838", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x31c63146a635EB7465e5853020b39713AC356991" + } + }, + { + "chainId": 137, + "name": "Wrapped Mirror FB Token", + "symbol": "mFB", + "decimals": 18, + "address": "0xcDb3ff438D8fbC7B09a70311178eC68Ef4EAff00", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x0e99cC0535BB6251F6679Fa6E65d6d3b430e840B" + } + }, + { + "chainId": 137, + "name": "Wrapped Mirror COIN Token", + "symbol": "mCOIN", + "decimals": 18, + "address": "0x14c36A063414Ee9BfA9Ef2bD0e1FdFAE690512be", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x1e25857931F75022a8814e0B0c3a371942A88437" + } + }, + { + "chainId": 137, + "name": "DeversiFi Token", + "symbol": "DVF", + "decimals": 18, + "address": "0x02c46650701dD6b83dceC3472fC3fD69eA1a5ab7", + "logoURI": "https://deversifi.com/wp-content/uploads/2022/03/dvf.d8ad4805.svg", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xdddddd4301a082e62e84e43f474f044423921918" + } + }, + { + "chainId": 137, + "name": "RAKUN", + "symbol": "RAKU", + "decimals": 18, + "address": "0x2e02D3C4b81498177783584b842821864245cE50", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x51bc0deaf7bbe82bc9006b0c3531668a4206d27f" + } + }, + { + "chainId": 137, + "name": "Origin Dollar", + "symbol": "OUSD", + "decimals": 18, + "address": "0x655BD74cd109ebDd0b030Eb4609B9214028f7729", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x2A8e1E676Ec238d8A992307B495b45B3fEAa5e86" + } + }, + { + "chainId": 137, + "name": "Inverse BTC Volatility Index", + "symbol": "iBTCV", + "decimals": 18, + "address": "0x89b1F5DB1797f82af33dED6e6B50623a83aE84fA", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x2590F1fD14Ef8Bb0A46C7A889c4CBc146510f9C3" + } + }, + { + "chainId": 137, + "name": "BTC Volatility Index", + "symbol": "BTCV", + "decimals": 18, + "address": "0xE52F979590067637120004D188771b4aE48807Ee", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x51B0bcBEFf204B39Ce792D1E16767Fe6F7631970" + } + }, + { + "chainId": 137, + "name": "Inverse ETH Volatility Index", + "symbol": "iETHV", + "decimals": 18, + "address": "0x39cDBd331c94d781D4B50802346152549689B1e5", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x3A707d56D538e85B783E8CE12B346e7fB6511F90" + } + }, + { + "chainId": 137, + "name": "ETH Volatility Index", + "symbol": "ETHV", + "decimals": 18, + "address": "0x3Dbd2A88627566306AE9f5F5FB466B498535aF21", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xC53342fd7575f572b0fF4569e31941A5B821aC76" + } + }, + { + "chainId": 137, + "name": "Resardis Token", + "symbol": "RSD", + "decimals": 18, + "address": "0x542af0d2Ec7f5a92F9caddaDD4e33B75d15F800c", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x73627974adea82397bcf7fac5848207cce88938d" + } + }, + { + "chainId": 137, + "name": "BitBase", + "symbol": "BTBS", + "decimals": 18, + "address": "0x921cfe00bDc605c452412079b315Ead661983B10", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x32e6c34cd57087abbd59b5a4aecc4cb495924356" + } + }, + { + "chainId": 137, + "name": "Roxel DAO", + "symbol": "ROX", + "decimals": 18, + "address": "0x7767Ba7fB74082E02b821C341f9565Ce6440Fb26", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xf4284a849c918ef676f54ed938703f2eeed3e058" + } + }, + { + "chainId": 137, + "name": "Infinity Diamond", + "symbol": "INF", + "decimals": 18, + "address": "0xcbEF7a4B4385Db4747362b900b6f6f8051B152c0", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x506c6fc9d6f764338a4e1eed5f526ab440d0cc05" + } + }, + { + "chainId": 137, + "name": "Happy Monkey 🐵🐵🐵🐵🐵🐵🐵🐵", + "symbol": "HAPPY", + "decimals": 18, + "address": "0x3b7377F91F9682335C6d959E91b107d313C397cC", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xfb36b29cb225f564030024d329c837f0bf959daf" + } + }, + { + "chainId": 137, + "name": "Crypto Excellence", + "symbol": "CE", + "decimals": 18, + "address": "0x5dC70fAE21c9e21d47E1be6Cb01bBEb0c4d12CA3", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x8f12dfc7981de79a8a34070a732471f2d335eece" + } + }, + { + "chainId": 137, + "name": "Ultra Token", + "symbol": "UOS", + "decimals": 4, + "address": "0x1dce4a8b459A50F450EE91Fb5e6c86d161aA22f8", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xd13c7342e1ef687c5ad21b27c2b65d772cab5c8c" + } + }, + { + "chainId": 137, + "name": "MoonEdge", + "symbol": "MOONED", + "decimals": 18, + "address": "0x7E4c577ca35913af564ee2a24d882a4946Ec492B", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x7E4c577ca35913af564ee2a24d882a4946Ec492B" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/mooned.svg" + }, + { + "chainId": 137, + "name": "Melon Token", + "symbol": "MLN", + "decimals": 18, + "address": "0xa9f37d84c856fda3812ad0519dad44fa0a3fe207", + "logoURI": "https://user-images.githubusercontent.com/28834887/157407476-6a64c697-341b-479c-be97-ce6aadc1a8fa.svg", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xec67005c4e498ec7f55e092bd1d35cbc47c91892" + } + }, + { + "chainId": 137, + "name": "loser coin", + "symbol": "lowb", + "decimals": 18, + "address": "0x1C0a798B5a5273a9e54028eb1524fD337B24145F", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x69e5c11a7c30f0bf84a9faecbd5161aa7a94deca" + } + }, + { + "chainId": 137, + "name": "JUMP", + "symbol": "$JUMP", + "decimals": 18, + "address": "0xEd558Bb8881163AFdC9F3BdBa5F43Fd527c39Af8", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xE650b007529F445EaE83bc931Abaa9bb1eFECA6f" + } + }, + { + "chainId": 137, + "name": "DeepGo Token", + "symbol": "DGT", + "decimals": 18, + "address": "0x839d8Cc21F51ddDcB635064f8d11166e6D0053c5", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xC8eEC1277B84fC8a79364D0add8C256b795C6727" + } + }, + { + "chainId": 137, + "name": "SAUNALAND", + "symbol": "SAUNA", + "decimals": 18, + "address": "0xea9D32bf641ee72bA1f301512891fBc96d39e6B2", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x82b666f1d7d6439b32f580335e492cb31a07bff5" + } + }, + { + "chainId": 137, + "name": "CodeCoin", + "symbol": "CODE", + "decimals": 18, + "address": "0x9FF32E82C4c80499266cA26776c535458B758369", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x9adaba9ffda15e3a043c907d390f645147eb532a" + } + }, + { + "chainId": 137, + "name": "Matching Cards", + "symbol": "MATCH", + "decimals": 18, + "address": "0x82Ea80b9E021E8CB4a2b20e1BE60fe2CA04c9621", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x9217c19e72e4ab9e1015ebe9098285a6ef1761c3" + } + }, + { + "chainId": 137, + "name": "Convertible Phoenix Token", + "symbol": "cPHX", + "decimals": 18, + "address": "0x54a02FD4AeFc77aA97Cd3d30322F3E7a7D875a27", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xBdD50c7B6c871D9aFB278445d5b74fDc4705a234" + } + }, + { + "chainId": 137, + "name": "DinoSwap", + "symbol": "DINO", + "decimals": 18, + "address": "0xAa9654BECca45B5BDFA5ac646c939C62b527D394", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x2701E1D67219a49F5691C92468Fe8D8ADc03e609" + } + }, + { + "chainId": 137, + "name": "BOWIE", + "symbol": "BOWIE", + "decimals": 9, + "address": "0x8f6A1c0C10B72c1218270c81B0D5740aaE71f91d", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x077e06ad69983b12fc4e83b51260b894c7841d1e" + } + }, + { + "chainId": 137, + "name": "Marvin Coin", + "symbol": "MARVIN", + "decimals": 18, + "address": "0x268c4a88208B5b22993D1E56D5Fc039A28d1a18C", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x4bb12e64be9310d61f9a7950f4c3de50eb4c9807" + } + }, + { + "chainId": 137, + "name": "CatNorris Revenge", + "symbol": "$CATNORRIS", + "decimals": 9, + "address": "0xe7C83848aD3d46B002E6F0DFA135aeFC16D8A30f", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x920fbc929bb5940fc44dd722577d542caa0cd6d8" + } + }, + { + "chainId": 137, + "name": "Cryptid", + "symbol": "CID", + "decimals": 18, + "address": "0xb8DD82E944354B7bf9e9E0744ba5fF786581d372", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x4599836c212cd988eaccc54c820ee9261cdaac71" + } + }, + { + "chainId": 137, + "name": "Tartarus", + "symbol": "TAR", + "decimals": 8, + "address": "0x2cf15C001A2A5dA76bf213D17763e5C856aE3632", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xc567bca531992352166252ea5121e535432e81ed" + } + }, + { + "chainId": 137, + "name": "ChiHuaHua Finance", + "symbol": "CHUA", + "decimals": 18, + "address": "0xdD5E426362ef1B524d156335901be65F4573FF8E", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xb8dbce6859ba9a46e8072bc2b5bf0d8c6b751fcd" + } + }, + { + "chainId": 137, + "name": "Yuán 猿", + "symbol": "YUAN", + "decimals": 9, + "address": "0x1ddD49dF0097700479D89b361384ACFAF21f9621", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x4f8cc34bfdd972bdbeaf4cc5118fba1382abb550" + } + }, + { + "chainId": 137, + "name": "Melalie", + "symbol": "MEL", + "decimals": 18, + "address": "0xb9784E05C7af6068FC82A80730a599fE17Ca2aDf", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xed0889f7e1c7c7267407222be277e1f1ef4d4892" + } + }, + { + "chainId": 137, + "name": "VNDC", + "symbol": "VNDC", + "decimals": 0, + "address": "0xC87DC7474DB6cdb9D37cc38A227DCd7b12289F22", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x1f3f677ecc58f6a1f9e2cf410df4776a8546b5de" + } + }, + { + "chainId": 137, + "name": "Adshares", + "symbol": "ADS", + "decimals": 11, + "address": "0x598e49f01bEfeB1753737934a5b11fea9119C796", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xcfcecfe2bd2fed07a9145222e8a7ad9cf1ccd22a" + } + }, + { + "chainId": 137, + "name": "EdgeTest", + "symbol": "EDGT", + "decimals": 18, + "address": "0x24F8A7bB3190039b4Cf0F96Cd72e2EA3a2D82256", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x9D7e326b8C87E48b84dE6d300D7Bee3Ce42EfC37" + } + }, + { + "chainId": 137, + "name": "Ins3.Finance Coin", + "symbol": "ITF", + "decimals": 18, + "address": "0x0921FE2ad25266df4C078C051f7AD1c2298E89FC", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xa329e8944426b32c16b33d754149fe524a32b348" + } + }, + { + "chainId": 137, + "name": "OT Compound Dai 29DEC2022", + "symbol": "OT-cDAI-29DEC2022", + "decimals": 8, + "address": "0x1997FC07b67E7962cddD6E4db84E3C7315Bf4EB0", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x3d4e7f52efafb9e0c70179b688fc3965a75bcfea" + } + }, + { + "chainId": 137, + "name": "OT Aave interest bearing USDC 29DEC2022", + "symbol": "OT-aUSDC-29DEC2022", + "decimals": 6, + "address": "0x778Ba5C85c48C695228aF7e4CE3e8Ea96A50870c", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x8fcb1783bf4b71a51f702af0c266729c4592204a" + } + }, + { + "chainId": 137, + "name": "Valencoin", + "symbol": "VALOU", + "decimals": 0, + "address": "0xb91c05cf30A973a58295C8Db9248D0911CF091E5", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xb91c05cf30A973a58295C8Db9248D0911CF091E5" + } + }, + { + "chainId": 137, + "name": "VIQYY", + "symbol": "VIQYY", + "decimals": 18, + "address": "0xa0715b961daabafCb7a8A2Bc1146541a21aa56C1", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x8756c7f30a3b33f6412adeda21f627c93e599c14" + } + }, + { + "chainId": 137, + "name": "GIX Coin", + "symbol": "GIX", + "decimals": 18, + "address": "0xf4426F20E0956e91B75217A0F6B0e747213DaC75", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xbd434a09191d401da3283a5545bb3515d033b8c4" + } + }, + { + "chainId": 137, + "name": "TradeStars TSX", + "symbol": "TSX", + "decimals": 18, + "address": "0xF11de26883EB2EBF9877a01703DDC1eB619094E6", + "tags": [ + "pos", + "erc20", + "noDeposit" + ], + "extensions": { + "rootAddress": "0x734c90044a0ba31b3f2e640c10dc5d3540499bfd" + } + }, + { + "chainId": 137, + "name": "Peri Finance Token", + "symbol": "PERI", + "decimals": 18, + "address": "0xDC0E17eAE3B9651875030244b971fa0223a1764f", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x5d30aD9C6374Bf925D0A75454fa327AACf778492" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/peri.svg" + }, + { + "chainId": 137, + "name": "Singularity Dao", + "symbol": "SDAO", + "decimals": 18, + "address": "0x59e991B37b35Ac2187113dFdB5D60D2e887eEec1", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x993864e43caa7f7f12953ad6feb1d1ca635b875f" + } + }, + { + "chainId": 137, + "name": "Shibies Treats", + "symbol": "TREATS", + "decimals": 18, + "address": "0x21364671fD823BBda8Ba1f40a24171DeCBdB3D54", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x0B5Afdc93A86062A49063EA96AE944D7F966B6AE" + } + }, + { + "chainId": 137, + "name": "Aegis", + "symbol": "aDAO", + "decimals": 18, + "address": "0x76D431cCC4A1696996C4F282284e8998f7315eD8", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x926dbd499d701c61eabe2d576e770eccf9c7f4f3" + } + }, + { + "chainId": 137, + "name": "Fear NFTs", + "symbol": "FEAR", + "decimals": 18, + "address": "0xa2CA40DBe72028D3Ac78B5250a8CB8c404e7Fb8C", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x88a9a52f944315d5b4e917b9689e65445c401e83" + } + }, + { + "chainId": 137, + "name": "Love", + "symbol": "LOVE", + "decimals": 18, + "address": "0x69bdE563680f580A2da5b5d4E202ecA4FDF35664", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x12E57F85b847baDE37F37cdE3442f00Dc33b9982" + } + }, + { + "chainId": 137, + "name": "Attrace", + "symbol": "ATTR", + "decimals": 18, + "address": "0x0335DeFC8A1977b99488e0b5f5c6bc3D44fAcdD4", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x44e2dec86b9f0e0266e9aa66e10323a2bd69cf9a" + } + }, + { + "chainId": 137, + "name": "ZEUZ", + "symbol": "ZEUZ", + "decimals": 18, + "address": "0x2f3CcE940815daacE6d8f773A1a4f8c6Cb22AE00", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xFf729170f0C793cc1a28Ea3c30d88c219743D0a6" + } + }, + { + "chainId": 137, + "name": "Radicle", + "symbol": "RAD", + "decimals": 18, + "address": "0x2f81e176471CC57fDC76f7d332FB4511bF2bebDD", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x31c8eacbffdd875c74b94b077895bd78cf1e64a3" + } + }, + { + "chainId": 137, + "name": "Cfoforum Token", + "symbol": "CFO", + "decimals": 6, + "address": "0x0E2a70C08e884eA76116fccdC8b8be559162f08e", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xB8981aCbBF7DA95A8fF6Df79Aab935cE63434fC8" + } + }, + { + "chainId": 137, + "name": "USDT-LP", + "symbol": "USDT-LP", + "decimals": 18, + "address": "0xA15a8e5743D15ba1B2fD857C4E1937Dbf1727bd6", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xe0437BeB5bb7Cf980e90983f6029033d710bd1da" + } + }, + { + "chainId": 137, + "name": "BabyFloki", + "symbol": "BabyFloki", + "decimals": 9, + "address": "0x892fC8D2b2d6252cDd91Ed29AE08d89C03c5E0b2", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xdf35988d795d90711e785b488bb2127692e6f956" + } + }, + { + "chainId": 137, + "name": "WaifuToken", + "symbol": "WAIFU", + "decimals": 18, + "address": "0x690e822b6f26AC835432b05908A8c0D7C9DB76e9", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x50d812bd2728e1bd7c7f57d97819e0bdc486d6ff" + } + }, + { + "chainId": 137, + "name": "Kilroy", + "symbol": "KROY", + "decimals": 18, + "address": "0x8454498Ce328D7D3FC35B743301f52De67eB9Fdc", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xa85784108dbdcf8fe6564c7657a24c4765a2413f" + } + }, + { + "chainId": 137, + "name": "Bella", + "symbol": "BEL", + "decimals": 18, + "address": "0x28C388FB1F4fa9F9eB445f0579666849EE5eeb42", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xa91ac63d040deb1b7a5e4d4134ad23eb0ba07e14" + } + }, + { + "chainId": 137, + "name": "Ripio Credit Network Token", + "symbol": "RCN", + "decimals": 18, + "address": "0x89C296Be2F904F3e99a6125815b4B78F5388d2dd", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xF970b8E36e23F7fC3FD752EeA86f8Be8D83375A6" + } + }, + { + "chainId": 137, + "name": "MIMO Parallel Governance Token", + "symbol": "MIMO", + "decimals": 18, + "address": "0xADAC33f543267c4D59a8c299cF804c303BC3e4aC", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x90b831fa3bebf58e9744a14d638e25b4ee06f9bc" + } + }, + { + "chainId": 137, + "name": "INDI CORPS", + "symbol": "INDI", + "decimals": 18, + "address": "0x883Ec81B5dBCb9bcEAFe0c101893487c88B167bF", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xd9276198cf1b9261a25f61f0ff28eee2fb36dd5a" + } + }, + { + "chainId": 137, + "name": "PantherSwap Token", + "symbol": "PANTHER", + "decimals": 18, + "address": "0xC7BDAbDe06cd7a873D8f3db47c42AB6146403b05", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x9C972AF892F91B06455b4aB3c4359DE51DE36B9C" + } + }, + { + "chainId": 137, + "name": "GateChainToken", + "symbol": "GT", + "decimals": 18, + "address": "0x8da74b5450576998a5Bc499cb80AE3FE66eBb023", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xE66747a101bFF2dBA3697199DCcE5b743b454759" + } + }, + { + "chainId": 137, + "name": "Hokkaidu Inu", + "symbol": "HOKK", + "decimals": 9, + "address": "0x5B4d05223A14AEB6160f8400DcBbdD0A84aF60f7", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xc40af1e4fecfa05ce6bab79dcd8b373d2e436c4e" + } + }, + { + "chainId": 137, + "name": "Tesla Inu", + "symbol": "TESINU", + "decimals": 9, + "address": "0xD68468a1c2255FF4b13279752D68b5915Bd84860", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xff69e48af1174da7f15d0c771861c33d3f19ed8a" + } + }, + { + "chainId": 137, + "name": "Dogecaps", + "symbol": "dcaps", + "decimals": 9, + "address": "0x08912AA55D5eb104107c929cD4F48840D287613E", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x0bafa383ea3726982fcf0507f63c9c3d02f28eec" + } + }, + { + "chainId": 137, + "name": "uBitcoin", + "symbol": "uBTC", + "decimals": 18, + "address": "0x7DF29b5e0F2c7895F4B4FA4a20E759F8AbC1ba91", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x49766c22dcbc885f993ffeae547a79b5508aa9ec" + } + }, + { + "chainId": 137, + "name": "Bailey Building & Loans", + "symbol": "BBL", + "decimals": 18, + "address": "0xE6a823862eE153168C772Cf494e9DfF77140C696", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x8abcEbDa80cE8C1fCF0105EF8d5d7fC5b26b0Cd0" + } + }, + { + "chainId": 137, + "name": "EmiSwap - EmiDao Token", + "symbol": "ESW", + "decimals": 18, + "address": "0xd2A2a353D28e4833FAFfC882f6649c9c884a7D8f", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x5a75A093747b72a0e14056352751eDF03518031d" + } + }, + { + "chainId": 137, + "name": "Mask Network", + "symbol": "MASK", + "decimals": 18, + "address": "0x2B9E7ccDF0F4e5B24757c1E1a80e311E34Cb10c7", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x69af81e73a73b40adf4f3d4223cd9b1ece623074" + } + }, + { + "chainId": 137, + "name": "Phoenix Token", + "symbol": "PHX", + "decimals": 18, + "address": "0x9C6BfEdc14b5C23E3900889436Edca7805170f01", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xAeC65404DdC3af3C897AD89571d5772C1A695F22" + } + }, + { + "chainId": 137, + "name": "Charged Particles - IONX", + "symbol": "IONX", + "decimals": 18, + "address": "0x01b317bC5eD573FAa112eF64DD029F407CecB155", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x02d3a27ac3f55d5d91fb0f52759842696a864217" + } + }, + { + "chainId": 137, + "name": "RUNCOIN", + "symbol": "RUN", + "decimals": 18, + "address": "0x648A372552725EE4ABFC8E8F3006d80124D63B44", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x66eb3d45949f161d4f0bc6eb1e1678e6ff0a0ca1" + } + }, + { + "chainId": 137, + "name": "1PLANET Carbon Credit", + "symbol": "1PLCO2", + "decimals": 18, + "address": "0x14B5eD5dc05e9F7d35104D035719BD65a7EE93E0", + "logoURI": "https://1planet.app/images/1PL_Token_Logo.svg", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x2E8891AA76743ee96547AcB764a69b87872423f8" + } + }, + { + "chainId": 137, + "name": "Tokenart", + "symbol": "OKNA", + "decimals": 18, + "address": "0xf00eCE8EDF75Db1aD4c8640EA44537fCCDF6E7a4", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x6FD6171442ae34bA5C9CE2bb9b1E0CF543c4F6f1" + } + }, + { + "chainId": 137, + "name": "Synth sUSD", + "symbol": "sUSD", + "decimals": 18, + "address": "0xF81b4Bec6Ca8f9fe7bE01CA734F55B2b6e03A7a0", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x57Ab1ec28D129707052df4dF418D58a2D46d5f51" + } + }, + { + "chainId": 137, + "name": "HK Monetary Token", + "symbol": "HKMT", + "decimals": 6, + "address": "0xE368e30C2b0F58EF216e12073141E07a875fbA6d", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xc8c97d9B0aF219c2329a0179f6AB8C7a55B39fc1" + } + }, + { + "chainId": 137, + "name": "IBIZA Token", + "symbol": "IBZ", + "decimals": 18, + "address": "0x428aC1de3FC08c0F3A47745C964f7d677716981F", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x5aa7c403c7de4b3bb0cc07079a03e389671a4771" + } + }, + { + "chainId": 137, + "name": "Aurox Token", + "symbol": "URUS", + "decimals": 18, + "address": "0xa3E6ac447c6A65e738AdBdA36034b54E2bC9603b", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x6c5fbc90e4d78f70cc5025db005b39b03914fc0c" + } + }, + { + "chainId": 137, + "name": "Siberian Husky", + "symbol": "SHUSKY", + "decimals": 9, + "address": "0x941f59F9577451530EE38287e5F146bd42cda258", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x236d53148f83706c3d670064809577385f923a75" + } + }, + { + "chainId": 137, + "name": "ShibaCoin", + "symbol": "SHIBA", + "decimals": 18, + "address": "0x141b8B6834fB2D24F9205AD262326DbC699Defa4", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x321bd6fa7696e0e4ba082e454b6e87b6c8372b27" + } + }, + { + "chainId": 137, + "name": "Moon Pug", + "symbol": "MOONPUG", + "decimals": 9, + "address": "0x14f2aF758c62Aa1dE8c9e48e1DE363826b087453", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x856710ea0007af7bdc387fe54f64db51dddaf0a2" + } + }, + { + "chainId": 137, + "name": "Golden Pineapple 🍍🪙🍍🪙🍍🪙", + "symbol": "GOLDENPINE", + "decimals": 18, + "address": "0x95894e4286bf4618eDd3824dD5b38a082a431953", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xe6f7466cb27d3072cf9dda358596b1a165cf5ce1" + } + }, + { + "chainId": 137, + "name": "Shiva 🌼🌼🌼🌼🌼🌼🌼🌼🌼🌼🌼", + "symbol": "SHIVA", + "decimals": 18, + "address": "0x137E8f56BB8B4DA5720E912DB15D45b01ac3C3ad", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x002f46770160ffb092bc15699fb035526b0b65d7" + } + }, + { + "chainId": 137, + "name": "brotDAO", + "symbol": "BROT", + "decimals": 18, + "address": "0xCEb082Ab7c63d68476797223a84f49e0284e9B29", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xc6287874391410C77E3fD73748C735f9381b8859" + } + }, + { + "chainId": 137, + "name": "TRASH", + "symbol": "TRSH", + "decimals": 18, + "address": "0xa73eACB2955fF636F8FE16F6BE35FC11D8D61f9E", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x0f46eba0Bafe2739d9F3C43A48BB84BEE1f6644f" + } + }, + { + "chainId": 137, + "name": "The SporkDAO Token", + "symbol": "SPORK", + "decimals": 18, + "address": "0x9CA6a77C8B38159fd2dA9Bd25bc3E259C33F5E39", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xb624FdE1a972B1C89eC1dAD691442d5E8E891469" + } + }, + { + "chainId": 137, + "name": "UMA Voting Token v1", + "symbol": "UMA", + "decimals": 18, + "address": "0x3066818837c5e6eD6601bd5a91B0762877A6B731", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x04Fa0d235C4abf4BcF4787aF4CF447DE572eF828" + } + }, + { + "chainId": 137, + "name": "CULTURE", + "symbol": "CULTURE", + "decimals": 18, + "address": "0x98F39821b479eb32F0659734a3CA0BB717A4dD4a", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xEeA1dd32b4c4DfD16D200AC2cb286b28F7402728" + } + }, + { + "chainId": 137, + "name": "American Akita", + "symbol": "USKITA", + "decimals": 9, + "address": "0xe7eA6564f85CC4F98D8B20a6888B877b3362D6ab", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xc18e7a03f8986798323658dd8645f93aa79ac5c9" + } + }, + { + "chainId": 137, + "name": "Fat Doge", + "symbol": "FOGE", + "decimals": 9, + "address": "0x20583A26a27a81C0c5387521A6FF443E6806Be75", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x76851a93977bea9264c32255b6457882035c7501" + } + }, + { + "chainId": 137, + "name": "TREKS", + "symbol": "TREKS", + "decimals": 18, + "address": "0xa65d74f1f047596b2DaFedFdfA327Ccbd499Aa9e", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x15492208Ef531EE413BD24f609846489a082F74C" + } + }, + { + "chainId": 137, + "name": "CC Token", + "symbol": "CC", + "decimals": 18, + "address": "0xb3fb97019e9F69d0fD2e76fBD113ec6960a5389a", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xd6860c96b5e1452811573b499d0c6aeddada4f23" + } + }, + { + "chainId": 137, + "name": "xFORCE", + "symbol": "xFORCE", + "decimals": 18, + "address": "0x27Ca65acd4397a6Ade56ac2a5d63587c14a46F0f", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xe7f445b93eb9cdabfe76541cc43ff8de930a58e6" + } + }, + { + "chainId": 137, + "name": "Jomon Shiba", + "symbol": "JSHIBA", + "decimals": 9, + "address": "0x0F44C5CD9cF957Ce0C7dEa558A765e81E8378b37", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x1426cc6d52d1b14e2b3b1cb04d57ea42b39c4c7c" + } + }, + { + "chainId": 137, + "name": "Free Coin", + "symbol": "FREE", + "decimals": 18, + "address": "0x7cef6ed1e07079e174601d39066AD0856cB47988", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x2f141ce366a2462f02cea3d12cf93e4dca49e4fd" + } + }, + { + "chainId": 137, + "name": "Based Loans Ownership", + "symbol": "BLO", + "decimals": 18, + "address": "0x9737399FaB00754FDc8BEe48FCB0697CE85C7DE5", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x68481f2c02be3786987ac2bc3327171c5d05f9bd" + } + }, + { + "chainId": 137, + "name": "PIKA TOKEN", + "symbol": "PKAT", + "decimals": 18, + "address": "0xB45d03F97357F7c5018c0235830aB802E29dBD0d", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x5622fc0bd7ef3f07b2d1b05097dff6f50cc0b2f5" + } + }, + { + "chainId": 137, + "name": "Myōbu", + "symbol": "MYOBU", + "decimals": 9, + "address": "0x2efd9Dab50cF55C8A9FDB7a24dD2034dcaA1Ec29", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x75d12e4f91df721fafcae4c6cd1d5280381370ac" + } + }, + { + "chainId": 137, + "name": "Raze Network", + "symbol": "RAZE", + "decimals": 18, + "address": "0xA947239ADC5D53Aa03E5f661a2e16d7B009fC5A6", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x5Eaa69B29f99C84Fe5dE8200340b4e9b4Ab38EaC" + } + }, + { + "chainId": 137, + "name": "The Tokenized Bitcoin", + "symbol": "imBTC", + "decimals": 8, + "address": "0x897f86e22A5F5782c439118D68338f4FC420E59C", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x3212b29E33587A00FB1C83346f5dBFA69A458923" + } + }, + { + "chainId": 137, + "name": "MahaDAO", + "symbol": "MAHA", + "decimals": 18, + "address": "0xeDd6cA8A4202d4a36611e2fff109648c4863ae19", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xb4d930279552397bba2ee473229f89ec245bc365" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/maha.svg" + }, + { + "chainId": 137, + "name": "Yieldly", + "symbol": "YLDY", + "decimals": 18, + "address": "0x07280d3143311b012ad268a74F2aa791713952eA", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x88cb253d4c8cab8cdf7948a9251db85a13669e23" + } + }, + { + "chainId": 137, + "name": "Roseon token", + "symbol": "ROSN", + "decimals": 18, + "address": "0x1B2a3C1417C69DA16bb9193268d0AAbFe54b3b39", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x651cd665bd558175a956fb3d72206ea08eb3df5b" + } + }, + { + "chainId": 137, + "name": "CryptoChefs AROMA Token", + "symbol": "AROMA", + "decimals": 18, + "address": "0x444DBcb15Ea0d706C04DaB615374a11759E07A25", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x444DBcb15Ea0d706C04DaB615374a11759E07A25" + } + }, + { + "chainId": 137, + "name": "Conceal - Wrapped CCX ", + "symbol": "wCCX", + "decimals": 6, + "address": "0xeB9069218E171C62CEfAACa1581efEa3e9D57a31", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x21686f8ce003a95c99acd297e302faacf742f7d4" + } + }, + { + "chainId": 137, + "name": "UCASH", + "symbol": "UCASH", + "decimals": 8, + "address": "0xA94880d3A4b39746E90Cdb57f8De3732c984DE14", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x92e52a1a235d9a103d970901066ce910aacefd37" + } + }, + { + "chainId": 137, + "name": "SpiderDAO Token", + "symbol": "SPDR", + "decimals": 18, + "address": "0x916dC64C5BCa5DA97A354bBD3998771A26545E09", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xbcd4b7de6fde81025f74426d43165a5b0d790fdd" + } + }, + { + "chainId": 137, + "name": "BIRB", + "symbol": "BRB", + "decimals": 8, + "address": "0xB5CEdF3a2aD0aad7cf43F6cF4Cb9FBE01130d684", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x216d7636b791Ed93BFD56BF696b35A14115416ab" + } + }, + { + "chainId": 137, + "name": "Bluzelle Token", + "symbol": "BLZ", + "decimals": 18, + "address": "0x438B28C5AA5F00a817b7Def7cE2Fb3d5d1970974", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x5732046a883704404f284ce41ffadd5b007fd668" + } + }, + { + "chainId": 137, + "name": "Aluna", + "symbol": "ALN", + "decimals": 18, + "address": "0xa8fcEe762642f156b5D757b6FabC36E06b6d4A1A", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x8185bc4757572da2a610f887561c32298f1a5748" + } + }, + { + "chainId": 137, + "name": "The Force Token", + "symbol": "FOR", + "decimals": 18, + "address": "0x546b4c391520E6652897c65153074088BFC0A909", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x1FCdcE58959f536621d76f5b7FfB955baa5A672F" + } + }, + { + "chainId": 137, + "name": "Deri", + "symbol": "DERI", + "decimals": 18, + "address": "0x3D1D2aFd191b165D140e3E8329E634665fFB0E5e", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xA487bF43cF3b10dffc97A9A744cbB7036965d3b9" + } + }, + { + "chainId": 137, + "name": "Gnarcoin", + "symbol": "GNAR", + "decimals": 18, + "address": "0x8dfe9e53F920D43C2D59133804Aff6540B4e05fF", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x017429367d6e4f9fa7b673bdb2247887bd9233e8" + } + }, + { + "chainId": 137, + "name": "Geyser", + "symbol": "GYSR", + "decimals": 18, + "address": "0xc48F61a288A08F1B80c2edd74652e1276B6A168c", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xbea98c05eeae2f3bc8c3565db7551eb738c8ccab" + } + }, + { + "chainId": 137, + "name": "Newscrypto", + "symbol": "NWC", + "decimals": 18, + "address": "0x968F6f898a6Df937fC1859b323aC2F14643e3fED", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x968f6f898a6df937fc1859b323ac2f14643e3fed" + } + }, + { + "chainId": 137, + "name": "PairX Token", + "symbol": "PAIRX", + "decimals": 18, + "address": "0x7a51028299AE19B4C56BF8d66B42Fd53e42F43aB", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x7a51028299AE19B4C56BF8d66B42Fd53e42F43aB" + } + }, + { + "chainId": 137, + "name": "X-Cash", + "symbol": "XCASH", + "decimals": 18, + "address": "0x03678f2c2c762DC63c2Bb738c3a837D366eDa560", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x235328f864f38a91f0d2282159ea7c7b7c9f7c62" + } + }, + { + "chainId": 137, + "name": "Oiler", + "symbol": "OIL", + "decimals": 18, + "address": "0x65DfA90171e1bd9060209405026C4E1f4A8E58df", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x0275E1001e293C46CFe158B3702AADe0B99f88a5" + } + }, + { + "chainId": 137, + "name": "ReillyCoin", + "symbol": "REILLY", + "decimals": 18, + "address": "0x0a6cb35d3C309578aB3AE19c06Af9a77A045F18b", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x12D0545F7f74a17C84432e9552D8E4eb62b59DCD" + } + }, + { + "chainId": 137, + "name": "Dollar", + "symbol": "DOLLAR", + "decimals": 18, + "address": "0x432167928d23C378B316B78Dfa378Baa4a84F25a", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xe0ea460dc00d4cc62f539550d8dc9861dfd460fd" + } + }, + { + "chainId": 137, + "name": "penny", + "symbol": "PENNY", + "decimals": 18, + "address": "0x61FE6d0Ee83A5614822bE14599Ee99c621190a60", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x53bfb267aae3ca9d41febe271b7b8ea5dcffacfa" + } + }, + { + "chainId": 137, + "name": "super veggie burrito", + "symbol": "SVB", + "decimals": 18, + "address": "0xA5f7EA46EBDC3F192c19e900012B3c4a2D6E11a0", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xa2dddf1755603e209392dd987a1eb8689277b2c6" + } + }, + { + "chainId": 137, + "name": "funkyninja *❄✲❄* spacerobots", + "symbol": "SPACEFUNK", + "decimals": 18, + "address": "0x9656cfbbdDc777f15341F4bd1733f5eEC6B5Feb4", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xc3dff9e16f76d15beaa0959af135a06df78ac0e1" + } + }, + { + "chainId": 137, + "name": "baby love", + "symbol": "BABY", + "decimals": 18, + "address": "0x7717f1EFA5E36205527A2374603004968aBb480a", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x39Ffb0C8Ff3DEa288D3056b43f9fBedBBe996B86" + } + }, + { + "chainId": 137, + "name": "friends", + "symbol": "FRIENDS", + "decimals": 18, + "address": "0xb4cA879d4AC2eee3ae0f42488106f2b242cD0462", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x57E15f54E11D28a5c42f1a0376F2E6c05adBe930" + } + }, + { + "chainId": 137, + "name": "Magic Internet Money", + "symbol": "MIM", + "decimals": 18, + "address": "0x01288e04435bFcd4718FF203D6eD18146C17Cd4b", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x99D8a9C45b2ecA8864373A26D1459e3Dff1e17F3" + } + }, + { + "chainId": 137, + "name": "The Employment Commons Work Token", + "symbol": "WORK", + "decimals": 18, + "address": "0x6002410dDA2Fb88b4D0dc3c1D562F7761191eA80", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x1482295Df16e7761d128B9823B61785D43CA038B" + } + }, + { + "chainId": 137, + "name": "Lunar Token", + "symbol": "LUNAR", + "decimals": 18, + "address": "0xbDe7EEF06Fa6Cb25883268207eed61b29C9B9fC6", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x5Ef874AB47aBbd72A6502ec17a1e3d046f5D5739" + } + }, + { + "chainId": 137, + "name": "UNIFARM Token", + "symbol": "UFARM", + "decimals": 18, + "address": "0xA7305Ae84519fF8Be02484CdA45834C4E7D13Dd6", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x40986a85b4cfcdb054a6cbfb1210194fee51af88" + } + }, + { + "chainId": 137, + "name": "Gaimin Token", + "symbol": "GMRX", + "decimals": 18, + "address": "0x73F56124a34E0214067B7e5F42A132b3eA072014", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xfbb21d217e23a73aa8c1c7d39e43a6971d35e0e2" + } + }, + { + "chainId": 137, + "name": "ramen.bet", + "symbol": "RMN", + "decimals": 18, + "address": "0x77777FDFaac9FAbCdb0851EF574b84C2B7777777", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x77777FDFaac9FAbCdb0851EF574b84C2B7777777" + } + }, + { + "chainId": 137, + "name": "HyperDaonew", + "symbol": "HADO", + "decimals": 18, + "address": "0x0d202214527E82231867CC045308C1C1Ee7A1056", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x78f7126d488E7A1F0f1b47aEA1384A9BbFE93D59" + } + }, + { + "chainId": 137, + "name": "Delta Exchange Token", + "symbol": "DETO", + "decimals": 18, + "address": "0xb6dd51D3852A174D4Dbe045e77DF2ED84942ae6f", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xab93df617f51e1e415b5b4f8111f122d6b48e55c" + } + }, + { + "chainId": 137, + "name": "SupremeX Token", + "symbol": "SXC", + "decimals": 18, + "address": "0x46d3EC8CE3eC767414F16FE12176De23E3E5B46A", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x01B0086a5bBB25FE081629C232950c7aff660E2d" + } + }, + { + "chainId": 137, + "name": "Agave", + "symbol": "AGVE", + "decimals": 18, + "address": "0x75EB9Fd8608E2ff9418821062398E4F4B8d53644", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x0b006e475620af076915257c6a9e40635abdbbad" + } + }, + { + "chainId": 137, + "name": "CAD Coin", + "symbol": "CADC", + "decimals": 18, + "address": "0x5d146d8B1dACb1EBBA5cb005ae1059DA8a1FbF57", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xcadc0acd4b445166f12d2c07eac6e2544fbe2eef" + } + }, + { + "chainId": 137, + "name": "XSGD", + "symbol": "XSGD", + "decimals": 6, + "address": "0x769434dcA303597C8fc4997Bf3DAB233e961Eda2", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x70e8de73ce538da2beed35d14187f6959a8eca96" + } + }, + { + "chainId": 137, + "name": "Cream", + "symbol": "CREAM", + "decimals": 18, + "address": "0x04f3C4cF2e806da6DF31e80E8A5D121F98eDD61d", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x2ba592F78dB6436527729929AAf6c908497cB200" + } + }, + { + "chainId": 137, + "name": "Wrapped Ribbits", + "symbol": "wRBT", + "decimals": 18, + "address": "0xA5d447757daC8C5FaAB1858B13DA4aF701aDf4bb", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xaAF49D386bd44E31fF22EDF723F40EE3e4dA53cd" + } + }, + { + "chainId": 137, + "name": "Minty Art", + "symbol": "MINTY", + "decimals": 18, + "address": "0x474Ba20088174612427cf8440ac5712e98652AD2", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xb6c6920327b33f8eec26786c7462c5f4098d47e3" + } + }, + { + "chainId": 137, + "name": "Wrapped Leviathan", + "symbol": "WLEV", + "decimals": 18, + "address": "0xEB7f7955730A7DBA1427A6567950eb4a98DfCbdF", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xa2482ccff8432ee68b9a26a30fcdd2782bd81bed" + } + }, + { + "chainId": 137, + "name": "HuobiToken", + "symbol": "HT", + "decimals": 18, + "address": "0xFAD65Eb62a97fF5Ed91B23aFD039956aaCa6e93b", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x6f259637dcd74c767781e37bc6133cd6a68aa161" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/ht.svg" + }, + { + "chainId": 137, + "name": "extraDNA", + "symbol": "xDNA", + "decimals": 18, + "address": "0x0378566d2979AdCfB80316b2491757C99a44ED45", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x8e57c27761EBBd381b0f9d09Bb92CeB51a358AbB" + } + }, + { + "chainId": 137, + "name": "BaoBoShiCoin", + "symbol": "BBSC", + "decimals": 18, + "address": "0xE2aFF5409F0a5d66879f6905dFc832cbdb59919F", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xf89ba2862dfae69bc2546568d56b087d7454c9c9" + } + }, + { + "chainId": 137, + "name": "HUSD", + "symbol": "HUSD", + "decimals": 8, + "address": "0x2088C47Fc0c78356c622F79dBa4CbE1cCfA84A91", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xdf574c24545e5ffecb9a659c229253d4111d87e1" + } + }, + { + "chainId": 137, + "name": "infinite peace protocol", + "symbol": "----------", + "decimals": 18, + "address": "0xC95F5D57C482a9eE5bEd594e065ac0A2A81aAF6C", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xbe74D4CA0441fB8C6c8B3122d24BDFEcA1622D63" + } + }, + { + "chainId": 137, + "name": "pizza", + "symbol": "PIZZA", + "decimals": 18, + "address": "0x541f3deD0B7b6Dcd5ac1F44ad2f2fD99ba8E667d", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x183fb2d55120d75af601fb714f2fadda61fed49e" + } + }, + { + "chainId": 137, + "name": "UBX", + "symbol": "UBX", + "decimals": 0, + "address": "0xae64D44AA6bd7536005E663c48197d9631D4b3eB", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xf5b5efc906513b4344ebabcf47a04901f99f09f3" + } + }, + { + "chainId": 137, + "name": "Zum Token", + "symbol": "ZUM", + "decimals": 8, + "address": "0x0191297c4Bf40B31031152c06FE804ba5af5fEc1", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xe0b9bcd54bf8a730ea5d3f1ffce0885e911a502c" + } + }, + { + "chainId": 137, + "name": "EthereumPay", + "symbol": "EPAY", + "decimals": 18, + "address": "0xef8480105b325D4bB7df87fC9a665Cf9bFC3807b", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x2b5ca2f9510cf1e3595ff219f24d75d4244585ea" + } + }, + { + "chainId": 137, + "name": "FEGtoken", + "symbol": "FEG", + "decimals": 9, + "address": "0xF391F574C63d9b8764B7a1F56D6383762E07B75B", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x389999216860ab8e0175387a0c90e5c52522c945" + } + }, + { + "chainId": 137, + "name": "New Guinea Singing Dog Inu", + "symbol": "NEWINU", + "decimals": 9, + "address": "0x7C254df221993A8a2E703c3351c528f05E329595", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x1997830b5beb723f5089bb8fc38766d419a0444d" + } + }, + { + "chainId": 137, + "name": "Instadapp", + "symbol": "INST", + "decimals": 18, + "address": "0xf50D05A1402d0adAfA880D36050736f9f6ee7dee", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x6f40d4A6237C257fff2dB00FA0510DeEECd303eb" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/inst.svg" + }, + { + "chainId": 137, + "name": "Trace Network", + "symbol": "TRACE", + "decimals": 18, + "address": "0x4287F07CBE6954f9F0DecD91d0705C926d8d03A4", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x9F7fC686CfD64aA5Ae15b351d03071e91533094b" + } + }, + { + "chainId": 137, + "name": "DeSpace Protocol", + "symbol": "DES", + "decimals": 18, + "address": "0x4837C6AdB831cC3C0a5b3992bd8aE16549c9B672", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x634239cfA331Df0291653139d1a6083B9cf705e3" + } + }, + { + "chainId": 137, + "name": "Fight Token", + "symbol": "FIGHT", + "decimals": 18, + "address": "0x656010c92127623AD59991b392F9b9CF1D5B4C7a", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x2ba55a162a86c005b900c9cc63be0336e2bb8305" + } + }, + { + "chainId": 137, + "name": "ramen.bet Trial", + "symbol": "RMNT", + "decimals": 18, + "address": "0x77777777740Ccbda196b7d0b83dBFD6c00bad7e4", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x77777777740ccbda196b7d0b83dbfd6c00bad7e4" + } + }, + { + "chainId": 137, + "name": "MarginSwap", + "symbol": "MFI", + "decimals": 18, + "address": "0x7Bc429a2fA7d71C4693424FDcaB5a2521b9FD343", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xaa4e3edb11afa93c41db59842b29de64b72e355b" + } + }, + { + "chainId": 137, + "name": "DoggittyDoGG", + "symbol": "DOGG", + "decimals": 18, + "address": "0x652879Fc10c16B56A00568879A91dddABf45B211", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x8230A4634fafd27764833e19FB618E3396749C18" + } + }, + { + "chainId": 137, + "name": "DeFiPIE Token", + "symbol": "PIE", + "decimals": 18, + "address": "0x5E12f36bF1739A3A740D5916A8b22B0F5275F717", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x607c794cda77efb21f8848b7910ecf27451ae842" + } + }, + { + "chainId": 137, + "name": "YGGDRASH", + "symbol": "YEED", + "decimals": 18, + "address": "0x45A5dF3109fa4723c745Cea20548A66796870f01", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xca2796f9f61dc7b238aab043971e49c6164df375" + } + }, + { + "chainId": 137, + "name": "Ethereum Meta", + "symbol": "ETHM", + "decimals": 18, + "address": "0xbE624349C80576f6b5714BFb6DF0b5Be526719f6", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xfd957f21bd95e723645c07c48a2d8acb8ffb3794" + } + }, + { + "chainId": 137, + "name": "Centralex Token", + "symbol": "CenX", + "decimals": 18, + "address": "0x7c922aa6820b206C938D92522Bb2D5Ba1bc4dc17", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x504cde95dbc5d90d09b802f43b371971adbecf79" + } + }, + { + "chainId": 137, + "name": "Milf Token", + "symbol": "MILF", + "decimals": 18, + "address": "0xDC3b7CB4FEC9542CC518161b8C0B9a7969302C5E", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x0Dd1989e4B0E82f154b729FF47F8c9a4f4b2cC1C" + } + }, + { + "chainId": 137, + "name": "Nocturne", + "symbol": "XNOCT", + "decimals": 18, + "address": "0x0a86DB0Ad46C1201aa73D07497A5dBaa5B9Ed2c4", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xc00a57c49247106dac598912d514fcaee37db213" + } + }, + { + "chainId": 137, + "name": "Coinspaid", + "symbol": "CPD", + "decimals": 18, + "address": "0x1cE4A2C355F0DcC24E32A9Af19F1836D6F4f98ae", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x9b31bb425D8263fA1b8B9d090b83CF0C31665355" + } + }, + { + "chainId": 137, + "name": "Cat Token", + "symbol": "CAT", + "decimals": 18, + "address": "0x32EFCa87e441A654B00640D9578DF8Ad28c2Df72", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x56015BBE3C01fE05bc30A8a9a9Fd9A88917e7dB3" + } + }, + { + "chainId": 137, + "name": "AGA Carbon Credit", + "symbol": "AGAc", + "decimals": 18, + "address": "0x669ddc70273084Ea30e6cd4f28CA6e2C70735065", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xF2032813Aa3c8feEf7973e44A92E68ab11eE8021" + } + }, + { + "chainId": 137, + "name": "EXMOCoin", + "symbol": "EXM", + "decimals": 8, + "address": "0x54371579945270DEB92a9F6f1a4e33bb2A7090c5", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x83869de76b9ad8125e22b857f519f001588c0f62" + } + }, + { + "chainId": 137, + "name": "Fusion Token", + "symbol": "FSN", + "decimals": 18, + "address": "0xFA1171334CB3a0f0A91E8cA6765F10e9638D1cBF", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xd0352a019e9ab9d757776f532377aaebd36fd541" + } + }, + { + "chainId": 137, + "name": "PANDA", + "symbol": "PANDA", + "decimals": 18, + "address": "0xcD7ECB53e78564C09e024bEEac51F611ad92C618", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x73efe5e41f70bdcde2b88bda860c98f996884246" + } + }, + { + "chainId": 137, + "name": "Endor Protocol Token", + "symbol": "EDR", + "decimals": 18, + "address": "0x1Ac417f1dD23504aAC2076D854581f03196403Fd", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xc528c28fec0a90c083328bc45f587ee215760a0f" + } + }, + { + "chainId": 137, + "name": "superkittens", + "symbol": "SKITS", + "decimals": 18, + "address": "0x5357De35CF517e6CEcD91B269eA551caEE4D171C", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x6ad053f0a9BFEC8B2e9f91EbCc07e679977bdA76" + } + }, + { + "chainId": 137, + "name": "Cryption Network Token", + "symbol": "CNT", + "decimals": 18, + "address": "0xD1e6354fb05bF72A8909266203dAb80947dcEccF", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x429876c4a6f89fb470e92456b8313879df98b63c" + } + }, + { + "chainId": 137, + "name": "Polymath", + "symbol": "POLY", + "decimals": 18, + "address": "0xcB059C5573646047D6d88dDdb87B745C18161d3b", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x9992ec3cf6a55b00978cddf2b27bc6882d88d1ec" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/poly.svg" + }, + { + "chainId": 137, + "name": "SafeMoon Inu", + "symbol": "SMI", + "decimals": 8, + "address": "0x196DE3b89083ADcaD83FE49A308de24a96194731", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xcd7492db29e2ab436e819b249452ee1bbdf52214" + } + }, + { + "chainId": 137, + "name": "VUSD", + "symbol": "VUSD", + "decimals": 18, + "address": "0x28F4F063C2405922d8792B04fF24983d6eE7a4b4", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x677ddbd918637e5f2c79e164d402454de7da8619" + } + }, + { + "chainId": 137, + "name": "BNB", + "symbol": "BNB", + "decimals": 18, + "address": "0x3BA4c387f786bFEE076A58914F5Bd38d668B42c3", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xB8c77482e45F1F44dE1745F52C74426C631bDD52" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/bnb.svg" + }, + { + "chainId": 137, + "name": "DeFi SISMO", + "symbol": "SISMO", + "decimals": 18, + "address": "0x6681fe034aE21917fac759B087684de5335efD3A", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x686dDECeCC39e1Ff33EAdfB4Bfd059A44cC700Ca" + } + }, + { + "chainId": 137, + "name": "Trism", + "symbol": "TRISM", + "decimals": 18, + "address": "0x10Bc8bf16308f63F1b4852b2522F22bfD59d4392", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x56b4f8c39e07d4d5d91692acf9d0f6d4d3493763" + } + }, + { + "chainId": 137, + "name": "ALAN", + "symbol": "ALAN", + "decimals": 18, + "address": "0xa6E99049d3DC5fA94292c86E67742d7CD2ebE561", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x8c9952fb855346a752190234261f74dad13c26fa" + } + }, + { + "chainId": 137, + "name": "BracebridgeGolfClub", + "symbol": "BGC", + "decimals": 0, + "address": "0xEBd0E6B73a0e0D231DA8C91bdD60c09C9C0875c3", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xa6dc5e47ed08aa8e642ff07b0a3685f41f9f437b" + } + }, + { + "chainId": 137, + "name": "MoonTools.io", + "symbol": "MOONS", + "decimals": 18, + "address": "0x6F7362AD5656Beb11D94f4e608f2045e2fAD9dC2", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x260e63d91fccc499606bae3fe945c4ed1cf56a56" + } + }, + { + "chainId": 137, + "name": "FLAPP", + "symbol": "FLAP", + "decimals": 18, + "address": "0x594F9D6F09a17f9CAF2dC3c8705a487433412f69", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xCfb72ED3647cC8E7FA52E4F121eCdAbEfC305e7f" + } + }, + { + "chainId": 137, + "name": "CBK", + "symbol": "CBK", + "decimals": 18, + "address": "0x53f8036e43b2EF39cFCD0C5f26C1257a85D5A3B2", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x87761e886399ef8e1624cb0db3230b075a322c88" + } + }, + { + "chainId": 137, + "name": "Octett", + "symbol": "OCTT", + "decimals": 18, + "address": "0x37B5f741371ABf2207D236B6309d7D2015Bd64e9", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x06da6213683a01201b38ee1b39f56090a3cc5703" + } + }, + { + "chainId": 137, + "name": "XY Oracle", + "symbol": "XYO", + "decimals": 18, + "address": "0xd2507e7b5794179380673870d88B22F94da6abe0", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x55296f69f40ea6d20e478533c15a6b08b654e758" + } + }, + { + "chainId": 137, + "name": "DegenVC", + "symbol": "DGVC", + "decimals": 18, + "address": "0x55CeBfa4504124272D4D5464479E8878d822a8A1", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x26E43759551333e57F073bb0772F50329A957b30" + } + }, + { + "chainId": 137, + "name": "KatanaToken", + "symbol": "KATANA", + "decimals": 18, + "address": "0x90c98Ee97B8bf9A3F8dC402EACc7Bb41028A5D93", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xe6410569602124506658ff992f258616ea2d4a3d" + } + }, + { + "chainId": 137, + "name": "Collective", + "symbol": "CO2", + "decimals": 18, + "address": "0xd9b452421913D014EaEd2588ac57E941A1078C18", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x75739d5944534115d7c54ee8c73f186d793bae02" + } + }, + { + "chainId": 137, + "name": "Gitcoin", + "symbol": "GTC", + "decimals": 18, + "address": "0xdb95f9188479575F3F718a245EcA1B3BF74567EC", + "logoURI": "https://user-images.githubusercontent.com/9419140/164305478-c13be380-142e-4fe8-9adf-ac2c09e8f8d8.svg", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xde30da39c46104798bb5aa3fe8b9e0e1f348163f" + } + }, + { + "chainId": 137, + "name": "Orchid", + "symbol": "OXT", + "decimals": 18, + "address": "0x9880e3dDA13c8e7D4804691A45160102d31F6060", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x4575f41308EC1483f3d399aa9a2826d74Da13Deb" + } + }, + { + "chainId": 137, + "name": "Options.Market", + "symbol": "OSM", + "decimals": 18, + "address": "0x7392B03A2b8441a108C253f49bDfaCd40853Cc02", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x9b75848172677042269c63365b57b0a51c21d031" + } + }, + { + "chainId": 137, + "name": "renBTC", + "symbol": "renBTC", + "decimals": 8, + "address": "0xD6C23852b94FEde6AB571e4b4cFdb745b49Dc9EB", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xEB4C2781e4ebA804CE9a9803C67d0893436bB27D" + } + }, + { + "chainId": 137, + "name": "Nftfy Token", + "symbol": "NFTFY", + "decimals": 18, + "address": "0xBf6Ff49FfD3d104302Ef0AB0F10f5a84324c091c", + "logoURI": "https://gateway.ipfs.io/ipfs/QmS3W7dsYiMUqJdPofjetJPoiUTYjicZVjT2kSAiWZwJLh", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xBf6Ff49FfD3d104302Ef0AB0F10f5a84324c091c" + } + }, + { + "chainId": 137, + "name": "EthereumMax", + "symbol": "eMax", + "decimals": 18, + "address": "0x2f3D902baC71430DEdf5307E9041382dF911B1Af", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x15874d65e649880c2614e7a480cb7c9A55787FF6" + } + }, + { + "chainId": 137, + "name": "Foundry Logistics Token", + "symbol": "FRY", + "decimals": 18, + "address": "0x48D3a72230e65380f63a05eE41A7BE31773c44b4", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x6c972b70c533E2E045F333Ee28b9fFb8D717bE69" + } + }, + { + "chainId": 137, + "name": "Crypto puzzles", + "symbol": "CPTE", + "decimals": 18, + "address": "0x0833E165255E21a9e81f2D4D6bD10C43973c6526", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xE0bDFe2CE51F44556309665D59818CCb541ff067" + } + }, + { + "chainId": 137, + "name": "Assets of Steve Bayer", + "symbol": "XASB", + "decimals": 18, + "address": "0xE898695409ef54080518ECC568C6CE618E7818e1", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x6c7d4eD524C14C36048F00dc5f9bBA5848314f39" + } + }, + { + "chainId": 137, + "name": "Unifty", + "symbol": "NIF", + "decimals": 18, + "address": "0xB6Be3449C6A4b8AB082733F715788d94e78D60Ff", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x7e291890b01e5181f7ecc98d79ffbe12ad23df9e" + } + }, + { + "chainId": 137, + "name": "Panda Token", + "symbol": "PT", + "decimals": 18, + "address": "0xa053517276ae28D46b09dA0023dFCB6E1FC8e13f", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xd8164b8d21d2e97484de89bfff787d792c95ef2d" + } + }, + { + "chainId": 137, + "name": "Media Licensing Token", + "symbol": "MLT", + "decimals": 18, + "address": "0x078f0cD6ec0BeD408E9244EecE9fAc05bb4052a7", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x9506d37f70eB4C3d79C398d326C871aBBf10521d" + } + }, + { + "chainId": 137, + "name": "Student Coin", + "symbol": "STC", + "decimals": 18, + "address": "0x779b299eA455D35A44FE9baC48648be22C08DEa2", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x15b543e986b8c34074dfc9901136d9355a537e7e" + } + }, + { + "chainId": 137, + "name": "Fetch", + "symbol": "FET", + "decimals": 18, + "address": "0x7583FEDDbceFA813dc18259940F76a02710A8905", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xaea46a60368a7bd060eec7df8cba43b7ef41ad85" + } + }, + { + "chainId": 137, + "name": "Uniqly", + "symbol": "UNIQ", + "decimals": 18, + "address": "0xABEb34C52292c5f3EE96396E02D8a77c8A903a4F", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x3758e00b100876c854636ef8db61988931bb8025" + } + }, + { + "chainId": 137, + "name": "rainbowpuffpuff", + "symbol": "RPP", + "decimals": 18, + "address": "0xea9306Bbe5fEE6D501282b34e9Db2C25415662DD", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x22E38592d99102FfdAE1AE79A5bbF42DDf92818F" + } + }, + { + "chainId": 137, + "name": "Pod USD Coin", + "symbol": "pUSDC", + "decimals": 6, + "address": "0x96d161cbf38FACCeD333851A9cEf20936DDA88F4", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x386EB78f2eE79AddE8Bdb0a0e27292755ebFea58" + } + }, + { + "chainId": 137, + "name": "Pod Dai Stablecoin", + "symbol": "pDAI", + "decimals": 18, + "address": "0x18C4315847Cf73D5028c8A98EAd16e862450E618", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x2f994e2E4F3395649eeE8A89092e63Ca526dA829" + } + }, + { + "chainId": 137, + "name": "HappyPay", + "symbol": "HPAY", + "decimals": 18, + "address": "0xF9774f6D13F96b0b7f8C35E86755E1337eCEbC3C", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xEeE690AAA67d1eE33365c02C3Bf477A93867052f" + } + }, + { + "chainId": 137, + "name": "Fortune Cat Coin", + "symbol": "FCAT", + "decimals": 18, + "address": "0x0f4044F4475B7eC4bdE170146ad02A9cD3ad4853", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xB1525E3DbB9F70DA3CF6880839dE62D75E3Ce529" + } + }, + { + "chainId": 137, + "name": "eWit", + "symbol": "EWIT", + "decimals": 9, + "address": "0xe19958a47432e839932541859B639A8fB4f11232", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x56EE175FE37CD461486cE3c3166e0CaFCcd9843f" + } + }, + { + "chainId": 137, + "name": "RIOT", + "symbol": "RIOT", + "decimals": 18, + "address": "0x4FF0b68ABc2b9E4e1401E9b691DBa7d66B264AC8", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xf56408077487cB879c992909C5b5C66D68c02Eb4" + } + }, + { + "chainId": 137, + "name": "EVO", + "symbol": "EVO", + "decimals": 18, + "address": "0x4237302A7db5dfD04d1FfF5Fd93a6F09bdE8F08C", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x3fEa51dAab1672d3385f6AF02980e1462cA0687b" + } + }, + { + "chainId": 137, + "name": "Marlin POND", + "symbol": "POND", + "decimals": 18, + "address": "0x73580A2416A57f1C4b6391DBA688A9e4f7DBECE0", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x57b946008913b82e4df85f501cbaed910e58d26c" + } + }, + { + "chainId": 137, + "name": "kittenMATIC", + "symbol": "kiMATIC", + "decimals": 18, + "address": "0xaba7d7454175D549a21a6318831fde7f5046C303", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x4313D2669b73987433C82aA8Df318a39DA9e3209" + } + }, + { + "chainId": 137, + "name": "BlackPool Token", + "symbol": "BPT", + "decimals": 18, + "address": "0x6863BD30C9e313B264657B107352bA246F8Af8e0", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x0eC9F76202a7061eB9b3a7D6B59D36215A7e37da" + } + }, + { + "chainId": 137, + "name": "BCLTjack", + "symbol": "jack", + "decimals": 0, + "address": "0x11CC08D7831F50a1359ff5f30E4cB7d309272E48", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x074bF09d5859AA9DBA6c8f093255d7c01c3e7baD" + } + }, + { + "chainId": 137, + "name": "Mute.io", + "symbol": "MUTE", + "decimals": 18, + "address": "0x147Ee2488d2ede60b2443B22b245F6B4825F020f", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xa49d7499271ae71cd8ab9ac515e6694c755d400c" + } + }, + { + "chainId": 137, + "name": "bZx Protocol Token", + "symbol": "BZRX", + "decimals": 18, + "address": "0x54cFe73f2c7d0c4b62Ab869B473F5512Dc0944D2", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x56d811088235F11C8920698a204A5010a788f4b3" + } + }, + { + "chainId": 137, + "name": "Sake", + "symbol": "SAK3", + "decimals": 18, + "address": "0xeeE92219b7C4Dc9B8Aa31da1C071bc4932e6CE99", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xe9F84dE264E91529aF07Fa2C746e934397810334" + } + }, + { + "chainId": 137, + "name": "Klee Kai", + "symbol": "KLEE", + "decimals": 9, + "address": "0xf137d1744F050De7A610Db728E1cdd77C2aAa755", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x382f0160c24f5c515a19f155bac14d479433a407" + } + }, + { + "chainId": 137, + "name": "Mainframe Token", + "symbol": "MFT", + "decimals": 18, + "address": "0x91cA694d2B293f70Fe722fbA7d8A5259188959c3", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xDF2C7238198Ad8B389666574f2d8bc411A4b7428" + } + }, + { + "chainId": 137, + "name": "SIREN", + "symbol": "SI", + "decimals": 18, + "address": "0x54585aAc4353ac2B30022797915ef81D152D5223", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xd23ac27148af6a2f339bd82d0e3cff380b5093de" + } + }, + { + "chainId": 137, + "name": "SamoSwap", + "symbol": "SAMOZ", + "decimals": 18, + "address": "0x7d3fA4bAD8220d927A23F29aa70866Ea97bBF313", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x7BE4060ffF13360301E0123D676A2705149964D7" + } + }, + { + "chainId": 137, + "name": "Penky", + "symbol": "PENKY", + "decimals": 18, + "address": "0x3A35e98cC7390A15d458Bb85f9a12823e2eF25eD", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xf8939164a46fbe9fc923f837221eb541e3c7e7b0" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/penky.svg" + }, + { + "chainId": 137, + "name": "Pteria", + "symbol": "PTERIA", + "decimals": 18, + "address": "0xc844e334cC96435e71869Fb2F7AD26961A010821", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x02Eca910CB3A7D43eBC7e8028652ed5C6b70259B" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/pteria.svg" + }, + { + "chainId": 137, + "name": "Museum of Crypto Art", + "symbol": "MOCA", + "decimals": 18, + "address": "0xcE899f26928a2B21c6a2Fddd393EF37c61dbA918", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x9Ac07635DDBDE5db18648c360DEFb00F5f22537e" + } + }, + { + "chainId": 137, + "name": "Future of Finance Fund", + "symbol": "FFF", + "decimals": 18, + "address": "0x9aCeB6f749396d1930aBc9e263eFc449E5e82c13", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xabafa52d3d5a2c18a4c1ae24480d22b831fc0413" + } + }, + { + "chainId": 137, + "name": "Zoo Token", + "symbol": "ZOOT", + "decimals": 9, + "address": "0x698619687Dcc9DBE01739D15DfA47e04b0d22443", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x1341a2257fa7b770420ef70616f888056f90926c" + } + }, + { + "chainId": 137, + "name": "Hanzo Inu", + "symbol": "HNZO", + "decimals": 9, + "address": "0xfd66114337Ec9c1021f774aF01f81c56148D938B", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x239dc02a28a0774738463e06245544a72745d5c5" + } + }, + { + "chainId": 137, + "name": "Highly Regarded Token", + "symbol": "RTRD", + "decimals": 18, + "address": "0x5B0c10270Ae2Ee3DC1003BB1E5Cb63E93306131C", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x5aaddb423d184b4f84b1c07022a1ba1168f83575" + } + }, + { + "chainId": 137, + "name": "FalconSwap Token", + "symbol": "FSW", + "decimals": 18, + "address": "0xad5dc12E88C6534Eea8cFe2265851D9d4A1472AD", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xfffffffFf15AbF397dA76f1dcc1A1604F45126DB" + } + }, + { + "chainId": 137, + "name": "Etherland", + "symbol": "ELAND", + "decimals": 18, + "address": "0xb0f61C597BBcc29f3f38396B01f9C0f0C2e8BFf0", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x33e07f5055173cf8febede8b21b12d1e2b523205" + } + }, + { + "chainId": 137, + "name": "validator-Eth2", + "symbol": "vETH2", + "decimals": 18, + "address": "0x2fBB41B5Bb01cbFa1cf14473B136666a08Db4AdF", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x898bad2774eb97cf6b94605677f43b41871410b1" + } + }, + { + "chainId": 137, + "name": "DeHive.finance", + "symbol": "DHV", + "decimals": 18, + "address": "0x6362Bd3Bd1a217bbf6Afa810eaA63f2d55620e2e", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x62dc4817588d53a056cbbd18231d91ffccd34b2a" + } + }, + { + "chainId": 137, + "name": "Bytom minted", + "symbol": "mBTM", + "decimals": 8, + "address": "0xA16EbA3b7562FC92597579A80Fe53a92DCab7122", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x9288a57d6c5644b25569e9d1d5e9e328228d26c6" + } + }, + { + "chainId": 137, + "name": "Koji", + "symbol": "KOJI", + "decimals": 18, + "address": "0x6E94662b2f78DF1f014Dafa7464Bded57F1481B2", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x1c8266a4369af6d80df2659ba47b3c98f35cb8be" + } + }, + { + "chainId": 137, + "name": "CargoX Token", + "symbol": "CXO", + "decimals": 18, + "address": "0xf2ae0038696774d65E67892c9D301C5f2CbbDa58", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xb6ee9668771a79be7967ee29a63d4184f8097143" + } + }, + { + "chainId": 137, + "name": "ExoPlanets", + "symbol": "XPL", + "decimals": 18, + "address": "0x8A95d35dF832F03e99ED8Ee86E9d5F6Dd2641e81", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xb12e260275bcd28e6f8820666ba02c67c9600843" + } + }, + { + "chainId": 137, + "name": "Metric.exchange", + "symbol": "METRIC", + "decimals": 18, + "address": "0x9f1Aeb72d5F38f2852b2a0f610bFb0391a6a9aB4", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xefc1c73a3d8728dc4cf2a18ac5705fe93e5914ac" + } + }, + { + "chainId": 137, + "name": "BitSong", + "symbol": "BTSG", + "decimals": 18, + "address": "0xc5946F0c9b521f72658b658fC1260D04ea7fBE73", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x05079687d35b93538cbd59fe5596380cae9054a9" + } + }, + { + "chainId": 137, + "name": "AMIS", + "symbol": "AMIS", + "decimals": 9, + "address": "0x6f57Ec3C983a04C9Bf9958C9E908c39a3cD0870d", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x949bed886c739f1a3273629b3320db0c5024c719" + } + }, + { + "chainId": 137, + "name": "Spice", + "symbol": "SFI", + "decimals": 18, + "address": "0x35b937583F04A24963eb685F728a542240f28Dd8", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xb753428af26e81097e7fd17f40c88aaa3e04902c" + } + }, + { + "chainId": 137, + "name": "NETVRK", + "symbol": "NTVRK", + "decimals": 18, + "address": "0xe4eF793a4bFe292D7eb229dF804FAb5BDc2c51E8", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xfc0d6cf33e38bce7ca7d89c0e292274031b7157a" + } + }, + { + "chainId": 137, + "name": "Oraichain Token", + "symbol": "ORAI", + "decimals": 18, + "address": "0xF4310Adb83694Bc4808e0C5ca8F7027C6127921D", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x4c11249814f11b9346808179cf06e71ac328c1b5" + } + }, + { + "chainId": 137, + "name": "Archer DAO Governance Token", + "symbol": "ARCH", + "decimals": 18, + "address": "0x15c310F7Af0F5379D84dfBA2fbF41b127023C784", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x1f3f9d3068568f8040775be2e8c03c103c61f3af" + } + }, + { + "chainId": 137, + "name": "Bird.Money", + "symbol": "BIRD", + "decimals": 18, + "address": "0x464F540Ef8c72bBBEC620dFb12Fcb55d1989d861", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x70401dfd142a16dc7031c56e862fc88cb9537ce0" + } + }, + { + "chainId": 137, + "name": "Meta", + "symbol": "MTA", + "decimals": 18, + "address": "0xF501dd45a1198C2E1b5aEF5314A68B9006D842E0", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xa3bed4e1c75d00fa6f4e5e6922db7261b5e9acd2" + } + }, + { + "chainId": 137, + "name": "AllianceBlock Token", + "symbol": "ALBT", + "decimals": 18, + "address": "0x60098a09fe0436eA7099F0444F05A36bEB71cB09", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x00a8b738e453ffd858a7edf03bccfe20412f0eb0" + } + }, + { + "chainId": 137, + "name": "Hegic", + "symbol": "HEGIC", + "decimals": 18, + "address": "0xb54E928297F1Bf5740FF345811443de0F6FCd48b", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x584bc13c7d411c00c01a62e8019472de68768430" + } + }, + { + "chainId": 137, + "name": "ROOK", + "symbol": "ROOK", + "decimals": 18, + "address": "0xF92501c8213da1D6C74A76372CCc720Dc8818407", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xfa5047c9c78b8877af97bdcb85db743fd7313d4a" + } + }, + { + "chainId": 137, + "name": "CRO", + "symbol": "CRO", + "decimals": 8, + "address": "0xAdA58DF0F643D959C2A47c9D4d4c1a4deFe3F11C", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xa0b73e1ff0b80914ab6fe0444e65848c4c34450b" + } + }, + { + "chainId": 137, + "name": "Voyager", + "symbol": "VGX", + "decimals": 8, + "address": "0x054c42b6414747F5263b4A86f21B1aFAD00326Bf", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x5af2be193a6abca9c8817001f45744777db30756" + } + }, + { + "chainId": 137, + "name": "Serum", + "symbol": "SRM", + "decimals": 6, + "address": "0x6Bf2eb299E51Fc5DF30Dec81D9445dDe70e3F185", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x476c5e26a75bd202a9683ffd34359c0cc15be0ff" + } + }, + { + "chainId": 137, + "name": "Phala", + "symbol": "PHA", + "decimals": 18, + "address": "0x3Dee6CeB3F1E0061793510D21F2CCdE2941CB612", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x6c5ba91642f10282b576d91922ae6448c9d52f4e" + } + }, + { + "chainId": 137, + "name": "Carbon", + "symbol": "CRBN", + "decimals": 18, + "address": "0x89eF0900b0A6b5548ab2FF58EF588F9433b5fCf5", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xcdeee767bed58c5325f68500115d4b722b3724ee" + } + }, + { + "chainId": 137, + "name": "Collateral", + "symbol": "COLL", + "decimals": 18, + "address": "0x7C68ad908D4Da363c2379D2D58E718093b9Bf970", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x957891c11616d3e0b0a76a76fb42724c382e0ef3" + } + }, + { + "chainId": 137, + "name": "LQTY", + "symbol": "LQTY", + "decimals": 18, + "address": "0x8Ab2Fec94d17ae69FB90E7c773f2C85Ed1802c01", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x6dea81c8171d0ba574754ef6f8b412f2ed88c54d" + } + }, + { + "chainId": 137, + "name": "Plasma", + "symbol": "PPAY", + "decimals": 18, + "address": "0x08158A6b5d4018340387d1A302f882E98a8bC5b4", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x054D64b73d3D8A21Af3D764eFd76bCaA774f3Bb2" + } + }, + { + "chainId": 137, + "name": "Healthcare Administration Token", + "symbol": "SOLVE", + "decimals": 8, + "address": "0x00A49A868d3FB149483A69045e1Ed01e8C812FF0", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x446c9033e7516d820cc9a2ce2d0b7328b579406f" + } + }, + { + "chainId": 137, + "name": "Pogcoin", + "symbol": "POG", + "decimals": 2, + "address": "0xE9124Da8d008774283467b2D618624D287dE0339", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x9DF38Ad87D02b006F93424C6815BA0B2B3e3AEF8" + } + }, + { + "chainId": 137, + "name": "DAO1", + "symbol": "DAO1", + "decimals": 18, + "address": "0x3c5D1617C30BA71972adD4b0C9A6B9848f2afeeD", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xce3f6f6672616c39d8b6858f8dac9902eca42c84" + } + }, + { + "chainId": 137, + "name": "SafeSwap", + "symbol": "SSGT", + "decimals": 18, + "address": "0x914034f0FF781c430Aa9594851cC95806fd19dc6", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x2ECc48ba346A73d7d55aa5a46b5E314d9DAA6161" + } + }, + { + "chainId": 137, + "name": "Value Coin", + "symbol": "VALUE", + "decimals": 18, + "address": "0x6B0a55D19Af4F16F98965A5B85a308383D8bE55f", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x6997a08DE139F0b99444506f333A04Cf657832a1" + } + }, + { + "chainId": 137, + "name": "ShroomTopia SPOR Token", + "symbol": "SPOR", + "decimals": 18, + "address": "0xdc87ED1b972d42c5B218503A542d438B7fc65B7B", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x80b70ec7ed638b5f7b4ecf0edbe6c2feebde9d02" + } + }, + { + "chainId": 137, + "name": "Tacos", + "symbol": "TACO", + "decimals": 18, + "address": "0x09450784A86A083041F5773836dCA457531ea00b", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x00d1793d7c3aae506257ba985b34c76aaf642557" + } + }, + { + "chainId": 137, + "name": "THORChain ETH.RUNE", + "symbol": "RUNE", + "decimals": 18, + "address": "0x722Eb54CD20D13938dF8E792A5849a2391C8463F", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x3155ba85d5f96b2d030a4966af206230e46849cb" + } + }, + { + "chainId": 137, + "name": "PieDAO DOUGH v2", + "symbol": "DOUGH", + "decimals": 18, + "address": "0x990F860968714c2D16e91Ec0cd9709A94264Cf64", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xad32a8e6220741182940c5abf610bde99e737b2d" + } + }, + { + "chainId": 137, + "name": "TestScaleSwapToken", + "symbol": "TSCA", + "decimals": 18, + "address": "0x2242973E0D9CACAda96372A9E23C96F15776B96b", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xc5e9be63ab9473280c4ff9ff789ca584958e0494" + } + }, + { + "chainId": 137, + "name": "Yearn Ecosystem Pie", + "symbol": "YPIE", + "decimals": 18, + "address": "0xd3F0cd30a2D3aEFb180D23f3F38Aa1C4e0B1c98A", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x17525e4f4af59fbc29551bc4ece6ab60ed49ce31" + } + }, + { + "chainId": 137, + "name": "PieDAO DEFI Large Cap", + "symbol": "DEFI+L", + "decimals": 18, + "address": "0xE90777bd6c84bf4762565eD83bc5784cc9FAf8C4", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x78f225869c08d478c34e5f645d07a87d3fe8eb78" + } + }, + { + "chainId": 137, + "name": "PieDAO DEFI Small Cap", + "symbol": "DEFI+S", + "decimals": 18, + "address": "0x986d3EA4089488f77469697c50517eE12F36E1bC", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xad6a626ae2b43dcb1b39430ce496d2fa0365ba9c" + } + }, + { + "chainId": 137, + "name": "PieDAO DEFI++", + "symbol": "DEFI++", + "decimals": 18, + "address": "0x5b6ab5078Bd2bbF1A215fFFBa16a94b7DF7F639d", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x8d1ce361eb68e9e05573443c407d4a3bed23b033" + } + }, + { + "chainId": 137, + "name": "CompliFi", + "symbol": "COMFI", + "decimals": 18, + "address": "0x72bba3Aa59a1cCB1591D7CDDB714d8e4D5597E96", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x752efadc0a7e05ad1bcccda22c141d01a75ef1e4" + } + }, + { + "chainId": 137, + "name": "COOS", + "symbol": "COOS", + "decimals": 18, + "address": "0xff4b04163E530d763010171358E7e1f70c1AbbD1", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x24EbfC20Bb2e1dAADd98d28341ab37D0c154f4Cb" + } + }, + { + "chainId": 137, + "name": "Method", + "symbol": "MTHD", + "decimals": 18, + "address": "0x9bD0463B12B432AfBDd6B79Ae2032267676ce948", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x84ba4aecfde39d69686a841bab434c32d179a169" + } + }, + { + "chainId": 137, + "name": "pTokens BTC", + "symbol": "pBTC", + "decimals": 18, + "address": "0x121eF177A0489271B4339bc29Ee64609b47D43C4", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x5228a22e72ccc52d415ecfd199f99d0665e7733b" + } + }, + { + "chainId": 137, + "name": "NFT Protocol", + "symbol": "NFT", + "decimals": 18, + "address": "0x65c2C7095bFDC8460d7302b6a95c66cD5D8B2CFf", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xcB8d1260F9c92A3A545d409466280fFdD7AF7042" + } + }, + { + "chainId": 137, + "name": "Echo Token", + "symbol": "ECHO", + "decimals": 18, + "address": "0xbE34506683C842Dea90244333f9E8312672F1106", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x171706B7D113c68f2cc68a6CE63b1dbDcdF7B233" + } + }, + { + "chainId": 137, + "name": "0chain", + "symbol": "ZCN", + "decimals": 10, + "address": "0x8bB30E0e67b11b978a5040144c410e1ccDDcba30", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xb9EF770B6A5e12E45983C5D80545258aA38F3B78" + } + }, + { + "chainId": 137, + "name": "Golem Network Token", + "symbol": "GLM", + "decimals": 18, + "address": "0x0B220b82F3eA3B7F6d9A1D8ab58930C064A2b5Bf", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x7DD9c5Cba05E151C895FDe1CF355C9A1D5DA6429" + } + }, + { + "chainId": 137, + "name": "Mutt Coin", + "symbol": "MUTT", + "decimals": 18, + "address": "0x3B538469d94cDa1387c473F408C833c2208bcEd7", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x766b0f271b6bf2a424259e19e155d6d24ea1c0b1" + } + }, + { + "chainId": 137, + "name": "Linear Token", + "symbol": "LINA", + "decimals": 18, + "address": "0x664a31F4985f1eF31d90D73E3da7ed880a052195", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x3e9bc21c9b189c09df3ef1b824798658d5011937" + } + }, + { + "chainId": 137, + "name": "South African Tether", + "symbol": "XZAR", + "decimals": 18, + "address": "0x30DE46509Dbc3a491128F97be0aAf70dc7Ff33cB", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x48f07301e9e29c3c38a80ae8d9ae771f224f1054" + } + }, + { + "chainId": 137, + "name": "TNodeGreen", + "symbol": "TNG", + "decimals": 8, + "address": "0x0F38dB64E04Bcd5373dCdF941Fd909d8436f4fdb", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xa0e2a28fd7b1e4e7e5cced5c5bb00f7d24a5c282" + } + }, + { + "chainId": 137, + "name": "OCC", + "symbol": "OCC", + "decimals": 18, + "address": "0xF30355BA14B2d3b31597EC71a4542f57e902Cb80", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x2f109021afe75b949429fe30523ee7c0d5b27207" + } + }, + { + "chainId": 137, + "name": "Layer 2 Index", + "symbol": "LTI", + "decimals": 18, + "address": "0xE329456b762a3888bbaFf6880036931D1399a417", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x693391144D1e079e20cC64f795e9450C94966171" + } + }, + { + "chainId": 137, + "name": "DEXTF Token", + "symbol": "DEXTF", + "decimals": 18, + "address": "0x400784930560ab531bD840Eb00f52e9CF66bdf98", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x5f64ab1544d28732f0a24f4713c2c8ec0da089f0" + } + }, + { + "chainId": 137, + "name": "vVSP pool", + "symbol": "vVSP", + "decimals": 18, + "address": "0xF2C1b3B6eB00a3fe46478FC2E7a5E04997fEBa22", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xbA4cFE5741b357FA371b506e5db0774aBFeCf8Fc" + } + }, + { + "chainId": 137, + "name": "Virtual Dollar", + "symbol": "DV", + "decimals": 18, + "address": "0x385E2000681D5979AE4e5171B94b5d5813d6253F", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xb791a875eA4836a9EC16CdCF4F747c0b9CA47C7d" + } + }, + { + "chainId": 137, + "name": "VesperToken", + "symbol": "VSP", + "decimals": 18, + "address": "0x09C5a4BCA808bD1ba2b8E6B3aAF7442046B4ca5B", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x1b40183efb4dd766f11bda7a7c3ad8982e998421" + } + }, + { + "chainId": 137, + "name": "CoinDev.io", + "symbol": "ANAL", + "decimals": 18, + "address": "0x0A438D3b374bB68a1EFd8e70ACDf22C995310Cf7", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x1a2df43ae7dee5e7a1915a4125a0c3875757bd5a" + } + }, + { + "chainId": 137, + "name": "Lyon.Finance", + "symbol": "LYON", + "decimals": 2, + "address": "0x6b8f374e899e20CD1c97300a4A87ed07E4b8B9f9", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x0e29041fb31a3e7f5f7f6a917a7df006f75a7373" + } + }, + { + "chainId": 137, + "name": "APWine Token", + "symbol": "APW", + "decimals": 18, + "address": "0x6C0AB120dBd11BA701AFF6748568311668F63FE0", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x4104b135DBC9609Fc1A9490E61369036497660c8" + } + }, + { + "chainId": 137, + "name": "ZEN Exchange Token", + "symbol": "ZCX", + "decimals": 18, + "address": "0xf86302c0716098Ef5b3d358099683904f449FFB8", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xc52c326331e9ce41f04484d3b5e5648158028804" + } + }, + { + "chainId": 137, + "name": "ZARP (Rand Reserve)", + "symbol": "ZARP", + "decimals": 2, + "address": "0xA28F6797f9Be95a6AE2b59Bbe94498725dC091A9", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x2f085edec7113e54a1747bD9572b213E662C6165" + } + }, + { + "chainId": 137, + "name": "bXIOT Token", + "symbol": "bXIOT", + "decimals": 6, + "address": "0x8FE2526045E6658Cd60c3eCbD92F6D33E73A1D1b", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x5c4ac68aAc56eBe098D621Cd8CE9F43270Aaa355" + } + }, + { + "chainId": 137, + "name": "RegiCoin", + "symbol": "REGI", + "decimals": 18, + "address": "0xfa72b07adE2Af7d41413850A1e8D5578b3490988", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xD8b98032f2220e1DDCC65371c0a7b9fA7391D347" + } + }, + { + "chainId": 137, + "name": "HORD Token", + "symbol": "HORD", + "decimals": 18, + "address": "0xa3590A0e0c9963d048a9f43cF1ee506Fb27D9129", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x43a96962254855f16b925556f9e97be436a43448" + } + }, + { + "chainId": 137, + "name": "Polkadex", + "symbol": "PDEX", + "decimals": 18, + "address": "0x93C2C75A674700e9Ed7A46Cf220EC140aea09Fad", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xF59ae934f6fe444afC309586cC60a84a0F89Aaea" + } + }, + { + "chainId": 137, + "name": "Doge of Woof Street", + "symbol": "WSDOGE", + "decimals": 9, + "address": "0xCaE54386449C0A7CE2d680982E3D08250dc3ec3b", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xCBDf1deb934E945a70b7289bB98e97013777F820" + } + }, + { + "chainId": 137, + "name": "Cyclone Protocol", + "symbol": "CYC", + "decimals": 18, + "address": "0x76cD98a81b80f9373463b70cFfFf9c4b4Fd92062", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x8861cff2366c1128fd699b68304ad99a0764ef9a" + } + }, + { + "chainId": 137, + "name": "IoTeX Network", + "symbol": "IOTX", + "decimals": 18, + "address": "0xf6372cDb9c1d3674E83842e3800F2A62aC9F3C66", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x6fb3e0a217407efff7ca062d46c26e5d60a14d69" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/iotx.svg" + }, + { + "chainId": 137, + "name": "DogeDao", + "symbol": "DogeDao", + "decimals": 18, + "address": "0x40077808B346681C7032Cdf6a2920ab9980eAb91", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x044f613cdfffbac8bba42283dd8d97b81c8b3f3c" + } + }, + { + "chainId": 137, + "name": "Pinknode Token", + "symbol": "PNODE", + "decimals": 18, + "address": "0x4E92f6f10496F3fCB790Cc6969Cc15B87c8F9199", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xAF691508BA57d416f895e32a1616dA1024e882D2" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/pnode.svg" + }, + { + "chainId": 137, + "name": "Shiba Cosmos", + "symbol": "SHIBCO", + "decimals": 9, + "address": "0x19334A0E0A6089D4014f82E9077Ec1a27e27bfa1", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xc5c43ad81e6c76eaa1f2dd92cb6a11ff6b6d09ea" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/shibco.svg" + }, + { + "chainId": 137, + "name": "Coldstack", + "symbol": "CLS", + "decimals": 18, + "address": "0xd1C9704bB651d334e9A600dbc056504cc773479F", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x675bbc7514013e2073db7a919f6e4cbef576de37" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/cls.svg" + }, + { + "chainId": 137, + "name": "Interest-Bearing BTC", + "symbol": "ibBTC", + "decimals": 18, + "address": "0x4EaC4c4e9050464067D673102F8E24b2FccEB350", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xc4e15973e6ff2a35cc804c2cf9d2a1b817a8b40f" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/ibbtc.svg" + }, + { + "chainId": 137, + "name": "UniPower", + "symbol": "POWER", + "decimals": 18, + "address": "0x00D5149cDF7CEC8725bf50073c51c4fa58eCCa12", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xF2f9A7e93f845b3ce154EfbeB64fB9346FCCE509" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/power.svg" + }, + { + "chainId": 137, + "name": "SafeEarth", + "symbol": "SAFEEARTH", + "decimals": 9, + "address": "0x431351DbFE3E03Be7842e411C6627aCb0763C5fc", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xe6f1966d04cfcb9cd1b1dc4e8256d8b501b11cba" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/safeearth.svg" + }, + { + "chainId": 137, + "name": "Conjure", + "symbol": "CNJ", + "decimals": 18, + "address": "0x2b76F9E7BecC7B4381EEB1894385045B1aA7fBAb", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x00A55375002f3cDa400383F479e7Cd57Bad029A9" + } + }, + { + "chainId": 137, + "name": "Donkey", + "symbol": "DON", + "decimals": 18, + "address": "0xc1fe55e82A992f870F68Ba208617486Bee7Ad0fc", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x217ddead61a42369a266f1fb754eb5d3ebadc88a" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/don.svg" + }, + { + "chainId": 137, + "name": "dfohub", + "symbol": "buidl", + "decimals": 18, + "address": "0x33E09c93c7515BC346bF49D4e4bD0C7bE63F814D", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x7b123f53421b1bf8533339bfbdc7c98aa94163db" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/buidl.svg" + }, + { + "chainId": 137, + "name": "ETHA", + "symbol": "ETHA", + "decimals": 18, + "address": "0x59E9261255644c411AfDd00bD89162d09D862e38", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x59E9261255644c411AfDd00bD89162d09D862e38" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/etha.svg" + }, + { + "chainId": 137, + "name": "megaBONK", + "symbol": "mBONK", + "decimals": 18, + "address": "0xd93c61D4418d77A537b6B57478C108E193362f0C", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xacfe45c352c902ae3a3f9b6bfe6ec994c5d791bf" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/mbonk.svg" + }, + { + "chainId": 137, + "name": "ChainGuardians Governance Token", + "symbol": "CGG", + "decimals": 18, + "address": "0x2Ab4f9aC80F33071211729e45Cfc346C1f8446d5", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x1fe24f25b1cf609b9c4e7e12d802e3640dfa5e43" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/cgg.svg" + }, + { + "chainId": 137, + "name": "dHEDGE Top Index", + "symbol": "dTOP", + "decimals": 18, + "address": "0x0361BdEAB89DF6BBcc52c43589FABba5143d19dD", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x0f4c00139602AB502Bc7c1c0e71D6CB72A9FB0e7" + } + }, + { + "chainId": 137, + "name": "iEx.ec Network Token", + "symbol": "RLC", + "decimals": 9, + "address": "0xbe662058e00849C3Eef2AC9664f37fEfdF2cdbFE", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x607f4c5bb672230e8672085532f7e901544a7375" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/rlc.svg" + }, + { + "chainId": 137, + "name": "Woofy", + "symbol": "WOOFY", + "decimals": 12, + "address": "0xD0660cD418a64a1d44E9214ad8e459324D8157f1", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xD0660cD418a64a1d44E9214ad8e459324D8157f1" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/woofy.svg" + }, + { + "chainId": 137, + "name": "Jigstack", + "symbol": "STAK", + "decimals": 18, + "address": "0x46A5D492788f8AFdfC743Ab7D7bD13F996249ED5", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x1f8a626883d7724dbd59ef51cbd4bf1cf2016d13" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/stak.svg" + }, + { + "chainId": 137, + "name": "Mogul Stars", + "symbol": "STARS", + "decimals": 18, + "address": "0xFd81cfCD9C525b0A4C83Cdc37fd23f7e233CDE45", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xc55c2175E90A46602fD42e931f62B3Acc1A013Ca" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/stars.svg" + }, + { + "chainId": 137, + "name": "Cryptex", + "symbol": "CTX", + "decimals": 18, + "address": "0x8c208BC2A808a088a78398fed8f2640cab0b6EDb", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x321c2fe4446c7c963dc41dd58879af648838f98d" + } + }, + { + "chainId": 137, + "name": "TCAP Token", + "symbol": "TCAP", + "decimals": 18, + "address": "0x67BcDE6a52BE923D3223fCae927aB16B352768Bb", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x16c52CeeCE2ed57dAd87319D91B5e3637d50aFa4" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/tcap.svg" + }, + { + "chainId": 137, + "name": "ArGo Token", + "symbol": "ARGO", + "decimals": 18, + "address": "0xD0252fB67606Ed74d0cACD17B2eb38446e4466c9", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x28Cca76f6e8eC81e4550ecd761f899110b060E97" + } + }, + { + "chainId": 137, + "name": "SuperBid", + "symbol": "SUPERBID", + "decimals": 18, + "address": "0xA3860f969075045D82de85B06bB665f93c4BAE32", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x0563dce613d559a47877ffd1593549fb9d3510d6" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/superbid.svg" + }, + { + "chainId": 137, + "name": "Finally Usable Crypto Karma", + "symbol": "FUCK", + "decimals": 4, + "address": "0x3C1D58c24D9a33bBa6d90E31e3AA828aF33f4F58", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x65be44c747988fbf606207698c944df4442efe19" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/fuck.svg" + }, + { + "chainId": 137, + "name": "AurusSILVER", + "symbol": "AWS", + "decimals": 18, + "address": "0xA96D47c621a8316d4F9539E3B38180C7067e84CA", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xb89903dde3899f0280b99913168ee833a7896b93" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/aws.svg" + }, + { + "chainId": 137, + "name": "Dogelon", + "symbol": "ELON", + "decimals": 18, + "address": "0xE0339c80fFDE91F3e20494Df88d4206D86024cdF", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x761d38e5ddf6ccf6cf7c55759d5210750b5d60f3" + } + }, + { + "chainId": 137, + "name": "Wrapped Tezos", + "symbol": "WXTZ", + "decimals": 18, + "address": "0x308ba429a913d952275090Fc35dEA9C36A511B5A", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xA3865E64121537b5b59B5e239Db4aCBe6F36aa74" + } + }, + { + "chainId": 137, + "name": "Wrapped Litecoin", + "symbol": "WLTC", + "decimals": 18, + "address": "0xb2DB9d30CaA8A46e7a99b3Cec2e014f9488071eC", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x53c4871322Bb47e7A24136fce291a6dcC832a294" + } + }, + { + "chainId": 137, + "name": "Wrapped Filecoin", + "symbol": "WFIL", + "decimals": 18, + "address": "0xEde1B77C0Ccc45BFa949636757cd2cA7eF30137F", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x6e1A19F235bE7ED8E3369eF73b196C07257494DE" + } + }, + { + "chainId": 137, + "name": "Wrapped ZEC", + "symbol": "WZEC", + "decimals": 18, + "address": "0x4F38008D9E2b6F1374199B29d6610021f70F174b", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x4A64515E5E1d1073e83f30cB97BEd20400b66E10" + } + }, + { + "chainId": 137, + "name": "Labra", + "symbol": "LABRA", + "decimals": 9, + "address": "0xCE59e5c0F130Da0796509a0d32f44B0a6C81B9de", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x106d3c66d22d2dd0446df23d7f5960752994d600" + } + }, + { + "chainId": 137, + "name": "LIQUID", + "symbol": "LIQUID", + "decimals": 18, + "address": "0x258b34a8f350c833D5308cEb3F7f586c54aFe973", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xC618D56b6D606E59c6B87Af724AB5a91eb40D1cb" + } + }, + { + "chainId": 137, + "name": "PETRON PAY SECURITY TOKEN", + "symbol": "PETRON", + "decimals": 18, + "address": "0xfF7ef642B070CF63602E46a2eD63aDf893e95437", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x43789e8aeef0d30cffb57fc0870a5c785b7b93a1" + } + }, + { + "chainId": 137, + "name": "Jejudoge", + "symbol": "JEJUDOGE", + "decimals": 18, + "address": "0x5Ca2ea050a3552aDdAA88466f0AA088bCc0dC2fb", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x939a7a577d93ad29b64c1595b1284ce660a479b9" + } + }, + { + "chainId": 137, + "name": "Inverse DAO", + "symbol": "INV", + "decimals": 18, + "address": "0xF18Ac368001b0DdC80aA6a8374deb49e868EFDb8", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x41D5D79431A913C4aE7d69a668ecdfE5fF9DFB68" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/inv.svg" + }, + { + "chainId": 137, + "name": "Wrapped STA", + "symbol": "WSTA", + "decimals": 18, + "address": "0xf629712180bEF6F4c569B704e03d0AcbE276Eb6d", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xedeec5691f23e4914cf0183a4196bbeb30d027a0" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/wsta.svg" + }, + { + "chainId": 137, + "name": "Sanshu Inu", + "symbol": "SANSHU", + "decimals": 9, + "address": "0xC518edFB9667214Be3559B86E73777d1C4789163", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xc73c167e7a4ba109e4052f70d5466d0c312a344d" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/sanshu.svg" + }, + { + "chainId": 137, + "name": "YFII.finance", + "symbol": "YFII", + "decimals": 18, + "address": "0xb8cb8a7F4C2885C03e57E973C74827909Fdc2032", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xa1d0E215a23d7030842FC67cE582a6aFa3CCaB83" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/yfii.svg" + }, + { + "chainId": 137, + "name": "USDK", + "symbol": "USDK", + "decimals": 18, + "address": "0xD07A7FAc2857901E4bEC0D89bBDAe764723AAB86", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x1c48f86ae57291f7686349f12601910bd8d470bb" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/usdk.svg" + }, + { + "chainId": 137, + "name": "Paxos Standard", + "symbol": "PAX", + "decimals": 18, + "address": "0x6F3B3286fd86d8b47EC737CEB3D0D354cc657B3e", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x8e870d67f660d95d5be530380d0ec0bd388289e1" + } + }, + { + "chainId": 137, + "name": "Gemini dollar", + "symbol": "GUSD", + "decimals": 2, + "address": "0xC8A94a3d3D2dabC3C1CaffFFDcA6A7543c3e3e65", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x056fd409e1d7a124bd7017459dfea2f387b6d5cd" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/gusd.svg" + }, + { + "chainId": 137, + "name": "TrueUSD", + "symbol": "TUSD", + "decimals": 18, + "address": "0x2e1AD108fF1D8C782fcBbB89AAd783aC49586756", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x0000000000085d4780B73119b644AE5ecd22b376" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/tusd.svg" + }, + { + "chainId": 137, + "name": "0x Protocol Token", + "symbol": "ZRX", + "decimals": 18, + "address": "0x5559Edb74751A0edE9DeA4DC23aeE72cCA6bE3D5", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xe41d2489571d322189246dafa5ebde1f4699f498" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/zrx.svg" + }, + { + "chainId": 137, + "name": "3 Comma Club", + "symbol": "THREE", + "decimals": 18, + "address": "0x66D70309D37eaEA53B22A1a3fA280327B2C610c6", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x14fD3063dfd3cE0A2C4C5eE43aB49988A989202C" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/three.svg" + }, + { + "chainId": 137, + "name": "PUSSY token", + "symbol": "PUSSY", + "decimals": 18, + "address": "0x79B9A1C21EcF6a22A6D722A5Bfb437Ef776E87CD", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x9196e18bc349b1f64bc08784eae259525329a1ad" + } + }, + { + "chainId": 137, + "name": "BTC 2x Flexible Leverage Index", + "symbol": "BTC2x-FLI", + "decimals": 18, + "address": "0x4b54Bc363f5F9c6E0fcd82EaC6919aE213464Cc6", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x0b498ff89709d3838a063f1dfa463091f9801c2b" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/btc2x-fli.svg" + }, + { + "chainId": 137, + "name": "Dickels", + "symbol": "8=D", + "decimals": 18, + "address": "0x68e311445FA668107f1dCd13758788643b3AF240", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xa64c3956D55592fa20762D8e62eB5B8E6f8AaAd0" + } + }, + { + "chainId": 137, + "name": "BLOCKv Token", + "symbol": "VEE", + "decimals": 18, + "address": "0xf1c1A3C2481A3a8A3f173A9ab5Ade275292A6fA3", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x340D2bdE5Eb28c1eed91B2f790723E3B160613B7" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/vee.svg" + }, + { + "chainId": 137, + "name": "L�f", + "symbol": "LIF", + "decimals": 18, + "address": "0x5b3455590Ec7F5a25119885Ed62aFBA9bC2e5D65", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xEB9951021698B42e4399f9cBb6267Aa35F82D59D" + } + }, + { + "chainId": 137, + "name": "ProjectSenpai", + "symbol": "SENPAI", + "decimals": 18, + "address": "0x69f240eD3456A098f2D0D898566597E7551a7C81", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x5a705745373a780814c379Ef17810630D529EFE0" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/senpai.svg" + }, + { + "chainId": 137, + "name": "FOX", + "symbol": "FOX", + "decimals": 18, + "address": "0x65A05DB8322701724c197AF82C9CaE41195B0aA8", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xc770eefad204b5180df6a14ee197d99d808ee52d" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/fox.svg" + }, + { + "chainId": 137, + "name": "Nash Exchange Token", + "symbol": "NEX", + "decimals": 8, + "address": "0xA486c6BC102f409180cCB8a94ba045D39f8fc7cB", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xe2dc070524a6e305ddb64d8513dc444b6a1ec845" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/nex.svg" + }, + { + "chainId": 137, + "name": "Dogen", + "symbol": "DOGEN", + "decimals": 18, + "address": "0x9D8A8D15A45fb10060f1d642FB97aA28F5CdedE2", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x17eb50fdd2995696ee82912a80a9766fcbb0ecca" + } + }, + { + "chainId": 137, + "name": "Corgi Inu", + "symbol": "CORGI", + "decimals": 10, + "address": "0x26361cFC497021ecc366ec11cAFa27290f3c055c", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xe50006781f435ae43096288334afd9ae5ba50065" + } + }, + { + "chainId": 137, + "name": "Bitfinex LEO Token", + "symbol": "LEO", + "decimals": 18, + "address": "0x06D02e9D62A13fC76BB229373FB3BBBD1101D2fC", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x2af5d2ad76741191d15dfe7bf6ac92d4bd912ca3" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/leo.svg" + }, + { + "chainId": 137, + "name": "KIMCHI.finance", + "symbol": "KIMCHI", + "decimals": 18, + "address": "0xD62355546a93bFb0E891E905Ff40B3B26ff5F2b1", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x1e18821e69b9faa8e6e75dffe54e7e25754beda0" + } + }, + { + "chainId": 137, + "name": "Silver Fifty Token", + "symbol": "SLX", + "decimals": 0, + "address": "0xD762d38220751F84aE5dC3fb67C8d971c08A638a", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xb17d1826e09135457328c3a397fc40aa56a46256" + } + }, + { + "chainId": 137, + "name": "Governor", + "symbol": "GDAO", + "decimals": 18, + "address": "0x98113e216578359b8c0EB3a9fDDd64285E91120A", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x515d7e9d75e2b76db60f8a051cd890eba23286bc" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/gdao.svg" + }, + { + "chainId": 137, + "name": "Musketeer", + "symbol": "MUSKETS", + "decimals": 18, + "address": "0x46ca31e0439dbF5D0D9c0338Be4912dd35D45A51", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xbc93d1aba134cc81F431dE04f2D9F46Fc5D6D6bc" + } + }, + { + "chainId": 137, + "name": "Neos Credits", + "symbol": "NCR", + "decimals": 18, + "address": "0xDA6f726E2088F129D3Ecb2257206AdF7D8537Ba5", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xdb5c3c46e28b53a39c255aa39a411dd64e5fed9c" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/ncr.svg" + }, + { + "chainId": 137, + "name": "POP Token", + "symbol": "POP!", + "decimals": 18, + "address": "0xF872ff474C01C4178dadEB941089a130Aa1EEd93", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x98629512ed2239974e169341be5b920ea4dcdb21" + } + }, + { + "chainId": 137, + "name": "Truebit", + "symbol": "TRUtru", + "decimals": 18, + "address": "0xfD39C9Bb69Cc3bD57959284aCF855AE65d06f8CF", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xf65B5C5104c4faFD4b709d9D60a185eAE063276c" + } + }, + { + "chainId": 137, + "name": "UNIFUND", + "symbol": "iFUND", + "decimals": 18, + "address": "0x4ba47B10EA8f544F8969BA61dF3E5bE67692a122", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x04b5e13000c6e9a3255dc057091f3e3eeee7b0f0" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/ifund.svg" + }, + { + "chainId": 137, + "name": "IdleUSDC", + "symbol": "idleUSDC", + "decimals": 18, + "address": "0xE8b3D257202a9DfE00Ec396B8a8A45fceD1f5798", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x5274891bEC421B39D23760c04A6755eCB444797C" + } + }, + { + "chainId": 137, + "name": "Kanga Exchange Token", + "symbol": "KNG", + "decimals": 18, + "address": "0x17D342b29F054030a455b4191f977C3b0aA62Fd9", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x471d113059324321749e097705197a2b44a070fc" + } + }, + { + "chainId": 137, + "name": "CARD.STARTER", + "symbol": "CARDS", + "decimals": 18, + "address": "0xF1bd521984b4b46176ef4E77f3de01B9FBbe5191", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x3d6f0dea3ac3c607b3998e6ce14b6350721752d9" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/cards.svg" + }, + { + "chainId": 137, + "name": "PhoenixDAO", + "symbol": "PHNX", + "decimals": 18, + "address": "0x92C59F1cC9A322670CCa29594e4D994d48BDFd36", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x38A2fDc11f526Ddd5a607C1F251C065f40fBF2f7" + } + }, + { + "chainId": 137, + "name": "Idle", + "symbol": "IDLE", + "decimals": 18, + "address": "0xC25351811983818c9Fe6D8c580531819c8ADe90f", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x875773784Af8135eA0ef43b5a374AaD105c5D39e" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/idle.svg" + }, + { + "chainId": 137, + "name": "Bsit Token", + "symbol": "BSIT", + "decimals": 4, + "address": "0x5e765e58A4d15262123a8Db42a31c8BA99Ae48ab", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x3b9abadd72b3e90eb980d213bf1f697566358100" + } + }, + { + "chainId": 137, + "name": "Kirobo", + "symbol": "KIRO", + "decimals": 18, + "address": "0xB382C1cfA622795a534e5bd56Fac93d59BAc8B0D", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xb1191f691a355b43542bea9b8847bc73e7abb137" + } + }, + { + "chainId": 137, + "name": "FullDex", + "symbol": "FLDX", + "decimals": 16, + "address": "0xE5d6364efCDCb90eD92cf6F776dD0B6165168a7e", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x6a30ef92f921836F3743a4A9d27e6CF2C8670b9B" + } + }, + { + "chainId": 137, + "name": "OnSynthetics", + "symbol": "ONS", + "decimals": 18, + "address": "0xF50C6E2b720Dab4eA87E0050856a511E3E3cEB8D", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xfC97C0c12438B6E4CF246cD831b02FeF4950DCAD" + } + }, + { + "chainId": 137, + "name": "Ankr", + "symbol": "ANKR", + "decimals": 18, + "address": "0x101A023270368c0D50BFfb62780F4aFd4ea79C35", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x8290333cef9e6d528dd5618fb97a76f268f3edd4" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/ankr.svg" + }, + { + "chainId": 137, + "name": "GET Protocol", + "symbol": "GET", + "decimals": 18, + "address": "0xdb725f82818De83e99F1dAc22A9b5B51d3d04DD4", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x8a854288a5976036a725879164ca3e91d30c6a1b" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/get.svg" + }, + { + "chainId": 137, + "name": "Quoxent", + "symbol": "QUO", + "decimals": 18, + "address": "0x9b0162d3B3b4E73fE7dBB10b141E03539199A8F2", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xefd720C94659F2cCb767809347245F917A145ed8" + } + }, + { + "chainId": 137, + "name": "Unilayer", + "symbol": "LAYER", + "decimals": 18, + "address": "0x9A37814d1eC68cA5f8aaB205f628869f3926cE3E", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x0fF6ffcFDa92c53F615a4A75D982f399C989366b" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/layer.svg" + }, + { + "chainId": 137, + "name": "ClinTex", + "symbol": "CTI", + "decimals": 18, + "address": "0x8Ba941b64901E306667a287A370F145d98811096", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x8c18d6a985ef69744b9d57248a45c0861874f244" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/cti.svg" + }, + { + "chainId": 137, + "name": "Wrapped UST Token", + "symbol": "UST", + "decimals": 18, + "address": "0x692597b009d13C4049a947CAB2239b7d6517875F", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xa47c8bf37f92abed4a126bda807a7b7498661acd" + } + }, + { + "chainId": 137, + "name": "Enjin Coin", + "symbol": "ENJ", + "decimals": 18, + "address": "0x7eC26842F195c852Fa843bB9f6D8B583a274a157", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xf629cbd94d3791c9250152bd8dfbdf380e2a3b9c" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/enj.svg" + }, + { + "chainId": 137, + "name": "Defi Firefly", + "symbol": "DFF", + "decimals": 8, + "address": "0xC8F190b18579eA425D89Fb8e84774335715795cb", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xaf183350bdf8082b486cee23fbfcca6ea3258dac" + } + }, + { + "chainId": 137, + "name": "Nimbus", + "symbol": "NBU", + "decimals": 18, + "address": "0x977777C5d1208742343BB1F4CAB182E56D624f1F", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xeb58343b36c7528f23caae63a150240241310049" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/nbu.svg" + }, + { + "chainId": 137, + "name": "Nimbus Governance Token", + "symbol": "GNBU", + "decimals": 18, + "address": "0x68de9750059Aed98c9A200Ee661A5316b5C7F941", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x639ae8f3eed18690bf451229d14953a5a5627b72" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/gnbu.svg" + }, + { + "chainId": 137, + "name": "Ampleforth Governance", + "symbol": "FORTH", + "decimals": 18, + "address": "0x5eCbA59DAcc1ADc5bDEA35f38A732823fc3dE977", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x77fba179c79de5b7653f68b5039af940ada60ce0" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/forth.svg" + }, + { + "chainId": 137, + "name": "SHIBA INU", + "symbol": "SHIB", + "decimals": 18, + "address": "0x6f8a06447Ff6FcF75d803135a7de15CE88C1d4ec", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x95ad61b0a150d79219dcf64e1e6cc01f0b64c4ce" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/shib.svg" + }, + { + "chainId": 137, + "name": "Solid", + "symbol": "Solid", + "decimals": 18, + "address": "0x498E0A753840075c4925442D4d8863eEe49D61E2", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x5011d48d4265b6fb8228600a111b2faa1fda3139" + } + }, + { + "chainId": 137, + "name": "Waifu", + "symbol": "WAIF", + "decimals": 18, + "address": "0xdEE1ebd2a9F6fE069a045601ebeE7C42572ABD5F", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xb2279b6769cfba691416f00609b16244c0cf4b20" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/waif.svg" + }, + { + "chainId": 137, + "name": "NOIA Token", + "symbol": "NOIA", + "decimals": 18, + "address": "0x957d1AD5214468332C5e6C00305a25116f9A46BB", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xa8c8CfB141A3bB59FEA1E2ea6B79b5ECBCD7b6ca" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/noia.svg" + }, + { + "chainId": 137, + "name": "Reality Clash Coin", + "symbol": "RCC", + "decimals": 18, + "address": "0x11b4ce411bc617E636Cf1109dE9f3CA977d4a00d", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x9b6443b0fb9c241a7fdac375595cea13e6b7807a" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/rcc.svg" + }, + { + "chainId": 137, + "name": "SakeToken", + "symbol": "SAKE", + "decimals": 18, + "address": "0x6127Bb5A1b847fF57bF7B9469c4db6E310466214", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x066798d9ef0833ccc719076Dab77199eCbd178b0" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/sake.svg" + }, + { + "chainId": 137, + "name": "Wrapped NXM", + "symbol": "wNXM", + "decimals": 18, + "address": "0x0539F01d9ED66c3133a0B0FaB83f4fa69B3608E8", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x0d438f3b5175bebc262bf23753c1e53d03432bde" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/wnxm.svg" + }, + { + "chainId": 137, + "name": "PowerLedger", + "symbol": "POWR", + "decimals": 6, + "address": "0x0AaB8DC887D34f00D50E19aee48371a941390d14", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x595832f8fc6bf59c85c527fec3740a1b7a361269" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/powr.svg" + }, + { + "chainId": 137, + "name": "BSNcommunitynet", + "symbol": "cBSN", + "decimals": 18, + "address": "0xA219a63C170D0bcDe994886d53878f86C5126106", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x7d4B1d793239707445305D8d2456D2c735F6B25B" + } + }, + { + "chainId": 137, + "name": "Nuggets", + "symbol": "NUG", + "decimals": 18, + "address": "0xf0e7BeEdc882a66C151D03B594503317B8472336", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x245ef47d4d0505ecf3ac463f4d81f41ade8f1fd1" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/nug.svg" + }, + { + "chainId": 137, + "name": "DokiDoki.Chainbinders", + "symbol": "BND", + "decimals": 18, + "address": "0x032b3217241fe53fFaDB334a9d06aACd2A9153D9", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x84cd68c3e470ecee4b8b6212efcb8c6bcb38da1d" + } + }, + { + "chainId": 137, + "name": "AlphaDex", + "symbol": "DEX", + "decimals": 18, + "address": "0x7120441Ad773A6704d13dAC8D8Ccfe94da9AFC9B", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x3516415161C478DF10ADBb8bb884Cc83FbD5F11a" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/dex.svg" + }, + { + "chainId": 137, + "name": "KittenFinance", + "symbol": "KIF", + "decimals": 18, + "address": "0x5f084F3EE7EA09E4C01CEE3cDF1B5620A3344fd0", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x177BA0cac51bFC7eA24BAd39d81dcEFd59d74fAa" + } + }, + { + "chainId": 137, + "name": "Kishu Inu", + "symbol": "KISHU", + "decimals": 9, + "address": "0xA3D595823beeDE02cC755AB4e22AD009A70cB590", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xA2b4C0Af19cC16a6CfAcCe81F192B024d625817D" + } + }, + { + "chainId": 137, + "name": "EASY V2", + "symbol": "EZ", + "decimals": 18, + "address": "0x34C1b299A74588D6Abdc1b85A53345A48428a521", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x00AbA6fE5557De1a1d565658cBDdddf7C710a1eb" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/ez.svg" + }, + { + "chainId": 137, + "name": "Akropolis", + "symbol": "AKRO", + "decimals": 18, + "address": "0xd8a2B5ED27d57d003962032ea78f3738fF5617a8", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x8ab7404063ec4dbcfd4598215992dc3f8ec853d7" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/akro.svg" + }, + { + "chainId": 137, + "name": "Metaverse Index", + "symbol": "MVI", + "decimals": 18, + "address": "0xfe712251173A2cd5F5bE2B46Bb528328EA3565E1", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x72e364f2abdc788b7e918bc238b21f109cd634d7" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/mvi.svg" + }, + { + "chainId": 137, + "name": "Index", + "symbol": "INDEX", + "decimals": 18, + "address": "0xfBd8A3b908e764dBcD51e27992464B4432A1132b", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x0954906da0Bf32d5479e25f46056d22f08464cab" + } + }, + { + "chainId": 137, + "name": "LTO Network Token", + "symbol": "LTO", + "decimals": 8, + "address": "0x96963189dC1dFBE8De4b1BB03c603adeFcD3E59d", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x3db6ba6ab6f95efed1a6e794cad492faaabf294d" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/lto.svg" + }, + { + "chainId": 137, + "name": "ETH 2x Flexible Leverage Index", + "symbol": "ETH2x-FLI", + "decimals": 18, + "address": "0x66d7FDCc7403f18cAE9b0e2e8385649D2AcBC12A", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xaa6e8127831c9de45ae56bb1b0d4d4da6e5665bd" + } + }, + { + "chainId": 137, + "name": "Livepeer Token", + "symbol": "LPT", + "decimals": 18, + "address": "0x3962F4A0A0051DccE0be73A7e09cEf5756736712", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x58b6a8a3302369daec383334672404ee733ab239" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/lpt.svg" + }, + { + "chainId": 137, + "name": "Indexed", + "symbol": "NDX", + "decimals": 18, + "address": "0x835273d47A2a4Cc84693639f8D890af1CaeA611D", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x86772b1409b61c639eaac9ba0acfbb6e238e5f83" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/ndx.svg" + }, + { + "chainId": 137, + "name": "Zoracles", + "symbol": "ZORA", + "decimals": 9, + "address": "0x2f9679F1Db7E1a3Ffd659e1880339E18B482F17A", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xD8E3FB3b08eBA982F2754988d70D57eDc0055ae6" + } + }, + { + "chainId": 137, + "name": "INVERSE", + "symbol": "XIV", + "decimals": 18, + "address": "0xde799636aF0d8D65a17AAa83b66cBBE9B185EB01", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x44f262622248027f8e2a8fb1090c4cf85072392c" + } + }, + { + "chainId": 137, + "name": "ACoconut BTC", + "symbol": "acBTC", + "decimals": 18, + "address": "0xFb0E4a608657c09e0fE048D8BB54431eb7fB58D0", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xef6e45af9a422c5469928f927ca04ed332322e2e" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/acbtc.svg" + }, + { + "chainId": 137, + "name": "ACoconut", + "symbol": "AC", + "decimals": 18, + "address": "0x6D1B94027453C457e90C28E83154B02718bD48b2", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x9a0aba393aac4dfbff4333b06c407458002c6183" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/ac.svg" + }, + { + "chainId": 137, + "name": "Global Scan Token", + "symbol": "GST", + "decimals": 18, + "address": "0xe5703ad34D2b5BCB5c1fEeb64d4b7572B857D6c0", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x382f5DfE9eE6e309D1B9D622735e789aFde6BADe" + } + }, + { + "chainId": 137, + "name": "Time", + "symbol": "Time", + "decimals": 18, + "address": "0x0BaC8F2819527c562b1BdD5B9C8E24bE7dbd6cae", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xC2Ce8D7cA631555fC7DacF744326f70586a12898" + } + }, + { + "chainId": 137, + "name": "PeetyCoin", + "symbol": "PTC", + "decimals": 18, + "address": "0x4BB0A0ceF106b0376A9320BE1cF9BCe2D9fC075E", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x91b2372c2a364ef0acfd6a87e41825c186164772" + } + }, + { + "chainId": 137, + "name": "LoopringCoin V2", + "symbol": "LRC", + "decimals": 18, + "address": "0x84e1670F61347CDaeD56dcc736FB990fBB47ddC1", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xbbbbca6a901c926f240b89eacb641d8aec7aeafd" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/lrc.svg" + }, + { + "chainId": 137, + "name": "GOVI", + "symbol": "GOVI", + "decimals": 18, + "address": "0x43Df9c0a1156c96cEa98737b511ac89D0e2A1F46", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xeeaa40b28a2d1b0b08f6f97bb1dd4b75316c6107" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/govi.svg" + }, + { + "chainId": 137, + "name": "Dracula Token", + "symbol": "DRaCula", + "decimals": 18, + "address": "0xdf2d3db12254B062b96424F27f44649321901499", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xb78B3320493a4EFaa1028130C5Ba26f0B6085Ef8" + } + }, + { + "chainId": 137, + "name": "Wrapped Mirror TSLA Token", + "symbol": "mTSLA", + "decimals": 18, + "address": "0x52c57f0eA393Bb213445F47c48c5f34e419061C7", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x21cA39943E91d704678F5D00b6616650F066fD63" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/mtsla.svg" + }, + { + "chainId": 137, + "name": "BribeToken", + "symbol": "BRIBE", + "decimals": 18, + "address": "0xA9e0CDE4bE86F5DF7e2888753E5F663A41220469", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x679fa6dc913acab6def33ec469fc6e421bc794f5" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/bribe.svg" + }, + { + "chainId": 137, + "name": "Nectar", + "symbol": "NCT", + "decimals": 18, + "address": "0x4985E0B13554fB521840e893574D3848C10Fcc6f", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x9e46a38f5daabe8683e10793b06749eef7d733d1" + } + }, + { + "chainId": 137, + "name": "InfiniCoin", + "symbol": "INFC", + "decimals": 2, + "address": "0x6046b4d4E5ccC4aD4AABf655b557d8FD19B631D9", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x742a56a727dac07e0889920b8887d482325f659b" + } + }, + { + "chainId": 137, + "name": "StakeWise", + "symbol": "SWISE", + "decimals": 18, + "address": "0xBbbe128568222623D21299f019a978C8587B33dC", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x48c3399719b582dd63eb5aadf12a40b4c3f52fa2" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/swise.svg" + }, + { + "chainId": 137, + "name": "Blockpass", + "symbol": "PASS", + "decimals": 6, + "address": "0x030a6b1Da67963Fc22265d8C6686d1878d581b6B", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xee4458e052b533b1aabd493b5f8c4d85d7b263dc" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/pass.svg" + }, + { + "chainId": 137, + "name": "Celo", + "symbol": "CELO", + "decimals": 18, + "address": "0x9b90e9Dc868A3c769dbb1d43F925cC954327F666", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x6d0081857009cb79014df13e34fc49192f66aee1" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/celo.svg" + }, + { + "chainId": 137, + "name": "LUSD Stablecoin", + "symbol": "LUSD", + "decimals": 18, + "address": "0x23001f892c0C82b79303EDC9B9033cD190BB21c7", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x5f98805a4e8be255a32880fdec7f6728c6568ba0" + } + }, + { + "chainId": 137, + "name": "Unicly Doki Collection", + "symbol": "uDOKI", + "decimals": 18, + "address": "0xFfB6efF3e73DB35b3efCF2bCD160fc517C5Df9Ec", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x7e6c38d007740931e4b419bf15a68c79a0fb0c66" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/udoki.svg" + }, + { + "chainId": 137, + "name": "Shardus", + "symbol": "ULT", + "decimals": 18, + "address": "0xf0059CC2b3E980065A906940fbce5f9Db7ae40A7", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x09617f6fd6cf8a71278ec86e23bbab29c04353a7" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/ult.svg" + }, + { + "chainId": 137, + "name": "OVR", + "symbol": "OVR", + "decimals": 18, + "address": "0x1631244689EC1fEcbDD22fb5916E920dFC9b8D30", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x21bfbda47a0b4b5b1248c767ee49f7caa9b23697" + } + }, + { + "chainId": 137, + "name": "Digi", + "symbol": "DIGI", + "decimals": 18, + "address": "0x4d8181f051E617642e233Be09Cea71Cc3308ffD4", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x3cbf23c081faa5419810ce0f6bc1ecb73006d848" + } + }, + { + "chainId": 137, + "name": "Pikachu", + "symbol": "Pikachu", + "decimals": 18, + "address": "0x7E6afEC8cf917976d11Fe65A34d3c17289fe3aE0", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xe09fb60e8d6e7e1cebbe821bd5c3fc67a40f86bf" + } + }, + { + "chainId": 137, + "name": "Beyond Finance", + "symbol": "BYN", + "decimals": 18, + "address": "0x11602A402281974a70C2B4824d58ebeDe967E2bE", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x4Bb3205bf648B7F59EF90Dee0F1B62F6116Bc7ca" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/byn.svg" + }, + { + "chainId": 137, + "name": "Launchpool token", + "symbol": "LPOOL", + "decimals": 18, + "address": "0x9e7Deba360c77949bb75d16DC81b2393C15005Eb", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x6149c26cd2f7b5ccdb32029af817123f6e37df5b" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/lpool.svg" + }, + { + "chainId": 137, + "name": "Gremlin DAO", + "symbol": "GRMLN", + "decimals": 18, + "address": "0x80a017A2B089b642743d863cEeb6Da1FE0191ADC", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xcb167289204d02d33a8faf24a68b57647eb621bf" + } + }, + { + "chainId": 137, + "name": "Internet Exchange Token", + "symbol": "INEX", + "decimals": 8, + "address": "0xD8324aE24AF9b499Cb75fb0bad8E0094c10CAC58", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xa2d77f8353cb2afd709aba4a967257511ecff716" + } + }, + { + "chainId": 137, + "name": "MyFiChain", + "symbol": "myfi", + "decimals": 18, + "address": "0x217CA87921B066728feBC2d093FE9a6503450c47", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x0dfdd839cde95dabf56f0b5c5698e0159138930d" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/myfi.svg" + }, + { + "chainId": 137, + "name": "ETH.limiteD", + "symbol": "ELD", + "decimals": 18, + "address": "0x222Cc013116D43a8b6BEfA84aaF7c11cBc073496", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xf0c6521b1f8ad9c33a99aaf056f6c6247a3862ba" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/eld.svg" + }, + { + "chainId": 137, + "name": "ZperToken", + "symbol": "ZPR", + "decimals": 18, + "address": "0x9f9003c25d475Ca76D925Bfad0c568D8B3720353", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xb5b8f5616fe42d5ceca3e87f3fddbdd8f496d760" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/zpr.svg" + }, + { + "chainId": 137, + "name": "NANJCOIN", + "symbol": "NANJ", + "decimals": 8, + "address": "0x868547EB48e0Ed2Fd3dB52Db9818ab9496EA4ef1", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xffe02ee4c69edf1b340fcad64fbd6b37a7b9e265" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/nanj.svg" + }, + { + "chainId": 137, + "name": "Chai", + "symbol": "CHAI", + "decimals": 18, + "address": "0x4B64399CA6609eBB5CB649eAA50387C2d9fe20eb", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x06af07097c9eeb7fd685c692751d5c66db49c215" + } + }, + { + "chainId": 137, + "name": "Litecoin SV", + "symbol": "LSV", + "decimals": 18, + "address": "0xb6d5d0E2baD865750Bc2cB21bBaE636c3BaD6581", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xee059f0ca1507e4e20c689b20cff71b5e924f7bd" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/lsv.svg" + }, + { + "chainId": 137, + "name": "simian.finance", + "symbol": "SIFI", + "decimals": 9, + "address": "0x41d36d3bd6297fE288E31C75De8B7453de9Daf90", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x4afb0aac9b862946837b2444566b8a914d6d0d97" + } + }, + { + "chainId": 137, + "name": "BTSE Token", + "symbol": "BTSE", + "decimals": 8, + "address": "0xc96a4a6B780AF3a6383962ea0Ac96DD3c40532d4", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x666d875c600aa06ac1cf15641361dec3b00432ef" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/btse.svg" + }, + { + "chainId": 137, + "name": "Shungite", + "symbol": "SHUNG", + "decimals": 18, + "address": "0xA3d8885825A843F040eb64A6a846b687cd07F072", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x839b2086ef84f25a07beeb61cd325b79b5e08a5d" + } + }, + { + "chainId": 137, + "name": "PGF500 Token", + "symbol": "PGF7T", + "decimals": 18, + "address": "0xdd0fDc648a9dbC9be5A735FE4561893a13399Da2", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x9fadea1aff842d407893e21dbd0e2017b4c287b6" + } + }, + { + "chainId": 137, + "name": "MOAR Finance", + "symbol": "MOAR", + "decimals": 18, + "address": "0x34cba1561424b192F263883ba2b8CcBBc12bb13F", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x187eff9690e1f1a61d578c7c492296eaab82701a" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/moar.svg" + }, + { + "chainId": 137, + "name": "renDOGE", + "symbol": "renDOGE", + "decimals": 8, + "address": "0x7C4A54f5d20b4023D6746F1f765f4DFe7C39a7e6", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x3832d2f059e55934220881f831be501d180671a7" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/rendoge.svg" + }, + { + "chainId": 137, + "name": "LADZ", + "symbol": "LADZ", + "decimals": 4, + "address": "0x220ED61d1f1CC754cB71978585D69e07Be576315", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x1287c0509df9a475Ef178471aB2132b9dfD312B3" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/ladz.svg" + }, + { + "chainId": 137, + "name": "Defiville Island Token", + "symbol": "ISLA", + "decimals": 18, + "address": "0xFE6A2342f7C5D234E8496dF12c468Be17e0c181F", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x20a68F9e34076b2dc15ce726d7eEbB83b694702d" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/isla.svg" + }, + { + "chainId": 137, + "name": "Pinakion", + "symbol": "PNK", + "decimals": 18, + "address": "0xad93E067e149f0A5ecd12D8EA83B05581dD6374C", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x93ed3fbe21207ec2e8f2d3c3de6e058cb73bc04d" + } + }, + { + "chainId": 137, + "name": "mushrooming Wrapped BTC", + "symbol": "mWBTC", + "decimals": 8, + "address": "0x652E36ecFA0E4F7e435F6D38688D68a3bE65639c", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xb06661A221Ab2Ec615531f9632D6Dc5D2984179A" + } + }, + { + "chainId": 137, + "name": "mushrooming 0x Protocol Token", + "symbol": "mZRX", + "decimals": 18, + "address": "0x9cc0FF2Db430cBC95752b25487059046d507780C", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x037B39EdAE767EA692884D51fc697c54e777710e" + } + }, + { + "chainId": 137, + "name": "mushrooming Alchemix USD", + "symbol": "malUSD", + "decimals": 18, + "address": "0x6aaF0cd9E0339DC385f566EB2d2Bd83C756E7d63", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x5DEDEC994C11aB5F9908f33Aed2947F33B67a449" + } + }, + { + "chainId": 137, + "name": "mushrooming Alchemix", + "symbol": "mALCX", + "decimals": 18, + "address": "0x2bB8ff0B289F1670415713B75331CC927D0C5CEA", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x076950237f8c0D27Ac25694c9078F96e535723BC" + } + }, + { + "chainId": 137, + "name": "mushrooming ChainLink Token", + "symbol": "mLINK", + "decimals": 18, + "address": "0x44a57De864dD580c3A1FE44Cfa8E39e25170c156", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x3EdeE5F69e9A8F88da9063B1aa78311E38DBE96c" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/mlink.svg" + }, + { + "chainId": 137, + "name": "mushrooming Uniswap", + "symbol": "mUNI", + "decimals": 18, + "address": "0x65E4Fc43404569998e7cb8E74e785943581f758F", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x41e0c2A507415e25005b1713f5f68AD6648fCF43" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/muni.svg" + }, + { + "chainId": 137, + "name": "mushrooming USD Coin", + "symbol": "mUSDC", + "decimals": 6, + "address": "0x6998F006c8B5bD288dcb8E00c0060927d517Aa58", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x23B197dc671A55F256199cF7e8Bee77Ea2bDC16D" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/musdc.svg" + }, + { + "chainId": 137, + "name": "mushrooming Dai Stablecoin", + "symbol": "mDAI", + "decimals": 18, + "address": "0x6BAF56F2768434592c2Fcce2dC04235366E5A088", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x6802377968857656fE8aE47fBECe76AaE588eeF7" + } + }, + { + "chainId": 137, + "name": "mushrooming Curve DAI/USDC/USDT", + "symbol": "m3Crv", + "decimals": 18, + "address": "0x6E5BCf069213676e4E3C75aEb60Eaab0C41ff1CE", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x0c0291f4c12F04Da8B4139996C720a89D28Ca069" + } + }, + { + "chainId": 137, + "name": "mushrooming Wrapped Ether", + "symbol": "mWETH", + "decimals": 18, + "address": "0xdc0f3C12dF89593357985491bdAcc5Fd789cA4B2", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xb0f1a38F5531b398E2081c2F9E61EdD2A924b488" + } + }, + { + "chainId": 137, + "name": "HASHGARD", + "symbol": "GARD", + "decimals": 18, + "address": "0xf89250E83fA2F33058385C98c7c44e723B040359", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x5c64031c62061865e5fd0f53d3cdaef80f72e99d" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/gard.svg" + }, + { + "chainId": 137, + "name": "blocsport1", + "symbol": "BS1", + "decimals": 18, + "address": "0x2E789b197a1874ca6384082090e0ebed30F16E1A", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xAeaf14ce56b052DFC2A2Eb0654136EcF87821fbF" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/bs1.svg" + }, + { + "chainId": 137, + "name": "GeoDB Coin", + "symbol": "GEO", + "decimals": 18, + "address": "0xAe07B360cF41C8971F6c544620A6ed428Ff3a661", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x147faF8De9d8D8DAAE129B187F0D02D819126750" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/geo.svg" + }, + { + "chainId": 137, + "name": "Universal Basic Income", + "symbol": "UBI", + "decimals": 18, + "address": "0xFe7FF8b5dfbA93A9EaB7Aee447C3c72990052d93", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xDd1Ad9A21Ce722C151A836373baBe42c868cE9a4" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/ubi.svg" + }, + { + "chainId": 137, + "name": "Grumpy Cat", + "symbol": "GRUMPY", + "decimals": 9, + "address": "0x733726968Ae55dC58c26dBDc193FEa256a704ba4", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x93b2fff814fcaeffb01406e80b4ecd89ca6a021b" + } + }, + { + "chainId": 137, + "name": "YearnSecure", + "symbol": "YSEC", + "decimals": 18, + "address": "0x3D6C5c1a66e7B43342FcA37827B7Faf3bD074dD3", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xeea9aE787f3A620072d13b2cdC8cabFFb9c0aB96" + } + }, + { + "chainId": 137, + "name": "Ludus", + "symbol": "LUDUS", + "decimals": 18, + "address": "0xd132d531367D5907d0844988A71B9fAd32D14368", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x03fdcadc09559262f40f5ea61c720278264eb1da" + } + }, + { + "chainId": 137, + "name": "Nexo", + "symbol": "NEXO", + "decimals": 18, + "address": "0x41b3966B4FF7b427969ddf5da3627d6AEAE9a48E", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xb62132e35a6c13ee1ee0f84dc5d40bad8d815206" + } + }, + { + "chainId": 137, + "name": "Ethix", + "symbol": "ETHIX", + "decimals": 18, + "address": "0x08Bba6ABE87e2a8c226a1C6c0d0E9cae758f82Ec", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xfd09911130e6930bf87f2b0554c44f400bd80d3e" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/ethix.svg" + }, + { + "chainId": 137, + "name": "Beatify", + "symbol": "SONG", + "decimals": 18, + "address": "0x609255414fF5289f87c99bAF9737a4EC85A18643", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xA18A0bE599366C8e2fFfFD83A2418a3cCb825d7f" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/song.svg" + }, + { + "chainId": 137, + "name": "Internxt", + "symbol": "INXT", + "decimals": 8, + "address": "0xE64106154816A252da7728E35A0060F15d66cb34", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xa8006c4ca56f24d6836727d106349320db7fef82" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/inxt.svg" + }, + { + "chainId": 137, + "name": "Blind Boxes Token", + "symbol": "BLES", + "decimals": 18, + "address": "0x1B599bEB7b1F50807dD58Fd7e8fFcf073b435e71", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xe796d6ca1ceb1b022ece5296226bf784110031cd" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/bles.svg" + }, + { + "chainId": 137, + "name": "Alchemy", + "symbol": "ALCH", + "decimals": 18, + "address": "0x87B078cf94B188EFB9D2208cAE47A66ea7FEa09A", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x0000A1c00009A619684135B824Ba02f7FbF3A572" + } + }, + { + "chainId": 137, + "name": "YOP", + "symbol": "YOP", + "decimals": 8, + "address": "0x103308793661879166464cD0d0370Ac3b8A2A1cB", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xae1eaae3f627aaca434127644371b67b18444051" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/yop.svg" + }, + { + "chainId": 137, + "name": "Darwinia", + "symbol": "Ring", + "decimals": 18, + "address": "0x9C1C23E60B72Bc88a043bf64aFdb16A02540Ae8f", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x9469d013805bffb7d3debe5e7839237e535ec483" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/ring.svg" + }, + { + "chainId": 137, + "name": "Gala", + "symbol": "GALA", + "decimals": 8, + "address": "0x09E1943Dd2A4e82032773594f50CF54453000b97", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x15D4c048F83bd7e37d49eA4C83a07267Ec4203dA" + } + }, + { + "chainId": 137, + "name": "Rocket Pool", + "symbol": "RPL", + "decimals": 18, + "address": "0x7205705771547cF79201111B4bd8aaF29467b9eC", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xb4efd85c19999d84251304bda99e90b92300bd93" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/rpl.svg" + }, + { + "chainId": 137, + "name": "VGTGToken", + "symbol": "VGTG", + "decimals": 18, + "address": "0x0c5EBeD5cB5BD838BDc43E1583D9d054f3d7Be6c", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xe61eecfdba2ad1669cee138f1919d08ced070b83" + } + }, + { + "chainId": 137, + "name": "IceToken", + "symbol": "ICE", + "decimals": 18, + "address": "0xdF00c50a3daE240860F57b77508203B8D9593283", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xf16e81dce15b08f326220742020379b855b87df9" + }, + "logoURI": "https://etherscan.io/token/images/popsiclefinance_32.png" + }, + { + "chainId": 137, + "name": "Meliora", + "symbol": "MORA", + "decimals": 18, + "address": "0x164fBeF6729c86B0fd719789D2f985AFa15a4430", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xb64cD4F56043F8d80691433e395d08B1bEBDADF0" + } + }, + { + "chainId": 137, + "name": "Polkalokr", + "symbol": "LKR", + "decimals": 18, + "address": "0x6f83Ffedfd8774d09329D92bF3647654Ee171dfA", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x80ce3027a70e0a928d9268994e9b85d03bd4cdcf" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/lkr.svg" + }, + { + "chainId": 137, + "name": "LABS Group", + "symbol": "LABS", + "decimals": 18, + "address": "0xb3658a5493332e952Fc86991c24C9c759d2D8cD0", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x8b0e42f366ba502d787bb134478adfae966c8798" + } + }, + { + "chainId": 137, + "name": "OnX.finance", + "symbol": "ONX", + "decimals": 18, + "address": "0xEb94A5e2C643403E29fa1d7197e7E0708B09aD84", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xe0ad1806fd3e7edf6ff52fdb822432e847411033" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/onx.svg" + }, + { + "chainId": 137, + "name": "King Token", + "symbol": "KING", + "decimals": 18, + "address": "0xC7bd6b9a83C2e27a17026Aa2DEE03E0EAC97EE50", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xc46321EfE8883D22D81eD65CB4F0766e1004129d" + } + }, + { + "chainId": 137, + "name": "TAIYAKI", + "symbol": "TAIYAKI", + "decimals": 18, + "address": "0x1A5C71dDF3d71CBB0C0Bc312ff712a52cBe29cD2", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x4f9f3504d6C3670672692fcbCaeb409B0cFb40b2" + } + }, + { + "chainId": 137, + "name": "Deeper Network", + "symbol": "DPR", + "decimals": 18, + "address": "0x3C27F2D0744DA4f96D9AB5f4212d8162c031dEA9", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xf3ae5d769e153ef72b4e3591ac004e89f48107a1" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/dpr.svg" + }, + { + "chainId": 137, + "name": "xToken", + "symbol": "XTK", + "decimals": 18, + "address": "0x22308317A4aA9e8196065E0b3647e582d44c4d7b", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x7f3edcdd180dbe4819bd98fee8929b5cedb3adeb" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/xtk.svg" + }, + { + "chainId": 137, + "name": "LinkPool", + "symbol": "LPL", + "decimals": 18, + "address": "0x7e85E6b00a8e9c757f2Fef60d047B6f787c66a1E", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x99295f1141d58a99e939f7be6bbe734916a875b8" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/lpl.svg" + }, + { + "chainId": 137, + "name": "dHedge DAO Token", + "symbol": "DHT", + "decimals": 18, + "address": "0x8C92e38eCA8210f4fcBf17F0951b198Dd7668292", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xca1207647ff814039530d7d35df0e1dd2e91fa84" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/dht.svg" + }, + { + "chainId": 137, + "name": "MEE Token", + "symbol": "MEE", + "decimals": 18, + "address": "0xF4cbD4a7143E221eb983d292C0D13275f12C8172", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xe1b583dc66e0a24fd9af2dc665f6f5e48978e106" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/mee.svg" + }, + { + "chainId": 137, + "name": "FOAM Token", + "symbol": "FOAM", + "decimals": 18, + "address": "0x66e16D50c07A01BB473eC794349d45aa1a0E5Dc2", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x4946Fcea7C692606e8908002e55A582af44AC121" + } + }, + { + "chainId": 137, + "name": "CocktailBar", + "symbol": "COC", + "decimals": 8, + "address": "0xF2cEd5F137e27f68E6A01Cc6C4198729e200e457", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x22b6c31c2beb8f2d0d5373146eed41ab9ede3caf" + } + }, + { + "chainId": 137, + "name": "AMPnet APX Token", + "symbol": "AAPX", + "decimals": 18, + "address": "0x3fC8bd9b0d8054CBDC174c4ed4b41A95d3c6A427", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xbfd815347d024f449886c171f78fa5b8e6790811" + } + }, + { + "chainId": 137, + "name": "UpBots", + "symbol": "UBXT", + "decimals": 18, + "address": "0xDD24E07c3C840ae6435e7C9F98E6eE6ce168D788", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x8564653879a18c560e7c0ea0e084c516c62f5653" + } + }, + { + "chainId": 137, + "name": "SAND", + "symbol": "SAND", + "decimals": 18, + "address": "0xBbba073C31bF03b8ACf7c28EF0738DeCF3695683", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x3845badAde8e6dFF049820680d1F14bD3903a5d0" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/sand.svg" + }, + { + "chainId": 137, + "name": "Darwinia Commitment Token", + "symbol": "KTON", + "decimals": 18, + "address": "0xE21b9bDA4ECeF9e4652BC5C6863F731C2151Ef28", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x9f284e1337a815fe77d2ff4ae46544645b20c5ff" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/kton.svg" + }, + { + "chainId": 137, + "name": "Exeedme", + "symbol": "XED", + "decimals": 18, + "address": "0x2fe8733dcb25BFbbA79292294347415417510067", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xee573a945b01b788b9287ce062a0cfc15be9fd86" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/xed.svg" + }, + { + "chainId": 137, + "name": "unilock.network", + "symbol": "UNL", + "decimals": 18, + "address": "0x7Dd51d62CA7C94664111eee95B38dffDA14d582d", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x04ab43d32d0172c76f5287b6619f0aa50af89303" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/unl.svg" + }, + { + "chainId": 137, + "name": " SPACE HOGE", + "symbol": "SOGE", + "decimals": 18, + "address": "0xe38eb5a707d9A09757246DC37dF11b35E47ba782", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x41933422dc4a1cb8c822e06f12f7b52fa5e7e094" + } + }, + { + "chainId": 137, + "name": "Rubaled", + "symbol": "RUB", + "decimals": 18, + "address": "0x0E622E0e97B88824C655A0443e69416c3233a522", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xdc28699481502339560e984d47278e49f4153a26" + } + }, + { + "chainId": 137, + "name": "ZILLAPUMP", + "symbol": "ZPUMP", + "decimals": 9, + "address": "0x408A67a0A01281cFb96dD18EbbfdDDEc9CB028b7", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x4cA60BfF981785d9B6Cf3433914eEff60d5d8cD8" + } + }, + { + "chainId": 137, + "name": "froge.finance", + "symbol": "FROGE", + "decimals": 9, + "address": "0x37Ff2a6cF0E8061CBD9a00919690F1B0A46eE674", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x29502fE4d233EF0b45C3647101Fa1252cE0634BD" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/froge.svg" + }, + { + "chainId": 137, + "name": "Axion", + "symbol": "AXN", + "decimals": 18, + "address": "0x221afaC78D2725D090499b973bB42FC93CCA2ef5", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x71F85B2E46976bD21302B64329868fd15eb0D127" + } + }, + { + "chainId": 137, + "name": "Kattana", + "symbol": "KTN", + "decimals": 18, + "address": "0x2C7A7358E60f2D145FaC48C71950A2C523636075", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x491e136ff7ff03e6ab097e54734697bb5802fc1c" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/ktn.svg" + }, + { + "chainId": 137, + "name": "NFT WARS", + "symbol": "WAR", + "decimals": 18, + "address": "0x7F2841A5C7e69e921897fBfbCE95caEa34634A35", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x4d75d9e37667a2d4677ec3d74bdd9049326ad8d6" + } + }, + { + "chainId": 137, + "name": "GAMEE", + "symbol": "GMEE", + "decimals": 18, + "address": "0xcf32822ff397Ef82425153a9dcb726E5fF61DCA7", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xd9016a907dc0ecfa3ca425ab20b6b785b42f2373" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/gmee.svg" + }, + { + "chainId": 137, + "name": "BAB", + "symbol": "BAB", + "decimals": 18, + "address": "0x37C6656CD3882A422d87bD15aC547c5515C0Df1C", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xc36824905dff2eaaee7ecc09fcc63abc0af5abc5" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/bab.svg" + }, + { + "chainId": 137, + "name": "BAC", + "symbol": "BAC", + "decimals": 18, + "address": "0xcdE5E3D90631cacB842fA86f62dD0fc08A3ce43d", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x3449fc1cd036255ba1eb19d65ff4ba2b8903a69a" + } + }, + { + "chainId": 137, + "name": "BASv2", + "symbol": "BASv2", + "decimals": 18, + "address": "0x83A6DA342099835bCAA9C219DD76a5033c837de5", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x106538cc16f938776c7c180186975bca23875287" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/basv2.svg" + }, + { + "chainId": 137, + "name": "CehhCoin", + "symbol": "CEHH", + "decimals": 0, + "address": "0xA6D996AFdBC613A5C5FC92bbAeFbC7b827419e8f", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x4F38f4229924bfa28D58eeda496Cc85e8016bCCC" + } + }, + { + "chainId": 137, + "name": "CheGuevara", + "symbol": "Che", + "decimals": 18, + "address": "0x365AE1c67b3efA55C624c9705Ad1Df2072D3d254", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x25a1DE1C3eE658FE034B8914a1D8d34110423AF8" + } + }, + { + "chainId": 137, + "name": "HotLove", + "symbol": "HL", + "decimals": 18, + "address": "0xe947283361D0D47c870c0898d7a5578310E1dB37", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xDfF991Af459d05175B3bb766b950aFC697B68dF0" + } + }, + { + "chainId": 137, + "name": "Penis", + "symbol": "PNS", + "decimals": 2, + "address": "0xE63E303460e078c2DEAF9Cd3CB46ECA0C8cb1B59", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xce853db3359326dB6D03981C9fb42983BbCdd007" + } + }, + { + "chainId": 137, + "name": "YiYouBao", + "symbol": "YYB", + "decimals": 18, + "address": "0x1656484C36cEF1B24cD49457470AbcE90C480d29", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x85993bE4EF5BEc00B62BA7e46a8a70f353182b3e" + } + }, + { + "chainId": 137, + "name": "YunJiaMi", + "symbol": "YJM", + "decimals": 18, + "address": "0x223097da39Cb07fA133d70cD820f27867b4452c3", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x27BC53596Dc0EA71dE3c65C799d8E6c96C1dDA98" + } + }, + { + "chainId": 137, + "name": "IgnisLite", + "symbol": "IgnisLite", + "decimals": 18, + "address": "0xEbBB74174D1a22729B9a9cddb28c18cA07BE0314", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x9AA9F330aB322e8a6F044C46a109B5910fa373CE" + } + }, + { + "chainId": 137, + "name": "360APP", + "symbol": "DAPP", + "decimals": 18, + "address": "0x24274DE25578F97984f66Be0Cc0762138757C935", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x5D0fa08AEb173AdE44B0Cf7F31d506D8E04f0ac8" + } + }, + { + "chainId": 137, + "name": "Wootrade Network", + "symbol": "WOO", + "decimals": 18, + "address": "0x1B815d120B3eF02039Ee11dC2d33DE7aA4a8C603", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x4691937a7508860f876c9c0a2a617e7d9e945d4b" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/woo.svg" + }, + { + "chainId": 137, + "name": "BoringDAO LTC", + "symbol": "oLTC", + "decimals": 18, + "address": "0xf9f8D3BcAD8958ffef131bAb376CFfAc0d16551B", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x07C44B5Ac257C2255AA0933112c3b75A6BFf3Cb1" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/oltc.svg" + }, + { + "chainId": 137, + "name": "BoringDAO BTC", + "symbol": "oBTC", + "decimals": 18, + "address": "0x90fB380DdEbAF872cc1F8d8e8C604Ff2f4697c19", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x8064d9Ae6cDf087b1bcd5BDf3531bD5d8C537a68" + } + }, + { + "chainId": 137, + "name": "UmbriaToken", + "symbol": "UMBR", + "decimals": 18, + "address": "0x2e4b0Fb46a46C90CB410FE676f24E466753B469f", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xa4bbe66f151b22b167127c770016b15ff97dd35c" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/umbr.svg" + }, + { + "chainId": 137, + "name": "Zilliqa", + "symbol": "ZIL", + "decimals": 12, + "address": "0x1e2231DB2DBEdD0FAC3eB70608d402E80F244C6D", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x05f4a42e251f2d52b8ed15e9fedaacfcef1fad27" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/zil.svg" + }, + { + "chainId": 137, + "name": "SOCIALBI DEFI", + "symbol": "SBI", + "decimals": 18, + "address": "0x179a16D33E4c08Dd773B002f475ca36Ce22Fa169", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x03F2892669D00BFFB6C5F317106f7E89213894aF" + } + }, + { + "chainId": 137, + "name": "Corn", + "symbol": "CORN", + "decimals": 18, + "address": "0xA5C09Ba00f342F61F637e1A88F1Bd7EbaCf5BE48", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x3CD1833Ce959E087D0eF0Cb45ed06BffE60F23Ba" + } + }, + { + "chainId": 137, + "name": "Land", + "symbol": "LAND", + "decimals": 18, + "address": "0xAd230ec33ccf849C2bBd8D26C1706DB07b24Db95", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x3258cd8134b6b28e814772dd91d5ecceea512818" + } + }, + { + "chainId": 137, + "name": "RougeCoin", + "symbol": "XRGE", + "decimals": 18, + "address": "0x642F7511a68c57faE8AC0CAa618673a66166e4c7", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xa1c7d450130bb77c6a23ddfaecbc4a060215384b" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/xrge.svg" + }, + { + "chainId": 137, + "name": "AIOZ Network", + "symbol": "AIOZ", + "decimals": 18, + "address": "0xe2341718c6C0CbFa8e6686102DD8FbF4047a9e9B", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x626e8036deb333b408be468f951bdb42433cbf18" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/aioz.svg" + }, + { + "chainId": 137, + "name": "Work Quest Token", + "symbol": "WQT", + "decimals": 18, + "address": "0x4349D5464203F1Da44513C1fEAb502839e69DBF8", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x06677dc4fe12d3ba3c7ccfd0df8cd45e4d4095bf" + } + }, + { + "chainId": 137, + "name": "SPLYT SHOPX", + "symbol": "SHOPX", + "decimals": 18, + "address": "0x7886A4EBDda9f1861d6a081cD794b3e79c375011", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x7bef710a5759d197ec0bf621c3df802c2d60d848" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/shopx.svg" + }, + { + "chainId": 137, + "name": "UnFederalReserveToken", + "symbol": "eRSDL", + "decimals": 18, + "address": "0x5095cC6511B70e287bc525Aa57AfbC60EB73ac47", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x5218e472cfcfe0b64a064f055b43b4cdc9efd3a6" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/ersdl.svg" + }, + { + "chainId": 137, + "name": "KardiaChain Token", + "symbol": "KAI", + "decimals": 18, + "address": "0x32ef6DcB27Ae8697E217fe3594D665535B176721", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xd9ec3ff1f8be459bb9369b4e79e9ebcf7141c093" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/kai.svg" + }, + { + "chainId": 137, + "name": "MobiFi", + "symbol": "MoFi", + "decimals": 18, + "address": "0xF689E85988d3a7921E852867CE49F53388985E6d", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xb2dbf14d0b47ed3ba02bdb7c954e05a72deb7544" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/mofi.svg" + }, + { + "chainId": 137, + "name": "DAFI Token", + "symbol": "DAFI", + "decimals": 18, + "address": "0x638Df98Ad8069a15569dA5a6b01181804c47e34c", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xfc979087305a826c2b2a0056cfaba50aad3e6439" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/dafi.svg" + }, + { + "chainId": 137, + "name": "Cardstack", + "symbol": "CARD", + "decimals": 18, + "address": "0x3A4BeD49Ab592A227bAe8F41eFd0d38E6e06d96c", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x954b890704693af242613edef1b603825afcd708" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/card.svg" + }, + { + "chainId": 137, + "name": "Kylin Network", + "symbol": "KYL", + "decimals": 18, + "address": "0x9ccdf331f97449A84D100918e1e233B097A3E13F", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x67b6d479c7bb412c54e03dca8e1bc6740ce6b99c" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/kyl.svg" + }, + { + "chainId": 137, + "name": "Gains V2", + "symbol": "GFARM2", + "decimals": 18, + "address": "0x7075cAB6bCCA06613e2d071bd918D1a0241379E2", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x831091dA075665168E01898c6DAC004A867f1e1B" + } + }, + { + "chainId": 137, + "name": "DeFi11", + "symbol": "D11", + "decimals": 18, + "address": "0xc58158c14D4757EF36Ce25e493758F2fcEEDec5D", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x9bf02cF6B0435A0523E6f6e0D2f35A920144F5FA" + } + }, + { + "chainId": 137, + "name": "CHONKER FINANCE", + "symbol": "CHONK", + "decimals": 18, + "address": "0xc059a4777279E30C5238Da786384700cD14d8f47", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x84679bc467DC6c2c40ab04538813AfF3796351f1" + } + }, + { + "chainId": 137, + "name": "Convergence", + "symbol": "CONV", + "decimals": 18, + "address": "0x95Bbe8fbD32088bC13E67b05c7E783AD6CA854D8", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xc834fa996fa3bec7aad3693af486ae53d8aa8b50" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/conv.svg" + }, + { + "chainId": 137, + "name": "BoughtThe.top", + "symbol": "BTT", + "decimals": 18, + "address": "0x04AE4aE7F9af802DE5A2Da9561948F6f24D4b043", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x910aCE1b34df96c8EAd1088F279FE114bE301286" + } + }, + { + "chainId": 137, + "name": "DxSale.Network", + "symbol": "SALE", + "decimals": 18, + "address": "0x8f6196901a4a153d8eE8F3fa779A042F6092D908", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xF063fE1aB7a291c5d06a86e14730b00BF24cB589" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/sale.svg" + }, + { + "chainId": 137, + "name": "wMBX Token", + "symbol": "wMBX", + "decimals": 18, + "address": "0x6181dEdD5D6aa117716cc385A0184C709b1263F3", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x71ba91dc68c6a206db0a6a92b4b1de3f9271432d" + } + }, + { + "chainId": 137, + "name": "BaoToken", + "symbol": "BAO", + "decimals": 18, + "address": "0xc81278a52AD0e1485B7C3cDF79079220Ddd68b7D", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x374cb8c27130e2c9e04f44303f3c8351b9de61c1" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/bao.svg" + }, + { + "chainId": 137, + "name": "Wrapped Gen 0", + "symbol": "WG0", + "decimals": 18, + "address": "0xbD18f2909A2B55637007fA273069febe9DAb8664", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xa10740ff9ff6852eac84cdcff9184e1d6d27c057" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/wg0.svg" + }, + { + "chainId": 137, + "name": "Paypolitan Token", + "symbol": "EPAN", + "decimals": 18, + "address": "0x6B4E056B0A2c7d967728B0d0329A61b746B04cd8", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x72630B1e3B42874bf335020Ba0249e3E9e47Bafc" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/epan.svg" + }, + { + "chainId": 137, + "name": "POLVEN", + "symbol": "POLVEN", + "decimals": 18, + "address": "0x1109C91F24F1E485f7c04d286C12B7F709e89a16", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x4a6ab9792e9f046c3ab22d8602450de5186be9a7" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/polven.svg" + }, + { + "chainId": 137, + "name": "SOAR.FI", + "symbol": "SOAR", + "decimals": 9, + "address": "0xfdc99999c4139F953A3Af41dE986687275bD4F4B", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xbae5f2d8a1299e5c4963eaff3312399253f27ccb" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/soar.svg" + }, + { + "chainId": 137, + "name": "SharedStake Governance Token", + "symbol": "SGT", + "decimals": 18, + "address": "0xDd418748FeCfc870b7322b1D11402814f5ee55Ab", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x84810bcf08744d5862b8181f12d17bfd57d3b078" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/sgt.svg" + }, + { + "chainId": 137, + "name": "GraphLinq", + "symbol": "GLQ", + "decimals": 18, + "address": "0x0CfC9a713A5C17Bc8a5fF0379467f6558bAcD0e0", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x9f9c8ec3534c3ce16f928381372bfbfbfb9f4d24" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/glq.svg" + }, + { + "chainId": 137, + "name": "StakeWise Reward ETH2", + "symbol": "rETH2", + "decimals": 18, + "address": "0xDEcE9bD4A6f4CABa2f71A8af6CbF0952758f8B36", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x20bc832ca081b91433ff6c17f85701b6e92486c5" + } + }, + { + "chainId": 137, + "name": "StakeWise Staked ETH2", + "symbol": "sETH2", + "decimals": 18, + "address": "0xfd08e84075C8B46faaA5629eDd044effD0A597ac", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xfe2e637202056d30016725477c5da089ab0a043a" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/seth2.svg" + }, + { + "chainId": 137, + "name": "Kagra", + "symbol": "KGR", + "decimals": 18, + "address": "0xc4ec74F50dd4A9ae7268898B3292DEcEf8Eda226", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xe445e067Cb17b62b15f4883B66b69E05eA7b327d" + } + }, + { + "chainId": 137, + "name": "RAGEMATIC", + "symbol": "RAGE", + "decimals": 18, + "address": "0x40CCD55B789fdEE8D434915dC2Aa6Bd938506A92", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x94804dc4948184fFd7355f62Ccbb221c9765886F" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/rage.svg" + }, + { + "chainId": 137, + "name": "xHDX", + "symbol": "xHDX", + "decimals": 12, + "address": "0xe8388f307caa9c338955465f0AE2aA4c3E023Dd8", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x6fcb6408499a7c0f242e32d77eb51ffa1dd28a7e" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/xhdx.svg" + }, + { + "chainId": 137, + "name": "Stater", + "symbol": "STR", + "decimals": 18, + "address": "0xA79E0Bfc579c709819f4A0E95d4597f03093B011", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x84bb947fcedba6b9c7dcead42df07e113bb03007" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/str.svg" + }, + { + "chainId": 137, + "name": "santa.investments", + "symbol": "SANTA", + "decimals": 0, + "address": "0x0aB8B5304c07Bb29514dAd43AdBA7A44C67b0506", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x499a7e6ddaf01de4c309f22933a1c38cbb44a1d4" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/santa.svg" + }, + { + "chainId": 137, + "name": "Pluton", + "symbol": "PLU", + "decimals": 18, + "address": "0x7dc0cb65EC6019330a6841e9c274f2EE57A6CA6C", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xD8912C10681D8B21Fd3742244f44658dBA12264E" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/plu.svg" + }, + { + "chainId": 137, + "name": "Armor", + "symbol": "ARMOR", + "decimals": 18, + "address": "0x5de4005155933c0e1612Ce808f12B4cd8DAabc82", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x1337def16f9b486faed0293eb623dc8395dfe46a" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/armor.svg" + }, + { + "chainId": 137, + "name": "NFT Platform Index", + "symbol": "NFTP", + "decimals": 18, + "address": "0xf7d9e281c5Cb4C6796284C5b663b3593D2037aF2", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x68bb81b3f67f7aab5fd1390ecb0b8e1a806f2465" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/nftp.svg" + }, + { + "chainId": 137, + "name": "Strudel BTC", + "symbol": "VBTC", + "decimals": 18, + "address": "0x1489F4F7E3a80A0aD9fA23C39D2E8af818204ce9", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xe1406825186d63980fd6e2ec61888f7b91c4bae4" + } + }, + { + "chainId": 137, + "name": "Frontier Token", + "symbol": "FRONT", + "decimals": 18, + "address": "0xa3eD22EEE92a3872709823a6970069e12A4540Eb", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xf8C3527CC04340b208C854E985240c02F7B7793f" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/front.svg" + }, + { + "chainId": 137, + "name": "YAM", + "symbol": "YAM", + "decimals": 18, + "address": "0xb3B681dEE0435eCc0a508e40B02b3C9068D618cd", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x0aacfbec6a24756c20d41914f2caba817c0d8521" + } + }, + { + "chainId": 137, + "name": "NIL Token", + "symbol": "NIL", + "decimals": 9, + "address": "0x6374fce99CF93A8f07728c4ADF2991b0f5E50F45", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x7DEb93314090837fb33bB9a30D62C459BDFdc661" + } + }, + { + "chainId": 137, + "name": "Havens Nook", + "symbol": "HXN", + "decimals": 18, + "address": "0x175Bdc4e52EECB675B86FC4C9A3Ea3f80adBb610", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x0E1fe60bc4aC0e3102343752ae7E49d01d444c0b" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/hxn.svg" + }, + { + "chainId": 137, + "name": "Staked SDT", + "symbol": "xSDT", + "decimals": 18, + "address": "0xD921F8318cfd786baB1ea7492673F053c518Ac04", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xaC14864ce5A98aF3248Ffbf549441b04421247D3" + } + }, + { + "chainId": 137, + "name": "Flowing Hair", + "symbol": "FGH", + "decimals": 18, + "address": "0xb8E5b39689f886f8C34D3E5ac09F513A282d486D", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x3ec03cD2763A729339AFf9927BE679c76325D1bf" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/fgh.svg" + }, + { + "chainId": 137, + "name": "Premia", + "symbol": "PREMIA", + "decimals": 18, + "address": "0x055dC5c3b7c386f2daefEc554bB42831fB4107Be", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x6399c842dd2be3de30bf99bc7d1bbf6fa3650e70" + } + }, + { + "chainId": 137, + "name": "LCX", + "symbol": "LCX", + "decimals": 18, + "address": "0xE8A51D0dD1b4525189ddA2187F90ddF0932b5482", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x037a54aab062628c9bbae1fdb1583c195585fe41" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/lcx.svg" + }, + { + "chainId": 137, + "name": "kongdefi.finance", + "symbol": "KONG", + "decimals": 9, + "address": "0x9ECf85badEbd3ecF6eF79db44bB59519Cbd21d82", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x7c3cf2d43b50e78e27a81293a43fcac45796fb54" + } + }, + { + "chainId": 137, + "name": "E-RADIX", + "symbol": "eXRD", + "decimals": 18, + "address": "0x56B1c1e028c2E0a8852906E1eE7730ED67A3D9Bb", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x6468e79a80c0eab0f9a2b574c8d5bc374af59414" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/exrd.svg" + }, + { + "chainId": 137, + "name": "Wise Token", + "symbol": "WISE", + "decimals": 18, + "address": "0xB77e62709e39aD1cbeEBE77cF493745AeC0F453a", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x66a0f676479Cee1d7373f3DC2e2952778BfF5bd6" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/wise.svg" + }, + { + "chainId": 137, + "name": "Glitch", + "symbol": "GLCH", + "decimals": 18, + "address": "0xbE5cf150E1fF59ca7F2499Eaa13BFC40AAE70e78", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x038a68FF68c393373eC894015816e33Ad41BD564" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/glch.svg" + }, + { + "chainId": 137, + "name": "Marblecoin", + "symbol": "MBC", + "decimals": 18, + "address": "0xcBB2Da0127042546cEfF56da69fAF3f2ba6d1C51", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x8888889213dd4da823ebdd1e235b09590633c150" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/mbc.svg" + }, + { + "chainId": 137, + "name": "AnRKey X", + "symbol": "$ANRX", + "decimals": 18, + "address": "0x554f074d9cCda8F483d1812d4874cBebD682644E", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xCae72A7A0Fd9046cf6b165CA54c9e3a3872109E0" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/$anrx.svg" + }, + { + "chainId": 137, + "name": "FingerPrint", + "symbol": "FGP", + "decimals": 18, + "address": "0x8b62011D9e73922Ac5eF6d30A82588cB33F98055", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xd9a8cfe21c232d485065cb62a96866799d4645f7" + } + }, + { + "chainId": 137, + "name": "UniMex", + "symbol": "UMX", + "decimals": 18, + "address": "0x5dF1a47e05b4caBa0ED3Df13662642f05314764D", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x10Be9a8dAe441d276a5027936c3aADEd2d82bC15" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/umx.svg" + }, + { + "chainId": 137, + "name": "SnowSwap", + "symbol": "SNOW", + "decimals": 18, + "address": "0x33c9f7C0Afe2722cb9e426360C261fB755B4483d", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xfe9a29ab92522d14fc65880d817214261d8479ae" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/snow.svg" + }, + { + "chainId": 137, + "name": "SifChain (erowan)", + "symbol": "EROWAN", + "decimals": 18, + "address": "0xa7051C5a22d963b81D71C2BA64D46a877fBc1821", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x07bac35846e5ed502aa91adf6a9e7aa210f2dcbe" + } + }, + { + "chainId": 137, + "name": "ALOHA", + "symbol": "ALOHA", + "decimals": 18, + "address": "0x60AC2E84078Ce30CBC68e3d7b18bCF613271ce6B", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x455f7ef6d8bcfc35f9337e85aee1b0600a59fabe" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/aloha.svg" + }, + { + "chainId": 137, + "name": "PolkaFoundry", + "symbol": "PKF", + "decimals": 18, + "address": "0x3d32a7Dc8B0C62A73639BF0D4FE8D229a2431EC8", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x8b39b70e39aa811b69365398e0aace9bee238aeb" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/pkf.svg" + }, + { + "chainId": 137, + "name": "Green Token", + "symbol": "GREEN", + "decimals": 8, + "address": "0x8A4001fD666BE272605c56BB956d11A46200Db81", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x5e68801A5dDA8671051006eb2920FfE9Cd553544" + } + }, + { + "chainId": 137, + "name": "KEY Token", + "symbol": "KEY", + "decimals": 0, + "address": "0x03bb597efd7Bb986222aFdA80858F05a3BC4A2E9", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xf179597937d04ed22bea98745b667d2ccfc74f9d" + } + }, + { + "chainId": 137, + "name": "Opium Governance Token", + "symbol": "OPIUM", + "decimals": 18, + "address": "0xE8F157E041Df3B28151B667364e9c90789Da7923", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x888888888889c00c67689029d7856aac1065ec11" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/opium.svg" + }, + { + "chainId": 137, + "name": "MAXXToken.com", + "symbol": "MAXX", + "decimals": 18, + "address": "0x41B3Fc2302C8aAc4C84c552f770419091EF52435", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x57641b7250f153020a33037845f63ff23a090d17" + } + }, + { + "chainId": 137, + "name": "ICOStart Token", + "symbol": "ICH", + "decimals": 18, + "address": "0xb257De22059cd200e34139d27CE0e415E173cE49", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x330839ef82d34801bd96e75a4ee778ac56fa1ed8" + } + }, + { + "chainId": 137, + "name": "DexKit", + "symbol": "KIT", + "decimals": 18, + "address": "0x4D0Def42Cf57D6f27CD4983042a55dce1C9F853c", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x7866e48c74cbfb8183cd1a929cd9b95a7a5cb4f4" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/kit.svg" + }, + { + "chainId": 137, + "name": "VISOR", + "symbol": "VISR", + "decimals": 18, + "address": "0xB090B6310970DD028a007981a24C1a492568a816", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xf938424f7210f31df2aee3011291b658f872e91e" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/visr.svg" + }, + { + "chainId": 137, + "name": "Cellframe Token", + "symbol": "CELL", + "decimals": 18, + "address": "0x1D545D7ff917e08D7Bf26320343b16BdF51FdBb6", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x26c8afbbfe1ebaca03c2bb082e69d0476bffe099" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/cell.svg" + }, + { + "chainId": 137, + "name": "MUAN", + "symbol": "MUA", + "decimals": 18, + "address": "0xdfeEB5661ef760A1c565Caf07A50aCa182EaFceE", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xD7F8032777C50aFD2e7AFa41912a4d8038127271" + } + }, + { + "chainId": 137, + "name": "Alchemix", + "symbol": "ALCX", + "decimals": 18, + "address": "0x95c300e7740D2A88a44124B424bFC1cB2F9c3b89", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xdbdb4d16eda451d0503b854cf79d55697f90c8df" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/alcx.svg" + }, + { + "chainId": 137, + "name": "YfDAI.finance", + "symbol": "Yf-DAI", + "decimals": 18, + "address": "0x7E7fF932FAb08A0af569f93Ce65e7b8b23698Ad8", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xf4cd3d3fda8d7fd6c5a500203e38640a70bf9577" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/yf-dai.svg" + }, + { + "chainId": 137, + "name": "Cryptocurrency Top Tokens Index", + "symbol": "CC10", + "decimals": 18, + "address": "0x9c49BA0212Bb5Db371e66b59D1565b7c06E4894e", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x17ac188e09a7890a1844e5e65471fe8b0ccfadf3" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/cc10.svg" + }, + { + "chainId": 137, + "name": "Orient", + "symbol": "OFT", + "decimals": 18, + "address": "0x8CA5ed20346c5d8a21A849d59c64f0884a532882", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xc0A25a24CcE412E2Fb407c08E3785437FEE9Ad1d" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/oft.svg" + }, + { + "chainId": 137, + "name": "Ethernity Chain", + "symbol": "ERN", + "decimals": 18, + "address": "0x0E50BEA95Fe001A370A4F1C220C49AEdCB982DeC", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xbbc2ae13b23d715c30720f079fcd9b4a74093505" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/ern.svg" + }, + { + "chainId": 137, + "name": "REN", + "symbol": "REN", + "decimals": 18, + "address": "0x19782D3Dc4701cEeeDcD90f0993f0A9126ed89d0", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x408e41876cccdc0f92210600ef50372656052a38" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/ren.svg" + }, + { + "chainId": 137, + "name": "HOLO", + "symbol": "HOT", + "decimals": 18, + "address": "0x0C51f415cF478f8D08c246a6C6Ee180C5dC3A012", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x6c6ee5e31d828de241282b9606c8e98ea48526e2" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/hot.svg" + }, + { + "chainId": 137, + "name": "ADD.XYZ", + "symbol": "ADD", + "decimals": 18, + "address": "0xfA15611AA3775FBfE1375Fb56cd3027F5D3DD2Db", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x635d081fd8f6670135d8a3640e2cf78220787d56" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/add.svg" + }, + { + "chainId": 137, + "name": "CherryBlossom", + "symbol": "CBL", + "decimals": 18, + "address": "0xf35a85C493c49f19bCC176E718865b148958a130", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xf0acc6f66ac9b9b563f20e2347e67e1fd523ec1a" + } + }, + { + "chainId": 137, + "name": "MultiVAC", + "symbol": "MTV", + "decimals": 18, + "address": "0x885b6e6DBb84148f98c806800Bc19c9A9DB4cFeb", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x6226e00bcac68b0fe55583b90a1d727c14fab77f" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/mtv.svg" + }, + { + "chainId": 137, + "name": "Wrapped Wagerr", + "symbol": "WWGR", + "decimals": 8, + "address": "0x157B28E46F301c596668A4B85C59f710F9C4BBAA", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xc237868a9c5729bdf3173dddacaa336a0a5bb6e0" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/wwgr.svg" + }, + { + "chainId": 137, + "name": "CHZ", + "symbol": "CHZ", + "decimals": 18, + "address": "0xf1938Ce12400f9a761084E7A80d37e732a4dA056", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x3506424f91fd33084466f402d5d97f05f8e3b4af" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/chz.svg" + }, + { + "chainId": 137, + "name": "NodeRunners", + "symbol": "NDR", + "decimals": 18, + "address": "0xfb65ef42F7c8A70ff73F627DB6E9ba2Aff1F20fa", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x739763a258640919981f9ba610ae65492455be53" + } + }, + { + "chainId": 137, + "name": "Monavale", + "symbol": "MONA", + "decimals": 18, + "address": "0x6968105460f67c3BF751bE7C15f92F5286Fd0CE5", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x275f5Ad03be0Fa221B4C6649B8AeE09a42D9412A" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/mona.svg" + }, + { + "chainId": 137, + "name": "DOVU", + "symbol": "DOV", + "decimals": 18, + "address": "0x0E0ffc562d72316b783E887bbAAe1FD794ADb530", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xac3211a5025414af2866ff09c23fc18bc97e79b1" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/dov.svg" + }, + { + "chainId": 137, + "name": "Value USD", + "symbol": "USDV", + "decimals": 18, + "address": "0x55bCbEAB7b9daDaDb0b2E97C354357c58a052d88", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xA62CfAf94A42E1D9b70241840BFDad76C15B2b24" + } + }, + { + "chainId": 137, + "name": "Hakka Finance", + "symbol": "HAKKA", + "decimals": 18, + "address": "0xD893dde7346cc0aB46dc7EA468AeB69D9BF087c5", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x0e29e5abbb5fd88e28b2d355774e73bd47de3bcd" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/hakka.svg" + }, + { + "chainId": 137, + "name": "STASIS EURS Token", + "symbol": "EURS", + "decimals": 2, + "address": "0xE111178A87A3BFf0c8d18DECBa5798827539Ae99", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xdb25f211ab05b1c97d595516f45794528a807ad8" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/eurs.svg" + }, + { + "chainId": 137, + "name": "stake dao Curve.fi renBTC/wBTC/sBTC", + "symbol": "sdcrvRenWSBTC", + "decimals": 18, + "address": "0xe212f92E5Af85268B33D2Aa587B51f49C3B945Be", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x24129b935aff071c4f0554882c0d9573f4975fed" + } + }, + { + "chainId": 137, + "name": "stake dao Curve.fi EURS/sEUR", + "symbol": "sdeursCRV", + "decimals": 18, + "address": "0xfBdb45075Fb73ca4CC8b83FD6fdB4F9B696B1BA1", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xcd6997334867728ba14d7922f72c893fcee70e84" + } + }, + { + "chainId": 137, + "name": "stake dao Curve.fi DAI/USDC/USDT", + "symbol": "sd3Crv", + "decimals": 18, + "address": "0x87f0BFEE4435CE2B8643b221D0C1CAd21F5328B4", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xb17640796e4c27a39af51887aff3f8dc0daf9567" + } + }, + { + "chainId": 137, + "name": "BetProtocolToken", + "symbol": "BEPRO", + "decimals": 18, + "address": "0x07CC1cC3628Cc1615120DF781eF9fc8EC2feAE09", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xcf3c8be2e2c42331da80ef210e9b1b307c03d36a" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/bepro.svg" + }, + { + "chainId": 137, + "name": "Vox.Finance", + "symbol": "VOX", + "decimals": 18, + "address": "0x7Dd3D9E1868A7dA87509A601E7dbBf938c819a32", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x12D102F06da35cC0111EB58017fd2Cd28537d0e1" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/vox.svg" + }, + { + "chainId": 137, + "name": "Nord Token", + "symbol": "NORD", + "decimals": 18, + "address": "0xF6F85b3f9fd581C2eE717c404F7684486F057F95", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x6e9730ecffbed43fd876a264c982e254ef05a0de" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/nord.svg" + }, + { + "chainId": 137, + "name": "veCRV-Stake-DAO", + "symbol": "veCRV", + "decimals": 18, + "address": "0x9613282539b6d0e3CB1eDC843a43Da7768AC3838", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x478bBC744811eE8310B461514BDc29D03739084D" + } + }, + { + "chainId": 137, + "name": "Julien", + "symbol": "JULIEN", + "decimals": 4, + "address": "0x268Ad27C28601D28b79c792C14e95BD2b7A030F8", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xe6710e0cda178f3d921f456902707b0d4c4a332b" + } + }, + { + "chainId": 137, + "name": "hoge.finance", + "symbol": "HOGE", + "decimals": 9, + "address": "0xdd539b42dadDc0Ca55fb3aC2260240E61414d92B", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xfad45e47083e4607302aa43c65fb3106f1cd7607" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/hoge.svg" + }, + { + "chainId": 137, + "name": "DEGEN Index", + "symbol": "DEGEN", + "decimals": 18, + "address": "0x8a2870fb69A90000D6439b7aDfB01d4bA383A415", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x126c121f99e1e211df2e5f8de2d96fa36647c855" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/degen.svg" + }, + { + "chainId": 137, + "name": "MAKER", + "symbol": "MKR", + "decimals": 18, + "address": "0x6f7C932e7684666C9fd1d44527765433e01fF61d", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2" + } + }, + { + "chainId": 137, + "name": "NapoleonX Token", + "symbol": "NPX", + "decimals": 2, + "address": "0x106035DEDcA635d75d6Ff05F98F25916829eDB77", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x28b5e12cce51f15594b0b91d5b5adaa70f684a02" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/npx.svg" + }, + { + "chainId": 137, + "name": "Stake DAO Token", + "symbol": "SDT", + "decimals": 18, + "address": "0x361A5a4993493cE00f61C32d4EcCA5512b82CE90", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x73968b9a57c6e53d41345fd57a6e6ae27d6cdb2f" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/sdt.svg" + }, + { + "chainId": 137, + "name": "EASY", + "symbol": "EASY", + "decimals": 18, + "address": "0xDb3b3b147A030F032633f6C4BEBf9a2fB5a882B5", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x913D8ADf7CE6986a8CbFee5A54725D9Eea4F0729" + } + }, + { + "chainId": 137, + "name": "Vidya", + "symbol": "VIDYA", + "decimals": 18, + "address": "0xFe9CA7Cf13E33b23aF63Fea696f4AAe1b7A65585", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x3d3d35bb9bec23b06ca00fe472b50e7a4c692c30" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/vidya.svg" + }, + { + "chainId": 137, + "name": "Betbeetle", + "symbol": "BTL", + "decimals": 18, + "address": "0x2D0b6b0C7468C7cFb716e9Cf0ff24F45A239a3A0", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xb9a8695a234b6e8f9e65d299df8f94234540fc05" + } + }, + { + "chainId": 137, + "name": "Street Cred", + "symbol": "CRED", + "decimals": 18, + "address": "0x13654478010268c8c729E8078313C3d0acC21819", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xED7Fa212E100DFb3b13B834233E4B680332a3420" + } + }, + { + "chainId": 137, + "name": "coin_artist", + "symbol": "COIN", + "decimals": 18, + "address": "0x26F10028C105501678531A19Fe025b93Ae055a9f", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x87b008E57F640D94Ee44Fd893F0323AF933F9195" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/coin.svg" + }, + { + "chainId": 137, + "name": "PickleToken", + "symbol": "PICKLE", + "decimals": 18, + "address": "0x2b88aD57897A8b496595925F43048301C37615Da", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x429881672B9AE42b8EbA0E26cD9C73711b891Ca5" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/pickle.svg" + }, + { + "chainId": 137, + "name": "Render Token", + "symbol": "RNDR", + "decimals": 18, + "address": "0x61299774020dA444Af134c82fa83E3810b309991", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x6de037ef9ad2725eb40118bb1702ebb27e4aeb24" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/rndr.svg" + }, + { + "chainId": 137, + "name": "Cryptotipsfr Token V2", + "symbol": "CRTS", + "decimals": 9, + "address": "0xebf9B87583C284F0a1b7aF72371F84D2A7567285", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x94cA37d108E89775dC8ae65F51AE28c2d9599f9A" + } + }, + { + "chainId": 137, + "name": "CRV", + "symbol": "CRV", + "decimals": 18, + "address": "0x172370d5Cd63279eFa6d502DAB29171933a610AF", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xd533a949740bb3306d119cc777fa900ba034cd52" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/crv.svg" + }, + { + "chainId": 137, + "name": "TORN", + "symbol": "TORN", + "decimals": 18, + "address": "0x23fE1Ee2f536427B7e8aC02FB037A7f867037Fe8", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x77777feddddffc19ff86db637967013e6c6a116c" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/torn.svg" + }, + { + "chainId": 137, + "name": "FOTO", + "symbol": "FOTO", + "decimals": 18, + "address": "0x7827F070D3F0DCAE72aC6a9E1953459d50A426A7", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xf6ea0e60cee427b90aa36f327ee61d1d4cabc49f" + } + }, + { + "chainId": 137, + "name": "STAKE", + "symbol": "STAKE", + "decimals": 18, + "address": "0xeb5c9e515629B725D3588A55E2a43964DcfdE8cA", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x0ae055097c6d159879521c384f1d2123d1f195e6" + } + }, + { + "chainId": 137, + "name": "PERP", + "symbol": "PERP", + "decimals": 18, + "address": "0x263534a4Fe3cb249dF46810718B7B612a30ebbff", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xbc396689893d065f41bc2c6ecbee5e0085233447" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/perp.svg" + }, + { + "chainId": 137, + "name": "Maps.me Token", + "symbol": "MAPS", + "decimals": 6, + "address": "0x7B9FD890072508f66978e1cb9D4F802DCC2C4fDf", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x2b915b505c017abb1547aa5ab355fbe69865cc6d" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/maps.svg" + }, + { + "chainId": 137, + "name": "Mysterium", + "symbol": "MYST", + "decimals": 18, + "address": "0x1379E8886A944d2D9d440b3d88DF536Aea08d9F3", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x4Cf89ca06ad997bC732Dc876ed2A7F26a9E7f361" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/myst.svg" + }, + { + "chainId": 137, + "name": "Fractal Protocol Token", + "symbol": "FCL", + "decimals": 18, + "address": "0x6f934b45fc6043527d73C7c99313dd838E723DB7", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xf4d861575ecc9493420a3f5a14f85b13f0b50eb3" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/fcl.svg" + }, + { + "chainId": 137, + "name": "URANIUM", + "symbol": "URANIUM", + "decimals": 18, + "address": "0x2Ecf35111DC4894f43FEab1683a9845cd1b4E0C4", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xeea6D30798300F4E1d8cd819c8db3B4E6d1e29f6" + } + }, + { + "chainId": 137, + "name": "RAZOR", + "symbol": "RAZOR", + "decimals": 18, + "address": "0xC91c06DB0f7bFFba61e2A5645CC15686F0a8c828", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x50de6856358cc35f3a9a57eaaa34bd4cb707d2cd" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/razor.svg" + }, + { + "chainId": 137, + "name": "FireAnts", + "symbol": "ANTS", + "decimals": 18, + "address": "0x24212089B9D90B4D06ef10bD80CA14ec9356D98f", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xa9fbb83a2689f4ff86339a4b96874d718673b627" + } + }, + { + "chainId": 137, + "name": "YVS.Finance", + "symbol": "YVS", + "decimals": 18, + "address": "0xb565CF70613ca464D68427106af80C67a8e4b801", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xEC681F28f4561c2a9534799AA38E0d36A83Cf478" + } + }, + { + "chainId": 137, + "name": "Hopr", + "symbol": "HOPR", + "decimals": 18, + "address": "0x6cCBF3627b2C83AFEF05bf2F035E7f7B210Fe30D", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xf5581dfefd8fb0e4aec526be659cfab1f8c781da" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/hopr.svg" + }, + { + "chainId": 137, + "name": "Tapmydata", + "symbol": "TAP", + "decimals": 18, + "address": "0x10635bF5c17F5E4c0Ed9012aEf7C12f96a57a4Dd", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x7f1f2d3dfa99678675ece1c243d3f7bc3746db5d" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/tap.svg" + }, + { + "chainId": 137, + "name": "Injective Token", + "symbol": "INJ", + "decimals": 18, + "address": "0x4E8dc2149EaC3f3dEf36b1c281EA466338249371", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xe28b3B32B6c345A34Ff64674606124Dd5Aceca30" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/inj.svg" + }, + { + "chainId": 137, + "name": "Badger Sett Digg", + "symbol": "bDIGG", + "decimals": 18, + "address": "0xFDde616084427f0A231D0664a985E1F820E34693", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x7e7e112a68d8d2e221e11047a72ffc1065c38e1a" + } + }, + { + "chainId": 137, + "name": "Digg", + "symbol": "DIGG", + "decimals": 9, + "address": "0x12255b2DaDC7E18Fd34353DAa161974cC917C8dd", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x798d1be841a82a273720ce31c822c61a67a601c3" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/digg.svg" + }, + { + "chainId": 137, + "name": "Badger Sett Badger", + "symbol": "bBADGER", + "decimals": 18, + "address": "0x2628D301b161DB70E3dBbAc88d9D900cA426fF02", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x19d97d8fa813ee2f51ad4b4e04ea08baf4dffc28" + } + }, + { + "chainId": 137, + "name": "Badger", + "symbol": "BADGER", + "decimals": 18, + "address": "0x1FcbE5937B0cc2adf69772D228fA4205aCF4D9b2", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x3472A5A71965499acd81997a54BBA8D852C6E53d" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/badger.svg" + }, + { + "chainId": 137, + "name": "Theta Token", + "symbol": "THETA", + "decimals": 18, + "address": "0xB46E0ae620EFd98516f49bb00263317096C114b2", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x3883f5e181fccaf8410fa61e12b59bad963fb645" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/theta.svg" + }, + { + "chainId": 137, + "name": "Tixl Token", + "symbol": "TXL", + "decimals": 18, + "address": "0x6EE244034336f0135dcef9A5755D03a9f51Dd114", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x8eEF5a82E6Aa222a60F009ac18c24EE12dBf4b41" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/txl.svg" + }, + { + "chainId": 137, + "name": "RFOX", + "symbol": "RFOX", + "decimals": 18, + "address": "0xdD4959cd915AE74DCD3F51e11e40Fe112aC7AA69", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xa1d6df714f91debf4e0802a542e13067f31b8262" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/rfox.svg" + }, + { + "chainId": 137, + "name": "Energy Web Token Bridged", + "symbol": "EWTB", + "decimals": 18, + "address": "0x43E4B063F96c33F0433863A927F5bad34bb4B03d", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x178c820f862b14f316509ec36b13123da19a6054" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/ewtb.svg" + }, + { + "chainId": 137, + "name": "DEAPCOIN", + "symbol": "DEP", + "decimals": 18, + "address": "0xD0ee109352c6116dB0f17F4Aa8519CdBfc7e7887", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x1a3496c18d558bd9c6c8f609e1b129f67ab08163" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/dep.svg" + }, + { + "chainId": 137, + "name": "IceCream", + "symbol": "SCOOP", + "decimals": 6, + "address": "0x25F5ea9BD2ff7F4fE7CAd29a271Eb484AcBF19f8", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x9E7aCE871aFa0c18f979979a22104dd01d39b414" + } + }, + { + "chainId": 137, + "name": "AGA Rewards", + "symbol": "AGAr", + "decimals": 8, + "address": "0xF84BD51eab957c2e7B7D646A3427C5A50848281D", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xb453f1f2EE776dAF2586501361c457dB70e1ca0F" + } + }, + { + "chainId": 137, + "name": "PoolTogether", + "symbol": "POOL", + "decimals": 18, + "address": "0x25788a1a171ec66Da6502f9975a15B609fF54CF6", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x0cec1a9154ff802e7934fc916ed7ca50bde6844e" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/pool.svg" + }, + { + "chainId": 137, + "name": "BandToken", + "symbol": "BAND", + "decimals": 18, + "address": "0xA8b1E0764f85f53dfe21760e8AfE5446D82606ac", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xba11d00c5f74255f56a5e366f4f77f5a186d7f55" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/band.svg" + }, + { + "chainId": 137, + "name": "Fantom Token", + "symbol": "FTM", + "decimals": 18, + "address": "0xC9c1c1c20B3658F8787CC2FD702267791f224Ce1", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x4e15361fd6b4bb609fa63c81a2be19d873717870" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/ftm.svg" + }, + { + "chainId": 137, + "name": "OriginToken", + "symbol": "OGN", + "decimals": 18, + "address": "0xa63Beffd33AB3a2EfD92a39A7D2361CEE14cEbA8", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x8207c1ffc5b6804f6024322ccf34f29c3541ae26" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/ogn.svg" + }, + { + "chainId": 137, + "name": "1Million Token", + "symbol": "1MT", + "decimals": 7, + "address": "0x2052344CeAce7f140da3E819c7729fEF72F97851", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xf0bc1ae4ef7ffb126a8347d06ac6f8add770e1ce" + } + }, + { + "chainId": 137, + "name": "Spartan", + "symbol": "300", + "decimals": 7, + "address": "0x454E1Ec2F58ee542B75d2AB713Ed53Cd33Ba4308", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x167e2a574669b0eeb552aaf3da47c728cb348a41" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/300.svg" + }, + { + "chainId": 137, + "name": "1337", + "symbol": "1337", + "decimals": 4, + "address": "0x49Fc111e5Ddd5580f48D6fDc4314540cb3A5CC4B", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x35872fea6a4843facbcdbce99e3b69596a3680b8" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/1337.svg" + }, + { + "chainId": 137, + "name": "WHALE", + "symbol": "WHALE", + "decimals": 4, + "address": "0xb9585ec9d4C97Ad9DEd7250Bb9a199fe8eED0ECA", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x9355372396e3f6daf13359b7b607a3374cc638e0" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/whale.svg" + }, + { + "chainId": 137, + "name": "AutoChainTokenCandy", + "symbol": "ATCx", + "decimals": 4, + "address": "0x0F933Ae2ffb1ee8b7385647Eb6A5610F31d5B56F", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xcb6e019e74a2d6e0dd60afc716e4c708140bff7d" + } + }, + { + "chainId": 137, + "name": "Tellor Tributes", + "symbol": "TRB", + "decimals": 18, + "address": "0xE3322702BEdaaEd36CdDAb233360B939775ae5f1", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x88dF592F8eb5D7Bd38bFeF7dEb0fBc02cf3778a0" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/trb.svg" + }, + { + "chainId": 137, + "name": "SwapMatic Token", + "symbol": "SWAM", + "decimals": 18, + "address": "0x94C18174840F80D49d59DC3a1742aF0B884A8184", + "logoURI": "https://raw.githubusercontent.com/BlockTimeWorld/crawler/main/icons/swam.svg", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x368306eb52c8313fd398418c8220ddd560940e68" + } + }, + { + "chainId": 137, + "name": "IOI Token ", + "symbol": "IOI", + "decimals": 6, + "address": "0xAF24765F631C8830B5528B57002241eE7eef1C14", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x8b3870df408ff4d7c3a26df852d41034eda11d81" + } + }, + { + "chainId": 137, + "name": "B.20", + "symbol": "B20", + "decimals": 18, + "address": "0xff898089e368eCc47Fc37Fd0D905Fbcf0D70E820", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xc4de189abf94c57f396bd4c52ab13b954febefd8" + } + }, + { + "chainId": 137, + "name": "Neutrino USD", + "symbol": "USDN", + "decimals": 18, + "address": "0x1b630A1f5838D142F4E91CC4163CD41F5139b166", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x674C6Ad92Fd080e4004b2312b45f796a192D27a0" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/usdn.svg" + }, + { + "chainId": 137, + "name": "Ammunition", + "symbol": "AMMO", + "decimals": 18, + "address": "0x9C72573A47b0d81Ef6048c320bF5563e1606A04C", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x41D4E9880d6aE03f6E152A52afc3ECF82063A08b" + } + }, + { + "chainId": 137, + "name": "Ruletka", + "symbol": "RTK", + "decimals": 18, + "address": "0x38332D8671961aE13d0BDe040d536eB336495eEA", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x1F6DEADcb526c4710Cf941872b86dcdfBbBD9211" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/rtk.svg" + }, + { + "chainId": 137, + "name": "Crypto Accept", + "symbol": "ACPT", + "decimals": 18, + "address": "0xFCf1E2fC0A398925ddb09222842b376E3A7D573B", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xcAd2d4C4469fF09aB24d02A63BCeDfCD44bE0645" + } + }, + { + "chainId": 137, + "name": "Vortex DeFi", + "symbol": "VTX", + "decimals": 18, + "address": "0x392f5C034b5423569a09Bb172f408aCb62A1Be7A", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xceb286c9604c542d3cc08b41aa6c9675b078a832" + } + }, + { + "chainId": 137, + "name": "Offshift", + "symbol": "XFT", + "decimals": 18, + "address": "0x9EC5AbD7A442B8325F529daB25019674D0ba983d", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xabe580e7ee158da464b51ee1a83ac0289622e6be" + } + }, + { + "chainId": 137, + "name": "Digital Reserve Currency", + "symbol": "DRC", + "decimals": 0, + "address": "0xFeD16c746CB5BFeD009730f9E3e6A673006105c7", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xa150Db9b1Fa65b44799d4dD949D922c0a33Ee606" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/drc.svg" + }, + { + "chainId": 137, + "name": "Paxos Gold", + "symbol": "PAXG", + "decimals": 18, + "address": "0x553d3D295e0f695B9228246232eDF400ed3560B5", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x45804880de22913dafe09f4980848ece6ecbaf78" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/paxg.svg" + }, + { + "chainId": 137, + "name": "Gnosis Token", + "symbol": "GNO", + "decimals": 18, + "address": "0x5FFD62D3C3eE2E81C00A7b9079FB248e7dF024A8", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x6810e776880C02933D47DB1b9fc05908e5386b96" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/gno.svg" + }, + { + "chainId": 137, + "name": "Synthetix Network Token", + "symbol": "SNX", + "decimals": 18, + "address": "0x50B728D8D964fd00C2d0AAD81718b71311feF68a", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/snx.svg" + }, + { + "chainId": 137, + "name": "cVault.finance", + "symbol": "CORE", + "decimals": 18, + "address": "0xE47dbe919C8AB0c1A1C1e97A1Eefc2B946253924", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x62359ed7505efc61ff1d56fef82158ccaffa23d7" + } + }, + { + "chainId": 137, + "name": "Decentr ", + "symbol": "DEC", + "decimals": 18, + "address": "0x314338767151e6Ed23DB8A41c6F6943c1958Ee56", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x30f271c9e86d2b7d00a6376cd96a1cfbd5f0b9b3" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/dec.svg" + }, + { + "chainId": 137, + "name": "AAH", + "symbol": "AAH", + "decimals": 18, + "address": "0xaf9444bc9D6117121Aa108fC6c45835Be60E7d07", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x7a911c71144f4d5a00e4216b1c5b12d9571e9336" + } + }, + { + "chainId": 137, + "name": "DoTx Uniswap V2", + "symbol": "DoTxUNI-V2", + "decimals": 18, + "address": "0x421E0acEa8cD9D4aa2bcEdB407726b6A4Bffb664", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x5488ed7f9a99684d0e9eccd3847860c734017575" + } + }, + { + "chainId": 137, + "name": "Firebird DAO", + "symbol": "FBIRD", + "decimals": 18, + "address": "0x422E0Cba8e57Acc799fC14DAdf2b72DfbA281c5F", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x299e6062fc7e68f517746ab40cd915c0e9410935" + } + }, + { + "chainId": 137, + "name": "PolkastarterToken", + "symbol": "POLS", + "decimals": 18, + "address": "0x8dc302e2141DA59c934d900886DbF1518Fd92cd4", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x83e6f1E41cdd28eAcEB20Cb649155049Fac3D5Aa" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/pols.svg" + }, + { + "chainId": 137, + "name": "DSLA", + "symbol": "DSLA", + "decimals": 18, + "address": "0xa0E390e9ceA0D0e8cd40048ced9fA9EA10D71639", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x3affcca64c2a6f4e3b6bd9c64cd2c969efd1ecbe" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/dsla.svg" + }, + { + "chainId": 137, + "name": "Bancor Network Token", + "symbol": "BNT", + "decimals": 18, + "address": "0xc26D47d5c33aC71AC5CF9F776D63Ba292a4F7842", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x1f573d6fb3f13d689ff844b4ce37794d79a7ff1c" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/bnt.svg" + }, + { + "chainId": 137, + "name": "Reserve Rights", + "symbol": "RSR", + "decimals": 18, + "address": "0x7B38C0d5dfc91d0A3FeF2F8DAb3BE404c1f61fa4", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x8762db106b2c2a0bccb3a80d1ed41273552616e8" + } + }, + { + "chainId": 137, + "name": "Ethereum Blue", + "symbol": "BLUE", + "decimals": 8, + "address": "0xe7f960685aba7327ADA3b161Ea252703C87be0bF", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x539efe69bcdd21a83efd9122571a64cc25e0282b" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/blue.svg" + }, + { + "chainId": 137, + "name": "API3", + "symbol": "API3", + "decimals": 18, + "address": "0x45C27821E80F8789b60Fd8B600C73815d34DDa6C", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x0b38210ea11411557c13457D4dA7dC6ea731B88a" + } + }, + { + "chainId": 137, + "name": "MODEFI ", + "symbol": "MOD", + "decimals": 18, + "address": "0x8346Ab8d5EA7A9Db0209aEd2d1806AFA0E2c4C21", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xea1ea0972fa092dd463f2968f9bb51cc4c981d71" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/mod.svg" + }, + { + "chainId": 137, + "name": "DEFI Top 5 Tokens Index", + "symbol": "DEFI5", + "decimals": 18, + "address": "0x42435F467D33e5C4146a4E8893976ef12BBCE762", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xfa6de2697d59e88ed7fc4dfe5a33dac43565ea41" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/defi5.svg" + }, + { + "chainId": 137, + "name": "Rarible", + "symbol": "RARI", + "decimals": 18, + "address": "0x780053837cE2CeEaD2A90D9151aA21FC89eD49c2", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xfca59cd816ab1ead66534d82bc21e7515ce441cf" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/rari.svg" + }, + { + "chainId": 137, + "name": "OptionRoom", + "symbol": "ROOM", + "decimals": 18, + "address": "0x29a13AF916FE709b10029b578C94759675c9e91e", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xad4f86a25bbc20ffb751f2fac312a0b4d8f88c64" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/room.svg" + }, + { + "chainId": 137, + "name": "Audius", + "symbol": "AUDIO", + "decimals": 18, + "address": "0x5eB8D998371971D01954205c7AFE90A7AF6a95AC", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x18aaa7115705e8be94bffebde57af9bfc265b998" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/audio.svg" + }, + { + "chainId": 137, + "name": "SuperFarm", + "symbol": "SUPER", + "decimals": 18, + "address": "0xa1428174F516F527fafdD146b883bB4428682737", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xe53ec727dbdeb9e2d5456c3be40cff031ab40a55" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/super.svg" + }, + { + "chainId": 137, + "name": "Centaur Token", + "symbol": "CNTR", + "decimals": 18, + "address": "0xdae89dA41a96956e9e70320Ac9c0dd077070D3a5", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x03042482d64577a7bdb282260e2ea4c8a89c064b" + } + }, + { + "chainId": 137, + "name": "CyberFi Token", + "symbol": "CFi", + "decimals": 18, + "address": "0xeCf8f2FA183b1C4d2A269BF98A54fCe86C812d3e", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x63b4f3e3fa4e438698ce330e365e831f7ccd1ef4" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/cfi.svg" + }, + { + "chainId": 137, + "name": "tBTC", + "symbol": "TBTC", + "decimals": 18, + "address": "0x50a4a434247089848991DD8f09b889D4e2870aB6", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x8dAEBADE922dF735c38C80C7eBD708Af50815fAa" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/tbtc.svg" + }, + { + "chainId": 137, + "name": "KEEP Token", + "symbol": "KEEP", + "decimals": 18, + "address": "0x42f37A1296b2981F7C3cAcEd84c5096b2Eb0C72C", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x85eee30c52b0b379b046fb0f85f4f3dc3009afec" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/keep.svg" + }, + { + "chainId": 137, + "name": "Sapiency", + "symbol": "SPCY", + "decimals": 18, + "address": "0x87c830b6d732C3209dB97f61B379F359570d6A49", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x15f503F23d4d2716e0817714709B5DCF868013EE" + } + }, + { + "chainId": 137, + "name": "Datamine", + "symbol": "DAM", + "decimals": 18, + "address": "0xb75bBd79985a8092B05224f62D7fED25924B075d", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xF80D589b3Dbe130c270a69F1a69D050f268786Df" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/dam.svg" + }, + { + "chainId": 137, + "name": "Zenfuse", + "symbol": "ZEFU", + "decimals": 18, + "address": "0xE117837c0c8A53765cb6b4A16eBc84B3a71DD0BD", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xb1e9157c2fdcc5a856c8da8b2d89b6c32b3c1229" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/zefu.svg" + }, + { + "chainId": 137, + "name": "Rai Reflex Index", + "symbol": "RAI", + "decimals": 18, + "address": "0x00e5646f60AC6Fb446f621d146B6E1886f002905", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x03ab458634910AaD20eF5f1C8ee96F1D6ac54919" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/rai.svg" + }, + { + "chainId": 137, + "name": "Wrapped LUNA Token", + "symbol": "LUNA", + "decimals": 18, + "address": "0x24834BBEc7E39ef42f4a75EAF8E5B6486d3F0e57", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xd2877702675e6cEb975b4A1dFf9fb7BAF4C91ea9" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/luna.svg" + }, + { + "chainId": 137, + "name": "Power Trade Fuel", + "symbol": "PTF", + "decimals": 18, + "address": "0xFc42E9996973ac2E0Ff1055762E78CFaF0061188", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xbe38a889d67467b665e30e20ee5604a6f5696e38" + } + }, + { + "chainId": 137, + "name": "PLOT", + "symbol": "PLOT", + "decimals": 18, + "address": "0xe82808eaA78339b06a691fd92E1Be79671cAd8D3", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x72F020f8f3E8fd9382705723Cd26380f8D0c66Bb" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/plot.svg" + }, + { + "chainId": 137, + "name": "Social Rocket", + "symbol": "ROCKS", + "decimals": 18, + "address": "0x434B5acf47e2883fC83D326D69F32965945C1f3D", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x0829d2d5cC09d3d341E813c821B0cfAE272D9fb2" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/rocks.svg" + }, + { + "chainId": 137, + "name": "Graph Token", + "symbol": "GRT", + "decimals": 18, + "address": "0x5fe2B58c013d7601147DcdD68C143A77499f5531", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xc944e90c64b2c07662a292be6244bdf05cda44a7" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/grt.svg" + }, + { + "chainId": 137, + "name": "OMGToken", + "symbol": "OMG", + "decimals": 18, + "address": "0x62414D03084EeB269E18C970a21f45D2967F0170", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xd26114cd6ee289accf82350c8d8487fedb8a0c07" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/omg.svg" + }, + { + "chainId": 137, + "name": "Bridge Mutual", + "symbol": "BMI", + "decimals": 18, + "address": "0x1A47E3316282d57DF146F87c58A1FB4b26992Bbf", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x725c263e32c72ddc3a19bea12c5a0479a81ee688" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/bmi.svg" + }, + { + "chainId": 137, + "name": "Sora Token", + "symbol": "XOR", + "decimals": 18, + "address": "0xECaE5e66d7F2BAe250dfF839216A01C2702aDFFD", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x40fd72257597aa14c7231a7b1aaa29fce868f677" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/xor.svg" + }, + { + "chainId": 137, + "name": "Coreto", + "symbol": "COR", + "decimals": 18, + "address": "0x4fdCE518fE527439Fe76883e6b51A1c522B61b7C", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x9c2dc0c3cc2badde84b0025cf4df1c5af288d835" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/cor.svg" + }, + { + "chainId": 137, + "name": "CumCoin", + "symbol": "CUM", + "decimals": 18, + "address": "0x0f92D459B20D21F6bf9E02056EA9165d3f78bA62", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x4ecebfe9b26cd2949202bc0c74e8b5748115fe20" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/cum.svg" + }, + { + "chainId": 137, + "name": "Swipe", + "symbol": "SXP", + "decimals": 18, + "address": "0x6aBB753C1893194DE4a83c6e8B4EadFc105Fd5f5", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x8ce9137d39326ad0cd6491fb5cc0cba0e089b6a9" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/sxp.svg" + }, + { + "chainId": 137, + "name": "DokiDokiAzuki", + "symbol": "AZUKI", + "decimals": 18, + "address": "0x7CdC0421469398e0F3aA8890693d86c840Ac8931", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x910524678C0B1B23FFB9285a81f99C29C11CBaEd" + } + }, + { + "chainId": 137, + "name": "Unibright", + "symbol": "UBT", + "decimals": 8, + "address": "0x7FBc10850caE055B27039aF31bD258430e714c62", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x8400d94a5cb0fa0d041a3788e395285d61c9ee5e" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/ubt.svg" + }, + { + "chainId": 137, + "name": "ARIANEE", + "symbol": "ARIA20", + "decimals": 18, + "address": "0x46F48FbdedAa6F5500993BEDE9539ef85F4BeE8e", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xedf6568618a00c6f0908bf7758a16f76b6e04af9" + } + }, + { + "chainId": 137, + "name": "DefiPulse Index", + "symbol": "DPI", + "decimals": 18, + "address": "0x85955046DF4668e1DD369D2DE9f3AEB98DD2A369", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x1494ca1f11d487c2bbe4543e90080aeba4ba3c2b" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/dpi.svg" + }, + { + "chainId": 137, + "name": "RAMP", + "symbol": "RAMP", + "decimals": 18, + "address": "0xaECeBfcF604AD245Eaf0D5BD68459C3a7A6399c2", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x33d0568941c0c64ff7e0fb4fba0b11bd37deed9f" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/ramp.svg" + }, + { + "chainId": 137, + "name": "Butterfly Protocol", + "symbol": "BFLY", + "decimals": 18, + "address": "0x5B0a0CD03e9Df1829E00128ebE277Cc3247da346", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xf680429328caaaCabee69b7A9FdB21a71419c063" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/bfly.svg" + }, + { + "chainId": 137, + "name": "SwissBorg", + "symbol": "CHSB", + "decimals": 8, + "address": "0x67Ce67ec4fCd4aCa0Fcb738dD080b2a21ff69D75", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xba9d4199fab4f26efe3551d490e3821486f135ba" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/chsb.svg" + }, + { + "chainId": 137, + "name": "Trendering", + "symbol": "TRND", + "decimals": 18, + "address": "0xa38735c2be496A0C2D4FE32c7459c1d391501035", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xc3dd23a0a854b4f9ae80670f528094e9eb607ccb" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/trnd.svg" + }, + { + "chainId": 137, + "name": "TAMA EGG NiftyGotchi", + "symbol": "TME", + "decimals": 18, + "address": "0xbB6c356bDC5C258cb4e39C112d68fB6A9a9F6E26", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x6e742e29395cf5736c358538f0f1372ab3dfe731" + } + }, + { + "chainId": 137, + "name": "Terra Virtua Kolect", + "symbol": "TVK", + "decimals": 18, + "address": "0x5667dcC0ab74D1b1355C3b2061893399331B57e2", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xd084b83c305dafd76ae3e1b4e1f1fe2ecccb3988" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/tvk.svg" + }, + { + "chainId": 137, + "name": "Feathers", + "symbol": "myFTHR", + "decimals": 4, + "address": "0xDfE5bED8D271a4cD89cd2066839B2b0Ec934A6E8", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x7C918dF91f8F4e8D707a7A4013b8e7247C0293B1" + } + }, + { + "chainId": 137, + "name": "1Inch", + "symbol": "1INCH", + "decimals": 18, + "address": "0x9c2C5fd7b07E95EE044DDeba0E97a665F142394f", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x111111111117dc0aa78b770fa6a738034120c302" + } + }, + { + "chainId": 137, + "name": "Hands Of Steel", + "symbol": "STEEL", + "decimals": 0, + "address": "0xc8C511fE3EdBA60bc1049A88060468c2EA2D6358", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x6f022e991ea21d26f85f6716c088e2864101dfec" + } + }, + { + "chainId": 137, + "name": "Circolo Arduino Token", + "symbol": "ARDU", + "decimals": 18, + "address": "0xBe319A08eBE5da37C5A8ce8a0D8463ff6750e53B", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x3d58f7b1b6f0262031c319265bd57e4752e3fa1e" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/ardu.svg" + }, + { + "chainId": 137, + "name": "UniLend Finance Token", + "symbol": "UFT", + "decimals": 18, + "address": "0x5B4CF2C120A9702225814E18543ee658c5f8631e", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x0202Be363B8a4820f3F4DE7FaF5224fF05943AB1" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/uft.svg" + }, + { + "chainId": 137, + "name": "Omniunit Cash", + "symbol": "OMCH", + "decimals": 18, + "address": "0x349f96F489ed4e73e6C118Ed2D568343C9ee7cEc", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xaedb08ffbda65c9843875669fbcb544bcab63feb" + } + }, + { + "chainId": 137, + "name": "Chain Games", + "symbol": "CHAIN", + "decimals": 18, + "address": "0xd55fCe7CDaB84d84f2EF3F99816D765a2a94a509", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xc4c2614e694cf534d407ee49f8e44d125e4681c4" + } + }, + { + "chainId": 137, + "name": "Rubic", + "symbol": "RBC", + "decimals": 18, + "address": "0xc3cFFDAf8F3fdF07da6D5e3A89B8723D5E385ff8", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xa4eed63db85311e22df4473f87ccfc3dadcfa3e3" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/rbc.svg" + }, + { + "chainId": 137, + "name": "Shopping.io", + "symbol": "SPI", + "decimals": 18, + "address": "0x068180071617528606371c31892EcBF2B70ac1d2", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x9b02dd390a603add5c07f9fd9175b7dabe8d63b7" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/spi.svg" + }, + { + "chainId": 137, + "name": "SURF.Finance", + "symbol": "SURF", + "decimals": 18, + "address": "0x1E42EDbe5376e717C1B22904C59e406426E8173F", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xEa319e87Cf06203DAe107Dd8E5672175e3Ee976c" + } + }, + { + "chainId": 137, + "name": "Omniunit", + "symbol": "OMNIUNIT", + "decimals": 18, + "address": "0xFd6cF3A1fcb42371fD7E69633d31303868b8171a", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xd22dcf31ca28cf4dce530a0f120e244f4b4539eb" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/omniunit.svg" + }, + { + "chainId": 137, + "name": "DokiDokiFinance", + "symbol": "DOKI", + "decimals": 18, + "address": "0x5C7F7Fe4766fE8f0fa9b41E2E4194d939488ff1C", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x9ceb84f92a0561fa3cc4132ab9c0b76a59787544" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/doki.svg" + }, + { + "chainId": 137, + "name": "AGA Token", + "symbol": "AGA", + "decimals": 4, + "address": "0x033d942A6b495C4071083f4CDe1f17e986FE856c", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x2D80f5F5328FdcB6ECeb7Cacf5DD8AEDaEC94e20" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/aga.svg" + }, + { + "chainId": 137, + "name": "DOGEFI", + "symbol": "DOGEFI", + "decimals": 18, + "address": "0x13405CC33ffae0a9f91FeBb66B6b85A9C54DA13A", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x9b9087756eca997c5d595c840263001c9a26646d" + } + }, + { + "chainId": 137, + "name": "Sync Network ", + "symbol": "SYNC", + "decimals": 18, + "address": "0x5e648D09170C346DD27df9Db332591e4FAa6A844", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xb6ff96b8a8d214544ca0dbc9b33f7ad6503efd32" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/sync.svg" + }, + { + "chainId": 137, + "name": "NFTX", + "symbol": "NFTX", + "decimals": 18, + "address": "0x418839451873b0E69e628F95DC39a877a9715196", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x87d73e916d7057945c9bcd8cdd94e42a6f47f776" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/nftx.svg" + }, + { + "chainId": 137, + "name": "Rio Fuel Token", + "symbol": "RFuel", + "decimals": 18, + "address": "0x147697003255510f6431a44443E67B227109832e", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xaf9f549774ecedbd0966c52f250acc548d3f36e5" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/rfuel.svg" + }, + { + "chainId": 137, + "name": "WePower Token", + "symbol": "WPR", + "decimals": 18, + "address": "0xCBAb27B2D5b468Eea509Bd430100922341BC3f1A", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x4cf488387f035ff08c371515562cba712f9015d4" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/wpr.svg" + }, + { + "chainId": 137, + "name": "Cartesi Token", + "symbol": "CTSI", + "decimals": 18, + "address": "0x2727Ab1c2D22170ABc9b595177B2D5C6E1Ab7B7B", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x491604c0fdf08347dd1fa4ee062a822a5dd06b5d" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/ctsi.svg" + }, + { + "chainId": 137, + "name": "N3RD.FINANCE", + "symbol": "N3RDz", + "decimals": 18, + "address": "0x8f3dc8321cBa3Abe08Fb29055a0A10dC79223252", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x32c868f6318d6334b2250f323d914bc2239e4eee" + } + }, + { + "chainId": 137, + "name": "SERGS", + "symbol": "SERGS", + "decimals": 18, + "address": "0xc73A8F11ec303eD81000AC5Eae94Bf2D65b67dD6", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x79ba92dda26fce15e1e9af47d5cfdfd2a093e000" + } + }, + { + "chainId": 137, + "name": "Jarvis Reward Token", + "symbol": "JRT", + "decimals": 18, + "address": "0x596eBE76e2DB4470966ea395B0d063aC6197A8C5", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x8a9c67fee641579deba04928c4bc45f66e26343a" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/jrt.svg" + }, + { + "chainId": 137, + "name": "LOAD", + "symbol": "LOAD", + "decimals": 8, + "address": "0x81C88f5CFF4fd506df906cb32F8b02218701b0C7", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xa883e72c12473ded50a5fbffa60e4000fa5fe3c8" + } + }, + { + "chainId": 137, + "name": "ZeroUtility", + "symbol": "ZUT", + "decimals": 18, + "address": "0xe86E8beb7340659DDDCE61727E500e3A5aD75a90", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x83f873388cd14b83a9f47fabde3c9850b5c74548" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/zut.svg" + }, + { + "chainId": 137, + "name": "Pepemon Pepeballs", + "symbol": "PPBLZ", + "decimals": 18, + "address": "0x13607aA9b2ffdd8340F4628049Bd35C02A68fA05", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x4d2ee5dae46c86da2ff521f7657dad98834f97b8" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/ppblz.svg" + }, + { + "chainId": 137, + "name": "Bounty0x Token", + "symbol": "BNTY", + "decimals": 18, + "address": "0x0f40D69Ff494a9e74b1F20A89EfF299B2A05918F", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xd2d6158683aee4cc838067727209a0aaf4359de3" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/bnty.svg" + }, + { + "chainId": 137, + "name": "Blockchain Mind", + "symbol": "BCM", + "decimals": 18, + "address": "0x29B9c200B27683feA3512911DAFAf0AfD60dA4E3", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x9620366a3e732f484b2dc63103bb0eef0dde1f33" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/bcm.svg" + }, + { + "chainId": 137, + "name": "YELD", + "symbol": "YELD", + "decimals": 18, + "address": "0x9Bd3b7C3dCC24708cbF122523546Ee5C6cAEfCe8", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x468ab3b1f63A1C14b361bC367c3cC92277588Da1" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/yeld.svg" + }, + { + "chainId": 137, + "name": "Frax Share", + "symbol": "FXS", + "decimals": 18, + "address": "0x3e121107F6F22DA4911079845a470757aF4e1A1b", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x3432b6a60d23ca0dfca7761b7ab56459d9c964d0" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/fxs.svg" + }, + { + "chainId": 137, + "name": "SpiritCoin", + "symbol": "SPIRIT", + "decimals": 15, + "address": "0x24627609f3b7a01fc5A99D71067d4A28778d2B7A", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x88647c0a3a3349b9dc9e69d7385a9393a15245dc" + } + }, + { + "chainId": 137, + "name": "Reef.finance", + "symbol": "REEF", + "decimals": 18, + "address": "0xa383abD0fE30fa2b781c0b454bfcC0475c6c8844", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xfe3e6a25e6b192a42a44ecddcd13796471735acf" + } + }, + { + "chainId": 137, + "name": "DeFi Of Thrones", + "symbol": "DoTx", + "decimals": 18, + "address": "0x3Ef402Af15EEB3c80b4441E60913f31a5C41E077", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xFAb5a05C933f1A2463E334E011992E897D56eF0a" + } + }, + { + "chainId": 137, + "name": "Frax", + "symbol": "FRAX", + "decimals": 18, + "address": "0x104592a158490a9228070E0A8e5343B499e125D0", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x853d955acef822db058eb8505911ed77f175b99e" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/frax.svg" + }, + { + "chainId": 137, + "name": "LoganCoin", + "symbol": "LOG", + "decimals": 18, + "address": "0x2F128A29F2b070a68d92777EBBc0B1E8B1D5Bcd0", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x7FdF5d604A5597a20950F0744342647098154abE" + } + }, + { + "chainId": 137, + "name": "Parsiq", + "symbol": "PRQ", + "decimals": 18, + "address": "0x9377Eeb7419486FD4D485671d50baa4BF77c2222", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x362bc847a3a9637d3af6624eec853618a43ed7d2" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/prq.svg" + }, + { + "chainId": 137, + "name": "HYDRO", + "symbol": "HYDRO", + "decimals": 18, + "address": "0x902742E3c5169657B1028977371CDF2c1608F67a", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xEBBdf302c940c6bfd49C6b165f457fdb324649bc" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/hydro.svg" + }, + { + "chainId": 137, + "name": "RottenToken", + "symbol": "ROT", + "decimals": 18, + "address": "0x21389a523B3A9F39Bb3A4065572994455faf59E8", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xD04785C4d8195e4A54d9dEc3a9043872875ae9E2" + } + }, + { + "chainId": 137, + "name": "Vibrant Finance", + "symbol": "ViFi", + "decimals": 18, + "address": "0xD6c914BB2fca4BCB6644D01C4cf690c34a166e13", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x8a99E2dAE13e4df4A6aA2A9Db2d6A7901eD0107D" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/vifi.svg" + }, + { + "chainId": 137, + "name": "Atari", + "symbol": "ATRI", + "decimals": 0, + "address": "0xB140665ddE25c644c6B418e417C930dE8A8a6Ac9", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xdacd69347de42babfaecd09dc88958378780fb62" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/atri.svg" + }, + { + "chainId": 137, + "name": "CORD.Finance Bridge", + "symbol": "CORDBRIDGE", + "decimals": 18, + "address": "0x6C222361B1407c196F740c1BfFC17d1770BFD55c", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x63Ebe5Dc670FA883e184771fCB42555CB6069bcA" + } + }, + { + "chainId": 137, + "name": "DAOfi", + "symbol": "DAOfi", + "decimals": 18, + "address": "0x083BdF826F6A7419d3Cef30B9E338316224c8e8B", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xd82bb924a1707950903e2c0a619824024e254cd1" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/daofi.svg" + }, + { + "chainId": 137, + "name": "Karma", + "symbol": "KARMA", + "decimals": 4, + "address": "0x4016489B230980fd43511e28E7Fb91ED795c90C5", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xdfe691f37b6264a90ff507eb359c45d55037951c" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/karma.svg" + }, + { + "chainId": 137, + "name": "Koinos", + "symbol": "KOIN", + "decimals": 8, + "address": "0xd617a689F1B8d3b27D51Cf7789f18bD43d8c1706", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x66d28cb58487a7609877550e1a34691810a6b9fc" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/koin.svg" + }, + { + "chainId": 137, + "name": "DAO Maker", + "symbol": "DAO", + "decimals": 18, + "address": "0x048c83a1176A1d3d12cb8C305179D360B1E4C958", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x0f51bb10119727a7e5ea3538074fb341f56b09ad" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/dao.svg" + }, + { + "chainId": 137, + "name": "Lead Token", + "symbol": "XPb", + "decimals": 18, + "address": "0xB272B6D99858B0EfB079946942006727fe105201", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xbC81BF5B3173BCCDBE62dba5f5b695522aD63559" + } + }, + { + "chainId": 137, + "name": "Keep3rV1", + "symbol": "KP3R", + "decimals": 18, + "address": "0x53AEc293212E3B792563Bc16f1be26956adb12e9", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x1ceb5cb57c4d4e2b2433641b95dd330a33185a44" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/kp3r.svg" + }, + { + "chainId": 137, + "name": "Fuego Token", + "symbol": "FUEGO", + "decimals": 18, + "address": "0x088C9b7FC7d1E8F36028996236C9993BDf25Ac3E", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xf93a26a41df2d39650d32f2bffae90e3c5286da9" + } + }, + { + "chainId": 137, + "name": "Must", + "symbol": "MUST", + "decimals": 18, + "address": "0x9C78EE466D6Cb57A4d01Fd887D2b5dFb2D46288f", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x9c78ee466d6cb57a4d01fd887d2b5dfb2d46288f" + } + }, + { + "chainId": 137, + "name": "MEME", + "symbol": "MEME", + "decimals": 8, + "address": "0xf2b5a8c37278bcdD50727D5CA879f8e5A4642e2e", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xd5525d397898e5502075ea5e830d8914f6f0affe" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/meme.svg" + }, + { + "chainId": 137, + "name": "Honey", + "symbol": "HNY", + "decimals": 18, + "address": "0xb371248Dd0f9E4061ccf8850E9223Ca48Aa7CA4b", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xc3589f56b6869824804a5ea29f2c9886af1b0fce" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/hny.svg" + }, + { + "chainId": 137, + "name": "ethersmart", + "symbol": "ETM", + "decimals": 18, + "address": "0xAf95C20C60b49aD88024d8e77858900D9f2c98Bc", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xF3eb8B90C763b8B2B53E7819ac27eca8f94C8Ec2" + } + }, + { + "chainId": 137, + "name": "DONUT", + "symbol": "DONUT", + "decimals": 18, + "address": "0xDe4e5B3672c4077B69216b77d99D8Ec35ec6C31A", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xc0f9bd5fa5698b6505f643900ffa515ea5df54a9" + } + }, + { + "chainId": 137, + "name": "MCHCoin", + "symbol": "MCHC", + "decimals": 18, + "address": "0xee7666aACAEFaa6efeeF62ea40176d3eB21953B9", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xd69f306549e9d96f183b1aeca30b8f4353c2ecc3" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/mchc.svg" + }, + { + "chainId": 137, + "name": "JPY Coin", + "symbol": "JPYC", + "decimals": 18, + "address": "0x6AE7Dfc73E0dDE2aa99ac063DcF7e8A63265108c", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x2370f9d504c7a6E775bf6E14B3F12846b594cD53" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/jpyc.svg" + }, + { + "chainId": 137, + "name": "Pixel", + "symbol": "PIXEL", + "decimals": 4, + "address": "0x24f82AE063f165d621b2aEC10714eB989c51938A", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x1e906717de2e4a4600f13b6909736b0346bdde3e" + } + }, + { + "chainId": 137, + "name": "Vision Token", + "symbol": "VISION", + "decimals": 18, + "address": "0x034b2090b579228482520c589dbD397c53Fc51cC", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xf406f7a9046793267bc276908778b29563323996" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/vision.svg" + }, + { + "chainId": 137, + "name": "Mireneum token", + "symbol": "MNE", + "decimals": 8, + "address": "0x8e600198218AEAEb6a4B4F84771dF8b38930ddcE", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x426CA1eA2406c07d75Db9585F22781c096e3d0E0" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/mne.svg" + }, + { + "chainId": 137, + "name": "Benzene", + "symbol": "BZN", + "decimals": 18, + "address": "0xcD0D64C971AF8B477042130c5e6cD2A6f7842869", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x6524b87960c2d573ae514fd4181777e7842435d4" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/bzn.svg" + }, + { + "chainId": 137, + "name": "Amp Token", + "symbol": "AMP", + "decimals": 18, + "address": "0x0621d647cecbFb64b79E44302c1933cB4f27054d", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xff20817765cb7f73d4bde2e66e067e58d11095c2" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/amp.svg" + }, + { + "chainId": 137, + "name": "Celsius", + "symbol": "CEL", + "decimals": 4, + "address": "0xD85d1e945766Fea5Eda9103F918Bd915FbCa63E6", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xaaaebe6fe48e54f431b0c390cfaf0b017d09d42d" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/cel.svg" + }, + { + "chainId": 137, + "name": "SportX", + "symbol": "SX", + "decimals": 18, + "address": "0x840195888Db4D6A99ED9F73FcD3B225Bb3cB1A79", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x99fE3B1391503A1bC1788051347A1324bff41452" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/sx.svg" + }, + { + "chainId": 137, + "name": "Route", + "symbol": "ROUTE", + "decimals": 18, + "address": "0x16ECCfDbb4eE1A85A33f3A9B21175Cd7Ae753dB4", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x16ECCfDbb4eE1A85A33f3A9B21175Cd7Ae753dB4" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/route.svg" + }, + { + "chainId": 137, + "name": "Rebalance Token", + "symbol": "RBAL", + "decimals": 18, + "address": "0x03247a4368A280bEc8133300cD930A3a61d604f6", + "logoURI": "https://cdn.coinranking.com/fLjFmBf-k/rbal.png", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xe5a6739b21Fe84847daDE7152Ae6C68895dFdb38" + } + }, + { + "chainId": 137, + "name": "CHERRY", + "symbol": "CHERRY", + "decimals": 4, + "address": "0xbE32718f77Aa63d95658Ddd8EF472039c71Eb704", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x4ecb692b0fedecd7b486b4c99044392784877e8c" + } + }, + { + "chainId": 137, + "name": "Axioms", + "symbol": "AXI", + "decimals": 18, + "address": "0x01fA5b3A5d77BcF705DD505bBcBb34bce310E7FE", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x73ee6d7e6b203125add89320e9f343d65ec7c39a" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/axi.svg" + }, + { + "chainId": 137, + "name": "Deflect", + "symbol": "DEFLCT", + "decimals": 9, + "address": "0x80E3E8f5D06CbeF73c12e6bdc2f63563fE57f866", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x3aa5f749d4a6bcf67dac1091ceb69d1f5d86fa53" + } + }, + { + "chainId": 137, + "name": "Devcash", + "symbol": "DEV", + "decimals": 8, + "address": "0xE951e4C7B0B91447C1a0A46BFb46630682A3f229", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x0fca8fdb0fb115a33baadec6e7a141ffc1bc7d5a" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/dev.svg" + }, + { + "chainId": 137, + "name": "Swirge", + "symbol": "SWG", + "decimals": 18, + "address": "0x043A3Aa319B563aC25D4E342d32bFfb51298DB7b", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x92eF4FFBfe0Df030837b65d7FcCFE1ABd6549579" + } + }, + { + "chainId": 137, + "name": "SPRING Token", + "symbol": "SPRING", + "decimals": 18, + "address": "0xE0011abAb503659C48a07d44561A7eF077b1AD56", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xfb0bdc444c8ae7e9b5beea5e4d1e8de93879e487" + } + }, + { + "chainId": 137, + "name": "Elementeum", + "symbol": "ELET", + "decimals": 18, + "address": "0x07738Eb4ce8932CA961c815Cb12C9d4ab5Bd0Da4", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x6c37Bf4f042712C978A73e3fd56D1F5738dD7C43" + } + }, + { + "chainId": 137, + "name": "THERA", + "symbol": "THERA", + "decimals": 18, + "address": "0xe2D460a2F928CbC4Cf3268f8d95dbd89c21202c4", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xffb3518f60A967839e5bA5B2908C5D6840632c0f" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/thera.svg" + }, + { + "chainId": 137, + "name": "Pepedex", + "symbol": "PPDEX", + "decimals": 18, + "address": "0x127984b5E6d5c59f81DACc9F1C8b3Bdc8494572e", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xf1f508c7c9f0d1b15a76fba564eef2d956220cf7" + } + }, + { + "chainId": 137, + "name": "JUICE", + "symbol": "JUICE", + "decimals": 6, + "address": "0x28E96FFe75CdCc97044585b866BD02bD79C12dc0", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x38e2FB9935952b00673cCB63daB105c9d698784E" + } + }, + { + "chainId": 137, + "name": "Koin", + "symbol": "XKO", + "decimals": 18, + "address": "0x7B276A55987E3020026Bb098F15E968313Bd1aF2", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xe93714F621c0481DF8685b956800568b364F138f" + } + }, + { + "chainId": 137, + "name": "Digital Coin", + "symbol": "DCB", + "decimals": 18, + "address": "0x1f71bC1F88f09EcE59E844dEA4FCc4fA73934117", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x2d8e1dd483008c6843b9cf644bad7fb25bf52b84" + } + }, + { + "chainId": 137, + "name": "StableDark", + "symbol": "SDARK", + "decimals": 18, + "address": "0x12919A30447fF59947740507362A05B8BEA9A6e7", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x26c7D50B9f372e1FA9cA078CC054298f36D68B17" + } + }, + { + "chainId": 137, + "name": "decentral.games", + "symbol": "$DG", + "decimals": 18, + "address": "0x2a93172c8DCCbfBC60a39d56183B7279a2F647b4", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xee06a81a695750e71a662b51066f2c74cf4478a0" + } + }, + { + "chainId": 137, + "name": "Drakoin", + "symbol": "DRK", + "decimals": 18, + "address": "0xB6509Cbd9e2D1CeC787a7357eB1578B86a0c702d", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x2369686fc9fb6e1fdc46541891568c2f341906ef" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/drk.svg" + }, + { + "chainId": 137, + "name": "Autonio", + "symbol": "NIOX", + "decimals": 4, + "address": "0xad684e79CE4b6D464f2Ff7c3FD51646892e24b96", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xc813EA5e3b48BEbeedb796ab42A30C5599b01740" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/niox.svg" + }, + { + "chainId": 137, + "name": "HEX", + "symbol": "HEX", + "decimals": 8, + "address": "0x23D29D30e35C5e8D321e1dc9A8a61BFD846D4C5C", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x2b591e99afe9f32eaa6214f7b7629768c40eeb39" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/hex.svg" + }, + { + "chainId": 137, + "name": "DarkPool", + "symbol": "pDARK", + "decimals": 18, + "address": "0x066028738CE85aa1946b9D05B1d0F06F3d0Fdb7A", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xf62dC91f8f43b241840228B3a857FF9d6522660C" + } + }, + { + "chainId": 137, + "name": "Opu Coin", + "symbol": "OPU", + "decimals": 18, + "address": "0x7ff2FC33E161E3b1C6511B934F0209D304267857", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x65e3c4a750a2e7cc7cce86d01587bbcbbe99042e" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/opu.svg" + }, + { + "chainId": 137, + "name": "Brand Tokens", + "symbol": "BRND", + "decimals": 18, + "address": "0x1683767B3e3a40a61D9faa94CF86E5788F0a834a", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x41A6bFd5FC91B9822774d549674Cc90512b3a54A" + } + }, + { + "chainId": 137, + "name": "ERNE finance", + "symbol": "ERNE", + "decimals": 18, + "address": "0x52aF6aA779F36a53De44ae1969756a506b2577b5", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xCf978BE45f74ab6f4dA0E68B24624657F40A3d9B" + } + }, + { + "chainId": 137, + "name": "Friendz Coin ", + "symbol": "FDZ", + "decimals": 18, + "address": "0x7D836dA4Dd2aFda1d09992980569E22597F09981", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x23352036e911a22cfc692b5e2e196692658aded9" + } + }, + { + "chainId": 137, + "name": "MCDEX Token", + "symbol": "MCB", + "decimals": 18, + "address": "0xCf46c5Bf01deAE14a272f89A7b6c9E96A48f5546", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x4e352cf164e64adcbad318c3a1e222e9eba4ce42" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/mcb.svg" + }, + { + "chainId": 137, + "name": "Galactican Founders Token", + "symbol": "GFT", + "decimals": 0, + "address": "0xc10aAcff41Af60BfCfaba3A03099c4AEdB113E15", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xF8dd0D8e2b646589E2273803c4fEF8a7Da8D6AdB" + } + }, + { + "chainId": 137, + "name": "BlazarBits", + "symbol": "BzB", + "decimals": 18, + "address": "0x462D8d82C2B2D2DDabf7f8a93928De09d47A5807", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x5cd763f24e849e334cc8ed78d0e09970988cf4ad" + } + }, + { + "chainId": 137, + "name": "IG Orb", + "symbol": "ORB", + "decimals": 2, + "address": "0x5a2fdF906ada9353eBe496Fa5D351B39f8908d19", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xa7b12e22f318762f76a9a179c86babcb02e62734" + } + }, + { + "chainId": 137, + "name": "IG Gold", + "symbol": "IGG", + "decimals": 6, + "address": "0xe6FC6C7CB6d2c31b359A49A33eF08aB87F4dE7CE", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x8ffe40a3d0f80c0ce6b203d5cdc1a6a86d9acaea" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/igg.svg" + }, + { + "chainId": 137, + "name": "DarkToken", + "symbol": "DARK", + "decimals": 18, + "address": "0x3F99009295dEDd768f7284AFE07cDfED70c3E3AC", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x3108ccFd96816F9E663baA0E8c5951D229E8C6da" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/dark.svg" + }, + { + "chainId": 137, + "name": "TrumpBux", + "symbol": "TBUX", + "decimals": 18, + "address": "0xc576E8BB0017AFfC2Cb245609E304E57401ee78a", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x9d29bD441E9DA3EfF48568Aea1348383544547e7" + } + }, + { + "chainId": 137, + "name": "Sapien Network", + "symbol": "SPN", + "decimals": 6, + "address": "0x3Cd92Be3Be24daf6D03c46863f868F82D74905bA", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x20F7A3DdF244dc9299975b4Da1C39F8D5D75f05A" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/spn.svg" + }, + { + "chainId": 137, + "name": "KIWI Token", + "symbol": "KIWI", + "decimals": 8, + "address": "0x578360AdF0BbB2F10ec9cEC7EF89Ef495511ED5f", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x2BF91c18Cd4AE9C2f2858ef9FE518180F7B5096D" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/kiwi.svg" + }, + { + "chainId": 137, + "name": "0xBitcoin Token", + "symbol": "0xBTC", + "decimals": 8, + "address": "0x71B821aa52a49F32EEd535fCA6Eb5aa130085978", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xB6eD7644C69416d67B522e20bC294A9a9B405B31" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/0xbtc.svg" + }, + { + "chainId": 137, + "name": "Decentraland MANA", + "symbol": "MANA", + "decimals": 18, + "address": "0xA1c57f48F0Deb89f569dFbE6E2B7f46D33606fD4", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x0F5D2fB29fb7d3CFeE444a200298f468908cC942" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/mana.svg" + }, + { + "chainId": 137, + "name": "yearn.finance", + "symbol": "YFI", + "decimals": 18, + "address": "0xDA537104D6A5edd53c6fBba9A898708E465260b6", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/yfi.svg" + }, + { + "chainId": 137, + "name": "EthLend Token", + "symbol": "LEND", + "decimals": 18, + "address": "0x313d009888329C9d1cf4f75CA3f32566335bd604", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x80fB784B7eD66730e8b1DBd9820aFD29931aab03" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/lend.svg" + }, + { + "chainId": 137, + "name": "Compound", + "symbol": "COMP", + "decimals": 18, + "address": "0x8505b9d2254A7Ae468c0E9dd10Ccea3A837aef5c", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xc00e94Cb662C3520282E6f5717214004A7f26888" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/comp.svg" + }, + { + "chainId": 137, + "name": "Dummy ERC20", + "symbol": "DERC20", + "decimals": 18, + "address": "0xeFfdCB49C2D0EF813764B709Ca3c6fe71f230E3e", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xf2F3bD7Ca5746C5fac518f67D1BE87805a2Be82A" + } + }, + { + "chainId": 137, + "name": "Ether Stone", + "symbol": "ETHS", + "decimals": 18, + "address": "0x5Adf17a97Ef5DB18ad4cFC4B3F05128b922E0a58", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x11a207b158ddd17027e2dd5b1261a0a8012f6550" + } + }, + { + "chainId": 137, + "name": "BeatzCoin", + "symbol": "BTZC", + "decimals": 6, + "address": "0x81a9d2ecEd101479FaD8c9663f4A997fbE5c83cA", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x80640db285Cc63496bdd8c1980A7f4526A4D477F" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/btzc.svg" + }, + { + "chainId": 137, + "name": "SHIP20T5", + "symbol": "SHIP20T5", + "decimals": 18, + "address": "0x02dAEFc2E8AAD089d094579499508398E3057966", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xa63a5122E849d2Fbff88Fc44d3C7EAE9196F1293" + } + }, + { + "chainId": 137, + "name": "One For All", + "symbol": "O4A", + "decimals": 36, + "address": "0x30810b6e871f333ea6935b21871cde070921bc38", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xce8e76aa57fa4d9f0db1c05c232fa4cf071aebba" + } + }, + { + "chainId": 137, + "name": "Castello Coin", + "symbol": "CAST", + "decimals": 8, + "address": "0xa554e5a79caebfeae867c66a56a951338f748c8a", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x3fab0bbaa03bceaf7c49e2b12877db0142be65fc" + } + }, + { + "chainId": 137, + "name": "EVER META", + "symbol": "EVEM", + "decimals": 18, + "address": "0x62a3c5d6346a842d24053d871ebe908a78cb46ab", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xeefa9e2e5be13b6531eb45ba47917017b5affffb" + } + }, + { + "chainId": 137, + "name": "Wrapped STOR", + "symbol": "WSTOR", + "decimals": 12, + "address": "0x5d1245ad0e4f118186042040bb092aba59be4167", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xe51da1683f21a844269d0d23135f04c506ac8ae1" + } + }, + { + "chainId": 137, + "name": "WGMI", + "symbol": "WGMI", + "decimals": 18, + "address": "0x1b9f699c6cb0aa6079f326a11d3c960680eab5d9", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x20f6a313cb250062331fe70b9567e3ee5f01888b" + } + }, + { + "chainId": 137, + "name": "TOMI", + "symbol": "TOMI", + "decimals": 18, + "address": "0xcd966b72cff52dc349089b6b6f5865b5743b4e08", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x533e90705c0d1a364eb63d620ea16c8478179894" + } + }, + { + "chainId": 137, + "name": "Menlo One", + "symbol": "ONE", + "decimals": 18, + "address": "0x6dc1ed4402a9db4956e077876e72d3ac7ba7f47f", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x4d807509aece24c0fa5a102b6a3b059ec6e14392" + } + }, + { + "chainId": 137, + "name": "Streamr (old)", + "symbol": "XDATA", + "decimals": 18, + "address": "0xd668c5e8a4a837ca95be5e3a8d5bd62f5985390d", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x0cf0ee63788a0849fe5297f3407f701e122cc023" + } + }, + { + "chainId": 137, + "name": "Fei USD", + "symbol": "FEI", + "decimals": 18, + "address": "0xc7031408c7978da9aca03308cd104cb54e7a2eb3", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x956f47f50a910163d8bf957cf5846d573e7f87ca" + } + }, + { + "chainId": 137, + "name": "Liquid staked Ether 2.0", + "symbol": "stETH", + "decimals": 18, + "address": "0x4c6b65fe93fc9daf413498b88195fafff36dd960", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xae7ab96520de3a18e5e111b5eaab095312d7fe84" + } + }, + { + "chainId": 137, + "name": "Tidal Token", + "symbol": "TIDAL", + "decimals": 18, + "address": "0xb41ec2c036f8a42da384dde6ada79884f8b84b26", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x29cbd0510eec0327992cd6006e63f9fa8e7f33b7" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/tidal.svg" + }, + { + "chainId": 137, + "name": "DC Token", + "symbol": "DC", + "decimals": 18, + "address": "0x3ebeb3f48f3a16b6a1e1e19b82c09bc8aae5d983", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xb3fb97019e9f69d0fd2e76fbd113ec6960a5389a" + } + }, + { + "chainId": 137, + "name": "Wrapped Celo USD", + "symbol": "wCUSD", + "decimals": 18, + "address": "0x9fa22bda93a0ecef300928c0358003b63647c5d8", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xad3e3fc59dff318beceaab7d00eb4f68b1ecf195" + } + }, + { + "chainId": 137, + "name": "JulSwap on ETH", + "symbol": "JulD", + "decimals": 18, + "address": "0x049f12f5a27132d06de128d48a914f6d82d33d23", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x93effd08e3e5a4b1b40c26137e63876b2501ffa4" + } + }, + { + "chainId": 137, + "name": "JUL", + "symbol": "JUL", + "decimals": 18, + "address": "0x03bc3f7affbe592e3f3502cf818aafb93b12334c", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x5580ab97f226c324c671746a1787524aef42e415" + } + }, + { + "chainId": 137, + "name": "OnX Ethereum Stablecoin", + "symbol": "onETH", + "decimals": 18, + "address": "0x057097bd91aa32aa10f5a42ba49637480963dc31", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xc1330acbbce97cb9695b7ee161c0f95b875a8b0f" + } + }, + { + "chainId": 137, + "name": "QuadrantProtocol", + "symbol": "eQUAD", + "decimals": 18, + "address": "0xdab625853c2b35d0a9c6bd8e5a097a664ef4ccfb", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xc28e931814725bbeb9e670676fabbcb694fe7df2" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/equad.svg" + }, + { + "chainId": 137, + "name": "Upfiring", + "symbol": "UFR", + "decimals": 18, + "address": "0x741b18e6db7a7dc3e686171b99387edc8dac1e32", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xea097a2b1db00627b2fa17460ad260c016016977" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/ufr.svg" + }, + { + "chainId": 137, + "name": "Polkamon", + "symbol": "PMON", + "decimals": 18, + "address": "0xc8ed802a2cb6240b05b8c310137086bf4bc11b55", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x1796ae0b0fa4862485106a0de9b654efe301d0b2" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/pmon.svg" + }, + { + "chainId": 137, + "name": "Bidao", + "symbol": "BID", + "decimals": 18, + "address": "0xd7671bdce849eabef4da313ccc80e689151ee811", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x25e1474170c4c0aa64fa98123bdc8db49d7802fa" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/bid.svg" + }, + { + "chainId": 137, + "name": "UNION Protocol Governance Token", + "symbol": "UNN", + "decimals": 18, + "address": "0x67480287cb3715d1d9429b38772c71d6e94c16da", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x226f7b842e0f0120b7e194d05432b3fd14773a9d" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/unn.svg" + }, + { + "chainId": 137, + "name": "aleph.im v2", + "symbol": "ALEPH", + "decimals": 18, + "address": "0x82dcf1df86ada26b2dcd9ba6334cedb8c2448e9e", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x27702a26126e0b3702af63ee09ac4d1a084ef628" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/aleph.svg" + }, + { + "chainId": 137, + "name": "Panvala pan", + "symbol": "PAN", + "decimals": 18, + "address": "0xe9949106f0777e7a2e36df891d59583ac94dc896", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xd56dac73a4d6766464b38ec6d91eb45ce7457c44" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/pan.svg" + }, + { + "chainId": 137, + "name": "CheerMedal", + "symbol": "CHML", + "decimals": 18, + "address": "0x3c711f725272b05336b44c5c9dccb9fe2ff42ef4", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xfca0e33c4d9a7360a1caf517960be202c7693319" + } + }, + { + "chainId": 137, + "name": "Concentrated Voting Power", + "symbol": "CVP", + "decimals": 18, + "address": "0x530d954549f3efa00799784bc7fe0c3fed76da19", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x38e4adb44ef08f22f5b5b76a8f0c2d0dcbe7dca1" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/cvp.svg" + }, + { + "chainId": 137, + "name": "EASYX", + "symbol": "EASYX", + "decimals": 18, + "address": "0xd4c1e34187edc72fb6ebf3c4011dee50cabf89c2", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x346e2c8925d3bdc406181340eb7485d646055744" + } + }, + { + "chainId": 137, + "name": "DUST Token", + "symbol": "DUST", + "decimals": 18, + "address": "0x167ef3603c0b1d52be9a96e3af01aa33097a6ce9", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xe2e109f1b4eaa8915655fe8fdefc112a34acc5f0" + } + }, + { + "chainId": 137, + "name": "Scalara NFT Index", + "symbol": "NFTI", + "decimals": 18, + "address": "0xc75ea0c71023c14952f3c7b9101ecbbaa14aa27a", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x525ef76138bf76118d786dbedeae5f87aabf4a81" + } + }, + { + "chainId": 137, + "name": "Definitex", + "symbol": "DFX", + "decimals": 18, + "address": "0x142107a65d5c29c35129100bf386ba54f67a8668", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xf1f5de69c9c8d9be8a7b01773cc1166d4ec6ede2" + } + }, + { + "chainId": 137, + "name": "Amplify Token", + "symbol": "AMPT", + "decimals": 18, + "address": "0x4ed92a1de77ee2638a2a42be48dd4720b3a2734a", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x3f17cfad23c2014c5a32722557df87dff46819da" + } + }, + { + "chainId": 137, + "name": "fees.wtf", + "symbol": "WTF", + "decimals": 18, + "address": "0x1b8acaac11250634028cf1735ca958fd46aaf320", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xa68dd8cb83097765263adad881af6eed479c4a33" + } + }, + { + "chainId": 137, + "name": "WILD Token", + "symbol": "WILD", + "decimals": 18, + "address": "0x4c1705a7ddaa68fe187363487898705e040dd77e", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xd3c00772b24d997a812249ca637a921e81357701" + } + }, + { + "chainId": 137, + "name": "Herocoin", + "symbol": "PLAY", + "decimals": 18, + "address": "0x672255e73e9fcb8d8971b6e2622057baa84b5afe", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xe477292f1b3268687a29376116b0ed27a9c76170" + } + }, + { + "chainId": 137, + "name": "PYR Token", + "symbol": "PYR", + "decimals": 18, + "address": "0x430ef9263e76dae63c84292c3409d61c598e9682", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x430ef9263e76dae63c84292c3409d61c598e9682" + } + }, + { + "chainId": 137, + "name": "Boba Token", + "symbol": "BOBA", + "decimals": 18, + "address": "0xa4b2b20b2c73c7046ed19ac6bff5e5285c58f20a", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x42bbfa2e77757c645eeaad1655e0911a7553efbc" + } + }, + { + "chainId": 137, + "name": "Rocket Pool ETH", + "symbol": "rETH", + "decimals": 18, + "address": "0x0266f4f08d82372cf0fcbccc0ff74309089c74d1", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xae78736cd615f374d3085123a210448e74fc6393" + } + }, + { + "chainId": 137, + "name": "humanDAO", + "symbol": "HDAO", + "decimals": 18, + "address": "0x72928d5436ff65e57f72d5566dcd3baedc649a88", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xdac657ffd44a3b9d8aba8749830bf14beb66ff2d" + } + }, + { + "chainId": 137, + "name": "Immutable X", + "symbol": "IMX", + "decimals": 18, + "address": "0x183070c90b34a63292cc908ce1b263cb56d49a7f", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xf57e7e7c23978c3caec3c3548e3d615c346e79ff" + } + }, + { + "chainId": 137, + "name": "Fintropy", + "symbol": "FINT", + "decimals": 18, + "address": "0xd61143652af94f570c7d9429356662dd859ca6ec", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xd61143652af94f570c7d9429356662dd859ca6ec" + } + }, + { + "chainId": 137, + "name": "Streamr", + "symbol": "DATA", + "decimals": 18, + "address": "0x3a9a81d576d83ff21f26f325066054540720fc34", + "logoURI": "https://raw.githubusercontent.com/streamr-dev/design-assets/main/Svg/Marks%20and%20Symbols/Token%20symbols/%24DATA%20new%20token%20symbol.svg", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x8f693ca8d21b157107184d29d398a8d082b38b76" + } + }, + { + "chainId": 137, + "name": "DATA Economy Index", + "symbol": "DATA", + "decimals": 18, + "address": "0x1d607faa0a51518a7728580c238d912747e71f7a", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x33d63ba1e57e54779f7ddaeaa7109349344cf5f1" + } + }, + { + "chainId": 137, + "name": "Float Bank", + "symbol": "BANK", + "decimals": 18, + "address": "0xfc2e967bf55f545d656de5c40618c1ae80eb6edf", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x24a6a37576377f63f194caa5f518a60f45b42921" + } + }, + { + "chainId": 137, + "name": "Propy", + "symbol": "PRO", + "decimals": 8, + "address": "0x82ffdfd1d8699e8886a4e77cefa9dd9710a7fefd", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x226bb599a12c826476e3a771454697ea52e9e220" + } + }, + { + "chainId": 137, + "name": "BONE SHIBASWAP", + "symbol": "BONE", + "decimals": 18, + "address": "0xe15c40cae674a35dcd0108e66383e6f483533b82", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x9813037ee2218799597d83d4a5b6f3b6778218d9" + } + }, + { + "chainId": 137, + "name": "Morpheus.Network", + "symbol": "MNW", + "decimals": 18, + "address": "0x3c59798620e5fec0ae6df1a19c6454094572ab92", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xd3e4ba569045546d09cf021ecc5dfe42b1d7f6e4" + } + }, + { + "chainId": 137, + "name": "Internet of Energy Network", + "symbol": "IOEN", + "decimals": 18, + "address": "0xd0e9c8f5fae381459cf07ec506c1d2896e8b5df6", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x1e4e46b7bf03ece908c88ff7cc4975560010893a" + } + }, + { + "chainId": 137, + "name": "TAGBOND", + "symbol": "TAG", + "decimals": 18, + "address": "0x6a284bf3e568aea2c28010f061a85e107efdb6b6", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xcc4ae94372da236e9b113132e0c46c68704246b9" + } + }, + { + "chainId": 137, + "name": "Smooth Love Potion", + "symbol": "SLP", + "decimals": 0, + "address": "0x0c7304fbaf2a320a1c50c46fe03752722f729946", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xcc8fa225d80b9c7d42f96e9570156c65d6caaa25" + } + }, + { + "chainId": 137, + "name": "BitcashPay", + "symbol": "BCP", + "decimals": 8, + "address": "0x5bc90f0d5fa1b716fb5edfda885a44bfc41b5594", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xe047705117eb07e712c3d684f5b18e74577e83ac" + } + }, + { + "chainId": 137, + "name": "DragonBite", + "symbol": "BITE", + "decimals": 18, + "address": "0x280724409b288de06c6d66c05965d3d456e2283a", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x4eed0fa8de12d5a86517f214c2f11586ba2ed88d" + } + }, + { + "chainId": 137, + "name": "PIKA", + "symbol": "PIKA", + "decimals": 18, + "address": "0xffb89d7637cf4860884ed48b57ae5562bf64e10f", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x60f5672a271c7e39e787427a18353ba59a4a3578" + } + }, + { + "chainId": 137, + "name": "StaFi", + "symbol": "rATOM", + "decimals": 18, + "address": "0xe088651125864a2fdfe806257a9a7e75b53812ba", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xd01cb3d113a864763dd3977fe1e725860013b0ed" + } + }, + { + "chainId": 137, + "name": "StaFi", + "symbol": "rETH", + "decimals": 18, + "address": "0x5736df66b4f8401d639ffa915a46b4c548c09ac1", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x9559aaa82d9649c7a7b220e7c461d2e74c9a3593" + } + }, + { + "chainId": 137, + "name": "MoonieNFT Token", + "symbol": "MNY", + "decimals": 18, + "address": "0xa6f7645ed967faf708a614a2fca8d4790138586f", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xa6f7645ed967faf708a614a2fca8d4790138586f" + } + }, + { + "chainId": 137, + "name": "StaFi", + "symbol": "rFIS", + "decimals": 18, + "address": "0xa3983552d08ab820002a38baf51c5f3777c0d287", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xc82eb6dea0c93edb8b697b89ad1b13d19469d635" + } + }, + { + "chainId": 137, + "name": "Bondly", + "symbol": "BONDLY", + "decimals": 18, + "address": "0x64ca1571d1476b7a21c5aaf9f1a750a193a103c0", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x91dfbee3965baaee32784c2d546b7a0c62f268c9" + } + }, + { + "chainId": 137, + "name": "Standard", + "symbol": "STND", + "decimals": 18, + "address": "0x08be454de533509e8832b257116c5506e55b0b64", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x9040e237c3bf18347bb00957dc22167d0f2b999d" + } + }, + { + "chainId": 137, + "name": "Wilder", + "symbol": "WILD", + "decimals": 18, + "address": "0xf1a4015ae4d16ff64e41535fe973a1796c0203d6", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x2a3bff78b79a009976eea096a51a948a3dc00e34" + } + }, + { + "chainId": 137, + "name": "LMAO Token", + "symbol": "LMAO", + "decimals": 18, + "address": "0xda6f81c2426131337b0cf73768b94c2004390b0e", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x69ef45cf64d8360279daa974aabadb42f0683a6c" + } + }, + { + "chainId": 137, + "name": "TitanSwap", + "symbol": "Titan", + "decimals": 18, + "address": "0x79ddc6ca9b76aa14dcfbd02bf75db588f5486df8", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x3a8cccb969a61532d1e6005e2ce12c200caece87" + } + }, + { + "chainId": 137, + "name": "StaFi", + "symbol": "FIS", + "decimals": 18, + "address": "0x7a7b94f18ef6ad056cda648588181cda84800f94", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xef3a930e1ffffacd2fc13434ac81bd278b0ecc8d" + } + }, + { + "chainId": 137, + "name": "PAID Network", + "symbol": "PAID", + "decimals": 18, + "address": "0xeaef6caf6d5894edb2d4ea7ec11ec4ab655f1cbf", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x1614f18fc94f47967a3fbe5ffcd46d4e7da3d787" + } + }, + { + "chainId": 137, + "name": "Kyber Network Crystal", + "symbol": "KNC", + "decimals": 18, + "address": "0x324b28d6565f784d596422b0f2e5ab6e9cfa1dc7", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xdd974d5c2e2928dea5f71b9825b8b646686bd200" + } + }, + { + "chainId": 137, + "name": "UniCrypt", + "symbol": "UNC", + "decimals": 18, + "address": "0xfa2328d170d9476feafe1a6180abdb61a13a9494", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xf29e46887ffae92f1ff87dfe39713875da541373" + } + }, + { + "chainId": 137, + "name": "Bankless Token", + "symbol": "BANK", + "decimals": 18, + "address": "0xdb7cb471dd0b49b29cab4a1c14d070f27216a0ab", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x2d94aa3e47d9d5024503ca8491fce9a2fb4da198" + } + }, + { + "chainId": 137, + "name": "NFT INDEX", + "symbol": "NFTI", + "decimals": 18, + "address": "0xd7a2dc75ea2057b3949f9e1dbdf3480203dbe26a", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xe5feeac09d36b18b3fa757e5cf3f8da6b8e27f4c" + } + }, + { + "chainId": 137, + "name": "Bone", + "symbol": "Bone", + "decimals": 18, + "address": "0xc20dde5a129b01b5a16d315fb18bdbd21a59a4a6", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x5c84bc60a796534bfec3439af0e6db616a966335" + } + }, + { + "chainId": 137, + "name": "Axie Infinity Shard", + "symbol": "AXS", + "decimals": 18, + "address": "0x61bdd9c7d4df4bf47a4508c0c8245505f2af5b7b", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xbb0e17ef65f82ab018d8edd776e8dd940327b28b" + } + }, + { + "chainId": 137, + "name": "SingularityNET Token", + "symbol": "AGIX", + "decimals": 8, + "address": "0x190eb8a183d22a4bdf278c6791b152228857c033", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x5b7533812759b45c2b44c19e320ba2cd2681b542" + } + }, + { + "chainId": 137, + "name": "PAR Stablecoin", + "symbol": "PAR", + "decimals": 18, + "address": "0x7b367a058f370c0057762280547d0b974cf3ac10", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x68037790a0229e9ce6eaa8a99ea92964106c4703" + } + }, + { + "chainId": 137, + "name": "Stone Token", + "symbol": "STN", + "decimals": 18, + "address": "0xfb8a07e99450d1dc566da18a8f0e630addefdd3e", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xe63d6b308bce0f6193aec6b7e6eba005f41e36ab" + } + }, + { + "chainId": 137, + "name": "FORCE", + "symbol": "FORCE", + "decimals": 18, + "address": "0x60c4f9718b445df881e6c00921afb2a8de4b1873", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x6807d7f7df53b7739f6438eabd40ab8c262c0aa8" + } + }, + { + "chainId": 137, + "name": "Impermax", + "symbol": "IMX", + "decimals": 18, + "address": "0x60bb3d364b765c497c8ce50ae0ae3f0882c5bd05", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x7b35ce522cb72e4077baeb96cb923a5529764a00" + } + }, + { + "chainId": 137, + "name": "DFX Token", + "symbol": "DFX", + "decimals": 18, + "address": "0xe7804d91dfcde7f776c90043e03eaa6df87e6395", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x888888435fde8e7d4c54cab67f206e4199454c60" + } + }, + { + "chainId": 137, + "name": "BoringDAO DOGE", + "symbol": "oDOGE", + "decimals": 18, + "address": "0x5a8adda3140d961cd069cbb7b400d7834dd558ac", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x9c306a78b1a904e83115c05ac67c1ef07c653651" + } + }, + { + "chainId": 137, + "name": "Memecoin", + "symbol": "MEM", + "decimals": 18, + "address": "0x42dbbd5ae373fea2fc320f62d44c058522bb3758", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x42dbbd5ae373fea2fc320f62d44c058522bb3758" + } + }, + { + "chainId": 137, + "name": "BoringDAO", + "symbol": "BORING", + "decimals": 18, + "address": "0xff88434e29d1e2333ad6baa08d358b436196da6b", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xbc19712feb3a26080ebf6f2f7849b417fdd792ca" + } + }, + { + "chainId": 137, + "name": "Kyber Network Crystal v2", + "symbol": "KNC", + "decimals": 18, + "address": "0x1c954e8fe737f99f68fa1ccda3e51ebdb291948c", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xdefa4e8a7bcba345f687a2f1456f5edd9ce97202" + } + }, + { + "chainId": 137, + "name": "PlayDapp Token", + "symbol": "PLA", + "decimals": 18, + "address": "0x8765f05adce126d70bcdf1b0a48db573316662eb", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x3a4f40631a4f906c2bad353ed06de7a5d3fcb430" + } + }, + { + "chainId": 137, + "name": "88mph.app", + "symbol": "MPH", + "decimals": 18, + "address": "0x654f82124a885af03d2da6b53c004343920ae189", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x8888801af4d980682e47f1a9036e589479e835c5" + } + }, + { + "chainId": 137, + "name": "Litentry", + "symbol": "LIT", + "decimals": 18, + "address": "0xe6e320b7bb22018d6ca1f4d8cea1365ef5d25ced", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xb59490ab09a0f526cc7305822ac65f2ab12f9723" + } + }, + { + "chainId": 137, + "name": "B21 Token", + "symbol": "B21", + "decimals": 18, + "address": "0xad356bf748b9c320a5ddd4baaffa3f323eeb5546", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x6faa826af0568d1866fca570da79b318ef114dab" + } + }, + { + "chainId": 137, + "name": "PieDAO Balanced Crypto Pie", + "symbol": "BCP", + "decimals": 18, + "address": "0x76e3f52ad78c367f23cfa08febf122053ee4f781", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xe4f726adc8e89c6a6017f01eada77865db22da14" + } + }, + { + "chainId": 137, + "name": "Aave Interest bearing DAI", + "symbol": "aDAI", + "decimals": 18, + "address": "0x6a9d92f366f01b1980c4e75f0d9fa54db658105d", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xfc1e690f61efd961294b3e1ce3313fbd8aa4f85d" + } + }, + { + "chainId": 137, + "name": "Aave interest bearing DAI", + "symbol": "aDAI", + "decimals": 18, + "address": "0x329434fe066ac71d5fb93489f955a6959658097b", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x028171bca77440897b824ca71d1c56cac55b68a3" + } + }, + { + "chainId": 137, + "name": "LITonium", + "symbol": "LIT", + "decimals": 2, + "address": "0x7a46e5c2a19e371f23416fdf5930255589b95d3f", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x2e3c062e16c1a3a04ddc5003c62e294305d83684" + } + }, + { + "chainId": 137, + "name": "Force DAO", + "symbol": "FORCE", + "decimals": 18, + "address": "0xdf4d2226c810976c582a8111d831fa5fc543f7e5", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x2c31b10ca416b82cec4c5e93c615ca851213d48d" + } + }, + { + "chainId": 137, + "name": "Morpher", + "symbol": "MPH", + "decimals": 18, + "address": "0xeba044af66a6d959c12e91fccd74ea1c3ca07578", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x6369c3dadfc00054a42ba8b2c09c48131dd4aa38" + } + }, + { + "chainId": 137, + "name": "The Crypto Prophecies", + "symbol": "TCP", + "decimals": 18, + "address": "0x032f85b8fbf8540a92b986d953e4c3a61c76d39e", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x06576eb3b212d605b797dc15523d9dc9f4f66db4" + } + }, + { + "chainId": 137, + "name": "MUNCH Token", + "symbol": "MUNCH", + "decimals": 9, + "address": "0x1002068d890ac351143bc5ae70711175e75f1ea8", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x944eee930933be5e23b690c8589021ec8619a301" + } + }, + { + "chainId": 137, + "name": "IdleUSDC v4 [Risk adjusted]", + "symbol": "idleUSDCSafe", + "decimals": 18, + "address": "0x73e86097021714509d3f193dfd0bbbc57b3cdcc6", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x3391bc034f2935ef0e1e41619445f998b2680d35" + } + }, + { + "chainId": 137, + "name": "DFYN Token", + "symbol": "DFYN", + "decimals": 18, + "address": "0xc168e40227e4ebd8c1cae80f7a55a4f0e6d66c97", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x9695e0114e12c0d3a3636fab5a18e6b737529023" + } + }, + { + "chainId": 137, + "name": "onG", + "symbol": "ONG", + "decimals": 18, + "address": "0xb6f10be9201fb110b3aa275267a234e84ade8e95", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xd341d1680eeee3255b8c4c75bcce7eb57f144dae" + } + }, + { + "chainId": 137, + "name": "$Ankr ETH2 Reward Bearing Certificate", + "symbol": "aETHc", + "decimals": 18, + "address": "0xc4e82ba0fe6763cbe5e9cbca0ba7cbd6f91c6018", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xe95a203b1a91a908f9b9ce46459d101078c2c3cb" + } + }, + { + "chainId": 137, + "name": "BarnBridge Governance Token", + "symbol": "BOND", + "decimals": 18, + "address": "0xa041544fe2be56cce31ebb69102b965e06aace80", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x0391d2021f89dc339f60fff84546ea23e337750f" + } + }, + { + "chainId": 137, + "name": "Showcase Token", + "symbol": "SHO", + "decimals": 18, + "address": "0x9e01e0a928588ae6e669b8d1f0f1fa4ab976f617", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xcc0014ccb39f6e86b1be0f17859a783b6722722f" + } + }, + { + "chainId": 137, + "name": "Strudel Finance", + "symbol": "$TRDL", + "decimals": 18, + "address": "0xf89887862538ce8efbdbadd5d483ae4a09dd9688", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x297d33e17e61c2ddd812389c2105193f8348188a" + } + }, + { + "chainId": 137, + "name": "Metaverse NFT Index", + "symbol": "PLAY", + "decimals": 18, + "address": "0xdd24aa9166dcdf0b37d0fca17d6ea87748771dcc", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x33e18a092a93ff21ad04746c7da12e35d34dc7c4" + } + }, + { + "chainId": 137, + "name": "BoringDAO", + "symbol": "BOR", + "decimals": 18, + "address": "0x7d8c139d5bfbafdfd1d2d0284e7fc862babe4137", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x3c9d6c1c73b31c837832c72e04d3152f051fc1a9" + } + }, + { + "chainId": 137, + "name": "Yield", + "symbol": "YLD", + "decimals": 18, + "address": "0xb718412ef9c238c3a90079f21b57808ff8c18f1c", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xdcb01cc464238396e213a6fdd933e36796eaff9f" + } + }, + { + "chainId": 137, + "name": "Dentacoin", + "symbol": "٨", + "decimals": 0, + "address": "0xd9e658caed24fb0486e92f0f1702f77a712790da", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x08d32b0da63e2c3bcf8019c9c5d849d7a9d791e6" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/dcn.svg" + }, + { + "chainId": 137, + "name": "Generation of Yield", + "symbol": "YGY", + "decimals": 6, + "address": "0x266af96fece1c3dd4b8a0a6de9ae7a3bd5408ee9", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x11b0a8c0fa626627601ed518c3538a39d92d609e" + } + }, + { + "chainId": 137, + "name": "UniCrypt", + "symbol": "UNCX", + "decimals": 18, + "address": "0x9eecd634c7a934f752af0eb90dda9ecc262f199f", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xadb2437e6f65682b85f814fbc12fec0508a7b1d0" + } + }, + { + "chainId": 137, + "name": "Global Coin Research", + "symbol": "GCR", + "decimals": 4, + "address": "0xa69d14d6369e414a32a5c7e729b7afbafd285965", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x6307b25a665efc992ec1c1bc403c38f3ddd7c661" + } + }, + { + "chainId": 137, + "name": "FTT", + "symbol": "FTX Token", + "decimals": 18, + "address": "0x918c749a09fa539e1dc8019f875fab9eb1ebc6a3", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x50d1c9771902476076ecfc8b2a83ad6b9355a4c9" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/ftt.svg" + }, + { + "chainId": 137, + "name": "Yield", + "symbol": "YLD", + "decimals": 18, + "address": "0x4cebdbcb286101a17d3ea1f7fe7bbded2b2053dd", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xf94b5c5651c888d928439ab6514b93944eee6f48" + } + }, + { + "chainId": 137, + "name": "FLUX", + "symbol": "FLUX", + "decimals": 18, + "address": "0x2808edb7398b25e0f6c41cd98fd114d924008c87", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x469eda64aed3a3ad6f868c44564291aa415cb1d9" + } + }, + { + "chainId": 137, + "name": "Basic Attention Token", + "symbol": "BAT", + "decimals": 18, + "address": "0x3cef98bb43d732e2f285ee605a8158cde967d219", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x0d8775f648430679a709e98d2b0cb6250d2887ef" + } + }, + { + "chainId": 137, + "name": "iFARM", + "symbol": "iFARM", + "decimals": 18, + "address": "0xab0b2ddb9c7e440fac8e140a89c0dbcbf2d7bbff", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x1571ed0bed4d987fe2b498ddbae7dfa19519f651" + } + }, + { + "chainId": 137, + "name": "LITION", + "symbol": "LIT", + "decimals": 18, + "address": "0xa8e198fc5c68264b185619a96748f855720494c0", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x763fa6806e1acf68130d2d0f0df754c93cc546b2" + } + }, + { + "chainId": 137, + "name": "Wrapped Celo", + "symbol": "wCELO", + "decimals": 18, + "address": "0xc30dd0cce2e683aa68c87c280e73beb3dec9b3ba", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xe452e6ea2ddeb012e20db73bf5d3863a3ac8d77a" + } + }, + { + "chainId": 137, + "name": "Zeus", + "symbol": "ZUZ", + "decimals": 18, + "address": "0x232eab56c4fb3f84c6fb0a50c087c74b7b43c6ad", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x202f1877e1db1120ca3e9a98c5d505e7f035c249" + } + }, + { + "chainId": 137, + "name": "FARM Reward Token", + "symbol": "FARM", + "decimals": 18, + "address": "0x176f5ab638cf4ff3b6239ba609c3fadaa46ef5b0", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xa0246c9032bc3a600820415ae600c6388619a14d" + } + }, + { + "chainId": 137, + "name": "MANTRA DAO", + "symbol": "OM", + "decimals": 18, + "address": "0xc3ec80343d2bae2f8e680fdadde7c17e71e114ea", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x3593d125a4f7849a1b059e64f4517a86dd60c95d" + } + }, + { + "chainId": 137, + "name": "Standard", + "symbol": "xMARK", + "decimals": 9, + "address": "0xf153eff70dc0bf3b085134928daeea248d9b30d0", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x36b679bd64ed73dbfd88909cdcb892cb66bd4cbb" + } + }, + { + "chainId": 137, + "name": "SENTinel", + "symbol": "SENT", + "decimals": 8, + "address": "0x48e3883233461c2ef4cb3fcf419d6db07fb86cea", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xa44e5137293e855b1b7bc7e2c6f8cd796ffcb037" + } + }, + { + "chainId": 137, + "name": "Decentralized Insurance Protocol", + "symbol": "DIP", + "decimals": 18, + "address": "0xfeff6c1643d38b13a198cfe1d76505701c380af0", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xc719d010b63e5bbf2c0551872cd5316ed26acd83" + } + }, + { + "chainId": 137, + "name": "Ocean Token", + "symbol": "OCEAN", + "decimals": 18, + "address": "0x282d8efce846a88b159800bd4130ad77443fa1a1", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x967da4048cd07ab37855c090aaf366e4ce1b9f48" + } + }, + { + "chainId": 137, + "name": "TrustSwap Token", + "symbol": "SWAP", + "decimals": 18, + "address": "0x3809dcdd5dde24b37abe64a5a339784c3323c44f", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xcc4304a31d09258b0029ea7fe63d032f52e44efe" + } + }, + { + "chainId": 137, + "name": "Parachute", + "symbol": "PAR", + "decimals": 18, + "address": "0xf521d590fb1e0b432fd0e020cdbd6c6397d652c2", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x1beef31946fbbb40b877a72e4ae04a8d1a5cee06" + } + }, + { + "chainId": 137, + "name": "Dark Matter Token", + "symbol": "DMT", + "decimals": 18, + "address": "0xd28449bb9bb659725accad52947677cce3719fd7", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0x79126d32a86e6663f3aaac4527732d0701c1ae6c" + } + }, + { + "chainId": 137, + "name": "Binance Wrapped WRX", + "symbol": "BWRX", + "decimals": 8, + "address": "0x72d6066f486bd0052eefb9114b66ae40e0a6031a", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xff0a024b66739357c4ed231fb3dbc0c8c22749f5" + }, + "logoURI": "https://wallet-asset.matic.network/img/tokens/wrx.svg" + }, + { + "chainId": 137, + "name": "Distant Universe Stardust Token", + "symbol": "DUST", + "decimals": 8, + "address": "0x556f501cf8a43216df5bc9cc57eb04d4ffaa9e6d", + "logoURI": "https://raw.githubusercontent.com/BlockTimeWorld/crawler/main/icons/dust.svg", + "tags": [ + "pos", + "erc20", + "swapable" + ], + "extensions": { + "rootAddress": "0xbca3c97837a39099ec3082df97e28ce91be14472" + } + }, + { + "chainId": 137, + "name": "Ludena Protocol", + "symbol": "LDN", + "decimals": 18, + "address": "0x7df5638222bbe24cce39f726c3b61cc03610622a", + "logoURI": "https://www.ludenaprotocol.io/data/ludena_protocol_symbol_basic.svg", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xb29663aa4e2e81e425294193616c1b102b70a158" + } + }, + { + "chainId": 137, + "name": "dForce", + "symbol": "DF", + "decimals": 18, + "address": "0x08C15FA26E519A78a666D19CE5C646D55047e0a3", + "logoURI": "https://raw.githubusercontent.com/dforce-network/documents/master/logos/dForce/DF.svg", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x431ad2ff6a9C365805eBaD47Ee021148d6f7DBe0" + } + }, + { + "chainId": 137, + "name": "Orbit Chain", + "symbol": "ORC", + "decimals": 18, + "address": "0x1bd5048e0b85c410dd039aa9c05069a9d82488b8", + "logoURI": "https://s.ozys.io/icon/orbitchain.svg", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x662b67d00a13faf93254714dd601f5ed49ef2f51" + } + }, + { + "chainId": 137, + "name": "ClayStack Staked MATIC", + "symbol": "csMATIC", + "decimals": 18, + "address": "0x7ed6390f38d554B8518eF30B925b46972E768AF8", + "logoURI": "https://raw.githubusercontent.com/ClayStack/media-kit/14dd5b413d744230b299d2008e98c63ef112bbb6/token-images/csMATIC.svg", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x38b7Bf4eeCF3EB530b1529c9401FC37d2a71a912" + } + }, + { + "chainId": 137, + "name": "Thales DAO Token", + "symbol": "THALES", + "decimals": 18, + "address": "0x692c44990e4f408ba0917f5c78a83160c1557237", + "logoURI": "https://raw.githubusercontent.com/0xProject/0x-staking-pool-registry/master/logos/thales_logo.png", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x8947da500eb47f82df21143d0c01a29862a8c3c5" + } + }, + { + "chainId": 137, + "name": "Only Graded Coin", + "symbol": "OGUC", + "decimals": 18, + "address": "0x2ae0e530ca7857b0e40078c43ba7158ce424838a", + "logoURI": "https://onlygradedcoin.com/assets/images/ogc-logo.png", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xB4F74994FCBd60E1bC3603b9a33069eA1b32d4A4" + } + }, + { + "chainId": 137, + "name": "TCGCoin", + "symbol": "TCGC", + "decimals": 18, + "address": "0x44ACD96620B708162af4A90524F29A6839675533", + "logoURI": "https://tcgverse-assets.s3.ap-northeast-1.amazonaws.com/tcgcoin_logo.svg", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x2FFdE077455f81E28bAa675a46B9c085740216d4" + } + }, + { + "chainId": 137, + "name": "Cityroots", + "symbol": "UNITY", + "decimals": 18, + "address": "0x9d7313E23C29e6d314A160A3fF345a2f7Ab0f3f5", + "logoURI": "https://etherscan.io/token/images/cityrootsunity_32.png", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x8fc1A87af3aD30a90cAa197B6c7aDb80d9F2aC44" + } + }, + { + "chainId": 137, + "name": "Respawn Finance Wrapped Staked Ethereum", + "symbol": "RFWSTETH", + "decimals": 18, + "address": "0x716ceb4Dc674FB91C4198c50b837F11f6ef75df0", + "logoURI": "https://assets.respawn.finance/rfwsteth.svg", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x07FA101efde726E0956Edd2c4D5C8d3d1A5E9c53" + } + }, + { + "chainId": 137, + "name": "REVV Motorsport Shard", + "symbol": "SHRD", + "decimals": 18, + "address": "0xc99fd38d967944d7c3578afc4451920404c238d1", + "tags": [ + "pos", + "erc20", + "customWithdrawEventSig" + ], + "extensions": { + "rootAddress": "0x6d4a51c0ddfe6baeb7e233d6df5ae38a81f55c4b", + "withdrawEventSig": "0x7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5" + } + }, + { + "chainId": 137, + "name": "Liquid Staked Matic by Stader", + "symbol": "MaticX", + "decimals": 18, + "address": "0xfa68fb4628dff1028cfec22b4162fccd0d45efb6", + "logoURI": "https://user-images.githubusercontent.com/19915413/198746681-bcfd16fd-72e5-41b3-bcb8-5494d77195e0.svg", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xf03a7eb46d01d9ecaa104558c732cf82f6b6b645" + } + }, + { + "chainId": 137, + "name": "AnimeToken", + "symbol": "ANX", + "decimals": 18, + "address": "0xe57EAC8b4666032Cfa16b626FfE99403a40b64D3", + "logoURI": "https://animebank.s3.ap-northeast-1.amazonaws.com/assets/anx.png", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x8DaDC5124714bEd53fbc603478De7D4BFEE1fF2a" + } + }, + { + "chainId": 137, + "name": "Cobak Token", + "symbol": "CBK", + "decimals": 18, + "address": "0x4EC203dD0699Fac6adAF483CDd2519BC05D2c573", + "logoURI": "https://storage.cobak.co/logo/cbk_symbol.svg", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0xD85a6Ae55a7f33B0ee113C234d2EE308EdeAF7fD" + } + }, + { + "chainId": 137, + "name": "Apecoin", + "symbol": "APE", + "decimals": 18, + "address": "0xb7b31a6bc18e48888545ce79e83e06003be70930", + "logoURI": "https://wallet-asset.matic.network/img/tokens/ape.svg", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x4d224452801aced8b2f0aebe155379bb5d594381" + } + }, + { + "chainId": 137, + "name": "Across Protocol Token", + "symbol": "ACX", + "decimals": 18, + "address": "0xf328b73b6c685831f238c30a23fc19140cb4d8fc", + "logoURI": "https://2085701667-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fo33kX1T6RRp4inOcEH1d%2Fuploads%2FQCmyGUDBYGZjov370F6T%2Facross%20symbol.svg?alt=media&token=0dd53bc2-d38d-4e3e-b90f-f6c3c981a89e", + "tags": [ + "pos", + "erc20" + ], + "extensions": { + "rootAddress": "0x44108f0223A3C3028F5Fe7AEC7f9bb2E66beF82F" + } + } + ] +} \ No newline at end of file diff --git a/src/chains/polygon/polygon_tokens_mumbai.json b/src/chains/polygon/polygon_tokens_mumbai.json new file mode 100644 index 0000000000..5e92818bdf --- /dev/null +++ b/src/chains/polygon/polygon_tokens_mumbai.json @@ -0,0 +1,23 @@ +{ + "name": "mumbai", + "tokens": [ + { + "symbol": "WMATIC", + "chainId": 80001, + "address": "0x9c3c9283d3e44854697cd22d3faa240cfb032889", + "decimals": 18 + }, + { + "symbol": "WETH", + "chainId": 80001, + "address": "0xa6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa", + "decimals": 18 + }, + { + "symbol": "DAI", + "chainId": 80001, + "address": "0xcb1e72786a6eb3b44c2a2429e317c8a2462cfeb1", + "decimals": 18 + } + ] +} diff --git a/src/connectors/connectors.routes.ts b/src/connectors/connectors.routes.ts new file mode 100644 index 0000000000..48d7f54636 --- /dev/null +++ b/src/connectors/connectors.routes.ts @@ -0,0 +1,102 @@ +import { Router } from 'express'; +import { asyncHandler } from '../services/error-handler'; +import { DefiraConfig } from './defira/defira.config'; +import { DefikingdomsConfig } from './defikingdoms/defikingdoms.config'; +import { MadMeerkatConfig } from './mad_meerkat/mad_meerkat.config'; +import { OpenoceanConfig } from './openocean/openocean.config'; +import { PangolinConfig } from './pangolin/pangolin.config'; +import { PerpConfig } from './perp/perp.config'; +import { QuickswapConfig } from './quickswap/quickswap.config'; +import { SushiswapConfig } from './sushiswap/sushiswap.config'; +import { TraderjoeConfig } from './traderjoe/traderjoe.config'; +import { UniswapConfig } from './uniswap/uniswap.config'; +import { VVSConfig } from './vvs/vvs.config'; +import { RefConfig } from './ref/ref.config'; +import { PancakeSwapConfig } from './pancakeswap/pancakeswap.config'; + +export namespace ConnectorsRoutes { + export const router = Router(); + + router.get( + '/', + asyncHandler(async (_req, res) => { + res.status(200).json({ + connectors: [ + { + name: 'uniswap', + trading_type: UniswapConfig.config.tradingTypes('swap'), + available_networks: UniswapConfig.config.availableNetworks, + }, + { + name: 'uniswapLP', + trading_type: UniswapConfig.config.tradingTypes('LP'), + available_networks: JSON.parse( + JSON.stringify(UniswapConfig.config.availableNetworks) + ), + additional_spenders: ['uniswap'], + }, + { + name: 'pangolin', + trading_type: PangolinConfig.config.tradingTypes, + available_networks: PangolinConfig.config.availableNetworks, + }, + { + name: 'openocean', + trading_type: OpenoceanConfig.config.tradingTypes, + available_networks: OpenoceanConfig.config.availableNetworks, + }, + { + name: 'quickswap', + trading_type: QuickswapConfig.config.tradingTypes, + available_networks: QuickswapConfig.config.availableNetworks, + }, + { + name: 'perp', + trading_type: PerpConfig.config.tradingTypes('perp'), + available_networks: PerpConfig.config.availableNetworks, + }, + { + name: 'sushiswap', + trading_type: SushiswapConfig.config.tradingTypes, + available_networks: SushiswapConfig.config.availableNetworks, + }, + { + name: 'traderjoe', + trading_type: TraderjoeConfig.config.tradingTypes, + available_networks: TraderjoeConfig.config.availableNetworks, + }, + { + name: 'defikingdoms', + trading_type: DefikingdomsConfig.config.tradingTypes, + available_networks: DefikingdomsConfig.config.availableNetworks, + }, + { + name: 'defira', + trading_type: DefiraConfig.config.tradingTypes, + available_networks: DefiraConfig.config.availableNetworks, + }, + { + name: 'mad_meerkat', + trading_type: MadMeerkatConfig.config.tradingTypes, + available_networks: MadMeerkatConfig.config.availableNetworks, + }, + { + name: 'vvs', + trading_type: VVSConfig.config.tradingTypes, + available_networks: VVSConfig.config.availableNetworks, + }, + { + name: 'ref', + trading_type: RefConfig.config.tradingTypes, + available_networks: RefConfig.config.availableNetworks, + }, + { + name: 'pancakeswap', + trading_type: PancakeSwapConfig.config.tradingTypes, + available_networks: PancakeSwapConfig.config.availableNetworks, + }, + ], + }); + }) + ); +} diff --git a/src/connectors/cronos-base/cronos-base-uniswapish-connector.config.ts b/src/connectors/cronos-base/cronos-base-uniswapish-connector.config.ts new file mode 100644 index 0000000000..cd61de43d3 --- /dev/null +++ b/src/connectors/cronos-base/cronos-base-uniswapish-connector.config.ts @@ -0,0 +1,38 @@ +import { AvailableNetworks } from '../../services/config-manager-types'; +import { ConfigManagerV2 } from '../../services/config-manager-v2'; + +export namespace CronosBaseUniswapishConnectorConfig { + export interface NetworkConfig { + allowedSlippage: string; + gasLimitEstimate: number; + ttl: number; + routerAddress: (network: string) => string; + tradingTypes: Array; + availableNetworks: Array; + } + + export function buildConfig( + connector: string, + tradingTypes: Array + ): NetworkConfig { + const contractAddresses: any = ConfigManagerV2.getInstance().get( + `${connector}.contractAddresses` // todo: test + ); + const networks: Array = Object.keys(contractAddresses); + return { + allowedSlippage: ConfigManagerV2.getInstance().get( + `${connector}.allowedSlippage` + ), + gasLimitEstimate: ConfigManagerV2.getInstance().get( + `${connector}.gasLimitEstimate` + ), + ttl: ConfigManagerV2.getInstance().get(`${connector}.ttl`), + routerAddress: (network: string) => + ConfigManagerV2.getInstance().get( + `${connector}.contractAddresses.` + network + '.routerAddress' + ), + tradingTypes: tradingTypes, + availableNetworks: [{ chain: 'cronos', networks: networks }], + }; + } +} diff --git a/src/connectors/cronos-base/cronos-base-uniswapish-connector.ts b/src/connectors/cronos-base/cronos-base-uniswapish-connector.ts new file mode 100644 index 0000000000..1af2ef34af --- /dev/null +++ b/src/connectors/cronos-base/cronos-base-uniswapish-connector.ts @@ -0,0 +1,386 @@ +import { + ExpectedTrade, + Pairish, + Percentish, + TokenAmountish, + Tokenish, + Uniswapish, + UniswapishAmount, + UniswapishCurrency, + UniswapishSwapParameters, + UniswapishTrade, +} from '../../services/common-interfaces'; +import { + BigNumber, + Contract, + ContractInterface, + ContractTransaction, + Transaction, + Wallet, +} from 'ethers'; +import { CronosBaseUniswapishConnectorConfig } from './cronos-base-uniswapish-connector.config'; +import { Cronos } from '../../chains/cronos/cronos'; +import { logger } from '../../services/logger'; +import { UniswapishPriceError } from '../../services/error-handler'; +import { isFractionString } from '../../services/validators'; +import { percentRegexp } from '../../services/config-manager-v2'; + +export abstract class CronosBaseUniswapishConnector implements Uniswapish { + private static _instances: { [name: string]: CronosBaseUniswapishConnector }; + private _config: CronosBaseUniswapishConnectorConfig.NetworkConfig; + private _cronos: Cronos; + private _chainId: number; + private _chain: string; + private _router: string; + private _ttl: number; + private _gasLimitEstimate: number; + private _tokenList: Record = {}; + private _ready: boolean = false; + + protected constructor( + private _sdkProvider: CronosBaseUniswapishSDKProvider, + private readonly _routerAbi: ContractInterface, + chain: string, + network: string + ) { + this._config = this.buildConfig(); + this._cronos = Cronos.getInstance(network); + this._chainId = this._cronos.chainId; + this._chain = chain; + this._router = this._config.routerAddress(network); + this._ttl = this._config.ttl; + this._gasLimitEstimate = this._config.gasLimitEstimate; + } + + public async init() { + if (this._chain == 'cronos' && !this._cronos.ready()) + throw new Error('Cronos is not available'); + for (const token of this._cronos.storedTokenList) { + this._tokenList[token.address] = this._sdkProvider.buildToken( + this._chainId, + token.address, + token.decimals, + token.symbol, + token.name + ); + } + this._ready = true; + } + + public ready(): boolean { + return this._ready; + } + + protected abstract buildConfig(): CronosBaseUniswapishConnectorConfig.NetworkConfig; + + /** + * Router address. + */ + public get router(): string { + return this._router; + } + + /** + * Router smart contract ABI. + */ + public get routerAbi(): ContractInterface { + return this._routerAbi; + } + + /** + * Default gas limit for swap transactions. + */ + public get gasLimitEstimate(): number { + return this._gasLimitEstimate; + } + + /** + * Default time-to-live for swap transactions, in seconds. + */ + public get ttl(): number { + return this._ttl; + } + + /** + * Given a token's address, return the connector's native representation of + * the token. + * + * @param address Token address + */ + public getTokenByAddress(address: string): Tokenish { + return this._tokenList[address]; + } + + /** + * Given the amount of `baseToken` to put into a transaction, calculate the + * amount of `quoteToken` that can be expected from the transaction. + * + * This is typically used for calculating token sell prices. + * + * @param baseToken Token input for the transaction + * @param quoteToken Output from the transaction + * @param amount Amount of `baseToken` to put into the transaction + * @param allowedSlippage The slippage amount allowed + */ + public async estimateSellTrade( + baseToken: Tokenish, + quoteToken: Tokenish, + amount: BigNumber, + allowedSlippage?: string + ): Promise { + const nativeTokenAmount: TokenAmountish = + this._sdkProvider.buildTokenAmount(baseToken, amount); + logger.info( + `Fetching pair data for ${baseToken.address}-${quoteToken.address}.` + ); + const pair: Pairish = await this._sdkProvider.fetchPairData( + baseToken, + quoteToken, + this._cronos.provider + ); + const trades: UniswapishTrade[] = this._sdkProvider.bestTradeExactIn( + [pair], + nativeTokenAmount, + quoteToken, + { maxHops: 1 } + ); + if (!trades || trades.length === 0) { + throw new UniswapishPriceError( + `priceSwapIn: no trade pair found for ${baseToken} to ${quoteToken}.` + ); + } + logger.info( + `Best trade for ${baseToken.address}-${quoteToken.address}: ${trades[0]}` + ); + const expectedAmount = this._sdkProvider.minimumAmountOut( + trades[0], + this.getAllowedSlippage(allowedSlippage) + ); + return { trade: trades[0], expectedAmount }; + } + + /** + * Given the amount of `baseToken` desired to acquire from a transaction, + * calculate the amount of `quoteToken` needed for the transaction. + * + * This is typically used for calculating token buy prices. + * + * @param quoteToken Token input for the transaction + * @param baseToken Token output from the transaction + * @param amount Amount of `baseToken` desired from the transaction + * @param allowedSlippage The slippage amount allowed + */ + public async estimateBuyTrade( + quoteToken: Tokenish, + baseToken: Tokenish, + amount: BigNumber, + allowedSlippage?: string + ): Promise { + const nativeTokenAmount: TokenAmountish = + this._sdkProvider.buildTokenAmount(baseToken, amount); + logger.info( + `Fetching pair data for ${quoteToken.address}-${baseToken.address}.` + ); + const pair: Pairish = await this._sdkProvider.fetchPairData( + quoteToken, + baseToken, + this._cronos.provider + ); + const trades: UniswapishTrade[] = this._sdkProvider.bestTradeExactOut( + [pair], + quoteToken, + nativeTokenAmount, + { maxHops: 1 } + ); + if (!trades || trades.length === 0) { + throw new UniswapishPriceError( + `priceSwapOut: no trade pair found for ${quoteToken.address} to ${baseToken.address}.` + ); + } + logger.info( + `Best trade for ${quoteToken.address}-${baseToken.address}: ${trades[0]}` + ); + + const expectedAmount = this._sdkProvider.maximumAmountIn( + trades[0], + this.getAllowedSlippage(allowedSlippage) + ); + return { trade: trades[0], expectedAmount }; + } + + /** + * Given a wallet and a Uniswap-ish trade, try to execute it on blockchain. + * + * @param wallet Wallet + * @param trade Expected trade + * @param gasPrice Base gas price, for pre-EIP1559 transactions + * @param CronosBaseUniswapishConnectorRoute Router smart contract address + * @param ttl How long the swap is valid before expiry, in seconds + * @param abi Router contract ABI + * @param gasLimit Gas limit + * @param nonce (Optional) EVM transaction nonce + * @param maxFeePerGas (Optional) Maximum total fee per gas you want to pay + * @param maxPriorityFeePerGas (Optional) Maximum tip per gas you want to pay + * @param allowedSlippage The slippage amount allowe + */ + public async executeTrade( + wallet: Wallet, + trade: UniswapishTrade, + gasPrice: number, + CronosBaseUniswapishConnectorRoute: string, + ttl: number, + abi: ContractInterface, + gasLimit: number, + nonce?: number, + maxFeePerGas?: BigNumber, + maxPriorityFeePerGas?: BigNumber, + allowedSlippage?: string + ): Promise { + const result = this._sdkProvider.swapCallParameters(trade, { + ttl, + recipient: wallet.address, + allowedSlippage: this.getAllowedSlippage(allowedSlippage), + }); + + const contract = new Contract( + CronosBaseUniswapishConnectorRoute, + abi, + wallet + ); + return this._cronos.nonceManager.provideNonce( + nonce, + wallet.address, + async (nextNonce) => { + let tx: ContractTransaction; + if (maxFeePerGas || maxPriorityFeePerGas) { + tx = await contract[result.methodName](...result.args, { + gasLimit: gasLimit, + value: result.value, + nonce: nextNonce, + maxFeePerGas, + maxPriorityFeePerGas, + }); + } else { + tx = await contract[result.methodName](...result.args, { + gasPrice: (gasPrice * 1e9).toFixed(0), + gasLimit: gasLimit.toFixed(0), + value: result.value, + nonce: nextNonce, + }); + } + + logger.info(`Transaction Details: ${JSON.stringify(tx)}`); + return tx; + } + ); + } + + /** + * Gets the allowed slippage percent from the optional parameter or the value + * in the configuration. + * + * @param allowedSlippageStr (Optional) should be of the form '1/10'. + */ + public getAllowedSlippage(allowedSlippageStr?: string): Percentish { + if (allowedSlippageStr != null && isFractionString(allowedSlippageStr)) { + const fractionSplit = allowedSlippageStr.split('/'); + return this._sdkProvider.buildPercent(fractionSplit[0], fractionSplit[1]); + } + + const allowedSlippage = this._config.allowedSlippage; + const nd = allowedSlippage.match(percentRegexp); + if (nd) return this._sdkProvider.buildPercent(nd[1], nd[2]); + throw new Error( + 'Encountered a malformed percent string in the config for ALLOWED_SLIPPAGE.' + ); + } + + public static getInstance( + this: { new (chain: string, network: string): T }, // see https://stackoverflow.com/questions/45123761/instantiating-child-class-from-a-static-method-in-base-class-using-typescript + chain: string, + network: string + ): CronosBaseUniswapishConnector { + if (CronosBaseUniswapishConnector._instances == undefined) { + CronosBaseUniswapishConnector._instances = {}; + } + + const instanceName = chain + network + this.name; + + if (!(instanceName in CronosBaseUniswapishConnector._instances)) { + CronosBaseUniswapishConnector._instances[instanceName] = new this( + chain, + network + ); + } + + return CronosBaseUniswapishConnector._instances[instanceName]; + } +} + +export interface CronosBaseUniswapishSDKProvider { + buildToken( + chainId: number, + address: string, + decimals: number, + symbol?: string, + name?: string, + projectLink?: string + ): Tokenish; + + buildTokenAmount(token: Tokenish, amount: BigNumber): TokenAmountish; + + fetchPairData( + tokenA: Tokenish, + tokenB: Tokenish, + provider?: import('@ethersproject/providers').BaseProvider + ): Promise; + + bestTradeExactIn( + pairs: Pairish[], + currencyAmountIn: UniswapishAmount, + currencyOut: UniswapishCurrency, + bestTradeOptions?: { + maxNumResults?: number; + maxHops?: number; + }, + currentPairs?: Pairish[], + originalAmountIn?: UniswapishAmount, + bestTrades?: UniswapishTrade[] + ): UniswapishTrade[]; + + bestTradeExactOut( + pairs: Pairish[], + currencyIn: UniswapishCurrency, + currencyAmountOut: UniswapishAmount, + bestTradeOptions?: { + maxNumResults?: number; + maxHops?: number; + }, + currentPairs?: Pairish[], + originalAmountOut?: UniswapishAmount, + bestTrades?: UniswapishTrade[] + ): UniswapishTrade[]; + + buildPercent(numerator: string, denominator?: string): Percentish; + + minimumAmountOut( + trade: UniswapishTrade, + slippageTolerance: Percentish + ): UniswapishAmount; + + maximumAmountIn( + trade: UniswapishTrade, + slippageTolerance: Percentish + ): UniswapishAmount; + + swapCallParameters( + trade: UniswapishTrade, + tradeOptions: { + allowedSlippage: Percentish; + ttl: number; + recipient: string; + feeOnTransfer?: boolean; + deadline?: number; + } + ): UniswapishSwapParameters; +} diff --git a/src/connectors/defikingdoms/defikingdoms.config.ts b/src/connectors/defikingdoms/defikingdoms.config.ts new file mode 100644 index 0000000000..8e5d81b891 --- /dev/null +++ b/src/connectors/defikingdoms/defikingdoms.config.ts @@ -0,0 +1,31 @@ +import { ConfigManagerV2 } from '../../services/config-manager-v2'; +import { AvailableNetworks } from '../../services/config-manager-types'; +export namespace DefikingdomsConfig { + export interface NetworkConfig { + allowedSlippage: string; + gasLimit: number; + ttl: number; + routerAddress: (network: string) => string; + tradingTypes: Array; + availableNetworks: Array; + } + + export const config: NetworkConfig = { + allowedSlippage: ConfigManagerV2.getInstance().get( + `defikingdoms.allowedSlippage` + ), + gasLimit: ConfigManagerV2.getInstance().get(`defikingdoms.gasLimit`), + ttl: ConfigManagerV2.getInstance().get(`defikingdoms.ttl`), + routerAddress: (network: string) => + ConfigManagerV2.getInstance().get( + `defikingdoms.contractAddresses.${network}.routerAddress` + ), + tradingTypes: ['EVM_AMM'], + availableNetworks: [ + { + chain: 'harmony', + networks: ['mainnet'], + }, + ], + }; +} diff --git a/src/connectors/defikingdoms/defikingdoms.ts b/src/connectors/defikingdoms/defikingdoms.ts new file mode 100644 index 0000000000..a1d2460b07 --- /dev/null +++ b/src/connectors/defikingdoms/defikingdoms.ts @@ -0,0 +1,291 @@ +import { UniswapishPriceError } from '../../services/error-handler'; +import { isFractionString } from '../../services/validators'; +import { DefikingdomsConfig } from './defikingdoms.config'; +import routerAbi from './defikingdoms_router_abi.json'; +import { + Contract, + ContractInterface, + ContractTransaction, +} from '@ethersproject/contracts'; +import { + Fetcher, + Percent, + Router, + Token, + TokenAmount, + Trade, + Pair, + SwapParameters, + // } from '@defikingdoms/sdk'; +} from '@switchboard-xyz/defikingdoms-sdk'; +import { BigNumber, Transaction, Wallet } from 'ethers'; +import { logger } from '../../services/logger'; +import { percentRegexp } from '../../services/config-manager-v2'; +// import { Ethereum } from '../../chains/ethereum/ethereum'; +import { ExpectedTrade, Uniswapish } from '../../services/common-interfaces'; +import { Harmony } from '../../chains/harmony/harmony'; + +export class Defikingdoms implements Uniswapish { + private static _instances: { [name: string]: Defikingdoms }; + private harmony: Harmony; + private _router: string; + private _routerAbi: ContractInterface; + private _gasLimitEstimate: number; + private _ttl: number; + private chainId; + private tokenList: Record = {}; + private _ready: boolean = false; + + private constructor(network: string) { + const config = DefikingdomsConfig.config; + this.harmony = Harmony.getInstance(network); + this.chainId = this.harmony.chainId; + this._ttl = DefikingdomsConfig.config.ttl; + this._routerAbi = routerAbi.abi; + this._gasLimitEstimate = DefikingdomsConfig.config.gasLimit; + this._router = config.routerAddress(network); + } + + public static getInstance(chain: string, network: string): Defikingdoms { + if (Defikingdoms._instances === undefined) { + Defikingdoms._instances = {}; + } + if (!(chain + network in Defikingdoms._instances)) { + // eslint-disable-next-line prettier/prettier + Defikingdoms._instances[chain + network] = new Defikingdoms(network); + } + + return Defikingdoms._instances[chain + network]; + } + + /** + * Given a token's address, return the connector's native representation of + * the token. + * + * @param address Token address + */ + public getTokenByAddress(address: string): Token { + return this.tokenList[address]; + } + + public async init() { + if (!this.harmony.ready()) { + await this.harmony.init(); + } + for (const token of this.harmony.storedTokenList) { + this.tokenList[token.address] = new Token( + this.chainId, + token.address, + token.decimals, + token.symbol, + token.name + ); + } + this._ready = true; + } + + public ready(): boolean { + return this._ready; + } + + /** + * Router address. + */ + public get router(): string { + return this._router; + } + + /** + * Router smart contract ABI. + */ + public get routerAbi(): ContractInterface { + return this._routerAbi; + } + + /** + * Default gas limit for swap transactions. + */ + public get gasLimitEstimate(): number { + return this._gasLimitEstimate; + } + + /** + * Default time-to-live for swap transactions, in seconds. + */ + public get ttl(): number { + return this._ttl; + } + + /** + * Gets the allowed slippage percent from the optional parameter or the value + * in the configuration. + * + * @param allowedSlippageStr (Optional) should be of the form '1/10'. + */ + public getAllowedSlippage(allowedSlippageStr?: string): Percent { + if (allowedSlippageStr != null && isFractionString(allowedSlippageStr)) { + const fractionSplit = allowedSlippageStr.split('/'); + return new Percent(fractionSplit[0], fractionSplit[1]); + } + + const allowedSlippage = DefikingdomsConfig.config.allowedSlippage; + const nd = allowedSlippage.match(percentRegexp); + if (nd) return new Percent(nd[1], nd[2]); + throw new Error( + 'Encountered a malformed percent string in the config for ALLOWED_SLIPPAGE.' + ); + } + + /** + * Given the amount of `baseToken` to put into a transaction, calculate the + * amount of `quoteToken` that can be expected from the transaction. + * + * This is typically used for calculating token sell prices. + * + * @param baseToken Token input for the transaction + * @param quoteToken Output from the transaction + * @param amount Amount of `baseToken` to put into the transaction + */ + async estimateSellTrade( + baseToken: Token, + quoteToken: Token, + amount: BigNumber, + allowedSlippage?: string + ): Promise { + const nativeTokenAmount: TokenAmount = new TokenAmount( + baseToken, + amount.toString() + ); + logger.info( + `Fetching pair data for ${baseToken.address}-${quoteToken.address}.` + ); + + const pair: Pair = await this.fetchPairData(baseToken, quoteToken); + const trades: Trade[] = Trade.bestTradeExactIn( + [pair], + nativeTokenAmount, + quoteToken, + { maxHops: 1 } + ); + if (!trades || trades.length === 0) { + throw new UniswapishPriceError( + `priceSwapIn: no trade pair found for ${baseToken} to ${quoteToken}.` + ); + } + logger.info( + `Best trade for ${baseToken.address}-${quoteToken.address}: ` + + `${trades[0].executionPrice.toFixed(6)}` + + `${baseToken.name}.` + ); + const expectedAmount = trades[0].minimumAmountOut( + this.getAllowedSlippage(allowedSlippage) + ); + return { trade: trades[0], expectedAmount }; + } + + /** + * Given the amount of `baseToken` desired to acquire from a transaction, + * calculate the amount of `quoteToken` needed for the transaction. + * + * This is typically used for calculating token buy prices. + * + * @param quoteToken Token input for the transaction + * @param baseToken Token output from the transaction + * @param amount Amount of `baseToken` desired from the transaction + */ + async estimateBuyTrade( + quoteToken: Token, + baseToken: Token, + amount: BigNumber, + allowedSlippage?: string + ): Promise { + const nativeTokenAmount: TokenAmount = new TokenAmount( + baseToken, + amount.toString() + ); + logger.info( + `Fetching pair data for ${quoteToken.address}-${baseToken.address}.` + ); + logger.info( + JSON.stringify({ quoteToken, baseToken, provider: this.harmony.provider }) + ); + const pair: Pair = await this.fetchPairData(quoteToken, baseToken); + const trades: Trade[] = Trade.bestTradeExactOut( + [pair], + quoteToken, + nativeTokenAmount, + { maxHops: 1 } + ); + if (!trades || trades.length === 0) { + throw new UniswapishPriceError( + `priceSwapOut: no trade pair found for ${quoteToken.address} to ${baseToken.address}.` + ); + } + logger.info( + `Best trade for ${quoteToken.address}-${baseToken.address}: ` + + `${trades[0].executionPrice.invert().toFixed(6)} ` + + `${baseToken.name}.` + ); + + const expectedAmount = trades[0].maximumAmountIn( + this.getAllowedSlippage(allowedSlippage) + ); + return { trade: trades[0], expectedAmount }; + } + + /** + * Given a wallet and a Defikingdoms trade, try to execute it on blockchain. + * + * @param wallet Wallet + * @param trade Expected trade + * @param gasPrice Base gas price, for pre-EIP1559 transactions + * @param defikingdomsRouter Router smart contract address + * @param ttl How long the swap is valid before expiry, in seconds + * @param abi Router contract ABI + * @param gasLimit Gas limit + * @param nonce (Optional) EVM transaction nonce + */ + async executeTrade( + wallet: Wallet, + trade: Trade, + gasPrice: number, + defikingdomsRouter: string, + ttl: number, + abi: ContractInterface, + gasLimit: number, + nonce?: number, + _1?: BigNumber, + _2?: BigNumber, + allowedSlippage?: string + ): Promise { + const result: SwapParameters = Router.swapCallParameters(trade, { + ttl, + recipient: wallet.address, + allowedSlippage: this.getAllowedSlippage(allowedSlippage), + }); + + const contract: Contract = new Contract(defikingdomsRouter, abi, wallet); + return this.harmony.nonceManager.provideNonce( + nonce, + wallet.address, + async (nextNonce) => { + const tx: ContractTransaction = await contract[result.methodName]( + ...result.args, + { + gasPrice: (gasPrice * 1e9).toFixed(0), + gasLimit: gasLimit.toFixed(0), + value: result.value, + nonce: nextNonce, + } + ); + + logger.info(JSON.stringify(tx)); + return tx; + } + ); + } + + async fetchPairData(tokenA: Token, tokenB: Token): Promise { + return await Fetcher.fetchPairData(tokenA, tokenB, this.harmony.provider); + } +} diff --git a/src/connectors/defikingdoms/defikingdoms_router_abi.json b/src/connectors/defikingdoms/defikingdoms_router_abi.json new file mode 100644 index 0000000000..5a0d96a6f1 --- /dev/null +++ b/src/connectors/defikingdoms/defikingdoms_router_abi.json @@ -0,0 +1,1625 @@ +{ + "abi": [ + { + "inputs": [], + "name": "WETH", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountADesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "addLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountTokenDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "addLiquidityETH", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "factory", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveOut", + "type": "uint256" + } + ], + "name": "getAmountIn", + "outputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveOut", + "type": "uint256" + } + ], + "name": "getAmountOut", + "outputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + } + ], + "name": "getAmountsIn", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + } + ], + "name": "getAmountsOut", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveB", + "type": "uint256" + } + ], + "name": "quote", + "outputs": [ + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidityETH", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidityETHSupportingFeeOnTransferTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityETHWithPermit", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityETHWithPermitSupportingFeeOnTransferTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityWithPermit", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapETHForExactTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactETHForTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactETHForTokensSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForETH", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForETHSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForTokensSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountInMax", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapTokensForExactETH", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountInMax", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapTokensForExactTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve0\",\"type\":\"uint112\"},{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve1\",\"type\":\"uint112\"}],\"name\":\"Sync\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINIMUM_LIQUIDITY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReserves\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"reserve0\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"reserve1\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"blockTimestampLast\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"kLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price0CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price1CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"skim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sync\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IUniswapV2Pair.sol\":\"IUniswapV2Pair\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IUniswapV2Pair.sol\":{\"keccak256\":\"0x3368b1700fc4a77b780967cdd03c731da787a99f054f69f4b404d3cd3691712d\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://47521585cb5e7f2a8a1586b7d4f09e5ffc80929af8f9ed18012a1b4a82920b9f\",\"dweb:/ipfs/QmdHmVCdnyDq9GFDuRKXe69ATcY4ABXehHzoKRnzxtWNFv\"]}},\"version\":1}", + "interface": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "Burn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + } + ], + "name": "Mint", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0In", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1In", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0Out", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1Out", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "Swap", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint112", + "name": "reserve0", + "type": "uint112" + }, + { + "indexed": false, + "internalType": "uint112", + "name": "reserve1", + "type": "uint112" + } + ], + "name": "Sync", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MINIMUM_LIQUIDITY", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "PERMIT_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "burn", + "outputs": [ + { + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "factory", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getReserves", + "outputs": [ + { + "internalType": "uint112", + "name": "reserve0", + "type": "uint112" + }, + { + "internalType": "uint112", + "name": "reserve1", + "type": "uint112" + }, + { + "internalType": "uint32", + "name": "blockTimestampLast", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "kLast", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "nonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "permit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "price0CumulativeLast", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "price1CumulativeLast", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "skim", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount0Out", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1Out", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "swap", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "sync", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "token0", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "token1", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "" +} diff --git a/src/connectors/defira/defira.config.ts b/src/connectors/defira/defira.config.ts new file mode 100644 index 0000000000..739235add3 --- /dev/null +++ b/src/connectors/defira/defira.config.ts @@ -0,0 +1,36 @@ +import { ConfigManagerV2 } from '../../services/config-manager-v2'; +import { AvailableNetworks } from '../../services/config-manager-types'; +export namespace DefiraConfig { + export interface NetworkConfig { + allowedSlippage: () => string; + gasLimitEstimate: () => number; + ttl: () => number; + routerAddress: (network: string) => string; + initCodeHash: (network: string) => string; + tradingTypes: Array; + availableNetworks: Array; + } + + export const config: NetworkConfig = { + allowedSlippage: () => + ConfigManagerV2.getInstance().get(`defira.allowedSlippage`), + gasLimitEstimate: () => + ConfigManagerV2.getInstance().get(`defira.gasLimitEstimate`), + ttl: () => ConfigManagerV2.getInstance().get(`defira.ttl`), + routerAddress: (network: string) => + ConfigManagerV2.getInstance().get( + `defira.contractAddresses.${network}.routerAddress` + ), + initCodeHash: (network: string) => + ConfigManagerV2.getInstance().get( + `defira.contractAddresses.${network}.initCodeHash` + ), + tradingTypes: ['EVM_AMM'], + availableNetworks: [ + { + chain: 'harmony', + networks: ['mainnet', 'testnet'], + }, + ], + }; +} diff --git a/src/connectors/defira/defira.ts b/src/connectors/defira/defira.ts new file mode 100644 index 0000000000..a179310fcb --- /dev/null +++ b/src/connectors/defira/defira.ts @@ -0,0 +1,322 @@ +import { UniswapishPriceError } from '../../services/error-handler'; +import { isFractionString } from '../../services/validators'; +import { DefiraConfig } from './defira.config'; +import routerAbi from './defira_v2_router_abi.json'; +import { + Contract, + ContractInterface, + ContractTransaction, +} from '@ethersproject/contracts'; +import { + Router as DefiraRouter, + Pair as DefiraPair, + SwapParameters, + Trade as DefiraTrade, + Fetcher as DefiraFetcher, +} from '@zuzu-cat/defira-sdk'; + +import { Percent, Token, CurrencyAmount, TradeType } from '@uniswap/sdk-core'; +import { BigNumber, Transaction, Wallet } from 'ethers'; +import { logger } from '../../services/logger'; +import { percentRegexp } from '../../services/config-manager-v2'; +import { Harmony } from '../../chains/harmony/harmony'; +import { ExpectedTrade, Uniswapish } from '../../services/common-interfaces'; + +export class Defira implements Uniswapish { + private static _instances: { [name: string]: Defira }; + private harmony: Harmony; + private _router: string; + private _factory: string | null; + private _routerAbi: ContractInterface; + private _initCodeHash: string; + private _gasLimitEstimate: number; + private _ttl: number; + private chainId; + private tokenList: Record = {}; + private _ready: boolean = false; + + private constructor(network: string) { + const config = DefiraConfig.config; + this.harmony = Harmony.getInstance(network); + this.chainId = this.harmony.chainId; + this._ttl = config.ttl(); + this._routerAbi = routerAbi.abi; + this._gasLimitEstimate = config.gasLimitEstimate(); + this._router = config.routerAddress(network); + this._initCodeHash = config.initCodeHash(network); + this._factory = null; + } + + public static getInstance(chain: string, network: string): Defira { + if (Defira._instances === undefined) { + Defira._instances = {}; + } + if (!(chain + network in Defira._instances)) { + Defira._instances[chain + network] = new Defira(network); + } + + return Defira._instances[chain + network]; + } + + /** + * Given a token's address, return the connector's native representation of + * the token. + * + * @param address Token address + */ + public getTokenByAddress(address: string): Token { + return this.tokenList[address]; + } + + public async init() { + if (!this.harmony.ready()) { + await this.harmony.init(); + } + for (const token of this.harmony.storedTokenList) { + this.tokenList[token.address] = new Token( + token.chainId || this.chainId, + token.address, + token.decimals, + token.symbol, + token.name + ); + } + this._ready = true; + } + + public ready(): boolean { + return this._ready; + } + + /** + * Router address. + */ + public get router(): string { + return this._router; + } + + /** + * Lazily computed factory address. + */ + public get factory(): Promise { + // boilerplate to support async getter + return (async () => { + if (!this._factory) { + const routerContract = new Contract( + this.router, + this.routerAbi, + this.provider() + ); + this._factory = await routerContract.factory(); + } + return this._factory as string; + })(); + } + + /** + * Init code hash of Defira DEX Pair contract, used to compute individual pair addresses without network lookups + */ + public get initCodeHash(): string { + return this._initCodeHash; + } + + // in place for mocking + async fetchPairData(tokenA: Token, tokenB: Token): Promise { + return await DefiraFetcher.fetchPairData( + tokenA, + tokenB, + await this.factory, + this.initCodeHash, + this.provider() + ); + } + + // in place for mocking + provider(): any { + return this.harmony.provider; + } + + /** + * Router smart contract ABI. + */ + public get routerAbi(): ContractInterface { + return this._routerAbi; + } + + /** + * Default gas limit for swap transactions. + */ + public get gasLimitEstimate(): number { + return this._gasLimitEstimate; + } + + /** + * Default time-to-live for swap transactions, in seconds. + */ + public get ttl(): number { + return this._ttl; + } + + /** + * Gets the allowed slippage percent from the optional parameter or the value + * in the configuration. + * + * @param allowedSlippageStr (Optional) should be of the form '1/10'. + */ + public getAllowedSlippage(allowedSlippageStr?: string): Percent { + if (allowedSlippageStr != null && isFractionString(allowedSlippageStr)) { + const fractionSplit = allowedSlippageStr.split('/'); + return new Percent(fractionSplit[0], fractionSplit[1]); + } + + const allowedSlippage = DefiraConfig.config.allowedSlippage(); + const nd = allowedSlippage.match(percentRegexp); + if (nd) return new Percent(nd[1], nd[2]); + throw new Error( + 'Encountered a malformed percent string in the config for ALLOWED_SLIPPAGE.' + ); + } + + /** + * Given the amount of `baseToken` to put into a transaction, calculate the + * amount of `quoteToken` that can be expected from the transaction. + * + * This is typically used for calculating token sell prices. + * + * @param baseToken Token input for the transaction + * @param quoteToken Output from the transaction + * @param amount Amount of `baseToken` to put into the transaction + */ + async estimateSellTrade( + baseToken: Token, + quoteToken: Token, + amount: BigNumber, + allowedSlippage?: string + ): Promise { + const baseTokenAmount = CurrencyAmount.fromRawAmount( + baseToken, + amount.toString() + ); + + logger.info( + `Fetching pair data for ${baseToken.address}-${quoteToken.address}.` + ); + + const pair: DefiraPair = await this.fetchPairData(quoteToken, baseToken); + const trades: DefiraTrade[] = + DefiraTrade.bestTradeExactIn([pair], baseTokenAmount, quoteToken, { + maxHops: 1, + }); + if (!trades || trades.length === 0) { + throw new UniswapishPriceError( + `priceSwapIn: no trade pair found for ${baseToken.address} to ${quoteToken.address}.` + ); + } + logger.info( + `Best trade for ${baseToken.address}-${quoteToken.address}: ` + + `${trades[0].executionPrice.toFixed(6)}` + + `${baseToken.name}.` + ); + const expectedAmount = trades[0].minimumAmountOut( + this.getAllowedSlippage(allowedSlippage) + ); + return { trade: trades[0], expectedAmount }; + } + + /** + * Given the amount of `baseToken` desired to acquire from a transaction, + * calculate the amount of `quoteToken` needed for the transaction. + * + * This is typically used for calculating token buy prices. + * + * @param quoteToken Token input for the transaction + * @param baseToken Token output from the transaction + * @param amount Amount of `baseToken` desired from the transaction + */ + async estimateBuyTrade( + quoteToken: Token, + baseToken: Token, + amount: BigNumber, + allowedSlippage?: string + ): Promise { + const baseTokenAmount = CurrencyAmount.fromRawAmount( + baseToken, + amount.toString() + ); + logger.info( + `Fetching pair data for ${quoteToken.address}-${baseToken.address}.` + ); + const pair: DefiraPair = await this.fetchPairData(quoteToken, baseToken); + const trades: DefiraTrade[] = + DefiraTrade.bestTradeExactOut([pair], quoteToken, baseTokenAmount, { + maxHops: 1, + }); + if (!trades || trades.length === 0) { + throw new UniswapishPriceError( + `priceSwapOut: no trade pair found for ${quoteToken.address} to ${baseToken.address}.` + ); + } + logger.info( + `Best trade for ${quoteToken.address}-${baseToken.address}: ` + + `${trades[0].executionPrice.invert().toFixed(6)} ` + + `${baseToken.name}.` + ); + + const expectedAmount = trades[0].maximumAmountIn( + this.getAllowedSlippage(allowedSlippage) + ); + return { trade: trades[0], expectedAmount }; + } + + /** + * Given a wallet and a defira trade, try to execute it on blockchain. + * + * @param wallet Wallet + * @param trade Expected trade + * @param gasPrice Base gas price, for pre-EIP1559 transactions + * @param defiraRouter Router smart contract address + * @param ttl How long the swap is valid before expiry, in seconds + * @param abi Router contract ABI + * @param gasLimit Gas limit + * @param nonce (Optional) EVM transaction nonce + */ + async executeTrade( + wallet: Wallet, + trade: DefiraTrade, + gasPrice: number, + defiraRouter: string, + ttl: number, + abi: ContractInterface, + gasLimit: number, + nonce?: number, + _1?: BigNumber, + _2?: BigNumber, + allowedSlippage?: string + ): Promise { + const result: SwapParameters = DefiraRouter.swapCallParameters(trade, { + ttl, + recipient: wallet.address, + allowedSlippage: this.getAllowedSlippage(allowedSlippage), + }); + + const contract: Contract = new Contract(defiraRouter, abi, wallet); + return this.harmony.nonceManager.provideNonce( + nonce, + wallet.address, + async (nextNonce) => { + const tx: ContractTransaction = await contract[result.methodName]( + ...result.args, + { + gasPrice: (gasPrice * 1e9).toFixed(0), + gasLimit: gasLimit.toFixed(0), + value: result.value, + nonce: nextNonce, + } + ); + + logger.info(JSON.stringify(tx)); + return tx; + } + ); + } +} diff --git a/src/connectors/defira/defira_v2_router_abi.json b/src/connectors/defira/defira_v2_router_abi.json new file mode 100644 index 0000000000..14a192176b --- /dev/null +++ b/src/connectors/defira/defira_v2_router_abi.json @@ -0,0 +1,985 @@ +{ + "abi": [ + { + "inputs": [ + { + "type": "address", + "name": "_factory", + "internalType": "address" + }, + { + "internalType": "address", + "name": "_WETH", + "type": "address" + } + ], + "type": "constructor", + "stateMutability": "nonpayable" + }, + { + "name": "WETH", + "type": "function", + "inputs": [], + "outputs": [ + { + "internalType": "address", + "type": "address", + "name": "" + } + ], + "stateMutability": "view" + }, + { + "stateMutability": "view", + "name": "factory", + "type": "function", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ] + }, + { + "stateMutability": "payable", + "type": "receive" + }, + { + "name": "addLiquidity", + "type": "function", + "stateMutability": "nonpayable", + "outputs": [ + { + "name": "amountA", + "internalType": "uint256", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + }, + { + "name": "liquidity", + "type": "uint256", + "internalType": "uint256" + } + ], + "inputs": [ + { + "name": "tokenA", + "internalType": "address", + "type": "address" + }, + { + "name": "tokenB", + "type": "address", + "internalType": "address" + }, + { + "internalType": "uint256", + "type": "uint256", + "name": "amountADesired" + }, + { + "type": "uint256", + "name": "amountBDesired", + "internalType": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "name": "to", + "internalType": "address", + "type": "address" + }, + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "outputs": [ + { + "type": "uint256", + "name": "amountToken", + "internalType": "uint256" + }, + { + "name": "amountETH", + "internalType": "uint256", + "type": "uint256" + }, + { + "name": "liquidity", + "type": "uint256", + "internalType": "uint256" + } + ], + "type": "function", + "name": "addLiquidityETH", + "inputs": [ + { + "type": "address", + "name": "token", + "internalType": "address" + }, + { + "type": "uint256", + "internalType": "uint256", + "name": "amountTokenDesired" + }, + { + "name": "amountTokenMin", + "internalType": "uint256", + "type": "uint256" + }, + { + "internalType": "uint256", + "type": "uint256", + "name": "amountETHMin" + }, + { + "type": "address", + "internalType": "address", + "name": "to" + }, + { + "type": "uint256", + "name": "deadline", + "internalType": "uint256" + } + ], + "stateMutability": "payable" + }, + { + "type": "function", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "tokenA", + "type": "address", + "internalType": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "name": "liquidity", + "type": "uint256", + "internalType": "uint256" + }, + { + "type": "uint256", + "name": "amountAMin", + "internalType": "uint256" + }, + { + "name": "amountBMin", + "internalType": "uint256", + "type": "uint256" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "type": "uint256", + "name": "deadline", + "internalType": "uint256" + } + ], + "name": "removeLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "type": "uint256", + "internalType": "uint256", + "name": "amountB" + } + ] + }, + { + "stateMutability": "nonpayable", + "outputs": [ + { + "name": "amountToken", + "type": "uint256", + "internalType": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "name": "removeLiquidityETH", + "inputs": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "liquidity", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "amountTokenMin", + "internalType": "uint256", + "type": "uint256" + }, + { + "type": "uint256", + "internalType": "uint256", + "name": "amountETHMin" + }, + { + "type": "address", + "internalType": "address", + "name": "to" + }, + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + } + ], + "type": "function" + }, + { + "stateMutability": "nonpayable", + "type": "function", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "name": "amountB", + "type": "uint256", + "internalType": "uint256" + } + ], + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "name": "liquidity", + "internalType": "uint256", + "type": "uint256" + }, + { + "type": "uint256", + "internalType": "uint256", + "name": "amountAMin" + }, + { + "type": "uint256", + "name": "amountBMin", + "internalType": "uint256" + }, + { + "type": "address", + "name": "to", + "internalType": "address" + }, + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "name": "v", + "internalType": "uint8", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "name": "s", + "internalType": "bytes32", + "type": "bytes32" + } + ], + "name": "removeLiquidityWithPermit" + }, + { + "name": "removeLiquidityETHWithPermit", + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "name": "liquidity", + "internalType": "uint256", + "type": "uint256" + }, + { + "name": "amountTokenMin", + "internalType": "uint256", + "type": "uint256" + }, + { + "name": "amountETHMin", + "type": "uint256", + "internalType": "uint256" + }, + { + "type": "address", + "name": "to", + "internalType": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "name": "r", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "type": "function", + "stateMutability": "nonpayable", + "outputs": [ + { + "internalType": "uint256", + "type": "uint256", + "name": "amountToken" + }, + { + "internalType": "uint256", + "type": "uint256", + "name": "amountETH" + } + ] + }, + { + "name": "removeLiquidityETHSupportingFeeOnTransferTokens", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "token", + "internalType": "address", + "type": "address" + }, + { + "type": "uint256", + "internalType": "uint256", + "name": "liquidity" + }, + { + "type": "uint256", + "internalType": "uint256", + "name": "amountTokenMin" + }, + { + "name": "amountETHMin", + "internalType": "uint256", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "type": "uint256", + "internalType": "uint256", + "name": "deadline" + } + ], + "type": "function", + "outputs": [ + { + "type": "uint256", + "name": "amountETH", + "internalType": "uint256" + } + ] + }, + { + "name": "removeLiquidityETHWithPermitSupportingFeeOnTransferTokens", + "type": "function", + "stateMutability": "nonpayable", + "inputs": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "liquidity", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "amountTokenMin", + "type": "uint256", + "internalType": "uint256" + }, + { + "internalType": "uint256", + "type": "uint256", + "name": "amountETHMin" + }, + { + "type": "address", + "internalType": "address", + "name": "to" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "type": "bool", + "name": "approveMax", + "internalType": "bool" + }, + { + "name": "v", + "type": "uint8", + "internalType": "uint8" + }, + { + "type": "bytes32", + "name": "r", + "internalType": "bytes32" + }, + { + "name": "s", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "type": "uint256", + "name": "amountETH", + "internalType": "uint256" + } + ] + }, + { + "type": "function", + "inputs": [ + { + "name": "amountIn", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "amountOutMin", + "type": "uint256", + "internalType": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "type": "address", + "name": "to", + "internalType": "address" + }, + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + } + ], + "name": "swapExactTokensForTokens", + "stateMutability": "nonpayable", + "outputs": [ + { + "name": "amounts", + "type": "uint256[]", + "internalType": "uint256[]" + } + ] + }, + { + "type": "function", + "outputs": [ + { + "name": "amounts", + "internalType": "uint256[]", + "type": "uint256[]" + } + ], + "inputs": [ + { + "type": "uint256", + "internalType": "uint256", + "name": "amountOut" + }, + { + "name": "amountInMax", + "internalType": "uint256", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "name": "to", + "internalType": "address", + "type": "address" + }, + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "nonpayable", + "name": "swapTokensForExactTokens" + }, + { + "inputs": [ + { + "name": "amountOutMin", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "path", + "type": "address[]", + "internalType": "address[]" + }, + { + "name": "to", + "internalType": "address", + "type": "address" + }, + { + "type": "uint256", + "internalType": "uint256", + "name": "deadline" + } + ], + "outputs": [ + { + "name": "amounts", + "internalType": "uint256[]", + "type": "uint256[]" + } + ], + "stateMutability": "payable", + "name": "swapExactETHForTokens", + "type": "function" + }, + { + "stateMutability": "nonpayable", + "type": "function", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "name": "swapTokensForExactETH", + "inputs": [ + { + "internalType": "uint256", + "type": "uint256", + "name": "amountOut" + }, + { + "name": "amountInMax", + "type": "uint256", + "internalType": "uint256" + }, + { + "internalType": "address[]", + "type": "address[]", + "name": "path" + }, + { + "type": "address", + "name": "to", + "internalType": "address" + }, + { + "type": "uint256", + "name": "deadline", + "internalType": "uint256" + } + ] + }, + { + "outputs": [ + { + "name": "amounts", + "type": "uint256[]", + "internalType": "uint256[]" + } + ], + "inputs": [ + { + "name": "amountIn", + "type": "uint256", + "internalType": "uint256" + }, + { + "internalType": "uint256", + "type": "uint256", + "name": "amountOutMin" + }, + { + "type": "address[]", + "name": "path", + "internalType": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "nonpayable", + "name": "swapExactTokensForETH", + "type": "function" + }, + { + "inputs": [ + { + "name": "amountOut", + "type": "uint256", + "internalType": "uint256" + }, + { + "type": "address[]", + "internalType": "address[]", + "name": "path" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "type": "uint256", + "internalType": "uint256", + "name": "deadline" + } + ], + "stateMutability": "payable", + "name": "swapETHForExactTokens", + "type": "function", + "outputs": [ + { + "internalType": "uint256[]", + "type": "uint256[]", + "name": "amounts" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "type": "uint256", + "name": "amountIn" + }, + { + "name": "amountOutMin", + "type": "uint256", + "internalType": "uint256" + }, + { + "type": "address[]", + "name": "path", + "internalType": "address[]" + }, + { + "name": "to", + "internalType": "address", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "outputs": [], + "type": "function", + "name": "swapExactTokensForTokensSupportingFeeOnTransferTokens", + "stateMutability": "nonpayable" + }, + { + "stateMutability": "payable", + "type": "function", + "name": "swapExactETHForTokensSupportingFeeOnTransferTokens", + "outputs": [], + "inputs": [ + { + "name": "amountOutMin", + "type": "uint256", + "internalType": "uint256" + }, + { + "type": "address[]", + "name": "path", + "internalType": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "name": "deadline", + "internalType": "uint256", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "type": "uint256", + "name": "amountIn" + }, + { + "name": "amountOutMin", + "internalType": "uint256", + "type": "uint256" + }, + { + "name": "path", + "internalType": "address[]", + "type": "address[]" + }, + { + "name": "to", + "internalType": "address", + "type": "address" + }, + { + "type": "uint256", + "name": "deadline", + "internalType": "uint256" + } + ], + "type": "function", + "outputs": [], + "stateMutability": "nonpayable", + "name": "swapExactTokensForETHSupportingFeeOnTransferTokens" + }, + { + "name": "quote", + "inputs": [ + { + "type": "uint256", + "internalType": "uint256", + "name": "amountA" + }, + { + "name": "reserveA", + "type": "uint256", + "internalType": "uint256" + }, + { + "internalType": "uint256", + "type": "uint256", + "name": "reserveB" + } + ], + "outputs": [ + { + "type": "uint256", + "name": "amountB", + "internalType": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "name": "getAmountOut", + "outputs": [ + { + "name": "amountOut", + "type": "uint256", + "internalType": "uint256" + } + ], + "type": "function", + "inputs": [ + { + "name": "amountIn", + "type": "uint256", + "internalType": "uint256" + }, + { + "type": "uint256", + "internalType": "uint256", + "name": "reserveIn" + }, + { + "type": "uint256", + "internalType": "uint256", + "name": "reserveOut" + }, + { + "name": "swapFee", + "internalType": "uint256", + "type": "uint256" + } + ], + "stateMutability": "pure" + }, + { + "inputs": [ + { + "name": "amountOut", + "internalType": "uint256", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveIn", + "type": "uint256" + }, + { + "type": "uint256", + "name": "reserveOut", + "internalType": "uint256" + }, + { + "internalType": "uint256", + "name": "swapFee", + "type": "uint256" + } + ], + "name": "getAmountIn", + "outputs": [ + { + "name": "amountIn", + "type": "uint256", + "internalType": "uint256" + } + ], + "type": "function", + "stateMutability": "pure" + }, + { + "type": "function", + "outputs": [ + { + "type": "uint256[]", + "name": "amounts", + "internalType": "uint256[]" + } + ], + "inputs": [ + { + "name": "amountIn", + "internalType": "uint256", + "type": "uint256" + }, + { + "type": "address[]", + "internalType": "address[]", + "name": "path" + } + ], + "name": "getAmountsOut", + "stateMutability": "view" + }, + { + "inputs": [ + { + "name": "amountOut", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "path", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "name": "getAmountsIn", + "type": "function" + } + ] +} diff --git a/src/connectors/mad_meerkat/abi.json b/src/connectors/mad_meerkat/abi.json new file mode 100644 index 0000000000..17d4976788 --- /dev/null +++ b/src/connectors/mad_meerkat/abi.json @@ -0,0 +1,1080 @@ +[ + { + "inputs": [ + { + "internalType": "address", + "name": "_factory", + "type": "address" + }, + { + "internalType": "address", + "name": "_WETH", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "inputs": [], + "name": "WETH", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountADesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "addLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountTokenDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "addLiquidityETH", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "factory", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "swapFee", + "type": "uint256" + } + ], + "name": "getAmountIn", + "outputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "swapFee", + "type": "uint256" + } + ], + "name": "getAmountOut", + "outputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + } + ], + "name": "getAmountsIn", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + } + ], + "name": "getAmountsOut", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isOwner", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveB", + "type": "uint256" + } + ], + "name": "quote", + "outputs": [ + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidityETH", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidityETHSupportingFeeOnTransferTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityETHWithPermit", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityETHWithPermitSupportingFeeOnTransferTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityWithPermit", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_swapFeeReward", + "type": "address" + } + ], + "name": "setSwapFeeReward", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapETHForExactTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactETHForTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactETHForTokensSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForETH", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForETHSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForTokensSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "swapFeeReward", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountInMax", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapTokensForExactETH", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountInMax", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapTokensForExactTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } +] diff --git a/src/connectors/mad_meerkat/mad_meerkat.config.ts b/src/connectors/mad_meerkat/mad_meerkat.config.ts new file mode 100644 index 0000000000..1fee15ee93 --- /dev/null +++ b/src/connectors/mad_meerkat/mad_meerkat.config.ts @@ -0,0 +1,10 @@ +import { CronosBaseUniswapishConnectorConfig } from '../cronos-base/cronos-base-uniswapish-connector.config'; + +export namespace MadMeerkatConfig { + const tradingTypes = ['EVM_AMM']; + export const config: CronosBaseUniswapishConnectorConfig.NetworkConfig = + CronosBaseUniswapishConnectorConfig.buildConfig( + 'mad_meerkat', + tradingTypes + ); +} diff --git a/src/connectors/mad_meerkat/mad_meerkat.ts b/src/connectors/mad_meerkat/mad_meerkat.ts new file mode 100644 index 0000000000..c4374998b4 --- /dev/null +++ b/src/connectors/mad_meerkat/mad_meerkat.ts @@ -0,0 +1,136 @@ +import { + Currency, + CurrencyAmount, + Fetcher, + Pair, + Percent, + Router, + Token, + TokenAmount, + Trade, +} from '@crocswap/sdk'; +import { BigNumber } from 'ethers'; +import { + Pairish, + Percentish, + UniswapishSwapParameters, +} from '../../services/common-interfaces'; +import { + CronosBaseUniswapishSDKProvider, + CronosBaseUniswapishConnector, +} from '../cronos-base/cronos-base-uniswapish-connector'; +import { CronosBaseUniswapishConnectorConfig } from '../cronos-base/cronos-base-uniswapish-connector.config'; +import routerAbi from './abi.json'; +import { MadMeerkatConfig } from './mad_meerkat.config'; + +export class MadMeerkat extends CronosBaseUniswapishConnector { + constructor(chain: string, network: string) { + const sdkProvider = new MadMeerkatSDKProvider(); + super(sdkProvider, routerAbi, chain, network); + } + protected buildConfig(): CronosBaseUniswapishConnectorConfig.NetworkConfig { + return MadMeerkatConfig.config; + } +} + +class MadMeerkatSDKProvider implements CronosBaseUniswapishSDKProvider { + public buildToken( + chainId: number, + address: string, + decimals: number, + symbol?: string, + name?: string, + projectLink?: string + ): Token { + return new Token(chainId, address, decimals, symbol, name, projectLink); + } + + public buildTokenAmount(token: Token, amount: BigNumber): TokenAmount { + return new TokenAmount(token, amount.toString()); + } + + public fetchPairData( + tokenA: Token, + tokenB: Token, + provider?: import('@ethersproject/providers').BaseProvider + ): Promise { + return Fetcher.fetchPairData(tokenA, tokenB, provider); + } + + public bestTradeExactIn( + pairs: Pair[], + currencyAmountIn: CurrencyAmount, + currencyOut: Currency, + bestTradeOptions?: { + maxNumResults?: number; + maxHops?: number; + }, + currentPairs?: Pair[], + originalAmountIn?: CurrencyAmount, + bestTrades?: Trade[] + ): Trade[] { + return Trade.bestTradeExactIn( + pairs, + currencyAmountIn, + currencyOut, + bestTradeOptions, + currentPairs, + originalAmountIn, + bestTrades + ); + } + + public bestTradeExactOut( + pairs: Pair[], + currencyIn: Currency, + currencyAmountOut: CurrencyAmount, + bestTradeOptions?: { + maxNumResults?: number; + maxHops?: number; + }, + currentPairs?: Pair[], + originalAmountOut?: CurrencyAmount, + bestTrades?: Trade[] + ): Trade[] { + return Trade.bestTradeExactOut( + pairs, + currencyIn, + currencyAmountOut, + bestTradeOptions, + currentPairs, + originalAmountOut, + bestTrades + ); + } + + public buildPercent(numerator: string, denominator?: string): Percentish { + return new Percent(numerator, denominator); + } + + public minimumAmountOut( + trade: Trade, + slippageTolerance: Percent + ): CurrencyAmount { + return trade.minimumAmountOut(slippageTolerance); + } + + public maximumAmountIn( + trade: Trade, + slippageTolerance: Percent + ): CurrencyAmount { + return trade.maximumAmountIn(slippageTolerance); + } + + public swapCallParameters( + trade: Trade, + tradeOptions: { + allowedSlippage: Percent; + ttl: number; + recipient: string; + feeOnTransfer?: boolean; + deadline?: number; + } + ): UniswapishSwapParameters { + return Router.swapCallParameters(trade, tradeOptions); + } +} diff --git a/src/connectors/openocean/openocean.config.ts b/src/connectors/openocean/openocean.config.ts new file mode 100644 index 0000000000..ccbb71152a --- /dev/null +++ b/src/connectors/openocean/openocean.config.ts @@ -0,0 +1,29 @@ +import { ConfigManagerV2 } from '../../services/config-manager-v2'; +import { AvailableNetworks } from '../../services/config-manager-types'; + +export namespace OpenoceanConfig { + export interface NetworkConfig { + allowedSlippage: string; + gasLimitEstimate: number; + ttl: number; + routerAddress: (network: string) => string; + tradingTypes: Array; + availableNetworks: Array; + } + + export const config: NetworkConfig = { + allowedSlippage: ConfigManagerV2.getInstance().get( + 'openocean.allowedSlippage' + ), + gasLimitEstimate: ConfigManagerV2.getInstance().get( + `pangolin.gasLimitEstimate` + ), + ttl: ConfigManagerV2.getInstance().get('openocean.ttl'), + routerAddress: (network: string) => + ConfigManagerV2.getInstance().get( + 'openocean.contractAddresses.' + network + '.routerAddress' + ), + tradingTypes: ['EVM_AMM'], + availableNetworks: [{ chain: 'avalanche', networks: ['avalanche'] }], + }; +} diff --git a/src/connectors/openocean/openocean.ts b/src/connectors/openocean/openocean.ts new file mode 100644 index 0000000000..160b50688f --- /dev/null +++ b/src/connectors/openocean/openocean.ts @@ -0,0 +1,412 @@ +import { percentRegexp } from '../../services/config-manager-v2'; +import { BigNumber, ContractInterface, Transaction, Wallet } from 'ethers'; +import { OpenoceanConfig } from './openocean.config'; +import { + Token, + TokenAmount, + Trade, + Pair, + TradeType, + Route, + Price, +} from '@uniswap/sdk'; +import Decimal from 'decimal.js-light'; +import axios from 'axios'; +import { logger } from '../../services/logger'; +import { Avalanche } from '../../chains/avalanche/avalanche'; +import { ExpectedTrade, Uniswapish } from '../../services/common-interfaces'; +import { + HttpException, + TRADE_FAILED_ERROR_CODE, + TRADE_FAILED_ERROR_MESSAGE, + UniswapishPriceError, + UNKNOWN_ERROR_ERROR_CODE, + UNKNOWN_ERROR_MESSAGE, +} from '../../services/error-handler'; + +export function newFakeTrade( + tokenIn: Token, + tokenOut: Token, + tokenInAmount: BigNumber, + tokenOutAmount: BigNumber +): Trade { + const baseAmount = new TokenAmount(tokenIn, tokenInAmount.toString()); + const quoteAmount = new TokenAmount(tokenOut, tokenOutAmount.toString()); + // Pair needs the reserves but this is not possible to pull in sushiswap contract + const pair = new Pair(baseAmount, quoteAmount); + const route = new Route([pair], tokenIn, tokenOut); + const trade = new Trade(route, baseAmount, TradeType.EXACT_INPUT); + // hack to set readonly component given we can't easily get pool token amounts + (trade.executionPrice as Price) = new Price( + tokenIn, + tokenOut, + tokenInAmount.toBigInt(), + tokenOutAmount.toBigInt() + ); + return trade; +} + +export class Openocean implements Uniswapish { + private static _instances: { [name: string]: Openocean }; + private avalanche: Avalanche; + private _chain: string; + private _router: string; + private _gasLimitEstimate: number; + private _ttl: number; + private chainId; + private tokenList: Record = {}; + private _ready: boolean = false; + + private constructor(chain: string, network: string) { + this._chain = chain; + const config = OpenoceanConfig.config; + this.avalanche = Avalanche.getInstance(network); + this.chainId = this.avalanche.chainId; + this._router = config.routerAddress(network); + this._ttl = config.ttl; + this._gasLimitEstimate = config.gasLimitEstimate; + } + + public static getInstance(chain: string, network: string): Openocean { + if (Openocean._instances === undefined) { + Openocean._instances = {}; + } + if (!(chain + network in Openocean._instances)) { + Openocean._instances[chain + network] = new Openocean(chain, network); + } + + return Openocean._instances[chain + network]; + } + + /** + * Given a token's address, return the connector's native representation of + * the token. + * + * @param address Token address + */ + public getTokenByAddress(address: string): Token { + return this.tokenList[address]; + } + + public async init() { + if (!this.avalanche.ready()) { + await this.avalanche.init(); + } + for (const token of this.avalanche.storedTokenList) { + this.tokenList[token.address] = new Token( + this.chainId, + token.address, + token.decimals, + token.symbol, + token.name + ); + } + this._ready = true; + } + + public ready(): boolean { + return this._ready; + } + + /** + * Router address. + */ + public get router(): string { + return this._router; + } + + /** + * Router smart contract ABI. + */ + public get routerAbi(): ContractInterface { + return ''; + } + + /** + * Default gas limit for swap transactions. + */ + public get gasLimitEstimate(): number { + return this._gasLimitEstimate; + } + + /** + * Default time-to-live for swap transactions, in seconds. + */ + public get ttl(): number { + return this._ttl; + } + + public get chainName(): string { + return this._chain === 'avalanche' ? 'avax' : this._chain; + } + + getSlippageNumberage(): number { + const allowedSlippage = OpenoceanConfig.config.allowedSlippage; + const nd = allowedSlippage.match(percentRegexp); + if (nd) return Number(nd[1]); + throw new Error( + 'Encountered a malformed percent string in the config for ALLOWED_SLIPPAGE.' + ); + } + + /** + * Given the amount of `baseToken` to put into a transaction, calculate the + * amount of `quoteToken` that can be expected from the transaction. + * + * This is typically used for calculating token sell prices. + * + * @param baseToken Token input for the transaction + * @param quoteToken Output from the transaction + * @param amount Amount of `baseToken` to put into the transaction + */ + async estimateSellTrade( + baseToken: Token, + quoteToken: Token, + amount: BigNumber + ): Promise { + logger.info( + `estimateSellTrade getting amounts out ${baseToken.address}-${quoteToken.address}.` + ); + + const reqAmount = new Decimal(amount.toString()) + .div(new Decimal((10 ** baseToken.decimals).toString())) + .toNumber(); + logger.info(`reqAmount:${reqAmount}`); + const gasPrice = this.avalanche.gasPrice; + let quoteRes; + try { + quoteRes = await axios.get( + `https://open-api.openocean.finance/v3/${this.chainName}/quote`, + { + params: { + inTokenAddress: baseToken.address, + outTokenAddress: quoteToken.address, + amount: reqAmount, + gasPrice: gasPrice, + }, + } + ); + } catch (e) { + if (e instanceof Error) { + logger.error(`Could not get trade info. ${e.message}`); + throw new HttpException( + 500, + TRADE_FAILED_ERROR_MESSAGE + e.message, + TRADE_FAILED_ERROR_CODE + ); + } else { + logger.error('Unknown error trying to get trade info.'); + throw new HttpException( + 500, + UNKNOWN_ERROR_MESSAGE, + UNKNOWN_ERROR_ERROR_CODE + ); + } + } + + if (quoteRes.status == 200) { + if ( + quoteRes.data.code == 200 && + Number(quoteRes.data.data.outAmount) > 0 + ) { + const quoteData = quoteRes.data.data; + const amounts = [quoteData.inAmount, quoteData.outAmount]; + const maximumOutput = new TokenAmount( + quoteToken, + amounts[1].toString() + ); + const trade = newFakeTrade( + baseToken, + quoteToken, + BigNumber.from(amounts[0]), + BigNumber.from(amounts[1]) + ); + return { trade: trade, expectedAmount: maximumOutput }; + } else { + throw new UniswapishPriceError( + `priceSwapIn: no trade pair found for ${baseToken.address} to ${quoteToken.address}.` + ); + } + } + throw new HttpException( + quoteRes.status, + `Could not get trade info. ${quoteRes.statusText}`, + TRADE_FAILED_ERROR_CODE + ); + } + + /** + * Given the amount of `baseToken` desired to acquire from a transaction, + * calculate the amount of `quoteToken` needed for the transaction. + * + * This is typically used for calculating token buy prices. + * + * @param quoteToken Token input for the transaction + * @param baseToken Token output from the transaction + * @param amount Amount of `baseToken` desired from the transaction + */ + async estimateBuyTrade( + quoteToken: Token, + baseToken: Token, + amount: BigNumber + ): Promise { + logger.info( + `estimateBuyTrade getting amounts in ${quoteToken.address}-${baseToken.address}.` + ); + + const reqAmount = new Decimal(amount.toString()) + .div(new Decimal((10 ** baseToken.decimals).toString())) + .toNumber(); + logger.info(`reqAmount:${reqAmount}`); + const gasPrice = this.avalanche.gasPrice; + let quoteRes; + try { + quoteRes = await axios.get( + `https://open-api.openocean.finance/v3/${this.chainName}/reverseQuote`, + { + params: { + inTokenAddress: baseToken.address, + outTokenAddress: quoteToken.address, + amount: reqAmount, + gasPrice: gasPrice, + }, + } + ); + } catch (e) { + if (e instanceof Error) { + logger.error(`Could not get trade info. ${e.message}`); + throw new HttpException( + 500, + TRADE_FAILED_ERROR_MESSAGE + e.message, + TRADE_FAILED_ERROR_CODE + ); + } else { + logger.error('Unknown error trying to get trade info.'); + throw new HttpException( + 500, + UNKNOWN_ERROR_MESSAGE, + UNKNOWN_ERROR_ERROR_CODE + ); + } + } + if (quoteRes.status == 200) { + if ( + quoteRes.data.code == 200 && + Number(quoteRes.data.data.reverseAmount) > 0 + ) { + const quoteData = quoteRes.data.data; + const amounts = [quoteData.reverseAmount, quoteData.inAmount]; + const minimumInput = new TokenAmount(quoteToken, amounts[0].toString()); + const trade = newFakeTrade( + quoteToken, + baseToken, + BigNumber.from(amounts[0]), + BigNumber.from(amounts[1]) + ); + return { trade: trade, expectedAmount: minimumInput }; + } else { + throw new UniswapishPriceError( + `priceSwapIn: no trade pair found for ${baseToken} to ${quoteToken}.` + ); + } + } + throw new HttpException( + quoteRes.status, + `Could not get trade info. ${quoteRes.statusText}`, + TRADE_FAILED_ERROR_CODE + ); + } + + /** + * Given a wallet and a Uniswap-ish trade, try to execute it on blockchain. + * + * @param wallet Wallet + * @param trade Expected trade + * @param gasPrice Base gas price, for pre-EIP1559 transactions + * @param openoceanRouter smart contract address + * @param ttl How long the swap is valid before expiry, in seconds + * @param abi Router contract ABI + * @param gasLimit Gas limit + * @param nonce (Optional) EVM transaction nonce + * @param maxFeePerGas (Optional) Maximum total fee per gas you want to pay + * @param maxPriorityFeePerGas (Optional) Maximum tip per gas you want to pay + */ + async executeTrade( + wallet: Wallet, + trade: Trade, + gasPrice: number, + openoceanRouter: string, + ttl: number, + abi: ContractInterface, + gasLimit: number, + nonce?: number, + maxFeePerGas?: BigNumber, + maxPriorityFeePerGas?: BigNumber + ): Promise { + logger.info( + `executeTrade ${openoceanRouter}-${ttl}-${abi}-${gasPrice}-${gasLimit}-${nonce}-${maxFeePerGas}-${maxPriorityFeePerGas}.` + ); + const inToken: any = trade.route.input; + const outToken: any = trade.route.output; + let swapRes; + try { + swapRes = await axios.get( + `https://open-api.openocean.finance/v3/${this.chainName}/swap_quote`, + { + params: { + inTokenAddress: inToken.address, + outTokenAddress: outToken.address, + amount: trade.inputAmount.toExact(), + slippage: this.getSlippageNumberage(), + account: wallet.address, + gasPrice: gasPrice.toString(), + }, + } + ); + } catch (e) { + if (e instanceof Error) { + logger.error(`Could not get trade info. ${e.message}`); + throw new HttpException( + 500, + TRADE_FAILED_ERROR_MESSAGE + e.message, + TRADE_FAILED_ERROR_CODE + ); + } else { + logger.error('Unknown error trying to get trade info.'); + throw new HttpException( + 500, + UNKNOWN_ERROR_MESSAGE, + UNKNOWN_ERROR_ERROR_CODE + ); + } + } + if (swapRes.status == 200 && swapRes.data.code == 200) { + const swapData = swapRes.data.data; + return this.avalanche.nonceManager.provideNonce( + nonce, + wallet.address, + async (nextNonce) => { + const gas = Math.ceil(Number(swapData.estimatedGas) * 1.15); + const trans = { + nonce: nextNonce, + from: swapData.from, + to: swapData.to, + gasLimit: BigNumber.from(gas.toString()), + data: swapData.data, + value: BigNumber.from(swapData.value), + chainId: this.chainId, + }; + const tx = await wallet.sendTransaction(trans); + logger.info(JSON.stringify(tx)); + + return tx; + } + ); + } + throw new HttpException( + swapRes.status, + `Could not get trade info. ${swapRes.statusText}`, + TRADE_FAILED_ERROR_CODE + ); + } +} diff --git a/src/connectors/pancakeswap/pancakeswap.config.ts b/src/connectors/pancakeswap/pancakeswap.config.ts new file mode 100644 index 0000000000..599fbb2bd9 --- /dev/null +++ b/src/connectors/pancakeswap/pancakeswap.config.ts @@ -0,0 +1,31 @@ +import { ConfigManagerV2 } from '../../services/config-manager-v2'; +import { AvailableNetworks } from '../../services/config-manager-types'; + +export namespace PancakeSwapConfig { + export interface ExchangeConfig { + allowedSlippage: string; + gasLimitEstimate: number; + ttl: number; + routerAddress: (network: string) => string; + tradingTypes: Array; + availableNetworks: Array; + } + + export const config: ExchangeConfig = { + allowedSlippage: ConfigManagerV2.getInstance().get( + 'pancakeswap.allowedSlippage' + ), + gasLimitEstimate: ConfigManagerV2.getInstance().get( + `pancakeswap.gasLimitEstimate` + ), + ttl: ConfigManagerV2.getInstance().get('pancakeswap.ttl'), + routerAddress: (network: string) => + ConfigManagerV2.getInstance().get( + 'pancakeswap.contractAddresses.' + network + '.routerAddress' + ), + tradingTypes: ['EVM_AMM'], + availableNetworks: [ + { chain: 'binance-smart-chain', networks: ['mainnet', 'testnet'] }, + ], + }; +} diff --git a/src/connectors/pancakeswap/pancakeswap.ts b/src/connectors/pancakeswap/pancakeswap.ts new file mode 100644 index 0000000000..9296dad496 --- /dev/null +++ b/src/connectors/pancakeswap/pancakeswap.ts @@ -0,0 +1,316 @@ +import { + Fetcher, + Pair, + Percent, + Router, + SwapParameters, + Token, + TokenAmount, + Trade, +} from '@pancakeswap/sdk'; +import { + BigNumber, + Contract, + ContractInterface, + ContractTransaction, + Transaction, + Wallet, +} from 'ethers'; +import { BinanceSmartChain } from '../../chains/binance-smart-chain/binance-smart-chain'; +import { ExpectedTrade, Uniswapish } from '../../services/common-interfaces'; +import { percentRegexp } from '../../services/config-manager-v2'; +import { + InitializationError, + SERVICE_UNITIALIZED_ERROR_CODE, + SERVICE_UNITIALIZED_ERROR_MESSAGE, + UniswapishPriceError, +} from '../../services/error-handler'; +import { logger } from '../../services/logger'; +import { isFractionString } from '../../services/validators'; +import { PancakeSwapConfig } from './pancakeswap.config'; +import routerAbi from './pancakeswap_router_abi.json'; + +export class PancakeSwap implements Uniswapish { + private static _instances: { [name: string]: PancakeSwap }; + private bsc: BinanceSmartChain; + private chainId; + + private _chain: string; + private _router: string; + private _routerAbi: ContractInterface; + private _gasLimitEstimate: number; + private _ttl: number; + private tokenList: Record = {}; + private _ready: boolean = false; + + private constructor(chain: string, network: string) { + const config = PancakeSwapConfig.config; + this.bsc = BinanceSmartChain.getInstance(network); + this.chainId = this.bsc.chainId; + + this._chain = chain; + this._router = config.routerAddress(network); + this._ttl = config.ttl; + this._routerAbi = routerAbi.abi; + this._gasLimitEstimate = config.gasLimitEstimate; + } + + public static getInstance(chain: string, network: string): PancakeSwap { + if (PancakeSwap._instances === undefined) { + PancakeSwap._instances = {}; + } + if (!(chain + network in PancakeSwap._instances)) { + PancakeSwap._instances[chain + network] = new PancakeSwap(chain, network); + } + + return PancakeSwap._instances[chain + network]; + } + + public async init() { + if (this._chain == 'binance-smart-chain' && !this.bsc.ready()) + throw new InitializationError( + SERVICE_UNITIALIZED_ERROR_MESSAGE('BinanceSmartChain'), + SERVICE_UNITIALIZED_ERROR_CODE + ); + for (const token of this.bsc.storedTokenList) { + this.tokenList[token.address] = new Token( + this.chainId, + token.address, + token.decimals, + token.symbol, + token.name + ); + } + this._ready = true; + } + + /* + * Given a token's address, return the connector's native representation of + * the token. + * + * @param address Token address + */ + public getTokenByAddress(address: string): Token { + return this.tokenList[address]; + } + + /** + * Determines if the connector is ready. + */ + public ready(): boolean { + return this._ready; + } + + /** + * Router address. + */ + public get router(): string { + return this._router; + } + + /** + * Router smart contract ABI. + */ + public get routerAbi(): ContractInterface { + return this._routerAbi; + } + + /** + * Default gas limit for swap transactions. + */ + public get gasLimitEstimate(): number { + return this._gasLimitEstimate; + } + + /** + * Default time-to-live for swap transactions, in seconds. + */ + public get ttl(): number { + return this._ttl; + } + + /** + * Gets the allowed slippage percent from the optional parameter or the value + * in the configuration. + * + * @param allowedSlippageStr (Optional) should be of the form '1/10'. + */ + public getAllowedSlippage(allowedSlippageStr?: string): Percent { + if (allowedSlippageStr != null && isFractionString(allowedSlippageStr)) { + const fractionSplit = allowedSlippageStr.split('/'); + return new Percent(fractionSplit[0], fractionSplit[1]); + } + + const allowedSlippage = PancakeSwapConfig.config.allowedSlippage; + const matches = allowedSlippage.match(percentRegexp); + if (matches) return new Percent(matches[1], matches[2]); + throw new Error( + 'Encountered a malformed percent string in the config for ALLOWED_SLIPPAGE.' + ); + } + + /** + * Given the amount of `baseToken` desired to acquire from a transaction, + * calculate the amount of `quoteToken` needed for the transaction. + * + * This is typically used for calculating token buy prices. + * + * @param quoteToken Token input for the transaction + * @param baseToken Token output from the transaction + * @param amount Amount of `baseToken` desired from the transaction + * @param allowedSlippage (Optional) Fraction in string representing the allowed slippage for this transaction + */ + async estimateBuyTrade( + quoteToken: Token, + baseToken: Token, + amount: BigNumber, + allowedSlippage?: string + ): Promise { + const nativeTokenAmount: TokenAmount = new TokenAmount( + baseToken, + amount.toString() + ); + logger.info( + `Fetching pair data for ${quoteToken.address}-${baseToken.address}.` + ); + const pair: Pair = await Fetcher.fetchPairData( + quoteToken, + baseToken, + this.bsc.provider + ); + const trades: Trade[] = Trade.bestTradeExactOut( + [pair], + quoteToken, + nativeTokenAmount, + { maxHops: 1 } + ); + if (!trades || trades.length === 0) { + throw new UniswapishPriceError( + `priceSwapOut: no trade pair found for ${quoteToken.address} to ${baseToken.address}.` + ); + } + logger.info( + `Best trade for ${quoteToken.address}-${baseToken.address}: ` + + `${trades[0].executionPrice.invert().toFixed(6)} ` + + `${baseToken.name}.` + ); + + const expectedAmount = trades[0].maximumAmountIn( + this.getAllowedSlippage(allowedSlippage) + ); + return { trade: trades[0], expectedAmount }; + } + + /** + * Given the amount of `baseToken` to put into a transaction, calculate the + * amount of `quoteToken` that can be expected from the transaction. + * + * This is typically used for calculating token sell prices. + * + * @param baseToken Token input for the transaction + * @param quoteToken Output from the transaction + * @param amount Amount of `baseToken` to put into the transaction + * @param allowedSlippage (Optional) Fraction in string representing the allowed slippage for this transaction + */ + async estimateSellTrade( + baseToken: Token, + quoteToken: Token, + amount: BigNumber, + allowedSlippage?: string + ): Promise { + const nativeTokenAmount: TokenAmount = new TokenAmount( + baseToken, + amount.toString() + ); + logger.info( + `Fetching pair data for ${baseToken.address}-${quoteToken.address}.` + ); + + const pair: Pair = await Fetcher.fetchPairData( + baseToken, + quoteToken, + this.bsc.provider + ); + const trades: Trade[] = Trade.bestTradeExactIn( + [pair], + nativeTokenAmount, + quoteToken, + { maxHops: 1 } + ); + if (!trades || trades.length === 0) { + throw new UniswapishPriceError( + `priceSwapIn: no trade pair found for ${baseToken} to ${quoteToken}.` + ); + } + logger.info( + `Best trade for ${baseToken.address}-${quoteToken.address}: ` + + `${trades[0].executionPrice.toFixed(6)}` + + `${baseToken.name}.` + ); + const expectedAmount = trades[0].minimumAmountOut( + this.getAllowedSlippage(allowedSlippage) + ); + return { trade: trades[0], expectedAmount }; + } + + /** + * Given a wallet and a Uniswap trade, try to execute it on blockchain. + * + * @param wallet Wallet + * @param trade Expected trade + * @param gasPrice Base gas price, for pre-EIP1559 transactions + * @param pancakeswapRouter Router smart contract address + * @param ttl How long the swap is valid before expiry, in seconds + * @param abi Router contract ABI + * @param gasLimit Gas limit + * @param nonce (Optional) EVM transaction nonce + * @param maxFeePerGas (Optional) Maximum total fee per gas you want to pay + * @param maxPriorityFeePerGas (Optional) Maximum tip per gas you want to pay + * @param allowedSlippage (Optional) Fraction in string representing the allowed slippage for this transaction + */ + async executeTrade( + wallet: Wallet, + trade: Trade, + gasPrice: number, + pancakeswapRouter: string, + ttl: number, + abi: ContractInterface, + gasLimit: number, + nonce?: number, + maxFeePerGas?: BigNumber, + maxPriorityFeePerGas?: BigNumber, + allowedSlippage?: string + ): Promise { + const result: SwapParameters = Router.swapCallParameters(trade, { + ttl, + recipient: wallet.address, + allowedSlippage: this.getAllowedSlippage(allowedSlippage), + }); + + const contract: Contract = new Contract(pancakeswapRouter, abi, wallet); + if (nonce === undefined) { + nonce = await this.bsc.nonceManager.getNextNonce(wallet.address); + } + let tx: ContractTransaction; + if (maxFeePerGas || maxPriorityFeePerGas) { + tx = await contract[result.methodName](...result.args, { + gasLimit: gasLimit, + value: result.value, + nonce: nonce, + maxFeePerGas, + maxPriorityFeePerGas, + }); + } else { + tx = await contract[result.methodName](...result.args, { + gasPrice: (gasPrice * 1e9).toFixed(0), + gasLimit: gasLimit.toFixed(0), + value: result.value, + nonce: nonce, + }); + } + + logger.info(`Transaction Details: ${JSON.stringify(tx)}`); + await this.bsc.nonceManager.commitNonce(wallet.address, nonce); + return tx; + } +} diff --git a/src/connectors/pancakeswap/pancakeswap_router_abi.json b/src/connectors/pancakeswap/pancakeswap_router_abi.json new file mode 100644 index 0000000000..96c20e112e --- /dev/null +++ b/src/connectors/pancakeswap/pancakeswap_router_abi.json @@ -0,0 +1,975 @@ +{ + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_factory", + "type": "address" + }, + { + "internalType": "address", + "name": "_WETH", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "WETH", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountADesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "addLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountTokenDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "addLiquidityETH", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "factory", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveOut", + "type": "uint256" + } + ], + "name": "getAmountIn", + "outputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveOut", + "type": "uint256" + } + ], + "name": "getAmountOut", + "outputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + } + ], + "name": "getAmountsIn", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + } + ], + "name": "getAmountsOut", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveB", + "type": "uint256" + } + ], + "name": "quote", + "outputs": [ + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidityETH", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidityETHSupportingFeeOnTransferTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityETHWithPermit", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityETHWithPermitSupportingFeeOnTransferTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityWithPermit", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapETHForExactTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactETHForTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactETHForTokensSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForETH", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForETHSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForTokensSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountInMax", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapTokensForExactETH", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountInMax", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapTokensForExactTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ] +} diff --git a/src/connectors/pangolin/IPangolinRouter.json b/src/connectors/pangolin/IPangolinRouter.json new file mode 100644 index 0000000000..e9a153fcc7 --- /dev/null +++ b/src/connectors/pangolin/IPangolinRouter.json @@ -0,0 +1,962 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IPangolinRouter", + "sourceName": "contracts/pangolin-periphery/interfaces/IPangolinRouter.sol", + "abi": [ + { + "inputs": [], + "name": "WAVAX", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountADesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "addLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountTokenDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAVAXMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "addLiquidityAVAX", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAVAX", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "factory", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveOut", + "type": "uint256" + } + ], + "name": "getAmountIn", + "outputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveOut", + "type": "uint256" + } + ], + "name": "getAmountOut", + "outputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + } + ], + "name": "getAmountsIn", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + } + ], + "name": "getAmountsOut", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveB", + "type": "uint256" + } + ], + "name": "quote", + "outputs": [ + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAVAXMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidityAVAX", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAVAX", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAVAXMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidityAVAXSupportingFeeOnTransferTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "amountAVAX", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAVAXMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityAVAXWithPermit", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAVAX", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAVAXMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityAVAXWithPermitSupportingFeeOnTransferTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "amountAVAX", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityWithPermit", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapAVAXForExactTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactAVAXForTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactAVAXForTokensSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForAVAX", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForAVAXSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForTokensSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountInMax", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapTokensForExactAVAX", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountInMax", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapTokensForExactTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/src/connectors/pangolin/pangolin.config.ts b/src/connectors/pangolin/pangolin.config.ts new file mode 100644 index 0000000000..13aa570ef7 --- /dev/null +++ b/src/connectors/pangolin/pangolin.config.ts @@ -0,0 +1,31 @@ +import { ConfigManagerV2 } from '../../services/config-manager-v2'; +import { AvailableNetworks } from '../../services/config-manager-types'; + +export namespace PangolinConfig { + export interface NetworkConfig { + allowedSlippage: string; + gasLimitEstimate: number; + ttl: number; + routerAddress: (network: string) => string; + tradingTypes: Array; + availableNetworks: Array; + } + + export const config: NetworkConfig = { + allowedSlippage: ConfigManagerV2.getInstance().get( + 'pangolin.allowedSlippage' + ), + gasLimitEstimate: ConfigManagerV2.getInstance().get( + `pangolin.gasLimitEstimate` + ), + ttl: ConfigManagerV2.getInstance().get('pangolin.ttl'), + routerAddress: (network: string) => + ConfigManagerV2.getInstance().get( + 'pangolin.contractAddresses.' + network + '.routerAddress' + ), + tradingTypes: ['EVM_AMM'], + availableNetworks: [ + { chain: 'avalanche', networks: ['avalanche', 'fuji'] }, + ], + }; +} diff --git a/src/connectors/pangolin/pangolin.ts b/src/connectors/pangolin/pangolin.ts new file mode 100644 index 0000000000..bc0a149e42 --- /dev/null +++ b/src/connectors/pangolin/pangolin.ts @@ -0,0 +1,295 @@ +import { percentRegexp } from '../../services/config-manager-v2'; +import { UniswapishPriceError } from '../../services/error-handler'; +import { + BigNumber, + Contract, + ContractInterface, + ContractTransaction, + Transaction, + Wallet, +} from 'ethers'; +import { isFractionString } from '../../services/validators'; +import { PangolinConfig } from './pangolin.config'; +import routerAbi from './IPangolinRouter.json'; +import { + Fetcher, + Percent, + Router, + Token, + TokenAmount, + Trade, + Pair, +} from '@pangolindex/sdk'; +import { logger } from '../../services/logger'; +import { Avalanche } from '../../chains/avalanche/avalanche'; +import { ExpectedTrade, Uniswapish } from '../../services/common-interfaces'; + +export class Pangolin implements Uniswapish { + private static _instances: { [name: string]: Pangolin }; + private avalanche: Avalanche; + private _router: string; + private _routerAbi: ContractInterface; + private _gasLimitEstimate: number; + private _ttl: number; + private chainId; + private tokenList: Record = {}; + private _ready: boolean = false; + + private constructor(network: string) { + const config = PangolinConfig.config; + this.avalanche = Avalanche.getInstance(network); + this.chainId = this.avalanche.chainId; + this._router = config.routerAddress(network); + this._ttl = config.ttl; + this._routerAbi = routerAbi.abi; + this._gasLimitEstimate = config.gasLimitEstimate; + } + + public static getInstance(chain: string, network: string): Pangolin { + if (Pangolin._instances === undefined) { + Pangolin._instances = {}; + } + if (!(chain + network in Pangolin._instances)) { + Pangolin._instances[chain + network] = new Pangolin(network); + } + + return Pangolin._instances[chain + network]; + } + + /** + * Given a token's address, return the connector's native representation of + * the token. + * + * @param address Token address + */ + public getTokenByAddress(address: string): Token { + return this.tokenList[address]; + } + + public async init() { + if (!this.avalanche.ready()) { + await this.avalanche.init(); + } + for (const token of this.avalanche.storedTokenList) { + this.tokenList[token.address] = new Token( + this.chainId, + token.address, + token.decimals, + token.symbol, + token.name + ); + } + this._ready = true; + } + + public ready(): boolean { + return this._ready; + } + + /** + * Router address. + */ + public get router(): string { + return this._router; + } + + /** + * Router smart contract ABI. + */ + public get routerAbi(): ContractInterface { + return this._routerAbi; + } + + /** + * Default gas limit for swap transactions. + */ + public get gasLimitEstimate(): number { + return this._gasLimitEstimate; + } + + /** + * Default time-to-live for swap transactions, in seconds. + */ + public get ttl(): number { + return this._ttl; + } + + /** + * Gets the allowed slippage percent from the optional parameter or the value + * in the configuration. + * + * @param allowedSlippageStr (Optional) should be of the form '1/10'. + */ + public getAllowedSlippage(allowedSlippageStr?: string): Percent { + if (allowedSlippageStr != null && isFractionString(allowedSlippageStr)) { + const fractionSplit = allowedSlippageStr.split('/'); + return new Percent(fractionSplit[0], fractionSplit[1]); + } + + const allowedSlippage = PangolinConfig.config.allowedSlippage; + const nd = allowedSlippage.match(percentRegexp); + if (nd) return new Percent(nd[1], nd[2]); + throw new Error( + 'Encountered a malformed percent string in the config for ALLOWED_SLIPPAGE.' + ); + } + + /** + * Given the amount of `baseToken` to put into a transaction, calculate the + * amount of `quoteToken` that can be expected from the transaction. + * + * This is typically used for calculating token sell prices. + * + * @param baseToken Token input for the transaction + * @param quoteToken Output from the transaction + * @param amount Amount of `baseToken` to put into the transaction + */ + async estimateSellTrade( + baseToken: Token, + quoteToken: Token, + amount: BigNumber, + allowedSlippage?: string + ): Promise { + const nativeTokenAmount: TokenAmount = new TokenAmount( + baseToken, + amount.toString() + ); + logger.info( + `Fetching pair data for ${baseToken.address}-${quoteToken.address}.` + ); + const pair: Pair = await Fetcher.fetchPairData( + baseToken, + quoteToken, + this.avalanche.provider + ); + const trades: Trade[] = Trade.bestTradeExactIn( + [pair], + nativeTokenAmount, + quoteToken, + { maxHops: 1 } + ); + if (!trades || trades.length === 0) { + throw new UniswapishPriceError( + `priceSwapIn: no trade pair found for ${baseToken} to ${quoteToken}.` + ); + } + logger.info( + `Best trade for ${baseToken.address}-${quoteToken.address}: ${trades[0]}` + ); + const expectedAmount = trades[0].minimumAmountOut( + this.getAllowedSlippage(allowedSlippage) + ); + return { trade: trades[0], expectedAmount }; + } + + /** + * Given the amount of `baseToken` desired to acquire from a transaction, + * calculate the amount of `quoteToken` needed for the transaction. + * + * This is typically used for calculating token buy prices. + * + * @param quoteToken Token input for the transaction + * @param baseToken Token output from the transaction + * @param amount Amount of `baseToken` desired from the transaction + */ + async estimateBuyTrade( + quoteToken: Token, + baseToken: Token, + amount: BigNumber, + allowedSlippage?: string + ): Promise { + const nativeTokenAmount: TokenAmount = new TokenAmount( + baseToken, + amount.toString() + ); + logger.info( + `Fetching pair data for ${quoteToken.address}-${baseToken.address}.` + ); + const pair: Pair = await Fetcher.fetchPairData( + quoteToken, + baseToken, + this.avalanche.provider + ); + const trades: Trade[] = Trade.bestTradeExactOut( + [pair], + quoteToken, + nativeTokenAmount, + { maxHops: 1 } + ); + if (!trades || trades.length === 0) { + throw new UniswapishPriceError( + `priceSwapOut: no trade pair found for ${quoteToken.address} to ${baseToken.address}.` + ); + } + logger.info( + `Best trade for ${quoteToken.address}-${baseToken.address}: ${trades[0]}` + ); + + const expectedAmount = trades[0].maximumAmountIn( + this.getAllowedSlippage(allowedSlippage) + ); + return { trade: trades[0], expectedAmount }; + } + + /** + * Given a wallet and a Uniswap-ish trade, try to execute it on blockchain. + * + * @param wallet Wallet + * @param trade Expected trade + * @param gasPrice Base gas price, for pre-EIP1559 transactions + * @param pangolinRouter smart contract address + * @param ttl How long the swap is valid before expiry, in seconds + * @param abi Router contract ABI + * @param gasLimit Gas limit + * @param nonce (Optional) EVM transaction nonce + * @param maxFeePerGas (Optional) Maximum total fee per gas you want to pay + * @param maxPriorityFeePerGas (Optional) Maximum tip per gas you want to pay + */ + async executeTrade( + wallet: Wallet, + trade: Trade, + gasPrice: number, + pangolinRouter: string, + ttl: number, + abi: ContractInterface, + gasLimit: number, + nonce?: number, + maxFeePerGas?: BigNumber, + maxPriorityFeePerGas?: BigNumber, + allowedSlippage?: string + ): Promise { + const result = Router.swapCallParameters(trade, { + ttl, + recipient: wallet.address, + allowedSlippage: this.getAllowedSlippage(allowedSlippage), + }); + + const contract = new Contract(pangolinRouter, abi, wallet); + return this.avalanche.nonceManager.provideNonce( + nonce, + wallet.address, + async (nextNonce) => { + let tx: ContractTransaction; + if (maxFeePerGas || maxPriorityFeePerGas) { + tx = await contract[result.methodName](...result.args, { + gasLimit: gasLimit, + value: result.value, + nonce: nextNonce, + maxFeePerGas, + maxPriorityFeePerGas, + }); + } else { + tx = await contract[result.methodName](...result.args, { + gasPrice: (gasPrice * 1e9).toFixed(0), + gasLimit: gasLimit.toFixed(0), + value: result.value, + nonce: nextNonce, + }); + } + + logger.info(JSON.stringify(tx)); + return tx; + } + ); + } +} diff --git a/src/connectors/perp/perp.config.ts b/src/connectors/perp/perp.config.ts new file mode 100644 index 0000000000..7dfdaba74c --- /dev/null +++ b/src/connectors/perp/perp.config.ts @@ -0,0 +1,18 @@ +import { ConfigManagerV2 } from '../../services/config-manager-v2'; +import { AvailableNetworks } from '../../services/config-manager-types'; +export namespace PerpConfig { + export interface NetworkConfig { + allowedSlippage: string; + ttl: number; + tradingTypes: (type: string) => Array; + availableNetworks: Array; + } + + export const config: NetworkConfig = { + allowedSlippage: ConfigManagerV2.getInstance().get(`perp.allowedSlippage`), + ttl: ConfigManagerV2.getInstance().get(`perp.versions.ttl`), + tradingTypes: (type: string) => + type === 'perp' ? ['EVM_Perpetual'] : ['EVM_AMM_LP'], + availableNetworks: [{ chain: 'ethereum', networks: ['optimism'] }], + }; +} diff --git a/src/connectors/perp/perp.controllers.ts b/src/connectors/perp/perp.controllers.ts new file mode 100644 index 0000000000..06f792c1f8 --- /dev/null +++ b/src/connectors/perp/perp.controllers.ts @@ -0,0 +1,229 @@ +import { Transaction } from 'ethers'; +import { + HttpException, + TOKEN_NOT_SUPPORTED_ERROR_CODE, + TOKEN_NOT_SUPPORTED_ERROR_MESSAGE, + INCOMPLETE_REQUEST_PARAM, + INCOMPLETE_REQUEST_PARAM_CODE, + UNKNOWN_ERROR_ERROR_CODE, + UNKNOWN_ERROR_MESSAGE, +} from '../../services/error-handler'; +import { TokenInfo } from '../../services/ethereum-base'; +import { latency, gasCostInEthString } from '../../services/base'; +import { + Ethereumish, + Tokenish, + Perpish, +} from '../../services/common-interfaces'; +import { logger } from '../../services/logger'; +import { + EstimateGasResponse, + PriceRequest, + PerpPricesResponse, + PerpCreateTakerRequest, + PerpCreateTakerResponse, + PerpAvailablePairsResponse, + PerpPositionRequest, + PerpPositionResponse, + PerpMarketRequest, + PerpMarketResponse, + PerpBalanceResponse, +} from '../../amm/amm.requests'; +import { PerpPosition } from './perp'; + +export async function getPriceData( + ethereumish: Ethereumish, + perpish: Perpish, + req: PriceRequest +): Promise { + const startTimestamp: number = Date.now(); + let prices; + try { + prices = await perpish.prices(`${req.base}${req.quote}`); + } catch (e) { + throw new HttpException( + 500, + UNKNOWN_ERROR_MESSAGE, + UNKNOWN_ERROR_ERROR_CODE + ); + } + + return { + network: ethereumish.chain, + timestamp: startTimestamp, + latency: latency(startTimestamp, Date.now()), + base: req.base, + quote: req.quote, + markPrice: prices.markPrice.toString(), + indexPrice: prices.indexPrice.toString(), + indexTwapPrice: prices.indexTwapPrice.toString(), + }; +} + +export async function getAvailablePairs( + ethereumish: Ethereumish, + perpish: Perpish +): Promise { + const startTimestamp: number = Date.now(); + return { + network: ethereumish.chain, + timestamp: startTimestamp, + latency: latency(startTimestamp, Date.now()), + pairs: perpish.availablePairs(), + }; +} + +export async function checkMarketStatus( + ethereumish: Ethereumish, + perpish: Perpish, + req: PerpMarketRequest +): Promise { + const startTimestamp: number = Date.now(); + const status = await perpish.isMarketActive(`${req.base}${req.quote}`); + return { + network: ethereumish.chain, + timestamp: startTimestamp, + latency: latency(startTimestamp, Date.now()), + base: req.base, + quote: req.quote, + isActive: status, + }; +} + +export async function getPosition( + ethereumish: Ethereumish, + perpish: Perpish, + req: PerpPositionRequest +): Promise { + const startTimestamp: number = Date.now(); + const position = await perpish.getPositions(`${req.base}${req.quote}`); + return { + network: ethereumish.chain, + timestamp: startTimestamp, + latency: latency(startTimestamp, Date.now()), + base: req.base, + quote: req.quote, + ...(position as PerpPosition), + }; +} + +export async function createTakerOrder( + ethereumish: Ethereumish, + perpish: Perpish, + req: PerpCreateTakerRequest, + isOpen: boolean +): Promise { + const startTimestamp: number = Date.now(); + + const gasPrice: number = ethereumish.gasPrice; + let tx: Transaction; + + if (isOpen) { + if (!req.amount && !req.side) { + throw new HttpException( + 500, + INCOMPLETE_REQUEST_PARAM, + INCOMPLETE_REQUEST_PARAM_CODE + ); + } + + tx = await perpish.openPosition( + req.side === 'LONG' ? true : false, + `${req.base}${req.quote}`, + req.amount as string, + req.allowedSlippage + ); + } else { + tx = await perpish.closePosition( + `${req.base}${req.quote}`, + req.allowedSlippage + ); + } + + await ethereumish.txStorage.saveTx( + ethereumish.chain, + ethereumish.chainId, + tx.hash as string, + new Date(), + ethereumish.gasPrice + ); + + logger.info( + `Order has been sent, txHash is ${tx.hash}, nonce is ${tx.nonce}, gasPrice is ${gasPrice}.` + ); + + return { + network: ethereumish.chain, + timestamp: startTimestamp, + latency: latency(startTimestamp, Date.now()), + base: req.base, + quote: req.quote, + amount: req.amount ? req.amount : '0', + gasPrice: gasPrice, + gasPriceToken: ethereumish.nativeTokenSymbol, + gasLimit: perpish.gasLimit, + gasCost: gasCostInEthString(gasPrice, perpish.gasLimit), + nonce: tx.nonce, + txHash: tx.hash, + }; +} + +export function getFullTokenFromSymbol( + ethereumish: Ethereumish, + perpish: Perpish, + tokenSymbol: string +): Tokenish { + const tokenInfo: TokenInfo | undefined = + ethereumish.getTokenBySymbol(tokenSymbol); + let fullToken: Tokenish | undefined; + if (tokenInfo) { + fullToken = perpish.getTokenByAddress(tokenInfo.address); + } + if (!fullToken) + throw new HttpException( + 500, + TOKEN_NOT_SUPPORTED_ERROR_MESSAGE + tokenSymbol, + TOKEN_NOT_SUPPORTED_ERROR_CODE + ); + return fullToken; +} + +export async function estimateGas( + ethereumish: Ethereumish, + perpish: Perpish +): Promise { + const gasPrice: number = ethereumish.gasPrice; + const gasLimit: number = perpish.gasLimit; + return { + network: ethereumish.chain, + timestamp: Date.now(), + gasPrice, + gasPriceToken: ethereumish.nativeTokenSymbol, + gasLimit, + gasCost: gasCostInEthString(gasPrice, gasLimit), + }; +} + +export async function getAccountValue( + ethereumish: Ethereumish, + perpish: Perpish +): Promise { + const startTimestamp: number = Date.now(); + let value; + try { + value = await perpish.getAccountValue(); + } catch (e) { + throw new HttpException( + 500, + UNKNOWN_ERROR_MESSAGE, + UNKNOWN_ERROR_ERROR_CODE + ); + } + + return { + network: ethereumish.chain, + timestamp: startTimestamp, + latency: latency(startTimestamp, Date.now()), + balance: value.toString(), + }; +} diff --git a/src/connectors/perp/perp.ts b/src/connectors/perp/perp.ts new file mode 100644 index 0000000000..0590673c52 --- /dev/null +++ b/src/connectors/perp/perp.ts @@ -0,0 +1,293 @@ +import { + HttpException, + InitializationError, + LOAD_WALLET_ERROR_CODE, + LOAD_WALLET_ERROR_MESSAGE, + SERVICE_UNITIALIZED_ERROR_CODE, + SERVICE_UNITIALIZED_ERROR_MESSAGE, +} from '../../services/error-handler'; +import { isFractionString } from '../../services/validators'; +import { PerpConfig } from './perp.config'; +import { + PerpetualProtocol, + MarketStatus, + Position, + Positions, + PositionSide, + ClearingHouse, +} from '@perp/sdk-curie'; +import { Token } from '@uniswap/sdk'; +import { Big } from 'big.js'; +import { Transaction, Wallet } from 'ethers'; +import { logger } from '../../services/logger'; +import { percentRegexp } from '../../services/config-manager-v2'; +import { Ethereum } from '../../chains/ethereum/ethereum'; +import { Perpish } from '../../services/common-interfaces'; + +export interface PerpPosition { + positionAmt: string; + positionSide: string; + unrealizedProfit: string; + leverage: string; + entryPrice: string; + tickerSymbol: string; + pendingFundingPayment: string; +} + +export class Perp implements Perpish { + private static _instances: { [name: string]: Perp }; + private ethereum: Ethereum; + private _perp: PerpetualProtocol; + private _address: string; + private _wallet?: Wallet; + private _chain: string; + private chainId; + private tokenList: Record = {}; + private _ready: boolean = false; + public gasLimit = 16000000; // Default from perpfi https://github.com/perpetual-protocol/sdk-curie/blob/6211010ce6ddeb24312085775fc7e64336e426da/src/transactionSender/index.ts#L44 + + private constructor(chain: string, network: string, address?: string) { + this._chain = chain; + this.ethereum = Ethereum.getInstance(network); + this.chainId = this.ethereum.chainId; + this._perp = new PerpetualProtocol({ + chainId: this.chainId, + providerConfigs: [{ rpcUrl: this.ethereum.rpcUrl }], + }); + this._address = address ? address : ''; + } + + public get perp(): PerpetualProtocol { + return this._perp; + } + + public static getInstance( + chain: string, + network: string, + address?: string + ): Perp { + if (Perp._instances === undefined) { + Perp._instances = {}; + } + + if (!(chain + network + address in Perp._instances)) { + Perp._instances[chain + network + address] = new Perp( + chain, + network, + address + ); + } + + return Perp._instances[chain + network + address]; + } + + /** + * Given a token's address, return the connector's native representation of + * the token. + * + * @param address Token address + */ + public getTokenByAddress(address: string): Token { + return this.tokenList[address]; + } + + public async init() { + if (this._chain == 'ethereum' && !this.ethereum.ready()) + throw new InitializationError( + SERVICE_UNITIALIZED_ERROR_MESSAGE('ETH'), + SERVICE_UNITIALIZED_ERROR_CODE + ); + for (const token of this.ethereum.storedTokenList) { + this.tokenList[token.address] = new Token( + this.chainId, + token.address, + token.decimals, + token.symbol, + token.name + ); + } + await this._perp.init(); + if (this._address !== '') { + try { + this._wallet = await this.ethereum.getWallet(this._address); + } catch (err) { + logger.error(`Wallet ${this._address} not available.`); + throw new HttpException( + 500, + LOAD_WALLET_ERROR_MESSAGE + err, + LOAD_WALLET_ERROR_CODE + ); + } + + await this._perp.connect({ signer: this._wallet }); + logger.info( + `${this._wallet.address} wallet connected on perp ${this._chain}.` + ); + } + this._ready = true; + } + + public ready(): boolean { + return this._ready; + } + + /** + * Gets the allowed slippage percent from the optional parameter or the value + * in the configuration. + * + * @param allowedSlippageStr (Optional) should be of the form '1/10'. + */ + public getAllowedSlippage(allowedSlippageStr?: string): number { + let allowedSlippage; + if (allowedSlippageStr != null && isFractionString(allowedSlippageStr)) { + allowedSlippage = allowedSlippageStr; + } else allowedSlippage = PerpConfig.config.allowedSlippage; + const nd = allowedSlippage.match(percentRegexp); + if (nd) return Number(nd[1]) / Number(nd[2]); + throw new Error( + 'Encountered a malformed percent string in the config for ALLOWED_SLIPPAGE.' + ); + } + + /** + * @returns a list of available marker pairs. + */ + availablePairs(): string[] { + return Object.keys(this._perp.markets.marketMap); + } + + /** + * Queries for the market, index and indexTwap prices for a given market pair. + * @param tickerSymbol Market pair + */ + async prices(tickerSymbol: string): Promise<{ + markPrice: Big; + indexPrice: Big; + indexTwapPrice: Big; + }> { + const market = this._perp.markets.getMarket({ tickerSymbol }); + return await market.getPrices({ cache: false }); + } + + /** + * Used to know if a market is active/tradable. + * @param tickerSymbol Market pair + * @returns true | false + */ + async isMarketActive(tickerSymbol: string): Promise { + const market = this._perp.markets.getMarket({ tickerSymbol }); + return (await market.getStatus()) === MarketStatus.ACTIVE ? true : false; + } + + /** + * Gets available Position. + * @param tickerSymbol An optional parameter to get specific position. + * @returns Return all Positions or specific position. + */ + async getPositions(tickerSymbol: string): Promise { + const positions = this._perp.positions; + let positionAmt: string = '0', + positionSide: string = '', + unrealizedProfit: string = '0', + leverage: string = '1', + entryPrice: string = '0', + pendingFundingPayment: string = '0'; + if (positions && tickerSymbol) { + const fp = await positions.getTotalPendingFundingPayments({ + cache: false, + }); + for (const [key, value] of Object.entries(fp)) { + if (key === tickerSymbol) pendingFundingPayment = value.toString(); + } + + const position = await positions.getTakerPositionByTickerSymbol( + tickerSymbol, + { cache: false } + ); + if (position) { + positionSide = PositionSide[position.side]; + unrealizedProfit = ( + await position.getUnrealizedPnl({ cache: false }) + ).toString(); + leverage = '1'; + entryPrice = position.entryPrice.toString(); + positionAmt = position.sizeAbs.toString(); + } + } + return { + positionAmt, + positionSide, + unrealizedProfit, + leverage, + entryPrice, + tickerSymbol, + pendingFundingPayment, + }; + } + + /** + * Given the necessary parameters, open a position. + * @param isLong Will create a long position if true, else a short pos will be created. + * @param tickerSymbol the market to create position on. + * @param minBaseAmount the min amount for the position to be opened. + * @returns An ethers transaction object. + */ + async openPosition( + isLong: boolean, + tickerSymbol: string, + minBaseAmount: string, + allowedSlippage?: string + ): Promise { + let slippage: Big; + if (allowedSlippage) + slippage = new Big(this.getAllowedSlippage(allowedSlippage).toString()); + else slippage = new Big(this.getAllowedSlippage().toString()); + const amountInput = new Big(minBaseAmount); + const side = isLong ? PositionSide.LONG : PositionSide.SHORT; + const isAmountInputBase = false; // we are not using base token to open position. + const clearingHouse = this._perp.clearingHouse as ClearingHouse; + + const newPositionDraft = clearingHouse.createPositionDraft({ + tickerSymbol, + side, + amountInput, + isAmountInputBase, + }); + return (await clearingHouse.openPosition(newPositionDraft, slippage)) + .transaction; + } + + /** + * Closes an open position on the specified market. + * @param tickerSymbol The market on which we want to close position. + * @returns An ethers transaction object. + */ + async closePosition( + tickerSymbol: string, + allowedSlippage?: string + ): Promise { + let slippage: Big; + if (allowedSlippage) + slippage = new Big(this.getAllowedSlippage(allowedSlippage).toString()); + else slippage = new Big(this.getAllowedSlippage().toString()); + const clearingHouse = this._perp.clearingHouse as ClearingHouse; + const positions = this._perp.positions as Positions; + const position = await positions.getTakerPositionByTickerSymbol( + tickerSymbol + ); + if (!position) { + throw new Error(`No active position on ${tickerSymbol}.`); + } + return (await clearingHouse.closePosition(position as Position, slippage)) + .transaction; + } + + /** + * Function for getting account value + * @returns account value + */ + async getAccountValue(): Promise { + const clearingHouse = this._perp.clearingHouse as ClearingHouse; + return await clearingHouse.getAccountValue(); + } +} diff --git a/src/connectors/quickswap/quickswap.config.ts b/src/connectors/quickswap/quickswap.config.ts new file mode 100644 index 0000000000..9af5ca8938 --- /dev/null +++ b/src/connectors/quickswap/quickswap.config.ts @@ -0,0 +1,29 @@ +import { ConfigManagerV2 } from '../../services/config-manager-v2'; +import { AvailableNetworks } from '../../services/config-manager-types'; + +export namespace QuickswapConfig { + export interface NetworkConfig { + allowedSlippage: string; + gasLimitEstimate: number; + ttl: number; + routerAddress: (network: string) => string; + tradingTypes: Array; + availableNetworks: Array; + } + + export const config: NetworkConfig = { + allowedSlippage: ConfigManagerV2.getInstance().get( + 'quickswap.allowedSlippage' + ), + gasLimitEstimate: ConfigManagerV2.getInstance().get( + 'quickswap.gasLimitEstimate' + ), + ttl: ConfigManagerV2.getInstance().get('quickswap.ttl'), + routerAddress: (network: string) => + ConfigManagerV2.getInstance().get( + 'quickswap.contractAddresses.' + network + '.routerAddress' + ), + tradingTypes: ['EVM_AMM'], + availableNetworks: [{ chain: 'polygon', networks: ['mainnet', 'mumbai'] }], + }; +} diff --git a/src/connectors/quickswap/quickswap.ts b/src/connectors/quickswap/quickswap.ts new file mode 100644 index 0000000000..c58b4d3708 --- /dev/null +++ b/src/connectors/quickswap/quickswap.ts @@ -0,0 +1,294 @@ +import { percentRegexp } from '../../services/config-manager-v2'; +import { UniswapishPriceError } from '../../services/error-handler'; +import { + BigNumber, + Contract, + ContractInterface, + Transaction, + Wallet, +} from 'ethers'; +import { isFractionString } from '../../services/validators'; +import { QuickswapConfig } from './quickswap.config'; +import routerAbi from '../traderjoe/IJoeRouter02.json'; +import { + Fetcher, + Percent, + Router, + Token, + TokenAmount, + Trade, + Pair, +} from 'quickswap-sdk'; +import { logger } from '../../services/logger'; +import { Polygon } from '../../chains/polygon/polygon'; +import { ExpectedTrade, Uniswapish } from '../../services/common-interfaces'; + +export class Quickswap implements Uniswapish { + private static _instances: { [name: string]: Quickswap }; + private polygon: Polygon; + private _router: string; + private _routerAbi: ContractInterface; + private _gasLimitEstimate: number; + private _ttl: number; + private chainId; + private tokenList: Record = {}; + private _ready: boolean = false; + + private constructor(network: string) { + const config = QuickswapConfig.config; + this.polygon = Polygon.getInstance(network); + this.chainId = this.polygon.chainId; + this._router = config.routerAddress(network); + this._ttl = config.ttl; + this._routerAbi = routerAbi.abi; + this._gasLimitEstimate = config.gasLimitEstimate; + } + + public static getInstance(chain: string, network: string): Quickswap { + if (Quickswap._instances === undefined) { + Quickswap._instances = {}; + } + if (!(chain + network in Quickswap._instances)) { + Quickswap._instances[chain + network] = new Quickswap(network); + } + + return Quickswap._instances[chain + network]; + } + + /** + * Given a token's address, return the connector's native representation of + * the token. + * + * @param address Token address + */ + public getTokenByAddress(address: string): Token { + return this.tokenList[address]; + } + + public async init() { + if (!this.polygon.ready()) { + await this.polygon.init(); + } + for (const token of this.polygon.storedTokenList) { + this.tokenList[token.address] = new Token( + this.chainId, + token.address, + token.decimals, + token.symbol, + token.name + ); + } + this._ready = true; + } + + public ready(): boolean { + return this._ready; + } + + /** + * Router address. + */ + public get router(): string { + return this._router; + } + + /** + * Router smart contract ABI. + */ + public get routerAbi(): ContractInterface { + return this._routerAbi; + } + + /** + * Default gas limit used to estimate cost for swap transactions. + */ + public get gasLimitEstimate(): number { + return this._gasLimitEstimate; + } + + /** + * Default time-to-live for swap transactions, in seconds. + */ + public get ttl(): number { + return this._ttl; + } + + /** + * Gets the allowed slippage percent from the optional parameter or the value + * in the configuration. + * + * @param allowedSlippageStr (Optional) should be of the form '1/10'. + */ + public getAllowedSlippage(allowedSlippageStr?: string): Percent { + if (allowedSlippageStr != null && isFractionString(allowedSlippageStr)) { + const fractionSplit = allowedSlippageStr.split('/'); + return new Percent(fractionSplit[0], fractionSplit[1]); + } + + const allowedSlippage = QuickswapConfig.config.allowedSlippage; + const nd = allowedSlippage.match(percentRegexp); + if (nd) return new Percent(nd[1], nd[2]); + throw new Error( + 'Encountered a malformed percent string in the config for ALLOWED_SLIPPAGE.' + ); + } + + /** + * Given the amount of `baseToken` to put into a transaction, calculate the + * amount of `quoteToken` that can be expected from the transaction. + * + * This is typically used for calculating token sell prices. + * + * @param baseToken Token input for the transaction + * @param quoteToken Output from the transaction + * @param amount Amount of `baseToken` to put into the transaction + */ + async estimateSellTrade( + baseToken: Token, + quoteToken: Token, + amount: BigNumber, + allowedSlippage?: string + ): Promise { + const nativeTokenAmount: TokenAmount = new TokenAmount( + baseToken, + amount.toString() + ); + logger.info( + `Fetching pair data for ${baseToken.address}-${quoteToken.address}.` + ); + const pair: Pair = await Fetcher.fetchPairData( + baseToken, + quoteToken, + this.polygon.provider + ); + const trades: Trade[] = Trade.bestTradeExactIn( + [pair], + nativeTokenAmount, + quoteToken, + { maxHops: 1 } + ); + if (!trades || trades.length === 0) { + throw new UniswapishPriceError( + `priceSwapIn: no trade pair found for ${baseToken} to ${quoteToken}.` + ); + } + logger.info( + `Best trade for ${baseToken.address}-${quoteToken.address}: ${trades[0]}` + ); + const expectedAmount = trades[0].minimumAmountOut( + this.getAllowedSlippage(allowedSlippage) + ); + return { trade: trades[0], expectedAmount }; + } + + /** + * Given the amount of `baseToken` desired to acquire from a transaction, + * calculate the amount of `quoteToken` needed for the transaction. + * + * This is typically used for calculating token buy prices. + * + * @param quoteToken Token input for the transaction + * @param baseToken Token output from the transaction + * @param amount Amount of `baseToken` desired from the transaction + */ + async estimateBuyTrade( + quoteToken: Token, + baseToken: Token, + amount: BigNumber, + allowedSlippage?: string + ): Promise { + const nativeTokenAmount: TokenAmount = new TokenAmount( + baseToken, + amount.toString() + ); + logger.info( + `Fetching pair data for ${quoteToken.address}-${baseToken.address}.` + ); + const pair: Pair = await Fetcher.fetchPairData( + quoteToken, + baseToken, + this.polygon.provider + ); + const trades: Trade[] = Trade.bestTradeExactOut( + [pair], + quoteToken, + nativeTokenAmount, + { maxHops: 1 } + ); + if (!trades || trades.length === 0) { + throw new UniswapishPriceError( + `priceSwapOut: no trade pair found for ${quoteToken.address} to ${baseToken.address}.` + ); + } + logger.info( + `Best trade for ${quoteToken.address}-${baseToken.address}: ${trades[0]}` + ); + + const expectedAmount = trades[0].maximumAmountIn( + this.getAllowedSlippage(allowedSlippage) + ); + return { trade: trades[0], expectedAmount }; + } + + /** + * Given a wallet and a Uniswap-ish trade, try to execute it on blockchain. + * + * @param wallet Wallet + * @param trade Expected trade + * @param gasPrice Base gas price, for pre-EIP1559 transactions + * @param quickswapRouter smart contract address + * @param ttl How long the swap is valid before expiry, in seconds + * @param abi Router contract ABI + * @param gasLimit Gas limit + * @param nonce (Optional) EVM transaction nonce + * @param maxFeePerGas (Optional) Maximum total fee per gas you want to pay + * @param maxPriorityFeePerGas (Optional) Maximum tip per gas you want to pay + */ + async executeTrade( + wallet: Wallet, + trade: Trade, + gasPrice: number, + quickswapRouter: string, + ttl: number, + abi: ContractInterface, + gasLimit: number, + nonce?: number, + maxFeePerGas?: BigNumber, + maxPriorityFeePerGas?: BigNumber, + allowedSlippage?: string + ): Promise { + const result = Router.swapCallParameters(trade, { + ttl, + recipient: wallet.address, + allowedSlippage: this.getAllowedSlippage(allowedSlippage), + }); + + const contract = new Contract(quickswapRouter, abi, wallet); + return this.polygon.nonceManager.provideNonce( + nonce, + wallet.address, + async (nextNonce) => { + let tx; + if (maxFeePerGas || maxPriorityFeePerGas) { + tx = await contract[result.methodName](...result.args, { + gasLimit: gasLimit.toFixed(0), + value: result.value, + nonce: nextNonce, + maxFeePerGas, + maxPriorityFeePerGas, + }); + } else { + tx = await contract[result.methodName](...result.args, { + gasPrice: (gasPrice * 1e9).toFixed(0), + gasLimit: gasLimit.toFixed(0), + value: result.value, + nonce: nextNonce, + }); + } + + logger.info(JSON.stringify(tx)); + return tx; + } + ); + } +} diff --git a/src/connectors/ref/ref.config.ts b/src/connectors/ref/ref.config.ts new file mode 100644 index 0000000000..aa7c3d93db --- /dev/null +++ b/src/connectors/ref/ref.config.ts @@ -0,0 +1,35 @@ +import { ConfigManagerV2 } from '../../services/config-manager-v2'; +import { AvailableNetworks } from '../../services/config-manager-types'; +export namespace RefConfig { + export interface NetworkConfig { + allowedSlippage: string; + gasLimitEstimate: number; + ttl: number; + routerAddress: (network: string) => string; + tradingTypes: Array; + availableNetworks: Array; + } + + export const config: NetworkConfig = { + allowedSlippage: ConfigManagerV2.getInstance().get(`ref.allowedSlippage`), + gasLimitEstimate: ConfigManagerV2.getInstance().get(`ref.gasLimitEstimate`), + ttl: ConfigManagerV2.getInstance().get(`ref.ttl`), + routerAddress: (network: string) => + ConfigManagerV2.getInstance().get( + `ref.contractAddresses.${network}.routerAddress` + ), + tradingTypes: ['NEAR_AMM'], + availableNetworks: [ + { + chain: 'near', + networks: Object.keys( + ConfigManagerV2.getInstance().get('ref.contractAddresses') + ).filter((network) => + Object.keys( + ConfigManagerV2.getInstance().get('near.networks') + ).includes(network) + ), + }, + ], + }; +} diff --git a/src/connectors/ref/ref.controllers.ts b/src/connectors/ref/ref.controllers.ts new file mode 100644 index 0000000000..c2f6701c65 --- /dev/null +++ b/src/connectors/ref/ref.controllers.ts @@ -0,0 +1,315 @@ +import Decimal from 'decimal.js-light'; +import { + HttpException, + TOKEN_NOT_SUPPORTED_ERROR_CODE, + TOKEN_NOT_SUPPORTED_ERROR_MESSAGE, + PRICE_FAILED_ERROR_CODE, + PRICE_FAILED_ERROR_MESSAGE, + TRADE_FAILED_ERROR_CODE, + TRADE_FAILED_ERROR_MESSAGE, + SWAP_PRICE_EXCEEDS_LIMIT_PRICE_ERROR_CODE, + SWAP_PRICE_EXCEEDS_LIMIT_PRICE_ERROR_MESSAGE, + SWAP_PRICE_LOWER_THAN_LIMIT_PRICE_ERROR_CODE, + SWAP_PRICE_LOWER_THAN_LIMIT_PRICE_ERROR_MESSAGE, + UNKNOWN_ERROR_ERROR_CODE, + UNKNOWN_ERROR_MESSAGE, +} from '../../services/error-handler'; +import { TokenInfo } from '../../services/ethereum-base'; +import { latency } from '../../services/base'; +import { Nearish, RefAMMish } from '../../services/common-interfaces'; +import { logger } from '../../services/logger'; +import { + EstimateGasResponse, + PriceRequest, + PriceResponse, + TradeRequest, + TradeResponse, +} from '../../amm/amm.requests'; +import { EstimateSwapView, TokenMetadata } from 'coinalpha-ref-sdk'; +import { Account } from 'near-api-js'; +import { ExpectedTrade } from './ref'; + +export interface TradeInfo { + baseToken: TokenMetadata; + quoteToken: TokenMetadata; + requestAmount: string; + expectedTrade: EstimateSwapView[]; +} + +export async function getTradeInfo( + nearish: Nearish, + refAMMish: RefAMMish, + baseAsset: string, + quoteAsset: string, + amount: string, + tradeSide: string, + allowedSlippage?: string +): Promise { + const baseToken: TokenMetadata = getFullTokenFromSymbol( + nearish, + refAMMish, + baseAsset + ); + const quoteToken: TokenMetadata = getFullTokenFromSymbol( + nearish, + refAMMish, + quoteAsset + ); + + let expectedTrade: ExpectedTrade; + if (tradeSide === 'BUY') { + expectedTrade = await refAMMish.estimateBuyTrade( + quoteToken, + baseToken, + amount, + allowedSlippage + ); + } else { + expectedTrade = await refAMMish.estimateSellTrade( + baseToken, + quoteToken, + amount, + allowedSlippage + ); + } + + return { + baseToken, + quoteToken, + requestAmount: amount, + expectedTrade: expectedTrade.trade, + }; +} + +export async function price( + nearish: Nearish, + refAMMish: RefAMMish, + req: PriceRequest +): Promise { + const startTimestamp: number = Date.now(); + let tradeInfo: TradeInfo; + try { + tradeInfo = await getTradeInfo( + nearish, + refAMMish, + req.base, + req.quote, + req.amount, + req.side, + req.allowedSlippage + ); + } catch (e) { + if (e instanceof Error) { + throw new HttpException( + 500, + PRICE_FAILED_ERROR_MESSAGE + e.message, + PRICE_FAILED_ERROR_CODE + ); + } else { + throw new HttpException( + 500, + UNKNOWN_ERROR_MESSAGE, + UNKNOWN_ERROR_ERROR_CODE + ); + } + } + + const { estimatedPrice, expectedAmount } = refAMMish.parseTrade( + tradeInfo.expectedTrade, + req.side + ); + + const gasLimitTransaction = nearish.gasLimitTransaction; + const gasPrice = nearish.gasPrice; + const gasLimitEstimate = refAMMish.gasLimitEstimate; + return { + network: nearish.chain, + timestamp: startTimestamp, + latency: latency(startTimestamp, Date.now()), + base: tradeInfo.baseToken.id, + quote: tradeInfo.quoteToken.id, + amount: new Decimal(req.amount).toFixed(tradeInfo.baseToken.decimals), + rawAmount: tradeInfo.requestAmount.toString(), + expectedAmount: expectedAmount, + price: estimatedPrice, + gasPrice: gasPrice, + gasPriceToken: nearish.nativeTokenSymbol, + gasLimit: gasLimitTransaction, + gasCost: String((gasPrice * gasLimitEstimate) / 1e24), + }; +} + +export async function trade( + nearish: Nearish, + refAMMish: RefAMMish, + req: TradeRequest +): Promise { + const startTimestamp: number = Date.now(); + + const limitPrice = req.limitPrice; + const account: Account = await nearish.getWallet(req.address); + + let tradeInfo: TradeInfo; + try { + tradeInfo = await getTradeInfo( + nearish, + refAMMish, + req.base, + req.quote, + req.amount, + req.side + ); + } catch (e) { + if (e instanceof Error) { + logger.error(`Could not get trade info. ${e.message}`); + throw new HttpException( + 500, + TRADE_FAILED_ERROR_MESSAGE + e.message, + TRADE_FAILED_ERROR_CODE + ); + } else { + logger.error('Unknown error trying to get trade info.'); + throw new HttpException( + 500, + UNKNOWN_ERROR_MESSAGE, + UNKNOWN_ERROR_ERROR_CODE + ); + } + } + + const gasPrice: number = nearish.gasPrice; + const gasLimitTransaction: number = nearish.gasLimitTransaction; + const gasLimitEstimate: number = refAMMish.gasLimitEstimate; + const { estimatedPrice, expectedAmount } = refAMMish.parseTrade( + tradeInfo.expectedTrade, + req.side + ); + + logger.info( + `Expected execution price is ${estimatedPrice}, ` + + `limit price is ${limitPrice}.` + ); + + if (req.side === 'BUY') { + if (limitPrice && new Decimal(estimatedPrice).gt(new Decimal(limitPrice))) { + logger.error('Swap price exceeded limit price.'); + throw new HttpException( + 500, + SWAP_PRICE_EXCEEDS_LIMIT_PRICE_ERROR_MESSAGE( + estimatedPrice, + limitPrice + ), + SWAP_PRICE_EXCEEDS_LIMIT_PRICE_ERROR_CODE + ); + } + + const amountIn = new Decimal(req.amount) + .mul(new Decimal(estimatedPrice)) + .toString(); + + const tx = await refAMMish.executeTrade( + account, + tradeInfo.expectedTrade, + amountIn, + tradeInfo.quoteToken, + tradeInfo.baseToken, + req.allowedSlippage + ); + + logger.info(`Buy Ref swap has been executed.`); + + return { + network: nearish.chain, + timestamp: startTimestamp, + latency: latency(startTimestamp, Date.now()), + base: tradeInfo.baseToken.id, + quote: tradeInfo.quoteToken.id, + amount: new Decimal(req.amount).toFixed(tradeInfo.baseToken.decimals), + rawAmount: tradeInfo.requestAmount.toString(), + expectedIn: expectedAmount, + price: estimatedPrice, + gasPrice: gasPrice, + gasPriceToken: nearish.nativeTokenSymbol, + gasLimit: gasLimitTransaction, + gasCost: String((gasPrice * gasLimitEstimate) / 1e24), + txHash: tx, + }; + } else { + if (limitPrice && new Decimal(estimatedPrice).lt(new Decimal(limitPrice))) { + logger.error('Swap price lower than limit price.'); + throw new HttpException( + 500, + SWAP_PRICE_LOWER_THAN_LIMIT_PRICE_ERROR_MESSAGE( + estimatedPrice, + limitPrice + ), + SWAP_PRICE_LOWER_THAN_LIMIT_PRICE_ERROR_CODE + ); + } + + const tx = await refAMMish.executeTrade( + account, + tradeInfo.expectedTrade, + req.amount, + tradeInfo.baseToken, + tradeInfo.quoteToken, + req.allowedSlippage + ); + + logger.info(`Sell Ref swap has been executed.`); + + return { + network: nearish.chain, + timestamp: startTimestamp, + latency: latency(startTimestamp, Date.now()), + base: tradeInfo.baseToken.id, + quote: tradeInfo.quoteToken.id, + amount: new Decimal(req.amount).toFixed(tradeInfo.baseToken.decimals), + rawAmount: tradeInfo.requestAmount.toString(), + expectedOut: expectedAmount, + price: estimatedPrice, + gasPrice: gasPrice, + gasPriceToken: nearish.nativeTokenSymbol, + gasLimit: gasLimitTransaction, + gasCost: String((gasPrice * gasLimitEstimate) / 1e24), + txHash: tx, + }; + } +} + +export function getFullTokenFromSymbol( + nearish: Nearish, + refAMMish: RefAMMish, + tokenSymbol: string +): TokenMetadata { + const tokenInfo: TokenInfo | undefined = + nearish.getTokenBySymbol(tokenSymbol); + let fullToken: TokenMetadata | undefined; + if (tokenInfo) { + fullToken = refAMMish.getTokenByAddress(tokenInfo.address); + } + if (!fullToken) + throw new HttpException( + 500, + TOKEN_NOT_SUPPORTED_ERROR_MESSAGE + tokenSymbol, + TOKEN_NOT_SUPPORTED_ERROR_CODE + ); + return fullToken; +} + +export async function estimateGas( + nearish: Nearish, + refAMMish: RefAMMish +): Promise { + const gasPrice: number = nearish.gasPrice; + const gasLimitTransaction: number = nearish.gasLimitTransaction; + const gasLimitEstimate: number = refAMMish.gasLimitEstimate; + return { + network: nearish.chain, + timestamp: Date.now(), + gasPrice, + gasPriceToken: nearish.nativeTokenSymbol, + gasLimit: gasLimitTransaction, + gasCost: String((gasPrice * gasLimitEstimate) / 1e24), + }; +} diff --git a/src/connectors/ref/ref.helper.ts b/src/connectors/ref/ref.helper.ts new file mode 100644 index 0000000000..b78ff1c578 --- /dev/null +++ b/src/connectors/ref/ref.helper.ts @@ -0,0 +1,131 @@ +import { + providers, + transactions as nearTransactions, + utils, + Account, +} from 'near-api-js'; +import BN from 'bn.js'; +import { AccessKeyView } from 'near-api-js/lib/providers/provider'; +import { + Transaction, + transformTransactions, + TransformedTransaction, +} from 'coinalpha-ref-sdk'; + +const validateAccessKey = ( + transaction: TransformedTransaction, + accessKey: AccessKeyView +) => { + if (accessKey.permission === 'FullAccess') { + return accessKey; + } + + // eslint-disable-next-line @typescript-eslint/naming-convention + const { receiver_id, method_names } = accessKey.permission.FunctionCall; + + if (transaction.receiverId !== receiver_id) { + return null; + } + + return transaction.actions.every( + (action: { type: string; params: { methodName: any; deposit: any } }) => { + if (action.type !== 'FunctionCall') { + return false; + } + + const { methodName, deposit } = action.params; + + if (method_names.length && method_names.includes(methodName)) { + return false; + } + + return parseFloat(deposit) <= 0; + } + ); +}; + +export const getSignedTransactions = async ({ + transactionsRef, + account, +}: { + transactionsRef: Transaction[]; + account: Account; +}) => { + const AccountId: string = account.accountId; + const networkId: string = account.connection.networkId; + const transactions = transformTransactions(transactionsRef, AccountId); + + const block = await account.connection.provider.block({ finality: 'final' }); + + const signedTransactions: Array = []; + + const publicKey = await account.connection.signer.getPublicKey( + account.accountId, + account.connection.networkId + ); + if (!publicKey) { + throw 'Wallet not properly initialized.'; + } + + const accessKey = await account.connection.provider.query({ + request_type: 'view_access_key', + finality: 'final', + account_id: AccountId, + public_key: publicKey.toString(), + }); + + for (let i = 0; i < transactions.length; i += 1) { + const transaction = transactions[i]; + + if (!validateAccessKey(transaction, accessKey)) { + throw 'Account does not have access.'; + } + + const tx = nearTransactions.createTransaction( + AccountId, + utils.PublicKey.from(publicKey.toString()), + transactions[i].receiverId, + accessKey.nonce + i + 1, + transaction.actions.map( + (action: { + params: { methodName: any; args: any; gas: any; deposit: any }; + }) => { + const { methodName, args, gas, deposit } = action.params; + return nearTransactions.functionCall( + methodName, + args, + new BN(gas), + new BN(deposit) + ); + } + ), + utils.serialize.base_decode(block.header.hash) + ); + + const [, signedTx] = await nearTransactions.signTransaction( + tx, + account.connection.signer, + transactions[i].signerId, + networkId + ); + signedTransactions.push(signedTx); + } + + return signedTransactions; +}; + +export const sendTransactions = async ({ + signedTransactions, + provider, +}: { + signedTransactions: nearTransactions.SignedTransaction[]; + provider: providers.Provider; +}) => { + const results: Array = []; + + for (const signedTransaction of signedTransactions) { + results.push(await provider.sendTransactionAsync(signedTransaction)); + } + + return results; +}; diff --git a/src/connectors/ref/ref.ts b/src/connectors/ref/ref.ts new file mode 100644 index 0000000000..8f9683d749 --- /dev/null +++ b/src/connectors/ref/ref.ts @@ -0,0 +1,316 @@ +import { UniswapishPriceError as AMMishPriceError } from '../../services/error-handler'; +import { isFractionString } from '../../services/validators'; +import { RefConfig } from './ref.config'; +import { + estimateSwap, + EstimateSwapView, + fetchAllPools, + instantSwap, + SwapOptions, + TokenMetadata, + Transaction, + toReadableNumber, + Pool, +} from 'coinalpha-ref-sdk'; +import { logger } from '../../services/logger'; +import { percentRegexp } from '../../services/config-manager-v2'; +import { RefAMMish } from '../../services/common-interfaces'; +import { Near } from '../../chains/near/near'; +import { Account } from 'near-api-js'; +import { SignedTransaction } from 'near-api-js/lib/transaction'; +import { getSignedTransactions, sendTransactions } from './ref.helper'; +import { FinalExecutionOutcome } from 'near-api-js/lib/providers'; + +export type ExpectedTrade = { + trade: EstimateSwapView[]; + expectedAmount: string; +}; + +type PoolEntries = { + [key: string]: { inputAmount: string; outputAmount: string }; +}; + +export class Ref implements RefAMMish { + private static _instances: { [name: string]: Ref }; + private near: Near; + private _router: string; + private _gasLimitEstimate: number; + private _ttl: number; + private tokenList: Record = {}; + private _ready: boolean = false; + private _cachedPools: Pool[] = []; + + private constructor(network: string) { + const config = RefConfig.config; + this.near = Near.getInstance(network); + this._ttl = RefConfig.config.ttl; + this._gasLimitEstimate = RefConfig.config.gasLimitEstimate; + this._router = config.routerAddress(network); + } + + public static getInstance(chain: string, network: string): Ref { + if (Ref._instances === undefined) { + Ref._instances = {}; + } + if (!(chain + network in Ref._instances)) { + Ref._instances[chain + network] = new Ref(network); + } + + return Ref._instances[chain + network]; + } + + /** + * Given a token's address, return the connector's native representation of + * the token. + * + * @param address Token address + */ + public getTokenByAddress(address: string): TokenMetadata { + return this.tokenList[address]; + } + + public async init() { + if (!this.near.ready()) { + await this.near.init(); + } + for (const token of this.near.storedTokenList) { + this.tokenList[token.address] = { + id: token.address, + decimals: token.decimals, + symbol: token.symbol, + name: token.name, + icon: '', + }; + } + this._ready = true; + } + + public ready(): boolean { + return this._ready; + } + + /** + * Router address. + */ + public get router(): string { + return this._router; + } + + /** + * Default gas limit for swap transactions. + */ + public get gasLimitEstimate(): number { + return this._gasLimitEstimate; + } + + /** + * Default time-to-live for swap transactions, in seconds. + */ + public get ttl(): number { + return this._ttl; + } + + /** + * Gets the allowed slippage percent from the optional parameter or the value + * in the configuration. + * + * @param allowedSlippageStr (Optional) should be of the form '1/10'. + */ + public getAllowedSlippage(allowedSlippageStr?: string): number { + if (allowedSlippageStr != null && isFractionString(allowedSlippageStr)) { + const fractionSplit = allowedSlippageStr.split('/'); + return Number(fractionSplit[0]) / Number(fractionSplit[1]); + } + + const allowedSlippage = RefConfig.config.allowedSlippage; + const nd = allowedSlippage.match(percentRegexp); + if (nd) return Number(nd[1]) / Number(nd[2]); + throw new Error( + 'Encountered a malformed percent string in the config for ALLOWED_SLIPPAGE.' + ); + } + + /** + * Calculated expected execution price and expected amount in after a swap/trade + * @param trades The trade path object + */ + parseTrade( + trades: EstimateSwapView[], + side: string + ): { + estimatedPrice: string; + expectedAmount: string; + } { + const paths: PoolEntries = {}; + for (const trade of trades) { + if (trade.nodeRoute) { + if (!paths[trade.nodeRoute.join()]) + paths[trade.nodeRoute.join()] = { + inputAmount: '0', + outputAmount: '0', + }; + + if (trade.inputToken === trade.nodeRoute[0]) { + const token: TokenMetadata[] = ( + trade.tokens?.filter((t) => t.id === trade.inputToken) + ); + + paths[trade.nodeRoute.join()].inputAmount = toReadableNumber( + token[0].decimals, + trade.pool.partialAmountIn + ); + } else if ( + trade.outputToken === trade.nodeRoute[trade.nodeRoute.length - 1] + ) { + paths[trade.nodeRoute.join()].outputAmount = trade.estimate; + } + } + } + let expectedAmount = 0, + amountIn = 0; + Object.values(paths).forEach((entries) => { + expectedAmount += Number(entries.outputAmount); + amountIn += Number(entries.inputAmount); + }); + return { + estimatedPrice: + side.toUpperCase() === 'BUY' + ? String(amountIn / expectedAmount) + : String(expectedAmount / amountIn), + expectedAmount: String(expectedAmount), + }; + } + + /** + * Given the amount of `baseToken` to put into a transaction, calculate the + * amount of `quoteToken` that can be expected from the transaction. + * + * This is typically used for calculating token sell prices. + * + * @param baseToken Token input for the transaction + * @param quoteToken Output from the transaction + * @param amount Amount of `baseToken` to put into the transaction + */ + async estimateSellTrade( + baseToken: TokenMetadata, + quoteToken: TokenMetadata, + amount: string, + _allowedSlippage?: string + ): Promise { + logger.info(`Fetching pair data for ${baseToken.id}-${quoteToken.id}.`); + + const { simplePools } = await fetchAllPools(); + this._cachedPools = simplePools; + + const options: SwapOptions = { + enableSmartRouting: true, + }; + const trades: EstimateSwapView[] = await estimateSwap({ + tokenIn: baseToken, + tokenOut: quoteToken, + amountIn: amount, + simplePools, + options, + }); + if (!trades || trades.length === 0) { + throw new AMMishPriceError( + `priceSwapIn: no trade pair found for ${baseToken} to ${quoteToken}.` + ); + } + const { estimatedPrice, expectedAmount } = this.parseTrade(trades, 'SELL'); + logger.info( + `Best trade for ${baseToken.id}-${quoteToken.id}: ` + + `${estimatedPrice}` + + `${baseToken.name}.` + ); + return { trade: trades, expectedAmount }; + } + + /** + * Given the amount of `baseToken` desired to acquire from a transaction, + * calculate the amount of `quoteToken` needed for the transaction. + * + * This is typically used for calculating token buy prices. + * + * @param quoteToken Token input for the transaction + * @param baseToken Token output from the transaction + * @param amount Amount of `baseToken` desired from the transaction + */ + async estimateBuyTrade( + quoteToken: TokenMetadata, + baseToken: TokenMetadata, + amount: string, + _allowedSlippage?: string + ): Promise { + const buyEstimate: ExpectedTrade = await this.estimateSellTrade( + baseToken, + quoteToken, + amount + ); + + const options: SwapOptions = { + enableSmartRouting: true, + }; + + const trades: EstimateSwapView[] = await estimateSwap({ + tokenIn: quoteToken, + tokenOut: baseToken, + amountIn: buyEstimate.expectedAmount, + simplePools: this._cachedPools, + options, + }); + if (!trades || trades.length === 0) { + throw new AMMishPriceError( + `priceSwapOut: no trade pair found for ${quoteToken.id} to ${baseToken.id}.` + ); + } + + const { estimatedPrice, expectedAmount } = this.parseTrade(trades, 'BUY'); + logger.info( + `Best trade for ${quoteToken.id}-${baseToken.id}: ` + + `${estimatedPrice} ` + + `${baseToken.name}.` + ); + + return { trade: trades, expectedAmount }; + } + + /** + * Given an Account and a Ref trade, try to execute it on blockchain. + * + * @param account Account + * @param trade Expected trade + * @param amountIn Amount to swap in + * @param tokenIn Token to be sent + * @param tokenOut Token to be received + * @param allowedSlippage Maximum allowable slippage + */ + async executeTrade( + account: Account, + trade: EstimateSwapView[], + amountIn: string, + tokenIn: TokenMetadata, + tokenOut: TokenMetadata, + allowedSlippage?: string + ): Promise { + const transactionsRef: Transaction[] = await instantSwap({ + tokenIn, + tokenOut, + amountIn, + slippageTolerance: this.getAllowedSlippage(allowedSlippage), + swapTodos: trade, + AccountId: account.accountId, + }); + + const signedTransactions: SignedTransaction[] = await getSignedTransactions( + { transactionsRef, account } + ); + const transaction: FinalExecutionOutcome[] = await sendTransactions({ + signedTransactions, + provider: account.connection.provider, + }); + + logger.info(JSON.stringify(transaction)); + return transaction[0]; + } +} diff --git a/src/connectors/sushiswap/sushiswap.config.ts b/src/connectors/sushiswap/sushiswap.config.ts new file mode 100644 index 0000000000..2080583c76 --- /dev/null +++ b/src/connectors/sushiswap/sushiswap.config.ts @@ -0,0 +1,39 @@ +import { ConfigManagerV2 } from '../../services/config-manager-v2'; +import { AvailableNetworks } from '../../services/config-manager-types'; + +export namespace SushiswapConfig { + export interface NetworkConfig { + allowedSlippage: string; + gasLimitEstimate: number; + ttl: number; + sushiswapRouterAddress: (chain: string, network: string) => string; + tradingTypes: Array; + availableNetworks: Array; + } + + export const config: NetworkConfig = { + allowedSlippage: ConfigManagerV2.getInstance().get( + 'sushiswap.allowedSlippage' + ), + gasLimitEstimate: ConfigManagerV2.getInstance().get( + 'sushiswap.gasLimitEstimate' + ), + ttl: ConfigManagerV2.getInstance().get('sushiswap.ttl'), + sushiswapRouterAddress: (chain: string, network: string) => + ConfigManagerV2.getInstance().get( + 'sushiswap.contractAddresses.' + + chain + + '.' + + network + + '.sushiswapRouterAddress' + ), + tradingTypes: ['EVM_AMM'], + availableNetworks: [ + { + chain: 'ethereum', + networks: ['mainnet', 'kovan', 'goerli', 'ropsten'], + }, + { chain: 'binance-smart-chain', networks: ['mainnet', 'testnet'] }, + ], + }; +} diff --git a/src/connectors/sushiswap/sushiswap.ts b/src/connectors/sushiswap/sushiswap.ts new file mode 100644 index 0000000000..dff95392c7 --- /dev/null +++ b/src/connectors/sushiswap/sushiswap.ts @@ -0,0 +1,300 @@ +import { UniswapishPriceError } from '../../services/error-handler'; +import { SushiswapConfig } from './sushiswap.config'; +import routerAbi from './sushiswap_router.json'; + +import { ContractInterface } from '@ethersproject/contracts'; + +import { + Percent, + Router, + Token, + CurrencyAmount, + Trade, + Pair, + SwapParameters, + TradeType, +} from '@sushiswap/sdk'; +import IUniswapV2Pair from '@uniswap/v2-core/build/IUniswapV2Pair.json'; +import { ExpectedTrade, Uniswapish } from '../../services/common-interfaces'; +import { Ethereum } from '../../chains/ethereum/ethereum'; +import { BinanceSmartChain } from '../../chains/binance-smart-chain/binance-smart-chain'; +import { + BigNumber, + Wallet, + Transaction, + Contract, + ContractTransaction, +} from 'ethers'; +import { percentRegexp } from '../../services/config-manager-v2'; +import { logger } from '../../services/logger'; + +export class Sushiswap implements Uniswapish { + private static _instances: { [name: string]: Sushiswap }; + private chain: Ethereum | BinanceSmartChain; + private _router: string; + private _routerAbi: ContractInterface; + private _gasLimitEstimate: number; + private _ttl: number; + private chainId; + private tokenList: Record = {}; + private _ready: boolean = false; + + private constructor(chain: string, network: string) { + const config = SushiswapConfig.config; + if (chain === 'ethereum') { + this.chain = Ethereum.getInstance(network); + } else if (chain === 'binance-smart-chain') { + this.chain = BinanceSmartChain.getInstance(network); + } else { + throw new Error('unsupported chain'); + } + this.chainId = this.chain.chainId; + this._ttl = config.ttl; + this._routerAbi = routerAbi.abi; + this._gasLimitEstimate = config.gasLimitEstimate; + this._router = config.sushiswapRouterAddress(chain, network); + } + + public static getInstance(chain: string, network: string): Sushiswap { + if (Sushiswap._instances === undefined) { + Sushiswap._instances = {}; + } + if (!(chain + network in Sushiswap._instances)) { + Sushiswap._instances[chain + network] = new Sushiswap(chain, network); + } + + return Sushiswap._instances[chain + network]; + } + + /** + * Given a token's address, return the connector's native representation of + * the token. + * + * @param address Token address + */ + public getTokenByAddress(address: string): Token { + return this.tokenList[address]; + } + + public async init() { + if (!this.chain.ready()) { + await this.chain.init(); + } + for (const token of this.chain.storedTokenList) { + this.tokenList[token.address] = new Token( + this.chainId, + token.address, + token.decimals, + token.symbol, + token.name + ); + } + this._ready = true; + } + + public ready(): boolean { + return this._ready; + } + + /** + * Router address. + */ + public get router(): string { + return this._router; + } + + /** + * Router smart contract ABI. + */ + public get routerAbi(): ContractInterface { + return this._routerAbi; + } + + /** + * Default gas limit for swap transactions. + */ + public get gasLimitEstimate(): number { + return this._gasLimitEstimate; + } + + /** + * Default time-to-live for swap transactions, in seconds. + */ + public get ttl(): number { + return this._ttl; + } + + /** + * Gets the allowed slippage percent from configuration. + */ + getSlippagePercentage(): Percent { + const allowedSlippage = SushiswapConfig.config.allowedSlippage; + const nd = allowedSlippage.match(percentRegexp); + if (nd) return new Percent(nd[1], nd[2]); + throw new Error( + 'Encountered a malformed percent string in the config for ALLOWED_SLIPPAGE.' + ); + } + + /** + * Fetches information about a pair and constructs a pair from the given two tokens. + * This is to replace the Fetcher Class + * @param tokenA first token + * @param tokenB second token + */ + + async fetchData(baseToken: Token, quoteToken: Token): Promise { + const pairAddress = Pair.getAddress(baseToken, quoteToken); + const contract = new Contract( + pairAddress, + IUniswapV2Pair.abi, + this.chain.provider + ); + const [reserves0, reserves1] = await contract.getReserves(); + const balances = baseToken.sortsBefore(quoteToken) + ? [reserves0, reserves1] + : [reserves1, reserves0]; + const pair = new Pair( + CurrencyAmount.fromRawAmount(baseToken, balances[0]), + CurrencyAmount.fromRawAmount(quoteToken, balances[1]) + ); + return pair; + } + + /** + * Given the amount of `baseToken` to put into a transaction, calculate the + * amount of `quoteToken` that can be expected from the transaction. + * + * This is typically used for calculating token sell prices. + * + * @param baseToken Token input for the transaction + * @param quoteToken Output from the transaction + * @param amount Amount of `baseToken` to put into the transaction + */ + + async estimateSellTrade( + baseToken: Token, + quoteToken: Token, + amount: BigNumber + ): Promise { + const nativeTokenAmount: CurrencyAmount = + CurrencyAmount.fromRawAmount(baseToken, amount.toString()); + + logger.info( + `Fetching pair data for ${baseToken.address}-${quoteToken.address}.` + ); + + const pair: Pair = await this.fetchData(baseToken, quoteToken); + + const trades: Trade[] = + Trade.bestTradeExactIn([pair], nativeTokenAmount, quoteToken, { + maxHops: 1, + }); + if (!trades || trades.length === 0) { + throw new UniswapishPriceError( + `priceSwapIn: no trade pair found for ${baseToken} to ${quoteToken}.` + ); + } + logger.info( + `Best trade for ${baseToken.address}-${quoteToken.address}: ` + + `${trades[0].executionPrice.toFixed(6)}` + + `${baseToken.name}.` + ); + const expectedAmount = trades[0].minimumAmountOut( + this.getSlippagePercentage() + ); + + return { trade: trades[0], expectedAmount }; + } + async estimateBuyTrade( + quoteToken: Token, + baseToken: Token, + amount: BigNumber + ): Promise { + const nativeTokenAmount: CurrencyAmount = + CurrencyAmount.fromRawAmount(baseToken, amount.toString()); + + const pair: Pair = await this.fetchData(quoteToken, baseToken); + + const trades: Trade[] = + Trade.bestTradeExactOut([pair], quoteToken, nativeTokenAmount, { + maxHops: 1, + }); + if (!trades || trades.length === 0) { + throw new UniswapishPriceError( + `priceSwapOut: no trade pair found for ${quoteToken.address} to ${baseToken.address}.` + ); + } + logger.info( + `Best trade for ${quoteToken.address}-${baseToken.address}: ` + + `${trades[0].executionPrice.invert().toFixed(6)} ` + + `${baseToken.name}.` + ); + + const expectedAmount = trades[0].maximumAmountIn( + this.getSlippagePercentage() + ); + return { trade: trades[0], expectedAmount }; + } + + /** + * Given a wallet and a Uniswap trade, try to execute it on blockchain. + * + * @param _wallet Wallet + * @param _trade Expected trade + * @param _gasPrice Base gas price, for pre-EIP1559 transactions + * @param uniswapRouter Router smart contract address + * @param _ttl How long the swap is valid before expiry, in seconds + * @param _abi Router contract ABI + * @param _gasLimit Gas limit + * @param _nonce (Optional) EVM transaction nonce + * @param _maxFeePerGas (Optional) Maximum total fee per gas you want to pay + * @param _maxPriorityFeePerGas (Optional) Maximum tip per gas you want to pay + */ + + async executeTrade( + wallet: Wallet, + trade: Trade, + gasPrice: number, + sushswapRouter: string, + ttl: number, + abi: ContractInterface, + gasLimit: number, + nonce?: number, + maxFeePerGas?: BigNumber, + maxPriorityFeePerGas?: BigNumber + ): Promise { + const result: SwapParameters = Router.swapCallParameters(trade, { + ttl, + recipient: wallet.address, + allowedSlippage: this.getSlippagePercentage(), + }); + const contract: Contract = new Contract(sushswapRouter, abi, wallet); + return this.chain.nonceManager.provideNonce( + nonce, + wallet.address, + async (nextNonce) => { + let tx: ContractTransaction; + if (maxFeePerGas !== undefined || maxPriorityFeePerGas !== undefined) { + tx = await contract[result.methodName](...result.args, { + gasLimit: gasLimit.toFixed(0), + value: result.value, + nonce: nextNonce, + maxFeePerGas, + maxPriorityFeePerGas, + }); + } else { + tx = await contract[result.methodName](...result.args, { + gasPrice: (gasPrice * 1e9).toFixed(0), + gasLimit: gasLimit.toFixed(0), + value: result.value, + nonce: nextNonce, + }); + } + + logger.info(JSON.stringify(tx)); + return tx; + } + ); + } +} diff --git a/src/connectors/sushiswap/sushiswap_router.json b/src/connectors/sushiswap/sushiswap_router.json new file mode 100644 index 0000000000..e2eac42088 --- /dev/null +++ b/src/connectors/sushiswap/sushiswap_router.json @@ -0,0 +1,1924 @@ +{ + "abi": [ + { + "inputs": [], + "name": "WETH", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountADesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "addLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountTokenDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "addLiquidityETH", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "factory", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveOut", + "type": "uint256" + } + ], + "name": "getAmountIn", + "outputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveOut", + "type": "uint256" + } + ], + "name": "getAmountOut", + "outputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + } + ], + "name": "getAmountsIn", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + } + ], + "name": "getAmountsOut", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveB", + "type": "uint256" + } + ], + "name": "quote", + "outputs": [ + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidityETH", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidityETHSupportingFeeOnTransferTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityETHWithPermit", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityETHWithPermitSupportingFeeOnTransferTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityWithPermit", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapETHForExactTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactETHForTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactETHForTokensSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForETH", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForETHSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForTokensSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountInMax", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapTokensForExactETH", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountInMax", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapTokensForExactTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + } + }, + "interface": [ + { + "inputs": [], + "name": "WETH", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountADesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "addLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountTokenDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "addLiquidityETH", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "factory", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveOut", + "type": "uint256" + } + ], + "name": "getAmountIn", + "outputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveOut", + "type": "uint256" + } + ], + "name": "getAmountOut", + "outputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + } + ], + "name": "getAmountsIn", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + } + ], + "name": "getAmountsOut", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveB", + "type": "uint256" + } + ], + "name": "quote", + "outputs": [ + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidityETH", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidityETHSupportingFeeOnTransferTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityETHWithPermit", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityETHWithPermitSupportingFeeOnTransferTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityWithPermit", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapETHForExactTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactETHForTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactETHForTokensSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForETH", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForETHSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForTokensSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountInMax", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapTokensForExactETH", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountInMax", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapTokensForExactTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "" +} diff --git a/src/connectors/traderjoe/IJoeRouter02.json b/src/connectors/traderjoe/IJoeRouter02.json new file mode 100644 index 0000000000..24b3b78817 --- /dev/null +++ b/src/connectors/traderjoe/IJoeRouter02.json @@ -0,0 +1,437 @@ +{ + "contractName": "IJoeRouter02", + "sourceName": "contracts/traderjoe/IJoeRouter02.sol", + "abi": [ + { + "inputs": [], + "name": "WAVAX", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "tokenA", "type": "address" }, + { "internalType": "address", "name": "tokenB", "type": "address" }, + { + "internalType": "uint256", + "name": "amountADesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBDesired", + "type": "uint256" + }, + { "internalType": "uint256", "name": "amountAMin", "type": "uint256" }, + { "internalType": "uint256", "name": "amountBMin", "type": "uint256" }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "deadline", "type": "uint256" } + ], + "name": "addLiquidity", + "outputs": [ + { "internalType": "uint256", "name": "amountA", "type": "uint256" }, + { "internalType": "uint256", "name": "amountB", "type": "uint256" }, + { "internalType": "uint256", "name": "liquidity", "type": "uint256" } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "token", "type": "address" }, + { + "internalType": "uint256", + "name": "amountTokenDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAVAXMin", + "type": "uint256" + }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "deadline", "type": "uint256" } + ], + "name": "addLiquidityAVAX", + "outputs": [ + { "internalType": "uint256", "name": "amountToken", "type": "uint256" }, + { "internalType": "uint256", "name": "amountAVAX", "type": "uint256" }, + { "internalType": "uint256", "name": "liquidity", "type": "uint256" } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "factory", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "amountOut", "type": "uint256" }, + { "internalType": "uint256", "name": "reserveIn", "type": "uint256" }, + { "internalType": "uint256", "name": "reserveOut", "type": "uint256" } + ], + "name": "getAmountIn", + "outputs": [ + { "internalType": "uint256", "name": "amountIn", "type": "uint256" } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "amountIn", "type": "uint256" }, + { "internalType": "uint256", "name": "reserveIn", "type": "uint256" }, + { "internalType": "uint256", "name": "reserveOut", "type": "uint256" } + ], + "name": "getAmountOut", + "outputs": [ + { "internalType": "uint256", "name": "amountOut", "type": "uint256" } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "amountOut", "type": "uint256" }, + { "internalType": "address[]", "name": "path", "type": "address[]" } + ], + "name": "getAmountsIn", + "outputs": [ + { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "amountIn", "type": "uint256" }, + { "internalType": "address[]", "name": "path", "type": "address[]" } + ], + "name": "getAmountsOut", + "outputs": [ + { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "amountA", "type": "uint256" }, + { "internalType": "uint256", "name": "reserveA", "type": "uint256" }, + { "internalType": "uint256", "name": "reserveB", "type": "uint256" } + ], + "name": "quote", + "outputs": [ + { "internalType": "uint256", "name": "amountB", "type": "uint256" } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "tokenA", "type": "address" }, + { "internalType": "address", "name": "tokenB", "type": "address" }, + { "internalType": "uint256", "name": "liquidity", "type": "uint256" }, + { "internalType": "uint256", "name": "amountAMin", "type": "uint256" }, + { "internalType": "uint256", "name": "amountBMin", "type": "uint256" }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "deadline", "type": "uint256" } + ], + "name": "removeLiquidity", + "outputs": [ + { "internalType": "uint256", "name": "amountA", "type": "uint256" }, + { "internalType": "uint256", "name": "amountB", "type": "uint256" } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "token", "type": "address" }, + { "internalType": "uint256", "name": "liquidity", "type": "uint256" }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAVAXMin", + "type": "uint256" + }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "deadline", "type": "uint256" } + ], + "name": "removeLiquidityAVAX", + "outputs": [ + { "internalType": "uint256", "name": "amountToken", "type": "uint256" }, + { "internalType": "uint256", "name": "amountAVAX", "type": "uint256" } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "token", "type": "address" }, + { "internalType": "uint256", "name": "liquidity", "type": "uint256" }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAVAXMin", + "type": "uint256" + }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "deadline", "type": "uint256" } + ], + "name": "removeLiquidityAVAXSupportingFeeOnTransferTokens", + "outputs": [ + { "internalType": "uint256", "name": "amountAVAX", "type": "uint256" } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "token", "type": "address" }, + { "internalType": "uint256", "name": "liquidity", "type": "uint256" }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAVAXMin", + "type": "uint256" + }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "deadline", "type": "uint256" }, + { "internalType": "bool", "name": "approveMax", "type": "bool" }, + { "internalType": "uint8", "name": "v", "type": "uint8" }, + { "internalType": "bytes32", "name": "r", "type": "bytes32" }, + { "internalType": "bytes32", "name": "s", "type": "bytes32" } + ], + "name": "removeLiquidityAVAXWithPermit", + "outputs": [ + { "internalType": "uint256", "name": "amountToken", "type": "uint256" }, + { "internalType": "uint256", "name": "amountAVAX", "type": "uint256" } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "token", "type": "address" }, + { "internalType": "uint256", "name": "liquidity", "type": "uint256" }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAVAXMin", + "type": "uint256" + }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "deadline", "type": "uint256" }, + { "internalType": "bool", "name": "approveMax", "type": "bool" }, + { "internalType": "uint8", "name": "v", "type": "uint8" }, + { "internalType": "bytes32", "name": "r", "type": "bytes32" }, + { "internalType": "bytes32", "name": "s", "type": "bytes32" } + ], + "name": "removeLiquidityAVAXWithPermitSupportingFeeOnTransferTokens", + "outputs": [ + { "internalType": "uint256", "name": "amountAVAX", "type": "uint256" } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "tokenA", "type": "address" }, + { "internalType": "address", "name": "tokenB", "type": "address" }, + { "internalType": "uint256", "name": "liquidity", "type": "uint256" }, + { "internalType": "uint256", "name": "amountAMin", "type": "uint256" }, + { "internalType": "uint256", "name": "amountBMin", "type": "uint256" }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "deadline", "type": "uint256" }, + { "internalType": "bool", "name": "approveMax", "type": "bool" }, + { "internalType": "uint8", "name": "v", "type": "uint8" }, + { "internalType": "bytes32", "name": "r", "type": "bytes32" }, + { "internalType": "bytes32", "name": "s", "type": "bytes32" } + ], + "name": "removeLiquidityWithPermit", + "outputs": [ + { "internalType": "uint256", "name": "amountA", "type": "uint256" }, + { "internalType": "uint256", "name": "amountB", "type": "uint256" } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "amountOut", "type": "uint256" }, + { "internalType": "address[]", "name": "path", "type": "address[]" }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "deadline", "type": "uint256" } + ], + "name": "swapAVAXForExactTokens", + "outputs": [ + { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { "internalType": "address[]", "name": "path", "type": "address[]" }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "deadline", "type": "uint256" } + ], + "name": "swapExactAVAXForTokens", + "outputs": [ + { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { "internalType": "address[]", "name": "path", "type": "address[]" }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "deadline", "type": "uint256" } + ], + "name": "swapExactAVAXForTokensSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "amountIn", "type": "uint256" }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { "internalType": "address[]", "name": "path", "type": "address[]" }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "deadline", "type": "uint256" } + ], + "name": "swapExactTokensForAVAX", + "outputs": [ + { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "amountIn", "type": "uint256" }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { "internalType": "address[]", "name": "path", "type": "address[]" }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "deadline", "type": "uint256" } + ], + "name": "swapExactTokensForAVAXSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "amountIn", "type": "uint256" }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { "internalType": "address[]", "name": "path", "type": "address[]" }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "deadline", "type": "uint256" } + ], + "name": "swapExactTokensForTokens", + "outputs": [ + { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "amountIn", "type": "uint256" }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { "internalType": "address[]", "name": "path", "type": "address[]" }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "deadline", "type": "uint256" } + ], + "name": "swapExactTokensForTokensSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "amountOut", "type": "uint256" }, + { "internalType": "uint256", "name": "amountInMax", "type": "uint256" }, + { "internalType": "address[]", "name": "path", "type": "address[]" }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "deadline", "type": "uint256" } + ], + "name": "swapTokensForExactAVAX", + "outputs": [ + { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "amountOut", "type": "uint256" }, + { "internalType": "uint256", "name": "amountInMax", "type": "uint256" }, + { "internalType": "address[]", "name": "path", "type": "address[]" }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "deadline", "type": "uint256" } + ], + "name": "swapTokensForExactTokens", + "outputs": [ + { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ] +} diff --git a/src/connectors/traderjoe/traderjoe.config.ts b/src/connectors/traderjoe/traderjoe.config.ts new file mode 100644 index 0000000000..18d5803a09 --- /dev/null +++ b/src/connectors/traderjoe/traderjoe.config.ts @@ -0,0 +1,31 @@ +import { ConfigManagerV2 } from '../../services/config-manager-v2'; +import { AvailableNetworks } from '../../services/config-manager-types'; + +export namespace TraderjoeConfig { + export interface NetworkConfig { + allowedSlippage: string; + gasLimitEstimate: number; + ttl: number; + routerAddress: (network: string) => string; + tradingTypes: Array; + availableNetworks: Array; + } + + export const config: NetworkConfig = { + allowedSlippage: ConfigManagerV2.getInstance().get( + 'traderjoe.allowedSlippage' + ), + gasLimitEstimate: ConfigManagerV2.getInstance().get( + 'traderjoe.gasLimitEstimate' + ), + ttl: ConfigManagerV2.getInstance().get('traderjoe.ttl'), + routerAddress: (network: string) => + ConfigManagerV2.getInstance().get( + 'traderjoe.contractAddresses.' + network + '.routerAddress' + ), + tradingTypes: ['EVM_AMM'], + availableNetworks: [ + { chain: 'avalanche', networks: ['avalanche', 'fuji'] }, + ], + }; +} diff --git a/src/connectors/traderjoe/traderjoe.ts b/src/connectors/traderjoe/traderjoe.ts new file mode 100644 index 0000000000..380ea4523f --- /dev/null +++ b/src/connectors/traderjoe/traderjoe.ts @@ -0,0 +1,295 @@ +import { percentRegexp } from '../../services/config-manager-v2'; +import { UniswapishPriceError } from '../../services/error-handler'; +import { + BigNumber, + Contract, + ContractInterface, + Transaction, + Wallet, +} from 'ethers'; +import { isFractionString } from '../../services/validators'; +import { TraderjoeConfig } from './traderjoe.config'; +import routerAbi from './IJoeRouter02.json'; +import { + Fetcher, + Percent, + Router, + Token, + TokenAmount, + Trade, + Pair, +} from '@traderjoe-xyz/sdk'; +import { logger } from '../../services/logger'; +import { Avalanche } from '../../chains/avalanche/avalanche'; +import { ExpectedTrade, Uniswapish } from '../../services/common-interfaces'; + +export class Traderjoe implements Uniswapish { + private static _instances: { [name: string]: Traderjoe }; + private avalanche: Avalanche; + private _router: string; + private _routerAbi: ContractInterface; + private _gasLimitEstimate: number; + private _ttl: number; + private chainId; + private tokenList: Record = {}; + private _ready: boolean = false; + + private constructor(network: string) { + const config = TraderjoeConfig.config; + this.avalanche = Avalanche.getInstance(network); + this.chainId = this.avalanche.chainId; + this._router = config.routerAddress(network); + this._ttl = config.ttl; + this._routerAbi = routerAbi.abi; + this._gasLimitEstimate = config.gasLimitEstimate; + } + + public static getInstance(chain: string, network: string): Traderjoe { + if (Traderjoe._instances === undefined) { + Traderjoe._instances = {}; + } + if (!(chain + network in Traderjoe._instances)) { + Traderjoe._instances[chain + network] = new Traderjoe(network); + } + + return Traderjoe._instances[chain + network]; + } + + /** + * Given a token's address, return the connector's native representation of + * the token. + * + * @param address Token address + */ + public getTokenByAddress(address: string): Token { + return this.tokenList[address]; + } + + public async init() { + if (!this.avalanche.ready()) { + await this.avalanche.init(); + } + + for (const token of this.avalanche.storedTokenList) { + this.tokenList[token.address] = new Token( + this.chainId, + token.address, + token.decimals, + token.symbol, + token.name + ); + } + this._ready = true; + } + + public ready(): boolean { + return this._ready; + } + + /** + * Router address. + */ + public get router(): string { + return this._router; + } + + /** + * Router smart contract ABI. + */ + public get routerAbi(): ContractInterface { + return this._routerAbi; + } + + /** + * Default gas limit estimate for swap transactions. + */ + public get gasLimitEstimate(): number { + return this._gasLimitEstimate; + } + + /** + * Default time-to-live for swap transactions, in seconds. + */ + public get ttl(): number { + return this._ttl; + } + + /** + * Gets the allowed slippage percent from the optional parameter or the value + * in the configuration. + * + * @param allowedSlippageStr (Optional) should be of the form '1/10'. + */ + public getAllowedSlippage(allowedSlippageStr?: string): Percent { + if (allowedSlippageStr != null && isFractionString(allowedSlippageStr)) { + const fractionSplit = allowedSlippageStr.split('/'); + return new Percent(fractionSplit[0], fractionSplit[1]); + } + + const allowedSlippage = TraderjoeConfig.config.allowedSlippage; + const nd = allowedSlippage.match(percentRegexp); + if (nd) return new Percent(nd[1], nd[2]); + throw new Error( + 'Encountered a malformed percent string in the config for ALLOWED_SLIPPAGE.' + ); + } + + /** + * Given the amount of `baseToken` to put into a transaction, calculate the + * amount of `quoteToken` that can be expected from the transaction. + * + * This is typically used for calculating token sell prices. + * + * @param baseToken Token input for the transaction + * @param quoteToken Output from the transaction + * @param amount Amount of `baseToken` to put into the transaction + */ + async estimateSellTrade( + baseToken: Token, + quoteToken: Token, + amount: BigNumber, + allowedSlippage?: string + ): Promise { + const nativeTokenAmount: TokenAmount = new TokenAmount( + baseToken, + amount.toString() + ); + logger.info( + `Fetching pair data for ${baseToken.address}-${quoteToken.address}.` + ); + const pair: Pair = await Fetcher.fetchPairData( + baseToken, + quoteToken, + this.avalanche.provider + ); + const trades: Trade[] = Trade.bestTradeExactIn( + [pair], + nativeTokenAmount, + quoteToken, + { maxHops: 1 } + ); + if (!trades || trades.length === 0) { + throw new UniswapishPriceError( + `priceSwapIn: no trade pair found for ${baseToken} to ${quoteToken}.` + ); + } + logger.info( + `Best trade for ${baseToken.address}-${quoteToken.address}: ${trades[0]}` + ); + const expectedAmount = trades[0].minimumAmountOut( + this.getAllowedSlippage(allowedSlippage) + ); + return { trade: trades[0], expectedAmount }; + } + + /** + * Given the amount of `baseToken` desired to acquire from a transaction, + * calculate the amount of `quoteToken` needed for the transaction. + * + * This is typically used for calculating token buy prices. + * + * @param quoteToken Token input for the transaction + * @param baseToken Token output from the transaction + * @param amount Amount of `baseToken` desired from the transaction + */ + async estimateBuyTrade( + quoteToken: Token, + baseToken: Token, + amount: BigNumber, + allowedSlippage?: string + ): Promise { + const nativeTokenAmount: TokenAmount = new TokenAmount( + baseToken, + amount.toString() + ); + logger.info( + `Fetching pair data for ${quoteToken.address}-${baseToken.address}.` + ); + const pair: Pair = await Fetcher.fetchPairData( + quoteToken, + baseToken, + this.avalanche.provider + ); + const trades: Trade[] = Trade.bestTradeExactOut( + [pair], + quoteToken, + nativeTokenAmount, + { maxHops: 1 } + ); + if (!trades || trades.length === 0) { + throw new UniswapishPriceError( + `priceSwapOut: no trade pair found for ${quoteToken.address} to ${baseToken.address}.` + ); + } + logger.info( + `Best trade for ${quoteToken.address}-${baseToken.address}: ${trades[0]}` + ); + + const expectedAmount = trades[0].maximumAmountIn( + this.getAllowedSlippage(allowedSlippage) + ); + return { trade: trades[0], expectedAmount }; + } + + /** + * Given a wallet and a Uniswap-ish trade, try to execute it on blockchain. + * + * @param wallet Wallet + * @param trade Expected trade + * @param gasPrice Base gas price, for pre-EIP1559 transactions + * @param traderjoeRouter smart contract address + * @param ttl How long the swap is valid before expiry, in seconds + * @param abi Router contract ABI + * @param gasLimit Gas limit + * @param nonce (Optional) EVM transaction nonce + * @param maxFeePerGas (Optional) Maximum total fee per gas you want to pay + * @param maxPriorityFeePerGas (Optional) Maximum tip per gas you want to pay + */ + async executeTrade( + wallet: Wallet, + trade: Trade, + gasPrice: number, + traderjoeRouter: string, + ttl: number, + abi: ContractInterface, + gasLimit: number, + nonce?: number, + maxFeePerGas?: BigNumber, + maxPriorityFeePerGas?: BigNumber, + allowedSlippage?: string + ): Promise { + const result = Router.swapCallParameters(trade, { + ttl, + recipient: wallet.address, + allowedSlippage: this.getAllowedSlippage(allowedSlippage), + }); + + const contract = new Contract(traderjoeRouter, abi, wallet); + return this.avalanche.nonceManager.provideNonce( + nonce, + wallet.address, + async (nextNonce) => { + let tx; + if (maxFeePerGas || maxPriorityFeePerGas) { + tx = await contract[result.methodName](...result.args, { + gasLimit: gasLimit, + value: result.value, + nonce: nextNonce, + maxFeePerGas, + maxPriorityFeePerGas, + }); + } else { + tx = await contract[result.methodName](...result.args, { + gasPrice: (gasPrice * 1e9).toFixed(0), + gasLimit: gasLimit.toFixed(0), + value: result.value, + nonce: nextNonce, + }); + } + logger.info(JSON.stringify(tx)); + + return tx; + } + ); + } +} diff --git a/src/connectors/uniswap/uniswap.config.ts b/src/connectors/uniswap/uniswap.config.ts new file mode 100644 index 0000000000..320d496eed --- /dev/null +++ b/src/connectors/uniswap/uniswap.config.ts @@ -0,0 +1,58 @@ +import { ConfigManagerV2 } from '../../services/config-manager-v2'; +import { AvailableNetworks } from '../../services/config-manager-types'; +export namespace UniswapConfig { + export interface NetworkConfig { + allowedSlippage: string; + gasLimitEstimate: number; + ttl: number; + maximumHops: number; + uniswapV3SmartOrderRouterAddress: (network: string) => string; + uniswapV3NftManagerAddress: (network: string) => string; + tradingTypes: (type: string) => Array; + availableNetworks: Array; + } + + export const config: NetworkConfig = { + allowedSlippage: ConfigManagerV2.getInstance().get( + `uniswap.allowedSlippage` + ), + gasLimitEstimate: ConfigManagerV2.getInstance().get( + `uniswap.gasLimitEstimate` + ), + ttl: ConfigManagerV2.getInstance().get(`uniswap.ttl`), + maximumHops: ConfigManagerV2.getInstance().get(`uniswap.maximumHops`), + uniswapV3SmartOrderRouterAddress: (network: string) => + ConfigManagerV2.getInstance().get( + `uniswap.contractAddresses.${network}.uniswapV3SmartOrderRouterAddress` + ), + uniswapV3NftManagerAddress: (network: string) => + ConfigManagerV2.getInstance().get( + `uniswap.contractAddresses.${network}.uniswapV3NftManagerAddress` + ), + tradingTypes: (type: string) => { + return type === 'swap' ? ['EVM_AMM'] : ['EVM_AMM_LP']; + }, + availableNetworks: [ + { + chain: 'ethereum', + networks: Object.keys( + ConfigManagerV2.getInstance().get('uniswap.contractAddresses') + ).filter((network) => + Object.keys( + ConfigManagerV2.getInstance().get('ethereum.networks') + ).includes(network) + ), + }, + { + chain: 'polygon', + networks: Object.keys( + ConfigManagerV2.getInstance().get('uniswap.contractAddresses') + ).filter((network) => + Object.keys( + ConfigManagerV2.getInstance().get('polygon.networks') + ).includes(network) + ), + }, + ], + }; +} diff --git a/src/connectors/uniswap/uniswap.controllers.ts b/src/connectors/uniswap/uniswap.controllers.ts new file mode 100644 index 0000000000..57831232c6 --- /dev/null +++ b/src/connectors/uniswap/uniswap.controllers.ts @@ -0,0 +1,630 @@ +import Decimal from 'decimal.js-light'; +import { BigNumber, Transaction, Wallet } from 'ethers'; +import { Token } from '@uniswap/sdk-core'; +import { FeeAmount } from '@uniswap/v3-sdk'; +import { + HttpException, + LOAD_WALLET_ERROR_CODE, + LOAD_WALLET_ERROR_MESSAGE, + TOKEN_NOT_SUPPORTED_ERROR_CODE, + TOKEN_NOT_SUPPORTED_ERROR_MESSAGE, + PRICE_FAILED_ERROR_CODE, + PRICE_FAILED_ERROR_MESSAGE, + TRADE_FAILED_ERROR_CODE, + TRADE_FAILED_ERROR_MESSAGE, + SWAP_PRICE_EXCEEDS_LIMIT_PRICE_ERROR_CODE, + SWAP_PRICE_EXCEEDS_LIMIT_PRICE_ERROR_MESSAGE, + SWAP_PRICE_LOWER_THAN_LIMIT_PRICE_ERROR_CODE, + SWAP_PRICE_LOWER_THAN_LIMIT_PRICE_ERROR_MESSAGE, + UNKNOWN_ERROR_ERROR_CODE, + UNKNOWN_ERROR_MESSAGE, +} from '../../services/error-handler'; +import { TokenInfo } from '../../services/ethereum-base'; +import { latency, gasCostInEthString } from '../../services/base'; +import { + Ethereumish, + ExpectedTrade, + Uniswapish, + UniswapLPish, + Tokenish, + Fractionish, +} from '../../services/common-interfaces'; +import { logger } from '../../services/logger'; +import { + EstimateGasResponse, + PriceRequest, + PriceResponse, + TradeRequest, + TradeResponse, + AddLiquidityRequest, + AddLiquidityResponse, + RemoveLiquidityRequest, + RemoveLiquidityResponse, + CollectEarnedFeesRequest, + PositionRequest, + PositionResponse, + PoolPriceRequest, + PoolPriceResponse, +} from '../../amm/amm.requests'; + +export interface TradeInfo { + baseToken: Tokenish; + quoteToken: Tokenish; + requestAmount: BigNumber; + expectedTrade: ExpectedTrade; +} + +export async function txWriteData( + ethereumish: Ethereumish, + address: string, + maxFeePerGas?: string, + maxPriorityFeePerGas?: string +): Promise<{ + wallet: Wallet; + maxFeePerGasBigNumber: BigNumber | undefined; + maxPriorityFeePerGasBigNumber: BigNumber | undefined; +}> { + let maxFeePerGasBigNumber: BigNumber | undefined; + if (maxFeePerGas) { + maxFeePerGasBigNumber = BigNumber.from(maxFeePerGas); + } + let maxPriorityFeePerGasBigNumber: BigNumber | undefined; + if (maxPriorityFeePerGas) { + maxPriorityFeePerGasBigNumber = BigNumber.from(maxPriorityFeePerGas); + } + + let wallet: Wallet; + try { + wallet = await ethereumish.getWallet(address); + } catch (err) { + logger.error(`Wallet ${address} not available.`); + throw new HttpException( + 500, + LOAD_WALLET_ERROR_MESSAGE + err, + LOAD_WALLET_ERROR_CODE + ); + } + return { wallet, maxFeePerGasBigNumber, maxPriorityFeePerGasBigNumber }; +} + +export async function getTradeInfo( + ethereumish: Ethereumish, + uniswapish: Uniswapish, + baseAsset: string, + quoteAsset: string, + baseAmount: Decimal, + tradeSide: string, + allowedSlippage?: string +): Promise { + const baseToken: Tokenish = getFullTokenFromSymbol( + ethereumish, + uniswapish, + baseAsset + ); + const quoteToken: Tokenish = getFullTokenFromSymbol( + ethereumish, + uniswapish, + quoteAsset + ); + const requestAmount: BigNumber = BigNumber.from( + baseAmount.toFixed(baseToken.decimals).replace('.', '') + ); + + let expectedTrade: ExpectedTrade; + if (tradeSide === 'BUY') { + expectedTrade = await uniswapish.estimateBuyTrade( + quoteToken, + baseToken, + requestAmount, + allowedSlippage + ); + } else { + expectedTrade = await uniswapish.estimateSellTrade( + baseToken, + quoteToken, + requestAmount, + allowedSlippage + ); + } + + return { + baseToken, + quoteToken, + requestAmount, + expectedTrade, + }; +} + +export async function price( + ethereumish: Ethereumish, + uniswapish: Uniswapish, + req: PriceRequest +): Promise { + const startTimestamp: number = Date.now(); + let tradeInfo: TradeInfo; + try { + tradeInfo = await getTradeInfo( + ethereumish, + uniswapish, + req.base, + req.quote, + new Decimal(req.amount), + req.side, + req.allowedSlippage + ); + } catch (e) { + if (e instanceof Error) { + throw new HttpException( + 500, + PRICE_FAILED_ERROR_MESSAGE + e.message, + PRICE_FAILED_ERROR_CODE + ); + } else { + throw new HttpException( + 500, + UNKNOWN_ERROR_MESSAGE, + UNKNOWN_ERROR_ERROR_CODE + ); + } + } + + const trade = tradeInfo.expectedTrade.trade; + const expectedAmount = tradeInfo.expectedTrade.expectedAmount; + + const tradePrice = + req.side === 'BUY' ? trade.executionPrice.invert() : trade.executionPrice; + + const gasLimitTransaction = ethereumish.gasLimitTransaction; + const gasPrice = ethereumish.gasPrice; + const gasLimitEstimate = uniswapish.gasLimitEstimate; + return { + network: ethereumish.chain, + timestamp: startTimestamp, + latency: latency(startTimestamp, Date.now()), + base: tradeInfo.baseToken.address, + quote: tradeInfo.quoteToken.address, + amount: new Decimal(req.amount).toFixed(tradeInfo.baseToken.decimals), + rawAmount: tradeInfo.requestAmount.toString(), + expectedAmount: expectedAmount.toSignificant(8), + price: tradePrice.toSignificant(8), + gasPrice: gasPrice, + gasPriceToken: ethereumish.nativeTokenSymbol, + gasLimit: gasLimitTransaction, + gasCost: gasCostInEthString(gasPrice, gasLimitEstimate), + }; +} + +export async function trade( + ethereumish: Ethereumish, + uniswapish: Uniswapish, + req: TradeRequest +): Promise { + const startTimestamp: number = Date.now(); + + const limitPrice = req.limitPrice; + const { wallet, maxFeePerGasBigNumber, maxPriorityFeePerGasBigNumber } = + await txWriteData( + ethereumish, + req.address, + req.maxFeePerGas, + req.maxPriorityFeePerGas + ); + + let tradeInfo: TradeInfo; + try { + tradeInfo = await getTradeInfo( + ethereumish, + uniswapish, + req.base, + req.quote, + new Decimal(req.amount), + req.side + ); + } catch (e) { + if (e instanceof Error) { + logger.error(`Could not get trade info. ${e.message}`); + throw new HttpException( + 500, + TRADE_FAILED_ERROR_MESSAGE + e.message, + TRADE_FAILED_ERROR_CODE + ); + } else { + logger.error('Unknown error trying to get trade info.'); + throw new HttpException( + 500, + UNKNOWN_ERROR_MESSAGE, + UNKNOWN_ERROR_ERROR_CODE + ); + } + } + + const gasPrice: number = ethereumish.gasPrice; + const gasLimitTransaction: number = ethereumish.gasLimitTransaction; + const gasLimitEstimate: number = uniswapish.gasLimitEstimate; + + if (req.side === 'BUY') { + const price: Fractionish = + tradeInfo.expectedTrade.trade.executionPrice.invert(); + if ( + limitPrice && + new Decimal(price.toFixed(8)).gt(new Decimal(limitPrice)) + ) { + logger.error('Swap price exceeded limit price.'); + throw new HttpException( + 500, + SWAP_PRICE_EXCEEDS_LIMIT_PRICE_ERROR_MESSAGE( + price.toFixed(8), + limitPrice + ), + SWAP_PRICE_EXCEEDS_LIMIT_PRICE_ERROR_CODE + ); + } + + const tx = await uniswapish.executeTrade( + wallet, + tradeInfo.expectedTrade.trade, + gasPrice, + uniswapish.router, + uniswapish.ttl, + uniswapish.routerAbi, + gasLimitTransaction, + req.nonce, + maxFeePerGasBigNumber, + maxPriorityFeePerGasBigNumber, + req.allowedSlippage + ); + + if (tx.hash) { + await ethereumish.txStorage.saveTx( + ethereumish.chain, + ethereumish.chainId, + tx.hash, + new Date(), + ethereumish.gasPrice + ); + } + + logger.info( + `Trade has been executed, txHash is ${tx.hash}, nonce is ${tx.nonce}, gasPrice is ${gasPrice}.` + ); + + return { + network: ethereumish.chain, + timestamp: startTimestamp, + latency: latency(startTimestamp, Date.now()), + base: tradeInfo.baseToken.address, + quote: tradeInfo.quoteToken.address, + amount: new Decimal(req.amount).toFixed(tradeInfo.baseToken.decimals), + rawAmount: tradeInfo.requestAmount.toString(), + expectedIn: tradeInfo.expectedTrade.expectedAmount.toSignificant(8), + price: price.toSignificant(8), + gasPrice: gasPrice, + gasPriceToken: ethereumish.nativeTokenSymbol, + gasLimit: gasLimitTransaction, + gasCost: gasCostInEthString(gasPrice, gasLimitEstimate), + nonce: tx.nonce, + txHash: tx.hash, + }; + } else { + const price: Fractionish = tradeInfo.expectedTrade.trade.executionPrice; + logger.info( + `Expected execution price is ${price.toFixed(6)}, ` + + `limit price is ${limitPrice}.` + ); + if ( + limitPrice && + new Decimal(price.toFixed(8)).lt(new Decimal(limitPrice)) + ) { + logger.error('Swap price lower than limit price.'); + throw new HttpException( + 500, + SWAP_PRICE_LOWER_THAN_LIMIT_PRICE_ERROR_MESSAGE( + price.toFixed(8), + limitPrice + ), + SWAP_PRICE_LOWER_THAN_LIMIT_PRICE_ERROR_CODE + ); + } + + const tx = await uniswapish.executeTrade( + wallet, + tradeInfo.expectedTrade.trade, + gasPrice, + uniswapish.router, + uniswapish.ttl, + uniswapish.routerAbi, + gasLimitTransaction, + req.nonce, + maxFeePerGasBigNumber, + maxPriorityFeePerGasBigNumber + ); + + logger.info( + `Trade has been executed, txHash is ${tx.hash}, nonce is ${tx.nonce}, gasPrice is ${gasPrice}.` + ); + + return { + network: ethereumish.chain, + timestamp: startTimestamp, + latency: latency(startTimestamp, Date.now()), + base: tradeInfo.baseToken.address, + quote: tradeInfo.quoteToken.address, + amount: new Decimal(req.amount).toFixed(tradeInfo.baseToken.decimals), + rawAmount: tradeInfo.requestAmount.toString(), + expectedOut: tradeInfo.expectedTrade.expectedAmount.toSignificant(8), + price: price.toSignificant(8), + gasPrice: gasPrice, + gasPriceToken: ethereumish.nativeTokenSymbol, + gasLimit: gasLimitTransaction, + gasCost: gasCostInEthString(gasPrice, gasLimitEstimate), + nonce: tx.nonce, + txHash: tx.hash, + }; + } +} + +export async function addLiquidity( + ethereumish: Ethereumish, + uniswapish: UniswapLPish, + req: AddLiquidityRequest +): Promise { + const startTimestamp: number = Date.now(); + + const { wallet, maxFeePerGasBigNumber, maxPriorityFeePerGasBigNumber } = + await txWriteData( + ethereumish, + req.address, + req.maxFeePerGas, + req.maxPriorityFeePerGas + ); + + const fee = FeeAmount[req.fee.toUpperCase() as keyof typeof FeeAmount]; + + const token0: Token = getFullTokenFromSymbol( + ethereumish, + uniswapish, + req.token0 + ) as Token; + + const token1: Token = getFullTokenFromSymbol( + ethereumish, + uniswapish, + req.token1 + ) as Token; + + const gasPrice: number = ethereumish.gasPrice; + const gasLimitTransaction: number = ethereumish.gasLimitTransaction; + const gasLimitEstimate: number = uniswapish.gasLimitEstimate; + + const tx = await uniswapish.addPosition( + wallet, + token0, + token1, + req.amount0, + req.amount1, + fee, + Number(req.lowerPrice), + Number(req.upperPrice), + req.tokenId ? req.tokenId : 0, + gasLimitTransaction, + gasPrice, + req.nonce, + maxFeePerGasBigNumber, + maxPriorityFeePerGasBigNumber + ); + + logger.info( + `Liquidity added, txHash is ${tx.hash}, nonce is ${tx.nonce}, gasPrice is ${gasPrice}.` + ); + + return { + network: ethereumish.chain, + timestamp: startTimestamp, + latency: latency(startTimestamp, Date.now()), + token0: token0.address, + token1: token1.address, + fee: req.fee, + tokenId: req.tokenId ? req.tokenId : 0, + gasPrice: gasPrice, + gasPriceToken: ethereumish.nativeTokenSymbol, + gasLimit: gasLimitTransaction, + gasCost: gasCostInEthString(gasPrice, gasLimitEstimate), + nonce: tx.nonce, + txHash: tx.hash, + }; +} + +export async function removeLiquidity( + ethereumish: Ethereumish, + uniswapish: UniswapLPish, + req: RemoveLiquidityRequest +): Promise { + const startTimestamp: number = Date.now(); + + const { wallet, maxFeePerGasBigNumber, maxPriorityFeePerGasBigNumber } = + await txWriteData( + ethereumish, + req.address, + req.maxFeePerGas, + req.maxPriorityFeePerGas + ); + + const gasPrice: number = ethereumish.gasPrice; + const gasLimitTransaction: number = ethereumish.gasLimitTransaction; + const gasLimitEstimate: number = uniswapish.gasLimitEstimate; + + const tx = await uniswapish.reducePosition( + wallet, + req.tokenId, + req.decreasePercent ? req.decreasePercent : 100, + gasLimitTransaction, + gasPrice, + req.nonce, + maxFeePerGasBigNumber, + maxPriorityFeePerGasBigNumber + ); + + logger.info( + `Liquidity removed, txHash is ${tx.hash}, nonce is ${tx.nonce}, gasPrice is ${gasPrice}.` + ); + + return { + network: ethereumish.chain, + timestamp: startTimestamp, + latency: latency(startTimestamp, Date.now()), + tokenId: req.tokenId, + gasPrice: gasPrice, + gasPriceToken: ethereumish.nativeTokenSymbol, + gasLimit: gasLimitTransaction, + gasCost: gasCostInEthString(gasPrice, gasLimitEstimate), + nonce: tx.nonce, + txHash: tx.hash, + }; +} + +export async function collectEarnedFees( + ethereumish: Ethereumish, + uniswapish: UniswapLPish, + req: CollectEarnedFeesRequest +): Promise { + const startTimestamp: number = Date.now(); + + const { wallet, maxFeePerGasBigNumber, maxPriorityFeePerGasBigNumber } = + await txWriteData( + ethereumish, + req.address, + req.maxFeePerGas, + req.maxPriorityFeePerGas + ); + + const gasPrice: number = ethereumish.gasPrice; + const gasLimitTransaction: number = ethereumish.gasLimitTransaction; + const gasLimitEstimate: number = uniswapish.gasLimitEstimate; + + const tx: Transaction = ( + await uniswapish.collectFees( + wallet, + req.tokenId, + gasLimitTransaction, + gasPrice, + req.nonce, + maxFeePerGasBigNumber, + maxPriorityFeePerGasBigNumber + ) + ); + + logger.info( + `Fees collected, txHash is ${tx.hash}, nonce is ${tx.nonce}, gasPrice is ${gasPrice}.` + ); + + return { + network: ethereumish.chain, + timestamp: startTimestamp, + latency: latency(startTimestamp, Date.now()), + tokenId: req.tokenId, + gasPrice: gasPrice, + gasPriceToken: ethereumish.nativeTokenSymbol, + gasLimit: gasLimitTransaction, + gasCost: gasCostInEthString(gasPrice, gasLimitEstimate), + nonce: tx.nonce, + txHash: tx.hash, + }; +} + +export async function positionInfo( + ethereumish: Ethereumish, + uniswapish: UniswapLPish, + req: PositionRequest +): Promise { + const startTimestamp: number = Date.now(); + + const posInfo = await uniswapish.getPosition(req.tokenId); + + logger.info(`Position info for position ${req.tokenId} retrieved.`); + + return { + network: ethereumish.chain, + timestamp: startTimestamp, + latency: latency(startTimestamp, Date.now()), + ...posInfo, + }; +} + +export async function poolPrice( + ethereumish: Ethereumish, + uniswapish: UniswapLPish, + req: PoolPriceRequest +): Promise { + const startTimestamp: number = Date.now(); + + const token0: Token = getFullTokenFromSymbol( + ethereumish, + uniswapish, + req.token0 + ) as Token; + + const token1: Token = getFullTokenFromSymbol( + ethereumish, + uniswapish, + req.token1 + ) as Token; + + const fee = FeeAmount[req.fee.toUpperCase() as keyof typeof FeeAmount]; + + const prices = await uniswapish.poolPrice( + token0, + token1, + fee, + req.period, + req.interval + ); + + return { + network: ethereumish.chain, + timestamp: startTimestamp, + latency: latency(startTimestamp, Date.now()), + token0: token0.address, + token1: token1.address, + fee: req.fee, + period: req.period, + interval: req.interval, + prices: prices, + }; +} + +export function getFullTokenFromSymbol( + ethereumish: Ethereumish, + uniswapish: Uniswapish | UniswapLPish, + tokenSymbol: string +): Tokenish | Token { + const tokenInfo: TokenInfo | undefined = + ethereumish.getTokenBySymbol(tokenSymbol); + let fullToken: Tokenish | Token | undefined; + if (tokenInfo) { + fullToken = uniswapish.getTokenByAddress(tokenInfo.address); + } + if (!fullToken) + throw new HttpException( + 500, + TOKEN_NOT_SUPPORTED_ERROR_MESSAGE + tokenSymbol, + TOKEN_NOT_SUPPORTED_ERROR_CODE + ); + return fullToken; +} + +export async function estimateGas( + ethereumish: Ethereumish, + uniswapish: Uniswapish +): Promise { + const gasPrice: number = ethereumish.gasPrice; + const gasLimitTransaction: number = ethereumish.gasLimitTransaction; + const gasLimitEstimate: number = uniswapish.gasLimitEstimate; + return { + network: ethereumish.chain, + timestamp: Date.now(), + gasPrice, + gasPriceToken: ethereumish.nativeTokenSymbol, + gasLimit: gasLimitTransaction, + gasCost: gasCostInEthString(gasPrice, gasLimitEstimate), + }; +} diff --git a/src/connectors/uniswap/uniswap.lp.helper.ts b/src/connectors/uniswap/uniswap.lp.helper.ts new file mode 100644 index 0000000000..6167e72467 --- /dev/null +++ b/src/connectors/uniswap/uniswap.lp.helper.ts @@ -0,0 +1,466 @@ +import { + InitializationError, + SERVICE_UNITIALIZED_ERROR_CODE, + SERVICE_UNITIALIZED_ERROR_MESSAGE, +} from '../../services/error-handler'; +import { UniswapConfig } from './uniswap.config'; +import { Contract, ContractInterface } from '@ethersproject/contracts'; +import { + Token, + Fraction, + CurrencyAmount, + Percent, + Price, +} from '@uniswap/sdk-core'; +import * as uniV3 from '@uniswap/v3-sdk'; +import { + AlphaRouter, + SwapToRatioResponse, + SwapToRatioStatus, +} from '@uniswap/smart-order-router'; +import { providers, Wallet, Signer, utils } from 'ethers'; +import { percentRegexp } from '../../services/config-manager-v2'; +import { Ethereum } from '../../chains/ethereum/ethereum'; +import { + PoolState, + RawPosition, + AddPosReturn, + ReduceLiquidityData, +} from './uniswap.lp.interfaces'; +import * as math from 'mathjs'; + +export class UniswapLPHelper { + protected ethereum: Ethereum; + protected chainId; + private _router: string; + private _nftManager: string; + private _ttl: number; + private _routerAbi: ContractInterface; + private _nftAbi: ContractInterface; + private _poolAbi: ContractInterface; + private _alphaRouter: AlphaRouter; + private tokenList: Record = {}; + private _chain: string; + private _ready: boolean = false; + public abiDecoder: any; + + constructor(chain: string, network: string) { + this.ethereum = Ethereum.getInstance(network); + this._chain = chain; + this.chainId = this.ethereum.chainId; + this._alphaRouter = new AlphaRouter({ + chainId: this.chainId, + provider: this.ethereum.provider, + }); + this._router = + UniswapConfig.config.uniswapV3SmartOrderRouterAddress(network); + this._nftManager = UniswapConfig.config.uniswapV3NftManagerAddress(network); + this._ttl = UniswapConfig.config.ttl; + this._routerAbi = + require('@uniswap/v3-periphery/artifacts/contracts/SwapRouter.sol/SwapRouter.json').abi; + this._nftAbi = + require('@uniswap/v3-periphery/artifacts/contracts/NonfungiblePositionManager.sol/NonfungiblePositionManager.json').abi; + this._poolAbi = + require('@uniswap/v3-core/artifacts/contracts/UniswapV3Pool.sol/UniswapV3Pool.json').abi; + this.abiDecoder = require('abi-decoder'); + this.abiDecoder.addABI(this._nftAbi); + this.abiDecoder.addABI(this._routerAbi); + } + + public ready(): boolean { + return this._ready; + } + + public get alphaRouter(): AlphaRouter { + return this._alphaRouter; + } + + public get router(): string { + return this._router; + } + + public get nftManager(): string { + return this._nftManager; + } + + public get ttl(): number { + return parseInt(String(Date.now() / 1000)) + this._ttl; + } + + public get routerAbi(): ContractInterface { + return this._routerAbi; + } + + public get nftAbi(): ContractInterface { + return this._nftAbi; + } + + public get poolAbi(): ContractInterface { + return this._poolAbi; + } + + /** + * Given a token's address, return the connector's native representation of + * the token. + * + * @param address Token address + */ + public getTokenByAddress(address: string): Token { + return this.tokenList[address]; + } + + public async init() { + if (this._chain == 'ethereum' && !this.ethereum.ready()) + throw new InitializationError( + SERVICE_UNITIALIZED_ERROR_MESSAGE('ETH'), + SERVICE_UNITIALIZED_ERROR_CODE + ); + for (const token of this.ethereum.storedTokenList) { + this.tokenList[token.address] = new Token( + this.chainId, + token.address, + token.decimals, + token.symbol, + token.name + ); + } + this._ready = true; + } + + getPercentage(rawPercent: number | string): Percent { + const slippage = math.fraction(rawPercent) as math.Fraction; + return new Percent(slippage.n, slippage.d * 100); + } + + getSlippagePercentage(): Percent { + const allowedSlippage = UniswapConfig.config.allowedSlippage; + const nd = allowedSlippage.match(percentRegexp); + if (nd) return new Percent(nd[1], nd[2]); + throw new Error( + 'Encountered a malformed percent string in the config for ALLOWED_SLIPPAGE.' + ); + } + + getContract( + contract: string, + signer: providers.StaticJsonRpcProvider | Signer + ): Contract { + if (contract === 'router') { + return new Contract(this.router, this.routerAbi, signer); + } else { + return new Contract(this.nftManager, this.nftAbi, signer); + } + } + + getPoolContract( + pool: string, + wallet: providers.StaticJsonRpcProvider | Signer + ): Contract { + return new Contract(pool, this.poolAbi, wallet); + } + + async getPoolState( + poolAddress: string, + fee: uniV3.FeeAmount + ): Promise { + const poolContract = this.getPoolContract( + poolAddress, + this.ethereum.provider + ); + const minTick = uniV3.nearestUsableTick( + uniV3.TickMath.MIN_TICK, + uniV3.TICK_SPACINGS[fee] + ); + const maxTick = uniV3.nearestUsableTick( + uniV3.TickMath.MAX_TICK, + uniV3.TICK_SPACINGS[fee] + ); + const poolDataReq = await Promise.allSettled([ + poolContract.liquidity(), + poolContract.slot0(), + poolContract.ticks(minTick), + poolContract.ticks(maxTick), + ]); + + const rejected = poolDataReq.filter( + (r) => r.status === 'rejected' + ) as PromiseRejectedResult[]; + + if (rejected.length > 0) throw new Error('Unable to fetch pool state'); + + const poolData = ( + poolDataReq.filter( + (r) => r.status === 'fulfilled' + ) as PromiseFulfilledResult[] + ).map((r) => r.value); + + return { + liquidity: poolData[0], + sqrtPriceX96: poolData[1][0], + tick: poolData[1][1], + observationIndex: poolData[1][2], + observationCardinality: poolData[1][3], + observationCardinalityNext: poolData[1][4], + feeProtocol: poolData[1][5], + unlocked: poolData[1][6], + fee: fee, + tickProvider: [ + { + index: minTick, + liquidityNet: poolData[2][1], + liquidityGross: poolData[2][0], + }, + { + index: maxTick, + liquidityNet: poolData[3][1], + liquidityGross: poolData[3][0], + }, + ], + }; + } + + async poolPrice( + token0: Token, + token1: Token, + tier: uniV3.FeeAmount, + period: number = 1, + interval: number = 1 + ): Promise { + const fetchPriceTime = []; + const prices = []; + const poolContract = new Contract( + uniV3.Pool.getAddress(token0, token1, tier), + this.poolAbi, + this.ethereum.provider + ); + for ( + let x = Math.ceil(period / interval) * interval; + x >= 0; + x -= interval + ) { + fetchPriceTime.push(x); + } + try { + const response = await poolContract.observe(fetchPriceTime); + for (let twap = 0; twap < response.tickCumulatives.length - 1; twap++) { + prices.push( + uniV3 + .tickToPrice( + token0, + token1, + Math.ceil( + response.tickCumulatives[twap + 1].sub( + response.tickCumulatives[twap].toNumber() + ) / interval + ) + ) + .toFixed(8) + ); + } + } catch (e) { + return ['0']; + } + return prices; + } + + async getRawPosition(wallet: Wallet, tokenId: number): Promise { + const contract = this.getContract('nft', wallet); + const requests = [contract.positions(tokenId)]; + const positionInfoReq = await Promise.allSettled(requests); + const rejected = positionInfoReq.filter( + (r) => r.status === 'rejected' + ) as PromiseRejectedResult[]; + if (rejected.length > 0) throw new Error('Unable to fetch position'); + const positionInfo = ( + positionInfoReq.filter( + (r) => r.status === 'fulfilled' + ) as PromiseFulfilledResult[] + ).map((r) => r.value); + return positionInfo[0]; + } + + getReduceLiquidityData( + percent: number, + tokenId: number, + token0: Token, + token1: Token, + wallet: Wallet + ): ReduceLiquidityData { + return { + tokenId: tokenId, + liquidityPercentage: this.getPercentage(percent), + slippageTolerance: this.getSlippagePercentage(), + deadline: this.ttl, + burnToken: false, + collectOptions: { + expectedCurrencyOwed0: CurrencyAmount.fromRawAmount(token0, '0'), + expectedCurrencyOwed1: CurrencyAmount.fromRawAmount(token1, '0'), + recipient: wallet.address, + }, + }; + } + + async addPositionHelper( + wallet: Wallet, + token0: Token, + token1: Token, + amount0: string, + amount1: string, + fee: uniV3.FeeAmount, + lowerPrice: number, + upperPrice: number, + tokenId: number = 0 + ): Promise { + if (token1.sortsBefore(token0)) { + [token0, token1] = [token1, token0]; + [amount0, amount1] = [amount1, amount0]; + [lowerPrice, upperPrice] = [1 / upperPrice, 1 / lowerPrice]; + } + const lowerPriceInFraction = math.fraction(lowerPrice) as math.Fraction; + const upperPriceInFraction = math.fraction(upperPrice) as math.Fraction; + const poolData = await this.getPoolState( + uniV3.Pool.getAddress(token0, token1, fee), + fee + ); + const pool = new uniV3.Pool( + token0, + token1, + poolData.fee, + poolData.sqrtPriceX96.toString(), + poolData.liquidity.toString(), + poolData.tick + ); + + const addLiquidityOptions = + tokenId === 0 ? { recipient: wallet.address } : { tokenId: tokenId }; + + const swapOptions = { + recipient: wallet.address, + slippageTolerance: this.getSlippagePercentage(), + deadline: this.ttl, + }; + + const tickLower = uniV3.nearestUsableTick( + uniV3.priceToClosestTick( + new Price( + token0, + token1, + utils + .parseUnits(lowerPriceInFraction.d.toString(), token0.decimals) + .toString(), + utils + .parseUnits(lowerPriceInFraction.n.toString(), token1.decimals) + .toString() + ) + ), + uniV3.TICK_SPACINGS[fee] + ); + + const tickUpper = uniV3.nearestUsableTick( + uniV3.priceToClosestTick( + new Price( + token0, + token1, + utils + .parseUnits(upperPriceInFraction.d.toString(), token0.decimals) + .toString(), + utils + .parseUnits(upperPriceInFraction.n.toString(), token1.decimals) + .toString() + ) + ), + uniV3.TICK_SPACINGS[fee] + ); + + const position = uniV3.Position.fromAmounts({ + pool: pool, + tickLower: + tickLower === tickUpper + ? tickLower - uniV3.TICK_SPACINGS[fee] + : tickLower, + tickUpper: tickUpper, + amount0: utils.parseUnits(amount0, token0.decimals).toString(), + amount1: utils.parseUnits(amount1, token1.decimals).toString(), + useFullPrecision: true, + }); + + const autorouterRoute: SwapToRatioResponse = + await this.alphaRouter.routeToRatio( + CurrencyAmount.fromRawAmount( + token0, + utils.parseUnits(amount0, token0.decimals).toString() + ), + CurrencyAmount.fromRawAmount( + token1, + utils.parseUnits(amount1, token1.decimals).toString() + ), + position, + { + ratioErrorTolerance: new Fraction(1, 100), + maxIterations: 6, + }, + { + swapOptions: swapOptions, + addLiquidityOptions: addLiquidityOptions, + } + ); + + let methodParameters: uniV3.MethodParameters; + let swapReq = false; + if (autorouterRoute.status === SwapToRatioStatus.SUCCESS) { + swapReq = true; + methodParameters = autorouterRoute.result + .methodParameters as uniV3.MethodParameters; + } else if (autorouterRoute.status === SwapToRatioStatus.NO_SWAP_NEEDED) { + methodParameters = uniV3.NonfungiblePositionManager.addCallParameters( + position, + { ...swapOptions, ...addLiquidityOptions } + ); + } else { + throw new Error( + `Unable to add liquidity - ${SwapToRatioStatus[autorouterRoute.status]}` + ); + } + return { ...methodParameters, swapRequired: swapReq }; + } + + async reducePositionHelper( + wallet: Wallet, + tokenId: number, + decreasePercent: number + ): Promise { + // Reduce position and burn + const positionData = await this.getRawPosition(wallet, tokenId); + const token0 = this.getTokenByAddress(positionData.token0); + const token1 = this.getTokenByAddress(positionData.token1); + const fee = positionData.fee; + if (!token0 || !token1) { + throw new Error(`One of the tokens in this position isn't recognized.`); + } + const poolAddress = uniV3.Pool.getAddress(token0, token1, fee); + const poolData = await this.getPoolState(poolAddress, fee); + const position = new uniV3.Position({ + pool: new uniV3.Pool( + token0, + token1, + poolData.fee, + poolData.sqrtPriceX96.toString(), + poolData.liquidity.toString(), + poolData.tick + ), + tickLower: positionData.tickLower, + tickUpper: positionData.tickUpper, + liquidity: positionData.liquidity, + }); + return uniV3.NonfungiblePositionManager.removeCallParameters( + position, + this.getReduceLiquidityData( + decreasePercent, + tokenId, + token0, + token1, + wallet + ) + ); + } +} diff --git a/src/connectors/uniswap/uniswap.lp.interfaces.ts b/src/connectors/uniswap/uniswap.lp.interfaces.ts new file mode 100644 index 0000000000..5169affaaa --- /dev/null +++ b/src/connectors/uniswap/uniswap.lp.interfaces.ts @@ -0,0 +1,52 @@ +import { CurrencyAmount, Percent, Token } from '@uniswap/sdk-core'; +import * as uniV3 from '@uniswap/v3-sdk'; +import { BigNumber } from 'ethers'; + +export interface PoolState { + liquidity: BigNumber; + sqrtPriceX96: BigNumber; + tick: number; + observationIndex: BigNumber; + observationCardinality: BigNumber; + observationCardinalityNext: BigNumber; + feeProtocol: BigNumber; + unlocked: boolean; + fee: uniV3.FeeAmount; + tickProvider: { + index: number; + liquidityNet: BigNumber; + liquidityGross: BigNumber; + }[]; +} + +export interface RawPosition { + nonce: number; + operator: string; + token0: string; + token1: string; + fee: number; + tickLower: number; + tickUpper: number; + liquidity: number; + feeGrowthInside0LastX128: BigNumber; + feeGrowthInside1LastX128: BigNumber; + tokensOwed0: BigNumber; + tokensOwed1: BigNumber; +} + +export interface AddPosReturn extends uniV3.MethodParameters { + swapRequired: boolean; +} + +export interface ReduceLiquidityData { + tokenId: number; + liquidityPercentage: Percent; + slippageTolerance: Percent; + deadline: number; + burnToken: boolean; + collectOptions: { + expectedCurrencyOwed0: CurrencyAmount; + expectedCurrencyOwed1: CurrencyAmount; + recipient: string; + }; +} diff --git a/src/connectors/uniswap/uniswap.lp.ts b/src/connectors/uniswap/uniswap.lp.ts new file mode 100644 index 0000000000..e6205c0174 --- /dev/null +++ b/src/connectors/uniswap/uniswap.lp.ts @@ -0,0 +1,257 @@ +import { logger } from '../../services/logger'; +import { PositionInfo, UniswapLPish } from '../../services/common-interfaces'; +import { UniswapConfig } from './uniswap.config'; +import { Token } from '@uniswap/sdk-core'; +import * as uniV3 from '@uniswap/v3-sdk'; +import { + BigNumber, + Transaction, + Wallet, + utils, + constants, + providers, +} from 'ethers'; +import { UniswapLPHelper } from './uniswap.lp.helper'; +import { AddPosReturn } from './uniswap.lp.interfaces'; + +const MaxUint128 = BigNumber.from(2).pow(128).sub(1); + +export type Overrides = { + gasLimit: BigNumber; + gasPrice?: BigNumber; + value?: BigNumber; + nonce?: BigNumber; + maxFeePerGas?: BigNumber; + maxPriorityFeePerGas?: BigNumber; +}; + +export class UniswapLP extends UniswapLPHelper implements UniswapLPish { + private static _instances: { [name: string]: UniswapLP }; + private _gasLimitEstimate: number; + + private constructor(chain: string, network: string) { + super(chain, network); + this._gasLimitEstimate = UniswapConfig.config.gasLimitEstimate; + } + + public static getInstance(chain: string, network: string): UniswapLP { + if (UniswapLP._instances === undefined) { + UniswapLP._instances = {}; + } + if (!(chain + network in UniswapLP._instances)) { + UniswapLP._instances[chain + network] = new UniswapLP(chain, network); + } + + return UniswapLP._instances[chain + network]; + } + + /** + * Default gas limit for swap transactions. + */ + public get gasLimitEstimate(): number { + return this._gasLimitEstimate; + } + + async getPosition(tokenId: number): Promise { + const contract = this.getContract('nft', this.ethereum.provider); + const requests = [ + contract.positions(tokenId), + this.collectFees(this.ethereum.provider, tokenId), // static call to calculate earned fees + ]; + const positionInfoReq = await Promise.allSettled(requests); + const rejected = positionInfoReq.filter( + (r) => r.status === 'rejected' + ) as PromiseRejectedResult[]; + if (rejected.length > 0) + throw new Error(`Unable to fetch position with id ${tokenId}`); + const positionInfo = ( + positionInfoReq.filter( + (r) => r.status === 'fulfilled' + ) as PromiseFulfilledResult[] + ).map((r) => r.value); + const position = positionInfo[0]; + const feeInfo = positionInfo[1]; + const token0 = this.getTokenByAddress(position.token0); + const token1 = this.getTokenByAddress(position.token1); + if (!token0 || !token1) { + throw new Error(`One of the tokens in this position isn't recognized.`); + } + const fee = position.fee; + const poolAddress = uniV3.Pool.getAddress(token0, token1, fee); + const poolData = await this.getPoolState(poolAddress, fee); + const positionInst = new uniV3.Position({ + pool: new uniV3.Pool( + token0, + token1, + poolData.fee, + poolData.sqrtPriceX96.toString(), + poolData.liquidity.toString(), + poolData.tick + ), + tickLower: position.tickLower, + tickUpper: position.tickUpper, + liquidity: position.liquidity, + }); + return { + token0: token0.symbol, + token1: token1.symbol, + fee: uniV3.FeeAmount[position.fee], + lowerPrice: positionInst.token0PriceLower.toFixed(8), + upperPrice: positionInst.token0PriceUpper.toFixed(8), + amount0: positionInst.amount0.toFixed(), + amount1: positionInst.amount1.toFixed(), + unclaimedToken0: utils.formatUnits( + feeInfo.amount0.toString(), + token0.decimals + ), + unclaimedToken1: utils.formatUnits( + feeInfo.amount1.toString(), + token1.decimals + ), + }; + } + + async addPosition( + wallet: Wallet, + token0: Token, + token1: Token, + amount0: string, + amount1: string, + fee: uniV3.FeeAmount, + lowerPrice: number, + upperPrice: number, + tokenId: number = 0, + gasLimit: number, + gasPrice: number, + nonce?: number, + maxFeePerGas?: BigNumber, + maxPriorityFeePerGas?: BigNumber + ): Promise { + const addLiquidityResponse: AddPosReturn = await this.addPositionHelper( + wallet, + token0, + token1, + amount0, + amount1, + fee, + lowerPrice, + upperPrice, + tokenId + ); + + if (nonce === undefined) { + nonce = await this.ethereum.nonceManager.getNextNonce(wallet.address); + } + + const tx = await wallet.sendTransaction({ + data: addLiquidityResponse.calldata, + to: addLiquidityResponse.swapRequired ? this.router : this.nftManager, + ...this.generateOverrides( + gasLimit, + gasPrice, + nonce, + maxFeePerGas, + maxPriorityFeePerGas, + addLiquidityResponse.value + ), + }); + logger.info(`Uniswap V3 Add position Tx Hash: ${tx.hash}`); + return tx; + } + + async reducePosition( + wallet: Wallet, + tokenId: number, + decreasePercent: number = 100, + gasLimit: number, + gasPrice: number, + nonce?: number, + maxFeePerGas?: BigNumber, + maxPriorityFeePerGas?: BigNumber + ): Promise { + // Reduce position and burn + const contract = this.getContract('nft', wallet); + const { calldata, value } = await this.reducePositionHelper( + wallet, + tokenId, + decreasePercent + ); + + if (nonce === undefined) { + nonce = await this.ethereum.nonceManager.getNextNonce(wallet.address); + } + + const tx = await contract.multicall( + [calldata], + this.generateOverrides( + gasLimit, + gasPrice, + nonce, + maxFeePerGas, + maxPriorityFeePerGas, + value + ) + ); + logger.info(`Uniswap V3 Remove position Tx Hash: ${tx.hash}`); + return tx; + } + + async collectFees( + wallet: Wallet | providers.StaticJsonRpcProvider, + tokenId: number, + gasLimit: number = this.gasLimitEstimate, + gasPrice: number = 0, + nonce?: number, + maxFeePerGas?: BigNumber, + maxPriorityFeePerGas?: BigNumber + ): Promise { + const contract = this.getContract('nft', wallet); + const collectData = { + tokenId: tokenId, + recipient: constants.AddressZero, + amount0Max: MaxUint128, + amount1Max: MaxUint128, + }; + + if (wallet instanceof providers.StaticJsonRpcProvider) { + return await contract.callStatic.collect(collectData); + } else { + collectData.recipient = wallet.address; + if (nonce === undefined) { + nonce = await this.ethereum.nonceManager.getNextNonce(wallet.address); + } + return await contract.collect( + collectData, + this.generateOverrides( + gasLimit, + gasPrice, + nonce, + maxFeePerGas, + maxPriorityFeePerGas + ) + ); + } + } + + generateOverrides( + gasLimit: number, + gasPrice: number, + nonce?: number, + maxFeePerGas?: BigNumber, + maxPriorityFeePerGas?: BigNumber, + value?: string + ): Overrides { + const overrides: Overrides = { + gasLimit: BigNumber.from(String(gasLimit.toFixed(0))), + }; + if (maxFeePerGas && maxPriorityFeePerGas) { + overrides.maxFeePerGas = maxFeePerGas; + overrides.maxPriorityFeePerGas = maxPriorityFeePerGas; + } else { + overrides.gasPrice = BigNumber.from(String((gasPrice * 1e9).toFixed(0))); + } + if (nonce) overrides.nonce = BigNumber.from(String(nonce)); + if (value) overrides.value = BigNumber.from(value); + return overrides; + } +} diff --git a/src/connectors/uniswap/uniswap.ts b/src/connectors/uniswap/uniswap.ts new file mode 100644 index 0000000000..a016f2ef90 --- /dev/null +++ b/src/connectors/uniswap/uniswap.ts @@ -0,0 +1,323 @@ +import { UniswapishPriceError } from '../../services/error-handler'; +import { isFractionString } from '../../services/validators'; +import { UniswapConfig } from './uniswap.config'; +import routerAbi from './uniswap_v2_router_abi.json'; +import { + ContractInterface, + ContractTransaction, +} from '@ethersproject/contracts'; +import { AlphaRouter } from '@uniswap/smart-order-router'; +import { Trade, SwapRouter } from '@uniswap/router-sdk'; +import { MethodParameters } from '@uniswap/v3-sdk'; +import { + Token, + CurrencyAmount, + Percent, + TradeType, + Currency, +} from '@uniswap/sdk-core'; +import { BigNumber, Transaction, Wallet } from 'ethers'; +import { logger } from '../../services/logger'; +import { percentRegexp } from '../../services/config-manager-v2'; +import { Ethereum } from '../../chains/ethereum/ethereum'; +import { Polygon } from '../../chains/polygon/polygon'; +import { ExpectedTrade, Uniswapish } from '../../services/common-interfaces'; + +export class Uniswap implements Uniswapish { + private static _instances: { [name: string]: Uniswap }; + private chain: Ethereum | Polygon; + private _alphaRouter: AlphaRouter; + private _router: string; + private _routerAbi: ContractInterface; + private _gasLimitEstimate: number; + private _ttl: number; + private _maximumHops: number; + private chainId; + private tokenList: Record = {}; + private _ready: boolean = false; + + private constructor(chain: string, network: string) { + const config = UniswapConfig.config; + if (chain === 'ethereum') { + this.chain = Ethereum.getInstance(network); + } else { + this.chain = Polygon.getInstance(network); + } + this.chainId = this.chain.chainId; + this._ttl = UniswapConfig.config.ttl; + this._maximumHops = UniswapConfig.config.maximumHops; + this._alphaRouter = new AlphaRouter({ + chainId: this.chainId, + provider: this.chain.provider, + }); + this._routerAbi = routerAbi.abi; + this._gasLimitEstimate = UniswapConfig.config.gasLimitEstimate; + this._router = config.uniswapV3SmartOrderRouterAddress(network); + } + + public static getInstance(chain: string, network: string): Uniswap { + if (Uniswap._instances === undefined) { + Uniswap._instances = {}; + } + if (!(chain + network in Uniswap._instances)) { + Uniswap._instances[chain + network] = new Uniswap(chain, network); + } + + return Uniswap._instances[chain + network]; + } + + /** + * Given a token's address, return the connector's native representation of + * the token. + * + * @param address Token address + */ + public getTokenByAddress(address: string): Token { + return this.tokenList[address]; + } + + public async init() { + if (!this.chain.ready()) { + await this.chain.init(); + } + for (const token of this.chain.storedTokenList) { + this.tokenList[token.address] = new Token( + this.chainId, + token.address, + token.decimals, + token.symbol, + token.name + ); + } + this._ready = true; + } + + public ready(): boolean { + return this._ready; + } + + /** + * Router address. + */ + public get router(): string { + return this._router; + } + + /** + * AlphaRouter instance. + */ + public get alphaRouter(): AlphaRouter { + return this._alphaRouter; + } + + /** + * Router smart contract ABI. + */ + public get routerAbi(): ContractInterface { + return this._routerAbi; + } + + /** + * Default gas limit used to estimate gasCost for swap transactions. + */ + public get gasLimitEstimate(): number { + return this._gasLimitEstimate; + } + + /** + * Default time-to-live for swap transactions, in seconds. + */ + public get ttl(): number { + return this._ttl; + } + + /** + * Default maximum number of hops for to go through for a swap transactions. + */ + public get maximumHops(): number { + return this._maximumHops; + } + + /** + * Gets the allowed slippage percent from the optional parameter or the value + * in the configuration. + * + * @param allowedSlippageStr (Optional) should be of the form '1/10'. + */ + public getAllowedSlippage(allowedSlippageStr?: string): Percent { + if (allowedSlippageStr != null && isFractionString(allowedSlippageStr)) { + const fractionSplit = allowedSlippageStr.split('/'); + return new Percent(fractionSplit[0], fractionSplit[1]); + } + + const allowedSlippage = UniswapConfig.config.allowedSlippage; + const nd = allowedSlippage.match(percentRegexp); + if (nd) return new Percent(nd[1], nd[2]); + throw new Error( + 'Encountered a malformed percent string in the config for ALLOWED_SLIPPAGE.' + ); + } + + /** + * Given the amount of `baseToken` to put into a transaction, calculate the + * amount of `quoteToken` that can be expected from the transaction. + * + * This is typically used for calculating token sell prices. + * + * @param baseToken Token input for the transaction + * @param quoteToken Output from the transaction + * @param amount Amount of `baseToken` to put into the transaction + */ + async estimateSellTrade( + baseToken: Token, + quoteToken: Token, + amount: BigNumber, + allowedSlippage?: string + ): Promise { + const nativeTokenAmount: CurrencyAmount = + CurrencyAmount.fromRawAmount(baseToken, amount.toString()); + + logger.info( + `Fetching trade data for ${baseToken.address}-${quoteToken.address}.` + ); + + const route = await this._alphaRouter.route( + nativeTokenAmount, + quoteToken, + TradeType.EXACT_INPUT, + undefined, + { + maxSwapsPerPath: this.maximumHops, + } + ); + + if (!route) { + throw new UniswapishPriceError( + `priceSwapIn: no trade pair found for ${baseToken} to ${quoteToken}.` + ); + } + logger.info( + `Best trade for ${baseToken.address}-${quoteToken.address}: ` + + `${route.trade.executionPrice.toFixed(6)}` + + `${baseToken.symbol}.` + ); + const expectedAmount = route.trade.minimumAmountOut( + this.getAllowedSlippage(allowedSlippage) + ); + return { trade: route.trade, expectedAmount }; + } + + /** + * Given the amount of `baseToken` desired to acquire from a transaction, + * calculate the amount of `quoteToken` needed for the transaction. + * + * This is typically used for calculating token buy prices. + * + * @param quoteToken Token input for the transaction + * @param baseToken Token output from the transaction + * @param amount Amount of `baseToken` desired from the transaction + */ + async estimateBuyTrade( + quoteToken: Token, + baseToken: Token, + amount: BigNumber, + allowedSlippage?: string + ): Promise { + const nativeTokenAmount: CurrencyAmount = + CurrencyAmount.fromRawAmount(baseToken, amount.toString()); + logger.info( + `Fetching pair data for ${quoteToken.address}-${baseToken.address}.` + ); + const route = await this._alphaRouter.route( + nativeTokenAmount, + quoteToken, + TradeType.EXACT_OUTPUT, + undefined, + { + maxSwapsPerPath: this.maximumHops, + } + ); + if (!route) { + throw new UniswapishPriceError( + `priceSwapOut: no trade pair found for ${quoteToken.address} to ${baseToken.address}.` + ); + } + logger.info( + `Best trade for ${quoteToken.address}-${baseToken.address}: ` + + `${route.trade.executionPrice.invert().toFixed(6)} ` + + `${baseToken.symbol}.` + ); + + const expectedAmount = route.trade.maximumAmountIn( + this.getAllowedSlippage(allowedSlippage) + ); + return { trade: route.trade, expectedAmount }; + } + + /** + * Given a wallet and a Uniswap trade, try to execute it on blockchain. + * + * @param wallet Wallet + * @param trade Expected trade + * @param gasPrice Base gas price, for pre-EIP1559 transactions + * @param uniswapRouter Router smart contract address + * @param ttl How long the swap is valid before expiry, in seconds + * @param _abi Router contract ABI + * @param gasLimit Gas limit + * @param nonce (Optional) EVM transaction nonce + * @param maxFeePerGas (Optional) Maximum total fee per gas you want to pay + * @param maxPriorityFeePerGas (Optional) Maximum tip per gas you want to pay + */ + async executeTrade( + wallet: Wallet, + trade: Trade, + gasPrice: number, + uniswapRouter: string, + ttl: number, + _abi: ContractInterface, + gasLimit: number, + nonce?: number, + maxFeePerGas?: BigNumber, + maxPriorityFeePerGas?: BigNumber, + allowedSlippage?: string + ): Promise { + const methodParameters: MethodParameters = SwapRouter.swapCallParameters( + trade, + { + deadlineOrPreviousBlockhash: Math.floor(Date.now() / 1000 + ttl), + recipient: wallet.address, + slippageTolerance: this.getAllowedSlippage(allowedSlippage), + } + ); + + return this.chain.nonceManager.provideNonce( + nonce, + wallet.address, + async (nextNonce) => { + let tx: ContractTransaction; + if (maxFeePerGas !== undefined || maxPriorityFeePerGas !== undefined) { + tx = await wallet.sendTransaction({ + data: methodParameters.calldata, + to: uniswapRouter, + gasLimit: gasLimit.toFixed(0), + value: methodParameters.value, + nonce: nextNonce, + maxFeePerGas, + maxPriorityFeePerGas, + }); + } else { + tx = await wallet.sendTransaction({ + data: methodParameters.calldata, + to: this.router, + gasPrice: (gasPrice * 1e9).toFixed(0), + gasLimit: gasLimit.toFixed(0), + value: methodParameters.value, + nonce: nextNonce, + }); + } + logger.info(JSON.stringify(tx)); + return tx; + } + ); + } +} diff --git a/src/connectors/uniswap/uniswap_v2_router_abi.json b/src/connectors/uniswap/uniswap_v2_router_abi.json new file mode 100644 index 0000000000..e2eac42088 --- /dev/null +++ b/src/connectors/uniswap/uniswap_v2_router_abi.json @@ -0,0 +1,1924 @@ +{ + "abi": [ + { + "inputs": [], + "name": "WETH", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountADesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "addLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountTokenDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "addLiquidityETH", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "factory", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveOut", + "type": "uint256" + } + ], + "name": "getAmountIn", + "outputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveOut", + "type": "uint256" + } + ], + "name": "getAmountOut", + "outputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + } + ], + "name": "getAmountsIn", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + } + ], + "name": "getAmountsOut", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveB", + "type": "uint256" + } + ], + "name": "quote", + "outputs": [ + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidityETH", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidityETHSupportingFeeOnTransferTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityETHWithPermit", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityETHWithPermitSupportingFeeOnTransferTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityWithPermit", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapETHForExactTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactETHForTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactETHForTokensSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForETH", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForETHSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForTokensSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountInMax", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapTokensForExactETH", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountInMax", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapTokensForExactTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + } + }, + "interface": [ + { + "inputs": [], + "name": "WETH", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountADesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "addLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountTokenDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "addLiquidityETH", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "factory", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveOut", + "type": "uint256" + } + ], + "name": "getAmountIn", + "outputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveOut", + "type": "uint256" + } + ], + "name": "getAmountOut", + "outputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + } + ], + "name": "getAmountsIn", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + } + ], + "name": "getAmountsOut", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveB", + "type": "uint256" + } + ], + "name": "quote", + "outputs": [ + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidityETH", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidityETHSupportingFeeOnTransferTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityETHWithPermit", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityETHWithPermitSupportingFeeOnTransferTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityWithPermit", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapETHForExactTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactETHForTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactETHForTokensSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForETH", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForETHSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForTokensSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountInMax", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapTokensForExactETH", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountInMax", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapTokensForExactTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "" +} diff --git a/src/connectors/vvs/abi.json b/src/connectors/vvs/abi.json new file mode 100644 index 0000000000..c1d05c2c79 --- /dev/null +++ b/src/connectors/vvs/abi.json @@ -0,0 +1,973 @@ +[ + { + "inputs": [ + { + "internalType": "address", + "name": "_factory", + "type": "address" + }, + { + "internalType": "address", + "name": "_WETH", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "WETH", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountADesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "addLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountTokenDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "addLiquidityETH", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "factory", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveOut", + "type": "uint256" + } + ], + "name": "getAmountIn", + "outputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveOut", + "type": "uint256" + } + ], + "name": "getAmountOut", + "outputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + } + ], + "name": "getAmountsIn", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + } + ], + "name": "getAmountsOut", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveB", + "type": "uint256" + } + ], + "name": "quote", + "outputs": [ + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidityETH", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidityETHSupportingFeeOnTransferTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityETHWithPermit", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityETHWithPermitSupportingFeeOnTransferTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityWithPermit", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapETHForExactTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactETHForTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactETHForTokensSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForETH", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForETHSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForTokensSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountInMax", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapTokensForExactETH", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountInMax", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapTokensForExactTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } +] diff --git a/src/connectors/vvs/vvs.config.ts b/src/connectors/vvs/vvs.config.ts new file mode 100644 index 0000000000..02f38ff197 --- /dev/null +++ b/src/connectors/vvs/vvs.config.ts @@ -0,0 +1,7 @@ +import { CronosBaseUniswapishConnectorConfig } from '../cronos-base/cronos-base-uniswapish-connector.config'; + +export namespace VVSConfig { + const tradingTypes = ['EVM_AMM']; + export const config: CronosBaseUniswapishConnectorConfig.NetworkConfig = + CronosBaseUniswapishConnectorConfig.buildConfig('vvs', tradingTypes); +} diff --git a/src/connectors/vvs/vvs.ts b/src/connectors/vvs/vvs.ts new file mode 100644 index 0000000000..63f5fd153e --- /dev/null +++ b/src/connectors/vvs/vvs.ts @@ -0,0 +1,136 @@ +import { BigNumber } from 'ethers'; +import { + Currency, + CurrencyAmount, + Fetcher, + Pair, + Percent, + Router, + Token, + TokenAmount, + Trade, +} from 'vvs-sdk'; +import { + Pairish, + Percentish, + UniswapishSwapParameters, +} from '../../services/common-interfaces'; +import { + CronosBaseUniswapishSDKProvider, + CronosBaseUniswapishConnector, +} from '../cronos-base/cronos-base-uniswapish-connector'; +import { CronosBaseUniswapishConnectorConfig } from '../cronos-base/cronos-base-uniswapish-connector.config'; +import routerAbi from './abi.json'; +import { VVSConfig } from './vvs.config'; + +export class VVSConnector extends CronosBaseUniswapishConnector { + constructor(chain: string, network: string) { + const sdkProvider = new VVSSDKProvider(); + super(sdkProvider, routerAbi, chain, network); + } + protected buildConfig(): CronosBaseUniswapishConnectorConfig.NetworkConfig { + return VVSConfig.config; + } +} + +class VVSSDKProvider implements CronosBaseUniswapishSDKProvider { + public buildToken( + chainId: number, + address: string, + decimals: number, + symbol?: string, + name?: string, + projectLink?: string + ): Token { + return new Token(chainId, address, decimals, symbol, name, projectLink); + } + + public buildTokenAmount(token: Token, amount: BigNumber): TokenAmount { + return new TokenAmount(token, amount.toString()); + } + + public fetchPairData( + tokenA: Token, + tokenB: Token, + provider?: import('@ethersproject/providers').BaseProvider + ): Promise { + return Fetcher.fetchPairData(tokenA, tokenB, provider); + } + + public bestTradeExactIn( + pairs: Pair[], + currencyAmountIn: CurrencyAmount, + currencyOut: Currency, + bestTradeOptions?: { + maxNumResults?: number; + maxHops?: number; + }, + currentPairs?: Pair[], + originalAmountIn?: CurrencyAmount, + bestTrades?: Trade[] + ): Trade[] { + return Trade.bestTradeExactIn( + pairs, + currencyAmountIn, + currencyOut, + bestTradeOptions, + currentPairs, + originalAmountIn, + bestTrades + ); + } + + public bestTradeExactOut( + pairs: Pair[], + currencyIn: Currency, + currencyAmountOut: CurrencyAmount, + bestTradeOptions?: { + maxNumResults?: number; + maxHops?: number; + }, + currentPairs?: Pair[], + originalAmountOut?: CurrencyAmount, + bestTrades?: Trade[] + ): Trade[] { + return Trade.bestTradeExactOut( + pairs, + currencyIn, + currencyAmountOut, + bestTradeOptions, + currentPairs, + originalAmountOut, + bestTrades + ); + } + + public buildPercent(numerator: string, denominator?: string): Percentish { + return new Percent(numerator, denominator); + } + + public minimumAmountOut( + trade: Trade, + slippageTolerance: Percent + ): CurrencyAmount { + return trade.minimumAmountOut(slippageTolerance); + } + + public maximumAmountIn( + trade: Trade, + slippageTolerance: Percent + ): CurrencyAmount { + return trade.maximumAmountIn(slippageTolerance); + } + + public swapCallParameters( + trade: Trade, + tradeOptions: { + allowedSlippage: Percent; + ttl: number; + recipient: string; + feeOnTransfer?: boolean; + deadline?: number; + } + ): UniswapishSwapParameters { + return Router.swapCallParameters(trade, tradeOptions); + } +} diff --git a/src/evm/evm.requests.ts b/src/evm/evm.requests.ts new file mode 100644 index 0000000000..a814e86cb5 --- /dev/null +++ b/src/evm/evm.requests.ts @@ -0,0 +1,58 @@ +import { + CustomTransaction, + NetworkSelectionRequest, +} from '../services/common-interfaces'; + +export interface NonceRequest extends NetworkSelectionRequest { + address: string; // the users public Ethereum key +} +export interface NonceResponse { + nonce: number; // the user's nonce +} + +export interface AllowancesRequest extends NetworkSelectionRequest { + address: string; // the users public Ethereum key + spender: string; // the spender address for whom approvals are checked + tokenSymbols: string[]; // a list of token symbol +} + +export interface AllowancesResponse { + network: string; + timestamp: number; + latency: number; + spender: string; + approvals: Record; +} + +export interface ApproveRequest extends NetworkSelectionRequest { + amount?: string; // the amount the spender will be approved to use + nonce?: number; // the address's next nonce + maxFeePerGas?: string; + maxPriorityFeePerGas?: string; + address: string; // the user's public Ethereum key + spender: string; // the address of the spend (or a pre-defined string like 'uniswap', 'balancer', etc.) + token: string; // the token symbol the spender will be approved for +} + +export interface ApproveResponse { + network: string; + timestamp: number; + latency: number; + tokenAddress: string; + spender: string; + amount: string; + nonce: number; + approval: CustomTransaction; +} + +export interface CancelRequest extends NetworkSelectionRequest { + nonce: number; // the nonce of the transaction to be canceled + address: string; // the user's public Ethereum key +} + +export interface CancelResponse { + network: string; + timestamp: number; + latency: number; + txHash: string | undefined; +} diff --git a/src/evm/evm.routes.ts b/src/evm/evm.routes.ts new file mode 100644 index 0000000000..0e9e94640f --- /dev/null +++ b/src/evm/evm.routes.ts @@ -0,0 +1,119 @@ +/* eslint-disable no-inner-declarations */ +/* eslint-disable @typescript-eslint/ban-types */ +import { Router, Request, Response } from 'express'; +import { Ethereumish } from '../services/common-interfaces'; +import { asyncHandler } from '../services/error-handler'; +import { + approve, + allowances, + nonce, + nextNonce, + cancel, +} from '../chains/ethereum/ethereum.controllers'; + +import { + validateAllowancesRequest, + validateApproveRequest, + validateCancelRequest, + validateNonceRequest, +} from '../chains/ethereum/ethereum.validators'; +import { getChain } from '../services/connection-manager'; +import { + AllowancesRequest, + AllowancesResponse, + ApproveRequest, + ApproveResponse, + CancelRequest, + CancelResponse, + NonceRequest, + NonceResponse, +} from './evm.requests'; + +export namespace EVMRoutes { + export const router = Router(); + + router.post( + '/nextNonce', + asyncHandler( + async ( + req: Request<{}, {}, NonceRequest>, + res: Response + ) => { + validateNonceRequest(req.body); + const chain = await getChain( + req.body.chain, + req.body.network + ); + res.status(200).json(await nextNonce(chain, req.body)); + } + ) + ); + + router.post( + '/nonce', + asyncHandler( + async ( + req: Request<{}, {}, NonceRequest>, + res: Response + ) => { + validateNonceRequest(req.body); + const chain = await getChain( + req.body.chain, + req.body.network + ); + res.status(200).json(await nonce(chain, req.body)); + } + ) + ); + + router.post( + '/allowances', + asyncHandler( + async ( + req: Request<{}, {}, AllowancesRequest>, + res: Response + ) => { + validateAllowancesRequest(req.body); + const chain = await getChain( + req.body.chain, + req.body.network + ); + res.status(200).json(await allowances(chain, req.body)); + } + ) + ); + + router.post( + '/approve', + asyncHandler( + async ( + req: Request<{}, {}, ApproveRequest>, + res: Response + ) => { + validateApproveRequest(req.body); + const chain = await getChain( + req.body.chain, + req.body.network + ); + res.status(200).json(await approve(chain, req.body)); + } + ) + ); + + router.post( + '/cancel', + asyncHandler( + async ( + req: Request<{}, {}, CancelRequest>, + res: Response + ) => { + validateCancelRequest(req.body); + const chain = await getChain( + req.body.chain, + req.body.network + ); + res.status(200).json(await cancel(chain, req.body)); + } + ) + ); +} diff --git a/src/https.ts b/src/https.ts new file mode 100644 index 0000000000..0175d47e7e --- /dev/null +++ b/src/https.ts @@ -0,0 +1,41 @@ +import { Application } from 'express'; +import fs from 'fs'; +import https from 'https'; +import { ConfigManagerCertPassphrase } from './services/config-manager-cert-passphrase'; +import { ConfigManagerV2 } from './services/config-manager-v2'; + +export const addHttps = (app: Application) => { + const serverKey = fs.readFileSync( + ConfigManagerV2.getInstance().get('ssl.keyPath'), + { + encoding: 'utf-8', + } + ); + const serverCert = fs.readFileSync( + ConfigManagerV2.getInstance().get('ssl.certificatePath'), + { + encoding: 'utf-8', + } + ); + const caCert = fs.readFileSync( + ConfigManagerV2.getInstance().get('ssl.caCertificatePath'), + { + encoding: 'utf-8', + } + ); + + return https.createServer( + { + key: serverKey, + cert: serverCert, + // request client certificate from user + requestCert: true, + // reject requests with no valid certificate + rejectUnauthorized: true, + // use ca cert created with own key for self-signed + ca: [caCert], + passphrase: ConfigManagerCertPassphrase.readPassphrase(), + }, + app + ); +}; diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000000..fee457573c --- /dev/null +++ b/src/index.ts @@ -0,0 +1,3 @@ +import { startGateway } from './app'; + +startGateway(); diff --git a/src/network/network.controllers.ts b/src/network/network.controllers.ts new file mode 100644 index 0000000000..1701ec0430 --- /dev/null +++ b/src/network/network.controllers.ts @@ -0,0 +1,166 @@ +import { + StatusRequest, + StatusResponse, + TokensRequest, + TokensResponse, +} from './network.requests'; +import { Avalanche } from '../chains/avalanche/avalanche'; +import { BinanceSmartChain } from '../chains/binance-smart-chain/binance-smart-chain'; +import { Ethereum } from '../chains/ethereum/ethereum'; +import { Harmony } from '../chains/harmony/harmony'; +import { Polygon } from '../chains/polygon/polygon'; +import { TokenInfo } from '../services/ethereum-base'; +import { + HttpException, + UNKNOWN_CHAIN_ERROR_CODE, + UNKNOWN_KNOWN_CHAIN_ERROR_MESSAGE, +} from '../services/error-handler'; +import { EthereumBase } from '../services/ethereum-base'; +import { Cronos } from '../chains/cronos/cronos'; +import { Near } from '../chains/near/near'; +import { Nearish } from '../services/common-interfaces'; + +export async function getStatus( + req: StatusRequest +): Promise { + const statuses: StatusResponse[] = []; + let connections: any[] = []; + let chain: string; + let chainId: number; + let rpcUrl: string; + let currentBlockNumber: number | undefined; + let nativeCurrency: string; + + if (req.chain) { + if (req.chain === 'avalanche') { + connections.push(Avalanche.getInstance(req.network as string)); + } else if (req.chain === 'binance-smart-chain') { + connections.push(BinanceSmartChain.getInstance(req.network as string)); + } else if (req.chain === 'harmony') { + connections.push(Harmony.getInstance(req.network as string)); + } else if (req.chain === 'ethereum') { + connections.push(Ethereum.getInstance(req.network as string)); + } else if (req.chain === 'polygon') { + connections.push(Polygon.getInstance(req.network as string)); + } else if (req.chain === 'near') { + connections.push(Near.getInstance(req.network as string)); + } else if (req.chain === 'cronos') { + connections.push(await Cronos.getInstance(req.network as string)); + } else { + throw new HttpException( + 500, + UNKNOWN_KNOWN_CHAIN_ERROR_MESSAGE(req.chain), + UNKNOWN_CHAIN_ERROR_CODE + ); + } + } else { + const avalancheConnections = Avalanche.getConnectedInstances(); + connections = connections.concat( + avalancheConnections ? Object.values(avalancheConnections) : [] + ); + + const harmonyConnections = Harmony.getConnectedInstances(); + connections = connections.concat( + harmonyConnections ? Object.values(harmonyConnections) : [] + ); + + const ethereumConnections = Ethereum.getConnectedInstances(); + connections = connections.concat( + ethereumConnections ? Object.values(ethereumConnections) : [] + ); + + const polygonConnections = Polygon.getConnectedInstances(); + connections = connections.concat( + polygonConnections ? Object.values(polygonConnections) : [] + ); + + const cronosConnections = Cronos.getConnectedInstances(); + connections = connections.concat( + cronosConnections ? Object.values(cronosConnections) : [] + ); + + const nearConnections = Near.getConnectedInstances(); + connections = connections.concat( + nearConnections ? Object.values(nearConnections) : [] + ); + + const bscConnections = BinanceSmartChain.getConnectedInstances(); + connections = connections.concat( + bscConnections ? Object.values(bscConnections) : [] + ); + } + + for (const connection of connections) { + if (!connection.ready()) { + await connection.init(); + } + chain = connection.chain; + chainId = connection.chainId; + rpcUrl = connection.rpcUrl; + nativeCurrency = connection.nativeTokenSymbol; + + try { + currentBlockNumber = await connection.getCurrentBlockNumber(); + } catch (_e) { + if (await connection.provider.getNetwork()) currentBlockNumber = 1; // necessary for connectors like hedera that do not have concept of blocknumber + } + statuses.push({ + chain, + chainId, + rpcUrl, + currentBlockNumber, + nativeCurrency, + }); + } + + return req.chain ? statuses[0] : statuses; +} + +export async function getTokens(req: TokensRequest): Promise { + let connection: EthereumBase | Nearish; + let tokens: TokenInfo[] = []; + + if (req.chain && req.network) { + if (req.chain === 'avalanche') { + connection = Avalanche.getInstance(req.network); + } else if (req.chain === 'binance-smart-chain') { + connection = BinanceSmartChain.getInstance(req.network); + } else if (req.chain === 'harmony') { + connection = Harmony.getInstance(req.network); + } else if (req.chain === 'ethereum') { + connection = Ethereum.getInstance(req.network); + } else if (req.chain === 'polygon') { + connection = Polygon.getInstance(req.network); + } else if (req.chain === 'near') { + connection = Near.getInstance(req.network); + } else if (req.chain === 'cronos') { + connection = await Cronos.getInstance(req.network); + } else { + throw new HttpException( + 500, + UNKNOWN_KNOWN_CHAIN_ERROR_MESSAGE(req.chain), + UNKNOWN_CHAIN_ERROR_CODE + ); + } + } else { + throw new HttpException( + 500, + UNKNOWN_KNOWN_CHAIN_ERROR_MESSAGE(req.chain), + UNKNOWN_CHAIN_ERROR_CODE + ); + } + + if (!connection.ready()) { + await connection.init(); + } + + if (!req.tokenSymbols) { + tokens = connection.storedTokenList; + } else { + for (const t of req.tokenSymbols as []) { + tokens.push(connection.getTokenForSymbol(t) as TokenInfo); + } + } + + return { tokens }; +} diff --git a/src/network/network.requests.ts b/src/network/network.requests.ts new file mode 100644 index 0000000000..881ab816ac --- /dev/null +++ b/src/network/network.requests.ts @@ -0,0 +1,57 @@ +import { + CustomTransactionReceipt, + CustomTransactionResponse, + NetworkSelectionRequest, +} from '../services/common-interfaces'; + +import { TokenInfo } from '../services/ethereum-base'; + +export interface BalanceRequest extends NetworkSelectionRequest { + address: string; // the users public Ethereum key + tokenSymbols: string[]; // a list of token symbol +} + +export interface BalanceResponse { + network: string; + timestamp: number; + latency: number; + balances: Record; // the balance should be a string encoded number +} + +export interface PollRequest extends NetworkSelectionRequest { + txHash: string; +} + +export interface PollResponse { + network: string; + timestamp: number; + currentBlock: number; + txHash: string; + txStatus: number; + txBlock: number; + txData: CustomTransactionResponse | null; + txReceipt: CustomTransactionReceipt | null; +} + +export interface StatusRequest { + chain?: string; //the target chain (e.g. ethereum, avalanche, or harmony) + network?: string; // the target network of the chain (e.g. mainnet) +} + +export interface StatusResponse { + chain: string; + chainId: number; + rpcUrl: string; + nativeCurrency: string; + currentBlockNumber?: number; // only reachable if connected +} + +export interface TokensRequest { + chain?: string; //the target chain (e.g. ethereum, avalanche, or harmony) + network?: string; // the target network of the chain (e.g. mainnet) + tokenSymbols?: string[]; +} + +export interface TokensResponse { + tokens: TokenInfo[]; +} diff --git a/src/network/network.routes.ts b/src/network/network.routes.ts new file mode 100644 index 0000000000..67dd9a79ac --- /dev/null +++ b/src/network/network.routes.ts @@ -0,0 +1,110 @@ +/* eslint-disable @typescript-eslint/ban-types */ +import { NextFunction, Request, Response, Router } from 'express'; +import * as ethereumControllers from '../chains/ethereum/ethereum.controllers'; +import { Ethereumish } from '../services/common-interfaces'; +import { ConfigManagerV2 } from '../services/config-manager-v2'; +import { getChain } from '../services/connection-manager'; +import { asyncHandler } from '../services/error-handler'; +import { + mkRequestValidator, + RequestValidator, + validateTxHash, +} from '../services/validators'; +import { getStatus, getTokens } from './network.controllers'; +import { + BalanceRequest, + BalanceResponse, + PollRequest, + PollResponse, + StatusRequest, + StatusResponse, + TokensRequest, + TokensResponse, +} from './network.requests'; +import { + validateBalanceRequest as validateEthereumBalanceRequest, + validateChain as validateEthereumChain, + validateNetwork as validateEthereumNetwork, +} from '../chains/ethereum/ethereum.validators'; + +export const validatePollRequest: RequestValidator = mkRequestValidator([ + validateTxHash, +]); + +export const validateTokensRequest: RequestValidator = mkRequestValidator([ + validateEthereumChain, + validateEthereumNetwork, +]); + +export namespace NetworkRoutes { + export const router = Router(); + + router.get( + '/status', + asyncHandler( + async ( + req: Request<{}, {}, {}, StatusRequest>, + res: Response + ) => { + res.status(200).json(await getStatus(req.query)); + } + ) + ); + + router.get('/config', (_req: Request, res: Response) => { + res.status(200).json(ConfigManagerV2.getInstance().allConfigurations); + }); + + router.post( + '/balances', + asyncHandler( + async ( + req: Request<{}, {}, BalanceRequest>, + res: Response, + _next: NextFunction + ) => { + validateEthereumBalanceRequest(req.body); + const chain = await getChain( + req.body.chain, + req.body.network + ); + + res + .status(200) + .json(await ethereumControllers.balances(chain, req.body)); + } + ) + ); + + router.post( + '/poll', + asyncHandler( + async ( + req: Request<{}, {}, PollRequest>, + res: Response + ) => { + validatePollRequest(req.body); + + const chain = await getChain( + req.body.chain, + req.body.network + ); + + res.status(200).json(await ethereumControllers.poll(chain, req.body)); + } + ) + ); + + router.get( + '/tokens', + asyncHandler( + async ( + req: Request<{}, {}, {}, TokensRequest>, + res: Response + ) => { + validateTokensRequest(req.query); + res.status(200).json(await getTokens(req.query)); + } + ) + ); +} diff --git a/src/paths.ts b/src/paths.ts new file mode 100644 index 0000000000..f5927c9c4c --- /dev/null +++ b/src/paths.ts @@ -0,0 +1,17 @@ +import path from 'path'; +import fs from 'fs'; + +/** + * Returns the project root path. + * + * This can be different depending on whether compiled scripts (i.e. in dist/) + * are used, or, in jest's case, whether the .ts files are being run directly + * via ts-jest. + */ +export function rootPath(): string { + const insideDistDir: boolean = __filename.match(/dist\//) !== null; + if (insideDistDir) { + return fs.realpathSync(path.join(__dirname, '../../'), 'utf8'); + } + return fs.realpathSync(path.join(__dirname, '../'), 'utf8'); +} diff --git a/src/services/base.ts b/src/services/base.ts new file mode 100644 index 0000000000..a0e9a84704 --- /dev/null +++ b/src/services/base.ts @@ -0,0 +1,114 @@ +import { BigNumber } from 'ethers'; +import { format, fraction, number } from 'mathjs'; +import { isFractionString, isFloatString } from './validators'; + +// the type of information source for tokens +export type TokenListType = 'FILE' | 'URL'; + +// insert a string into another string at an index +const stringInsert = (str: string, val: string, index: number) => { + if (index > 0) { + return str.substring(0, index) + val + str.substr(index); + } + + return val + str; +}; + +// counts decimal places of a value +export const countDecimals = (value: number): number => { + if (value >= 1 || value <= 0) { + throw new RangeError( + 'countDecimals() is only valid for values between (0, 1).' + ); + } else { + return Number(value.toExponential().split('-')[1]); + } +}; + +// convert a BigNumber and the number of decimals into a numeric string. +// this makes it JavaScript compatible while preserving all the data. +export const bigNumberWithDecimalToStr = (n: BigNumber, d: number): string => { + const n_ = n.toString(); + + let zeros = ''; + + if (n_.length <= d) { + zeros = '0'.repeat(d - n_.length + 1); + } + + return stringInsert(n_.split('').reverse().join('') + zeros, '.', d) + .split('') + .reverse() + .join(''); +}; + +export const gasCostInEthString = ( + gasPrice: number, + gasLimitTransaction: number +): string => { + return bigNumberWithDecimalToStr( + BigNumber.from(Math.ceil(gasPrice * gasLimitTransaction)).mul( + BigNumber.from(1e9) + ), + 18 + ); +}; + +// a nice way to represent the token value without carrying around as a string +export interface TokenValue { + value: BigNumber; + decimals: number; +} + +// we should turn Token into a string when we return as a value in an API call +export const tokenValueToString = (t: TokenValue): string => { + return bigNumberWithDecimalToStr(t.value, t.decimals); +}; + +// safely parse a JSON from a string to a type. +export const safeJsonParse = + (guard: (o: any) => o is T) => + (text: string): ParseResult => { + const parsed = JSON.parse(text); + return guard(parsed) ? { parsed, hasError: false } : { hasError: true }; + }; + +// If the JSON was parsed successfully, return the result, otherwises return the error +export type ParseResult = + | { parsed: T; hasError: false; error?: undefined } + | { parsed?: undefined; hasError: true; error?: unknown }; + +export const latency = (startTime: number, endTime: number): number => { + return (endTime - startTime) / 1000; +}; + +export const walletPath = './conf/wallets'; + +// convert a fraction string to a number +export const fromFractionString = (value: string): number | null => { + if (isFractionString(value)) { + const num = number(fraction(value)); // this can return different mathematical values, control for number + if (typeof num === 'number') { + return num; + } else { + return null; + } + } else { + return null; + } +}; + +// convert a number to a fraction string or verify that a string is a string +// of a fraction +export const toFractionString = (value: number | string): string | null => { + if (typeof value === 'number') { + return format(fraction(value), { fraction: 'ratio' }); + } else { + if (isFractionString(value) || isFloatString(value)) { + return format(fraction(value), { fraction: 'ratio' }); + } else { + return null; + } + } + return null; +}; diff --git a/src/services/common-interfaces.ts b/src/services/common-interfaces.ts new file mode 100644 index 0000000000..00405eb0de --- /dev/null +++ b/src/services/common-interfaces.ts @@ -0,0 +1,680 @@ +import { Big } from 'big.js'; +import { + Contract, + Transaction, + Wallet, + ContractInterface, + BigNumber, + ethers, +} from 'ethers'; +import { EthereumBase } from './ethereum-base'; +import { CosmosBase } from './cosmos-base'; +import { Provider } from '@ethersproject/abstract-provider'; +import { CurrencyAmount, Token, Trade as TradeUniswap } from '@uniswap/sdk'; +import { Trade } from '@uniswap/router-sdk'; +import { Trade as UniswapV3Trade } from '@uniswap/v3-sdk'; +import { + TradeType, + Currency, + CurrencyAmount as UniswapCoreCurrencyAmount, + Token as UniswapCoreToken, + Fraction as UniswapFraction, +} from '@uniswap/sdk-core'; +import { + Token as TokenDefikingdoms, + CurrencyAmount as CurrencyAmountDefikingdoms, + Trade as TradeDefikingdoms, + Fraction as DefikingdomsFraction, + // } from '@defikingdoms/sdk'; +} from '@switchboard-xyz/defikingdoms-sdk'; +import { + Token as TokenPangolin, + CurrencyAmount as CurrencyAmountPangolin, + Trade as TradePangolin, + Fraction as PangolinFraction, +} from '@pangolindex/sdk'; +import { + Token as TokenQuickswap, + CurrencyAmount as CurrencyAmountQuickswap, + Trade as TradeQuickswap, + Fraction as QuickswapFraction, +} from 'quickswap-sdk'; +import { + Trade as SushiswapTrade, + Token as SushiToken, + CurrencyAmount as SushiCurrencyAmount, + TradeType as SushiTradeType, + Currency as SushiCurrency, + Fraction as SushiFraction, +} from '@sushiswap/sdk'; +import { + Token as TokenTraderjoe, + CurrencyAmount as CurrencyAmountTraderjoe, + Trade as TradeTraderjoe, + Fraction as TraderjoeFraction, +} from '@traderjoe-xyz/sdk'; +import { + Token as MMFToken, + TokenAmount as MMFTokenAmount, + Pair as MMFPair, + CurrencyAmount as CurrencyAmountMMF, + Trade as MMFTrade, + Fraction as FractionMMF, + Percent as MMFPercent, + Currency as MMFCurrency, + TradeOptions as MMFTradeOptions, + TradeOptionsDeadline as MMFTradeOptionsDeadline, + SwapParameters as MMFSwapParameters, +} from '@crocswap/sdk'; +import { + Token as VVSToken, + TokenAmount as VVSTokenAmount, + Pair as VVSPair, + CurrencyAmount as CurrencyAmountVVS, + Trade as VVSTrade, + Fraction as FractionVVS, + Percent as VVSPercent, + Currency as VVSCurrency, + TradeOptions as VVSTradeOptions, + TradeOptionsDeadline as VVSTradeOptionsDeadline, + SwapParameters as VVSSwapParameters, +} from 'vvs-sdk'; +import { Trade as DefiraTrade } from '@zuzu-cat/defira-sdk'; +import { + Token as PancakeSwapToken, + CurrencyAmount as PancakeSwapCurrencyAmount, + Trade as PancakeSwapTrade, + Fraction as PancakeSwapFraction, +} from '@pancakeswap/sdk'; +import { PerpPosition } from '../connectors/perp/perp'; +import { NearBase } from '../chains/near/near.base'; +import { Account, Contract as NearContract } from 'near-api-js'; +import { EstimateSwapView, TokenMetadata } from 'coinalpha-ref-sdk'; +import { FinalExecutionOutcome } from 'near-api-js/lib/providers'; + +// TODO Check the possibility to have clob/solana/serum equivalents here +// Check this link https://hummingbot.org/developers/gateway/building-gateway-connectors/#5-add-sdk-classes-to-uniswapish-interface +export type Tokenish = + | Token + | TokenPangolin + | UniswapCoreToken + | TokenQuickswap + | TokenTraderjoe + | UniswapCoreToken + | SushiToken + | TokenDefikingdoms + | PancakeSwapToken + | MMFToken + | VVSToken; + +export type TokenAmountish = MMFTokenAmount | VVSTokenAmount; + +export type Pairish = MMFPair | VVSPair; + +export type Percentish = MMFPercent | VVSPercent; + +export type UniswapishCurrency = MMFCurrency | VVSCurrency; + +export type UniswapishTrade = + | Trade + | TradePangolin + | UniswapV3Trade + | TradeQuickswap + | TradeTraderjoe + | SushiswapTrade + | UniswapV3Trade + | TradeUniswap + | TradeDefikingdoms + | DefiraTrade + | PancakeSwapTrade + | MMFTrade + | VVSTrade; + +export type UniswapishTradeOptions = + | MMFTradeOptions + | MMFTradeOptionsDeadline + | VVSTradeOptions + | VVSTradeOptionsDeadline; + +export type UniswapishSwapParameters = MMFSwapParameters | VVSSwapParameters; + +export type UniswapishAmount = + | CurrencyAmount + | CurrencyAmountPangolin + | CurrencyAmountQuickswap + | UniswapCoreCurrencyAmount + | CurrencyAmountTraderjoe + | SushiCurrencyAmount + | CurrencyAmountDefikingdoms + | PancakeSwapCurrencyAmount + | CurrencyAmountMMF + | CurrencyAmountVVS; + +export type Fractionish = + | UniswapFraction + | PangolinFraction + | QuickswapFraction + | TraderjoeFraction + | SushiFraction + | DefikingdomsFraction + | PancakeSwapFraction + | FractionMMF + | FractionVVS; + +export interface ExpectedTrade { + trade: UniswapishTrade; + expectedAmount: UniswapishAmount; +} + +export interface PositionInfo { + token0: string | undefined; + token1: string | undefined; + fee: string | undefined; + lowerPrice: string; + upperPrice: string; + amount0: string; + amount1: string; + unclaimedToken0: string; + unclaimedToken1: string; +} + +export interface Uniswapish { + /** + * Router address. + */ + router: string; + + /** + * Router smart contract ABI. + */ + routerAbi: ContractInterface; + + /** + * Interface for decoding transaction logs + */ + abiDecoder?: any; + + /** + * Default gas estiamte for swap transactions. + */ + gasLimitEstimate: number; + + /** + * Default time-to-live for swap transactions, in seconds. + */ + ttl: number; + + init(): Promise; + + ready(): boolean; + + /** + * Given a token's address, return the connector's native representation of + * the token. + * + * @param address Token address + */ + getTokenByAddress(address: string): Tokenish; + + /** + * Given the amount of `baseToken` to put into a transaction, calculate the + * amount of `quoteToken` that can be expected from the transaction. + * + * This is typically used for calculating token sell prices. + * + * @param baseToken Token input for the transaction + * @param quoteToken Output from the transaction + * @param amount Amount of `baseToken` to put into the transaction + */ + estimateSellTrade( + baseToken: Tokenish, + quoteToken: Tokenish, + amount: BigNumber, + allowedSlippage?: string + ): Promise; + + /** + * Given the amount of `baseToken` desired to acquire from a transaction, + * calculate the amount of `quoteToken` needed for the transaction. + * + * This is typically used for calculating token buy prices. + * + * @param quoteToken Token input for the transaction + * @param baseToken Token output from the transaction + * @param amount Amount of `baseToken` desired from the transaction + */ + estimateBuyTrade( + quoteToken: Tokenish, + baseToken: Tokenish, + amount: BigNumber, + allowedSlippage?: string + ): Promise; + + /** + * Given a wallet and a Uniswap-ish trade, try to execute it on blockchain. + * + * @param wallet Wallet + * @param trade Expected trade + * @param gasPrice Base gas price, for pre-EIP1559 transactions + * @param uniswapRouter Router smart contract address + * @param ttl How long the swap is valid before expiry, in seconds + * @param abi Router contract ABI + * @param gasLimit Gas limit + * @param nonce (Optional) EVM transaction nonce + * @param maxFeePerGas (Optional) Maximum total fee per gas you want to pay + * @param maxPriorityFeePerGas (Optional) Maximum tip per gas you want to pay + */ + executeTrade( + wallet: Wallet, + trade: UniswapishTrade, + gasPrice: number, + uniswapRouter: string, + ttl: number, + abi: ContractInterface, + gasLimit: number, + nonce?: number, + maxFeePerGas?: BigNumber, + maxPriorityFeePerGas?: BigNumber, + allowedSlippage?: string + ): Promise; +} + +export interface RefAMMish { + /** + * Router address. + */ + router: string; + + /** + * Default gas estiamte for swap transactions. + */ + gasLimitEstimate: number; + + /** + * Default time-to-live for swap transactions, in seconds. + */ + ttl: number; + + init(): Promise; + + ready(): boolean; + + /** + * Given a token's address, return the connector's native representation of + * the token. + * + * @param address Token address + */ + getTokenByAddress(address: string): TokenMetadata; + + /** + * Calculated expected execution price and expected amount in after a swap/trade + * @param trades The trade path object + */ + parseTrade( + trades: EstimateSwapView[], + side: string + ): { + estimatedPrice: string; + expectedAmount: string; + }; + + /** + * Given the amount of `baseToken` to put into a transaction, calculate the + * amount of `quoteToken` that can be expected from the transaction. + * + * This is typically used for calculating token sell prices. + * + * @param baseToken Token input for the transaction + * @param quoteToken Output from the transaction + * @param amount Amount of `baseToken` to put into the transaction + */ + estimateSellTrade( + baseToken: TokenMetadata, + quoteToken: TokenMetadata, + amount: string, + allowedSlippage?: string + ): Promise<{ trade: EstimateSwapView[]; expectedAmount: string }>; + + /** + * Given the amount of `baseToken` desired to acquire from a transaction, + * calculate the amount of `quoteToken` needed for the transaction. + * + * This is typically used for calculating token buy prices. + * + * @param quoteToken Token input for the transaction + * @param baseToken Token output from the transaction + * @param amount Amount of `baseToken` desired from the transaction + */ + estimateBuyTrade( + quoteToken: TokenMetadata, + baseToken: TokenMetadata, + amount: string, + allowedSlippage?: string + ): Promise<{ trade: EstimateSwapView[]; expectedAmount: string }>; + + /** + * Given an Account and a Ref trade, try to execute it on blockchain. + * + * @param account Account + * @param trade Expected trade + * @param amountIn Amount to swap in + * @param tokenIn Token to be sent + * @param tokenOut Token to be received + * @param allowedSlippage Maximum allowable slippage + */ + executeTrade( + account: Account, + trade: EstimateSwapView[], + amountIn: string, + tokenIn: TokenMetadata, + tokenOut: TokenMetadata, + allowedSlippage?: string + ): Promise; +} + +export interface UniswapLPish { + /** + * Router address. + */ + router: string; + + /** + * Router smart contract ABI. + */ + routerAbi: ContractInterface; + + /** + * NTF manager address. + */ + nftManager: string; + + /** + * NTF manager smart contract ABI. + */ + nftAbi: ContractInterface; + + /** + * Pool smart contract ABI. + */ + poolAbi: ContractInterface; + + /** + * Interface for decoding transaction logs + */ + abiDecoder: any; + + /** + * Default gas limit used to estimate gasCost for swap transactions. + */ + gasLimitEstimate: number; + + /** + * Default time-to-live for swap transactions, in seconds. + */ + ttl: number; + + init(): Promise; + + ready(): boolean; + + /** + * Given a token's address, return the connector's native representation of + * the token. + * + * @param address Token address + */ + getTokenByAddress(address: string): Tokenish; + + /** + * Given a wallet and tokenId, fetch info about position. + * + * @param tokenId: id of exiting position to fetch liquidity data + */ + getPosition(tokenId: number): Promise; + + /** + * Given a wallet, add/increase liquidity for a position. + * + * @param wallet Wallet for the transaction + * @param token0 Token 1 for position + * @param token1 Token 0 for position + * @param amount0 Amount of `token0` to put into the position + * @param amount1 Amount of `token1` to put into the position + * @param fee Fee tier of position, + * @param lowerPrice lower price bound of the position + * @param upperPrice upper price bound for the position + * @param tokenId id of exiting position to increase liquidity + * @param gasLimit Gas limit + * @param nonce (Optional) EVM transaction nonce + * @param maxFeePerGas (Optional) Maximum total fee per gas you want to pay + * @param maxPriorityFeePerGas (Optional) Maximum tip per gas you want to pay + */ + addPosition( + wallet: Wallet, + token0: UniswapCoreToken, + token1: UniswapCoreToken, + amount0: string, + amount1: string, + fee: number, + lowerPrice: number, + upperPrice: number, + tokenId: number, + gasLimit: number, + gasPrice: number, + nonce?: number, + maxFeePerGas?: BigNumber, + maxPriorityFeePerGas?: BigNumber + ): Promise; + + /** + * Given a wallet, reduce/remove liquidity for a position. + * + * @param wallet Wallet for the transaction + * @param tokenId id of exiting position to decrease liquidity + * @param decreasePercent: percentage of liquidity to remove + * @param getFee used to estimate the gas cost of closing position + * @param gasLimit Gas limit + * @param nonce (Optional) EVM transaction nonce + * @param maxFeePerGas (Optional) Maximum total fee per gas you want to pay + * @param maxPriorityFeePerGas (Optional) Maximum tip per gas you want to pay + */ + reducePosition( + wallet: Wallet, + tokenId: number, + decreasePercent: number, + gasLimit: number, + gasPrice: number, + nonce?: number, + maxFeePerGas?: BigNumber, + maxPriorityFeePerGas?: BigNumber + ): Promise; + + /** + * Given a wallet and tokenId, collect earned fees on position. + * + * @param wallet Wallet for the transaction + * @param tokenId id of exiting position to collet earned fees + * @param gasLimit Gas limit + * @param nonce (Optional) EVM transaction nonce + * @param maxFeePerGas (Optional) Maximum total fee per gas you want to pay + * @param maxPriorityFeePerGas (Optional) Maximum tip per gas you want to pay + */ + collectFees( + wallet: Wallet, + tokenId: number, + gasLimit: number, + gasPrice: number, + nonce?: number, + maxFeePerGas?: BigNumber, + maxPriorityFeePerGas?: BigNumber + ): Promise; + + /** + * Given a fee tier, tokens and time parameters, fetch historical pool prices. + * + * @param token0 Token in pool + * @param token1 Token in pool + * @param fee fee tier + * @param period total period of time to fetch pool prices in seconds + * @param interval interval within period to fetch pool prices + */ + poolPrice( + token0: UniswapCoreToken, + token1: UniswapCoreToken, + fee: number, + period: number, + interval: number + ): Promise; +} + +export interface Perpish { + gasLimit: number; + + init(): Promise; + + ready(): boolean; + + /** + * Given a token's address, return the connector's native representation of + * the token. + * + * @param address Token address + */ + getTokenByAddress(address: string): Tokenish; + + /** + * Function for retrieving token list. + * @returns a list of available marker pairs. + */ + availablePairs(): string[]; + + /** + * Give a market, queries for market, index and indexTwap prices. + * @param tickerSymbol Market pair + */ + prices(tickerSymbol: string): Promise<{ + markPrice: Big; + indexPrice: Big; + indexTwapPrice: Big; + }>; + + /** + * Used to know if a market is active/tradable. + * @param tickerSymbol Market pair + * @returns true | false + */ + isMarketActive(tickerSymbol: string): Promise; + + /** + * Gets available Positions/Position. + * @param tickerSymbol An optional parameter to get specific position. + * @returns Return all Positions or specific position. + */ + getPositions(tickerSymbol: string): Promise; + + /** + * Attempts to return balance of a connected acct + */ + getAccountValue(): Promise; + + /** + * Given the necessary parameters, open a position. + * @param isLong Will create a long position if true, else a short pos will be created. + * @param tickerSymbol the market to create position on. + * @param minBaseAmount the min amount for the position to be opened. + * @returns An ethers transaction object. + */ + openPosition( + isLong: boolean, + tickerSymbol: string, + minBaseAmount: string, + allowedSlippage?: string + ): Promise; + + /** + * Closes an open position on the specified market. + * @param tickerSymbol The market on which we want to close position. + * @returns An ethers transaction object. + */ + closePosition( + tickerSymbol: string, + allowedSlippage?: string + ): Promise; +} + +export interface BasicChainMethods { + getSpender(reqSpender: string): string; + gasPrice: number; + nativeTokenSymbol: string; + chain: string; +} + +export interface Ethereumish extends BasicChainMethods, EthereumBase { + cancelTx(wallet: Wallet, nonce: number): Promise; + getContract( + tokenAddress: string, + signerOrProvider?: Wallet | Provider + ): Contract; +} + +export interface Nearish extends BasicChainMethods, NearBase { + cancelTx(account: Account, nonce: number): Promise; + getContract(tokenAddress: string, account: Account): NearContract; +} +export interface Cosmosish extends CosmosBase { + gasPrice: number; + nativeTokenSymbol: string; + chain: string; +} + +export interface NetworkSelectionRequest { + chain: string; //the target chain (e.g. ethereum, avalanche, or harmony) + network: string; // the target network of the chain (e.g. mainnet) + connector?: string; //the target connector (e.g. uniswap or pangolin) +} + +export class ResponseWrapper { + get status(): number { + return this._status || -1; + } + set status(value: number) { + this._status = value; + } + private _status: number | undefined; + + title?: string; + message?: string; + body?: T; +} + +export interface CustomTransactionReceipt + extends Omit< + ethers.providers.TransactionReceipt, + 'gasUsed' | 'cumulativeGasUsed' | 'effectiveGasPrice' + > { + gasUsed: string; + cumulativeGasUsed: string; + effectiveGasPrice: string | null; +} + +export interface CustomTransaction + extends Omit< + Transaction, + 'maxPriorityFeePerGas' | 'maxFeePerGas' | 'gasLimit' | 'value' + > { + maxPriorityFeePerGas: string | null; + maxFeePerGas: string | null; + gasLimit: string | null; + value: string; +} + +export interface CustomTransactionResponse + extends Omit< + ethers.providers.TransactionResponse, + 'gasPrice' | 'gasLimit' | 'value' + > { + gasPrice: string | null; + gasLimit: string; + value: string; +} diff --git a/src/services/config-manager-cert-passphrase.ts b/src/services/config-manager-cert-passphrase.ts new file mode 100644 index 0000000000..982fe10a50 --- /dev/null +++ b/src/services/config-manager-cert-passphrase.ts @@ -0,0 +1,27 @@ +import { logger } from './logger'; +const argvParser = require('minimist'); +const PASSPHRASE_ARGUMENT = 'passphrase'; +const PASSPHRASE_ENV = 'GATEWAY_PASSPHRASE'; + +export namespace ConfigManagerCertPassphrase { + // this adds a level of indirection so we can test the code + export const bindings = { + _exit: process.exit, + }; + + export const readPassphrase = (): string | undefined => { + if (argvParser(process.argv)[PASSPHRASE_ARGUMENT]) { + return argvParser(process.argv)[PASSPHRASE_ARGUMENT]; + } else if (process.env[PASSPHRASE_ENV]) { + return process.env[PASSPHRASE_ENV]; + } + + // the compiler does not know that bindings._exit() will end the function + // so we need a return to satisfy the compiler checks + logger.error( + `The passphrase has to be provided by argument (--${PASSPHRASE_ARGUMENT}=XXX) or in an env variable (${PASSPHRASE_ENV}=XXX)` + ); + bindings._exit(); + return; + }; +} diff --git a/src/services/config-manager-types.ts b/src/services/config-manager-types.ts new file mode 100644 index 0000000000..7b165e6c25 --- /dev/null +++ b/src/services/config-manager-types.ts @@ -0,0 +1,4 @@ +export interface AvailableNetworks { + chain: string; + networks: Array; +} diff --git a/src/services/config-manager-v2.ts b/src/services/config-manager-v2.ts new file mode 100644 index 0000000000..ba82eae0f8 --- /dev/null +++ b/src/services/config-manager-v2.ts @@ -0,0 +1,452 @@ +import Ajv from 'ajv'; +import { ValidateFunction, DefinedError } from 'ajv'; +import fs from 'fs'; +import path from 'path'; +import yaml from 'js-yaml'; +import * as migrations from './config-migration/migrations'; +import { rootPath } from '../paths'; + +type Configuration = { [key: string]: any }; +type ConfigurationDefaults = { [namespaceId: string]: Configuration }; +export type Migration = ( + configRootFullPath: string, + configRootTemplateFullPath: string +) => void; +type MigrationFunctions = { + [key: string]: Migration; +}; +interface _ConfigurationNamespaceDefinition { + configurationPath: string; + schemaPath: string; +} +type ConfigurationNamespaceDefinition = _ConfigurationNamespaceDefinition & { + [key: string]: string; +}; +type ConfigurationNamespaceDefinitions = { + [namespaceId: string]: ConfigurationNamespaceDefinition; +}; +interface ConfigurationRoot { + version: number; + configurations: ConfigurationNamespaceDefinitions; +} +const NamespaceTag: string = '$namespace '; +export const ConfigRootSchemaPath: string = path.join( + __dirname, + 'schema/configuration-root-schema.json' +); +const ConfigTemplatesDir: string = path.join(__dirname, '../templates/'); +const ConfigDir: string = path.join(rootPath(), 'conf/'); + +interface UnpackedConfigNamespace { + namespace: ConfigurationNamespace; + configPath: string; +} + +export function deepCopy(srcObject: any, dstObject: any): any { + for (const [key, value] of Object.entries(srcObject)) { + if (srcObject[key] instanceof Array) { + if (!dstObject[key]) dstObject[key] = []; + deepCopy(srcObject[key], dstObject[key]); + } else if (srcObject[key] instanceof Object) { + if (!dstObject[key]) dstObject[key] = {}; + deepCopy(srcObject[key], dstObject[key]); + } else if ( + typeof srcObject[key] === typeof dstObject[key] || + !dstObject[key] + ) { + dstObject[key] = value; + } + } +} + +export function initiateWithTemplate(templateFile: string, configFile: string) { + fs.copyFileSync(templateFile, configFile); +} + +const ajv: Ajv = new Ajv(); + +export const percentRegexp = new RegExp(/^(\d+)\/(\d+)$/); + +export class ConfigurationNamespace { + /** + * This class encapsulates a namespace under the configuration tree. + * A namespace represents the top-level component of a configuration path. + * e.g. if the config path is "ssl.certificatePath", then "ssl" is the + * namespace. + * + * Each namespace contains a JSON schema and a YAML configuration file. + * + * The JSON schema specifies the properties and data types allowed within the + * namespace. e.g. you may specify that the "ssl" namespace has a few + * mandatory properties dealing with certificates and private keys. This means + * any missing properties or any properties outsides of the JSON schema would + * cause a failure to initialize the namespace, and also cannot be set into + * the namespace. + * + * The YAML configuration file is where the actual configuration tree goes + * to. It is automatically validated against the JSON schema at namespace + * initiation. It is automatically saved to and validated against JSON schema + * again at every set() call. + * + * Note that configuration paths may have multiple levels. What it implies + * is those configurations are stored in nested dictionaries - aka. a tree. + * e.g. if the config path is "ethereum.networks.kovan.networkID", then, + * what it means you're accessing ["networks"]["kovan"]["networkID"] under + * the "ethereum" namespace. + */ + readonly #namespaceId: string; + readonly #schemaPath: string; + readonly #configurationPath: string; + readonly #templatePath: string; + readonly #validator: ValidateFunction; + #configuration: Configuration; + + constructor( + id: string, + schemaPath: string, + configurationPath: string, + templatePath: string + ) { + this.#namespaceId = id; + this.#schemaPath = schemaPath; + this.#configurationPath = configurationPath; + this.#templatePath = templatePath; + this.#configuration = {}; + if (!fs.existsSync(schemaPath)) { + throw new Error( + `The JSON schema for namespace ${id} (${schemaPath}) does not exist.` + ); + } + + this.#validator = ajv.compile( + JSON.parse(fs.readFileSync(schemaPath).toString()) + ); + + if (!fs.existsSync(configurationPath)) { + // copy from template + initiateWithTemplate(this.templatePath, this.configurationPath); + } + this.loadConfig(); + } + + get id(): string { + return this.#namespaceId; + } + + get schemaPath(): string { + return this.#schemaPath; + } + + get configurationPath(): string { + return this.#configurationPath; + } + + get configuration(): Configuration { + return this.#configuration; + } + + get templatePath(): string { + return this.#templatePath; + } + + loadConfig() { + const configCandidate: Configuration = yaml.load( + fs.readFileSync(this.#configurationPath, 'utf8') + ) as Configuration; + if (!this.#validator(configCandidate)) { + // merge with template file and try validating again + const configTemplateCandidate: Configuration = yaml.load( + fs.readFileSync(this.#templatePath, 'utf8') + ) as Configuration; + deepCopy(configCandidate, configTemplateCandidate); + if (!this.#validator(configTemplateCandidate)) { + for (const err of this.#validator.errors as DefinedError[]) { + if (err.keyword === 'additionalProperties') { + throw new Error( + `${this.id} config file seems to be outdated/broken due to additional property "${err.params.additionalProperty}". Kindly fix manually.` + ); + } else { + throw new Error( + `${this.id} config file seems to be outdated/broken due to "${err.keyword}" in "${err.instancePath}" - ${err.message}. Kindly fix manually.` + ); + } + } + } + this.#configuration = configTemplateCandidate; + this.saveConfig(); + return; + } + this.#configuration = configCandidate; + } + + saveConfig() { + fs.writeFileSync(this.#configurationPath, yaml.dump(this.#configuration)); + } + + get(configPath: string): any { + const pathComponents: Array = configPath.split('.'); + let cursor: Configuration | any = this.#configuration; + + for (const component of pathComponents) { + cursor = cursor[component]; + if (cursor === undefined) { + return cursor; + } + } + + return cursor; + } + + set(configPath: string, value: any): void { + const pathComponents: Array = configPath.split('.'); + const configClone: Configuration = JSON.parse( + JSON.stringify(this.#configuration) + ); + let cursor: Configuration | any = configClone; + let parent: Configuration = configClone; + + for (const component of pathComponents.slice(0, -1)) { + parent = cursor; + cursor = cursor[component]; + if (cursor === undefined) { + parent[component] = {}; + cursor = parent[component]; + } + } + + const lastComponent: string = pathComponents[pathComponents.length - 1]; + cursor[lastComponent] = value; + + if (!this.#validator(configClone)) { + throw new Error( + `Cannot set ${this.id}.${configPath} to ${value}: ` + + 'JSON schema violation.' + ); + } + + this.#configuration = configClone; + this.saveConfig(); + } +} + +export class ConfigManagerV2 { + /** + * This class encapsulates the configuration tree and all the contained + * namespaces and files for Hummingbot Gateway. It also contains a defaults + * mechanism for modules to set default configurations under their namespaces. + * + * The configuration manager starts by loading the root configuration file, + * which defines all the configuration namespaces. The root configuration file + * has a fixed JSON schema, that only allows namespaces to be defined there. + * + * After the namespaces are loaded into the configuration manager during + * initiation, the get() and set() functions will map configuration keys and + * values to the appropriate namespaces. + * + * e.g. get('ethereum.networks.kovan.networkID') will be mapped to + * ethereumNamespace.get('networks.kovan.networkID') + * e.g. set('ethereum.networks.kovan.networkID', 42) will be mapped to + * ethereumNamespace.set('networks.kovan.networkID', 42) + * + * File paths in the root configuration file may be defined as absolute paths + * or relative paths. Any relative paths would be rebased to the root + * configuration file's parent directory. + * + * The static function `setDefaults()` is expected to be called by gateway + * modules, to set default configurations under their own namespaces. Default + * configurations are used in the `get()` function if the corresponding config + * key is not found in its configuration namespace. + */ + readonly #namespaces: { [key: string]: ConfigurationNamespace }; + + private static _instance: ConfigManagerV2; + + public static getInstance(): ConfigManagerV2 { + if (!ConfigManagerV2._instance) { + const rootPath = path.join(ConfigDir, 'root.yml'); + if (!fs.existsSync(rootPath)) { + // copy from template + fs.copyFileSync(path.join(ConfigTemplatesDir, 'root.yml'), rootPath); + } + ConfigManagerV2._instance = new ConfigManagerV2(rootPath); + } + return ConfigManagerV2._instance; + } + + static defaults: ConfigurationDefaults = {}; + + constructor(configRootPath: string) { + this.#namespaces = {}; + this.loadConfigRoot(configRootPath); + } + + static setDefaults(namespaceId: string, defaultTree: Configuration) { + ConfigManagerV2.defaults[namespaceId] = defaultTree; + } + + static getFromDefaults(namespaceId: string, configPath: string): any { + if (!(namespaceId in ConfigManagerV2.defaults)) { + return undefined; + } + + const pathComponents: Array = configPath.split('.'); + const defaultConfig: Configuration = ConfigManagerV2.defaults[namespaceId]; + let cursor: Configuration | any = defaultConfig; + for (const pathComponent of pathComponents) { + cursor = cursor[pathComponent]; + if (cursor === undefined) { + return cursor; + } + } + + return cursor; + } + + get namespaces(): { [key: string]: ConfigurationNamespace } { + return this.#namespaces; + } + + get allConfigurations(): { [key: string]: Configuration } { + const result: { [key: string]: Configuration } = {}; + for (const [key, value] of Object.entries(this.#namespaces)) { + result[key] = value.configuration; + } + return result; + } + + getNamespace(id: string): ConfigurationNamespace | undefined { + return this.#namespaces[id]; + } + + addNamespace( + id: string, + schemaPath: string, + configurationPath: string, + templatePath: string + ): void { + this.#namespaces[id] = new ConfigurationNamespace( + id, + schemaPath, + configurationPath, + templatePath + ); + } + + unpackFullConfigPath(fullConfigPath: string): UnpackedConfigNamespace { + const pathComponents: Array = fullConfigPath.split('.'); + if (pathComponents.length < 2) { + throw new Error('Configuration paths must have at least two components.'); + } + + const namespaceComponent: string = pathComponents[0]; + const namespace: ConfigurationNamespace | undefined = + this.#namespaces[namespaceComponent]; + if (namespace === undefined) { + throw new Error( + `The configuration namespace ${namespaceComponent} does not exist.` + ); + } + + const configPath: string = pathComponents.slice(1).join('.'); + return { + namespace, + configPath, + }; + } + + get(fullConfigPath: string): any { + const { namespace, configPath } = this.unpackFullConfigPath(fullConfigPath); + const configValue: any = namespace.get(configPath); + if (configValue === undefined) { + return ConfigManagerV2.getFromDefaults(namespace.id, configPath); + } + return configValue; + } + + set(fullConfigPath: string, value: any) { + const { namespace, configPath } = this.unpackFullConfigPath(fullConfigPath); + namespace.set(configPath, value); + } + + loadConfigRoot(configRootPath: string) { + // Load the config root file. + const configRootFullPath: string = fs.realpathSync(configRootPath); + const configRootTemplateFullPath: string = path.join( + ConfigTemplatesDir, + 'root.yml' + ); + const configRootDir: string = path.dirname(configRootFullPath); + const configRoot: ConfigurationRoot = yaml.load( + fs.readFileSync(configRootFullPath, 'utf8') + ) as ConfigurationRoot; + const configRootTemplate: ConfigurationRoot = yaml.load( + fs.readFileSync(configRootTemplateFullPath, 'utf8') + ) as ConfigurationRoot; + + // version control to only handle upgrades + if (configRootTemplate.version > configRoot.version) { + // run migration in order if available + for ( + let num = configRoot.version + 1; + num <= configRootTemplate.version; + num++ + ) { + if ((migrations as MigrationFunctions)[`updateToVersion${num}`]) { + (migrations as MigrationFunctions)[`updateToVersion${num}`]( + configRootFullPath, + configRootTemplateFullPath + ); + } + } + } + + // Validate the config root file. + const validator: ValidateFunction = ajv.compile( + JSON.parse(fs.readFileSync(ConfigRootSchemaPath).toString()) + ); + if (!validator(configRoot)) { + throw new Error('Configuration root file is invalid.'); + } + + // Extract the namespace ids. + const namespaceMap: ConfigurationNamespaceDefinitions = {}; + for (const namespaceKey of Object.keys(configRoot.configurations)) { + namespaceMap[namespaceKey.slice(NamespaceTag.length)] = + configRoot.configurations[namespaceKey]; + } + + // Rebase the file paths in config & template roots if they're relative paths. + for (const namespaceDefinition of Object.values(namespaceMap)) { + for (const [key, filePath] of Object.entries(namespaceDefinition)) { + if (!path.isAbsolute(filePath)) { + if (key === 'configurationPath') { + namespaceDefinition['templatePath'] = path.join( + ConfigTemplatesDir, + filePath + ); + namespaceDefinition[key] = path.join(configRootDir, filePath); + } else if (key === 'schemaPath') { + namespaceDefinition[key] = path.join( + path.dirname(ConfigRootSchemaPath), + filePath + ); + } + } else { + throw new Error(`Absolute path not allowed for ${key}.`); + } + } + } + + // Add the namespaces according to config root. + for (const [namespaceId, namespaceDefinition] of Object.entries( + namespaceMap + )) { + this.addNamespace( + namespaceId, + namespaceDefinition.schemaPath, + namespaceDefinition.configurationPath, + namespaceDefinition.templatePath + ); + } + } +} diff --git a/src/services/config-migration/migrations.ts b/src/services/config-migration/migrations.ts new file mode 100644 index 0000000000..da008027c5 --- /dev/null +++ b/src/services/config-migration/migrations.ts @@ -0,0 +1,17 @@ +import * as utils from '../config-manager-v2'; + +/* + * This file defines migration functions for each version. + * Note: type utils.Migration = (configRootFullPath: string, + * configRootTemplateFullPath: string) => void; + */ + +export const updateToVersion1: utils.Migration = ( + configRootFullPath, + configRootTemplateFullPath +) => { + // just dummy calls + configRootFullPath; + configRootTemplateFullPath; + return; +}; diff --git a/src/services/config/config.requests.ts b/src/services/config/config.requests.ts new file mode 100644 index 0000000000..35b4708e81 --- /dev/null +++ b/src/services/config/config.requests.ts @@ -0,0 +1,4 @@ +export interface ConfigUpdateRequest { + configPath: string; + configValue: any; +} diff --git a/src/services/config/config.routes.ts b/src/services/config/config.routes.ts new file mode 100644 index 0000000000..38eba2a0da --- /dev/null +++ b/src/services/config/config.routes.ts @@ -0,0 +1,48 @@ +/* eslint-disable no-inner-declarations */ +/* eslint-disable @typescript-eslint/ban-types */ +import { Router, Request, Response } from 'express'; +import { asyncHandler } from '../error-handler'; +import { ConfigUpdateRequest } from './config.requests'; +import { + validateConfigUpdateRequest, + updateAllowedSlippageToFraction, +} from './config.validators'; +import { ConfigManagerV2 } from '../config-manager-v2'; + +export namespace ConfigRoutes { + export const router = Router(); + + router.post( + '/update', + asyncHandler( + async ( + req: Request, + res: Response + ) => { + validateConfigUpdateRequest(req.body); + const config = ConfigManagerV2.getInstance().get(req.body.configPath); + if (typeof req.body.configValue == 'string') + switch (typeof config) { + case 'number': + req.body.configValue = Number(req.body.configValue); + break; + case 'boolean': + req.body.configValue = + req.body.configValue.toLowerCase() === 'true'; + break; + } + + if (req.body.configPath.endsWith('allowedSlippage')) { + updateAllowedSlippageToFraction(req.body); + } + + ConfigManagerV2.getInstance().set( + req.body.configPath, + req.body.configValue + ); + + res.status(200).json({ message: 'The config has been updated' }); + } + ) + ); +} diff --git a/src/services/config/config.validators.ts b/src/services/config/config.validators.ts new file mode 100644 index 0000000000..32e8b467c5 --- /dev/null +++ b/src/services/config/config.validators.ts @@ -0,0 +1,83 @@ +import { + RequestValidator, + Validator, + isFloatString, + isFractionString, + mkRequestValidator, +} from '../validators'; +import { fromFractionString, toFractionString } from '../base'; +import { ConfigUpdateRequest } from './config.requests'; + +export const invalidAllowedSlippage: string = + 'allowedSlippage should be a number between 0.0 and 1.0 or a string of a fraction.'; + +// only permit percentages 0.0 (inclusive) to less one +export const isAllowedPercentage = (val: string | number): boolean => { + if (typeof val === 'string') { + if (isFloatString(val)) { + const num: number = parseFloat(val); + return num >= 0.0 && num < 1.0; + } else { + const num: number | null = fromFractionString(val); // this checks if it is a fraction string + if (num !== null) { + return num >= 0.0 && num < 1.0; + } else { + return false; + } + } + } else { + return val >= 0.0 && val < 1.0; + } +}; + +// This is a specialized version of mkValidator for /config/update. +// All requests should be of the form {configPath, configValue}. This allows you +// to create validators that match on configPath, then test the value of configValue. +// (for example: {configPath: 'uniswap.versions.v2.allowedSlippage', configValue: 0.1}. +export const mkConfigValidator = ( + configPathEnding: string, + errorMsg: string, + condition: (x: any) => boolean +): Validator => { + return (req: any) => { + const errors: Array = []; + const configPath: string = req.configPath; + if (configPath.endsWith(configPathEnding)) { + const configValue = req.configValue; + if (!condition(configValue)) { + errors.push(errorMsg); + } + } + + return errors; + }; +}; + +export const validateAllowedSlippage: Validator = mkConfigValidator( + 'allowedSlippage', + invalidAllowedSlippage, + (val) => + (typeof val === 'number' || + (typeof val === 'string' && + (isFractionString(val) || isFloatString(val)))) && + isAllowedPercentage(val) +); + +export const validateConfigUpdateRequest: RequestValidator = mkRequestValidator( + [validateAllowedSlippage] +); + +// this mutates the input value in place +export const updateAllowedSlippageToFraction = ( + body: ConfigUpdateRequest +): void => { + if (body.configPath.endsWith('allowedSlippage')) { + if ( + typeof body.configValue === 'number' || + (typeof body.configValue == 'string' && + !isFractionString(body.configValue)) + ) { + body.configValue = toFractionString(body.configValue); + } + } +}; diff --git a/src/services/connection-manager.ts b/src/services/connection-manager.ts new file mode 100644 index 0000000000..e0fe97c61d --- /dev/null +++ b/src/services/connection-manager.ts @@ -0,0 +1,126 @@ +import { Avalanche } from '../chains/avalanche/avalanche'; +import { Cronos } from '../chains/cronos/cronos'; +import { Ethereum } from '../chains/ethereum/ethereum'; +import { BinanceSmartChain } from '../chains/binance-smart-chain/binance-smart-chain'; +import { Harmony } from '../chains/harmony/harmony'; +import { Polygon } from '../chains/polygon/polygon'; +import { MadMeerkat } from '../connectors/mad_meerkat/mad_meerkat'; +import { Openocean } from '../connectors/openocean/openocean'; +import { Pangolin } from '../connectors/pangolin/pangolin'; +import { Perp } from '../connectors/perp/perp'; +import { Quickswap } from '../connectors/quickswap/quickswap'; +import { PancakeSwap } from '../connectors/pancakeswap/pancakeswap'; +import { Uniswap } from '../connectors/uniswap/uniswap'; +import { UniswapLP } from '../connectors/uniswap/uniswap.lp'; +import { VVSConnector } from '../connectors/vvs/vvs'; +import { + Ethereumish, + Nearish, + Perpish, + RefAMMish, + Uniswapish, + UniswapLPish, +} from './common-interfaces'; +import { Traderjoe } from '../connectors/traderjoe/traderjoe'; +import { Sushiswap } from '../connectors/sushiswap/sushiswap'; +import { Defikingdoms } from '../connectors/defikingdoms/defikingdoms'; +import { Defira } from '../connectors/defira/defira'; +import { Near } from '../chains/near/near'; +import { Ref } from '../connectors/ref/ref'; + +export type ChainUnion = Ethereumish | Nearish; + +export type Chain = T extends Ethereumish + ? Ethereumish + : T extends Nearish + ? Nearish + : never; + +export async function getChain( + chain: string, + network: string +): Promise> { + let chainInstance: ChainUnion; + + if (chain === 'ethereum') chainInstance = Ethereum.getInstance(network); + else if (chain === 'avalanche') + chainInstance = Avalanche.getInstance(network); + else if (chain === 'polygon') chainInstance = Polygon.getInstance(network); + else if (chain === 'harmony') chainInstance = Harmony.getInstance(network); + else if (chain === 'near') chainInstance = Near.getInstance(network); + else if (chain === 'binance-smart-chain') + chainInstance = BinanceSmartChain.getInstance(network); + else if (chain === 'cronos') chainInstance = Cronos.getInstance(network); + else throw new Error('unsupported chain'); + + if (!chainInstance.ready()) { + await chainInstance.init(); + } + + return chainInstance as Chain; +} + +type ConnectorUnion = Uniswapish | UniswapLPish | Perpish | RefAMMish; + +export type Connector = T extends Uniswapish + ? Uniswapish + : T extends UniswapLPish + ? UniswapLPish + : T extends Perpish + ? Perpish + : T extends RefAMMish + ? RefAMMish + : never; + +export async function getConnector( + chain: string, + network: string, + connector: string | undefined, + address?: string +): Promise> { + let connectorInstance: ConnectorUnion; + + if ( + (chain === 'ethereum' || chain === 'polygon') && + connector === 'uniswap' + ) { + connectorInstance = Uniswap.getInstance(chain, network); + } else if (chain === 'polygon' && connector === 'quickswap') { + connectorInstance = Quickswap.getInstance(chain, network); + } else if ( + (chain === 'ethereum' || chain === 'polygon') && + connector === 'uniswapLP' + ) { + connectorInstance = UniswapLP.getInstance(chain, network); + } else if (chain === 'ethereum' && connector === 'perp') { + connectorInstance = Perp.getInstance(chain, network, address); + } else if (chain === 'avalanche' && connector === 'pangolin') { + connectorInstance = Pangolin.getInstance(chain, network); + } else if (chain === 'avalanche' && connector === 'openocean') { + connectorInstance = Openocean.getInstance(chain, network); + } else if (chain === 'avalanche' && connector === 'traderjoe') { + connectorInstance = Traderjoe.getInstance(chain, network); + } else if (chain === 'harmony' && connector === 'defikingdoms') { + connectorInstance = Defikingdoms.getInstance(chain, network); + } else if (chain === 'harmony' && connector === 'defira') { + connectorInstance = Defira.getInstance(chain, network); + } else if (chain === 'cronos' && connector === 'mad_meerkat') { + connectorInstance = MadMeerkat.getInstance(chain, network); + } else if (chain === 'cronos' && connector === 'vvs') { + connectorInstance = VVSConnector.getInstance(chain, network); + } else if (chain === 'near' && connector === 'ref') { + connectorInstance = Ref.getInstance(chain, network); + } else if (chain === 'binance-smart-chain' && connector === 'pancakeswap') { + connectorInstance = PancakeSwap.getInstance(chain, network); + } else if (connector === 'sushiswap') { + connectorInstance = Sushiswap.getInstance(chain, network); + } else { + throw new Error('unsupported chain or connector'); + } + + if (!connectorInstance.ready()) { + await connectorInstance.init(); + } + + return connectorInstance as Connector; +} diff --git a/src/services/cosmos-base.ts b/src/services/cosmos-base.ts new file mode 100644 index 0000000000..fcdae3174d --- /dev/null +++ b/src/services/cosmos-base.ts @@ -0,0 +1,367 @@ +import axios from 'axios'; +import { promises as fs } from 'fs'; +import { TokenListType, TokenValue, walletPath } from './base'; +import NodeCache from 'node-cache'; +import fse from 'fs-extra'; +import { ConfigManagerCertPassphrase } from './config-manager-cert-passphrase'; +import { BigNumber } from 'ethers'; +import { AccountData, DirectSignResponse } from '@cosmjs/proto-signing'; + +import { IndexedTx, setupIbcExtension } from '@cosmjs/stargate'; + +//Cosmos +const { DirectSecp256k1Wallet } = require('@cosmjs/proto-signing'); +const { StargateClient } = require('@cosmjs/stargate'); +const { toBase64, fromBase64, fromHex } = require('@cosmjs/encoding'); +const crypto = require('crypto').webcrypto; +export interface Token { + base: string; + address: string; + name: string; + symbol: string; + decimals: number; +} + +export interface CosmosWallet { + privKey: Uint8Array; + pubkey: Uint8Array; + prefix: 'string'; + getAccounts(): [AccountData]; + signDirect(): DirectSignResponse; + fromKey(): CosmosWallet; +} + +export interface KeyAlgorithm { + name: string; + salt: Uint8Array; + iterations: number; + hash: string; +} + +export interface CipherAlgorithm { + name: string; + iv: Uint8Array; +} +export interface EncryptedPrivateKey { + keyAlgorithm: KeyAlgorithm; + cipherAlgorithm: CipherAlgorithm; + ciphertext: Uint8Array; +} + +export type NewBlockHandler = (bn: number) => void; + +export type NewDebugMsgHandler = (msg: any) => void; + +export class CosmosBase { + private _provider; + protected tokenList: Token[] = []; + private _tokenMap: Record = {}; + + private _ready: boolean = false; + private _initializing: boolean = false; + private _initPromise: Promise = Promise.resolve(); + + public chainName; + public rpcUrl; + public gasPriceConstant; + public tokenListSource: string; + public tokenListType: TokenListType; + public cache: NodeCache; + + constructor( + chainName: string, + rpcUrl: string, + tokenListSource: string, + tokenListType: TokenListType, + gasPriceConstant: number + ) { + this._provider = StargateClient.connect(rpcUrl); + this.chainName = chainName; + this.rpcUrl = rpcUrl; + this.gasPriceConstant = gasPriceConstant; + this.tokenListSource = tokenListSource; + this.tokenListType = tokenListType; + this.cache = new NodeCache({ stdTTL: 3600 }); // set default cache ttl to 1hr + } + + ready(): boolean { + return this._ready; + } + + public get provider() { + return this._provider; + } + + async init(): Promise { + if (!this.ready() && !this._initializing) { + this._initializing = true; + this._initPromise = this.loadTokens( + this.tokenListSource, + this.tokenListType + ).then(() => { + this._ready = true; + this._initializing = false; + }); + } + return this._initPromise; + } + + async loadTokens( + tokenListSource: string, + tokenListType: TokenListType + ): Promise { + this.tokenList = await this.getTokenList(tokenListSource, tokenListType); + + if (this.tokenList) { + this.tokenList.forEach( + (token: Token) => (this._tokenMap[token.symbol] = token) + ); + } + } + + // returns a Tokens for a given list source and list type + async getTokenList( + tokenListSource: string, + tokenListType: TokenListType + ): Promise { + let tokens; + if (tokenListType === 'URL') { + ({ data: tokens } = await axios.get(tokenListSource)); + } else { + ({ tokens } = JSON.parse(await fs.readFile(tokenListSource, 'utf8'))); + } + return tokens; + } + + // ethereum token lists are large. instead of reloading each time with + // getTokenList, we can read the stored tokenList value from when the + // object was initiated. + public get storedTokenList(): Token[] { + return this.tokenList; + } + + // return the Token object for a symbol + getTokenForSymbol(symbol: string): Token | null { + return this._tokenMap[symbol] ? this._tokenMap[symbol] : null; + } + + async getWalletFromPrivateKey( + privateKey: string, + prefix: string + ): Promise { + const wallet = await DirectSecp256k1Wallet.fromKey( + fromHex(privateKey), + prefix + ); + + return wallet; + } + + async getAccountsfromPrivateKey( + privateKey: string, + prefix: string + ): Promise { + const wallet = await this.getWalletFromPrivateKey(privateKey, prefix); + + const accounts = await wallet.getAccounts(); + + return accounts[0]; + } + + // returns Wallet for an address + // TODO: Abstract-away into base.ts + async getWallet(address: string, prefix: string): Promise { + const path = `${walletPath}/${this.chainName}`; + + const encryptedPrivateKey: EncryptedPrivateKey = JSON.parse( + await fse.readFile(`${path}/${address}.json`, 'utf8'), + (key, value) => { + switch (key) { + case 'ciphertext': + case 'salt': + case 'iv': + return fromBase64(value); + default: + return value; + } + } + ); + + const passphrase = ConfigManagerCertPassphrase.readPassphrase(); + if (!passphrase) { + throw new Error('missing passphrase'); + } + + return await this.decrypt(encryptedPrivateKey, passphrase, prefix); + } + + private static async getKeyMaterial(password: string) { + const enc = new TextEncoder(); + return await crypto.subtle.importKey( + 'raw', + enc.encode(password), + 'PBKDF2', + false, + ['deriveBits', 'deriveKey'] + ); + } + + private static async getKey( + keyAlgorithm: { + salt: Uint8Array; + name: string; + iterations: number; + hash: string; + }, + keyMaterial: CryptoKey + ) { + return await crypto.subtle.deriveKey( + keyAlgorithm, + keyMaterial, + { name: 'AES-GCM', length: 256 }, + true, + ['encrypt', 'decrypt'] + ); + } + + // from Solana.ts + async encrypt(privateKey: string, password: string): Promise { + const iv = crypto.getRandomValues(new Uint8Array(16)); + const salt = crypto.getRandomValues(new Uint8Array(16)); + const keyMaterial = await CosmosBase.getKeyMaterial(password); + const keyAlgorithm = { + name: 'PBKDF2', + salt: salt, + iterations: 500000, + hash: 'SHA-256', + }; + const key = await CosmosBase.getKey(keyAlgorithm, keyMaterial); + const cipherAlgorithm = { + name: 'AES-GCM', + iv: iv, + }; + const enc = new TextEncoder(); + const ciphertext: Uint8Array = (await crypto.subtle.encrypt( + cipherAlgorithm, + key, + enc.encode(privateKey) + )) as Uint8Array; + return JSON.stringify( + { + keyAlgorithm, + cipherAlgorithm, + ciphertext: new Uint8Array(ciphertext), + }, + (key, value) => { + switch (key) { + case 'ciphertext': + case 'salt': + case 'iv': + return toBase64(Uint8Array.from(Object.values(value))); + default: + return value; + } + } + ); + } + + async decrypt( + encryptedPrivateKey: EncryptedPrivateKey, + password: string, + prefix: string + ): Promise { + const keyMaterial = await CosmosBase.getKeyMaterial(password); + const key = await CosmosBase.getKey( + encryptedPrivateKey.keyAlgorithm, + keyMaterial + ); + const decrypted = await crypto.subtle.decrypt( + encryptedPrivateKey.cipherAlgorithm, + key, + encryptedPrivateKey.ciphertext + ); + const dec = new TextDecoder(); + dec.decode(decrypted); + + return await this.getWalletFromPrivateKey(dec.decode(decrypted), prefix); + } + + async getDenomMetadata(provider: any, denom: string): Promise { + return await provider.queryClient.bank.denomMetadata(denom); + } + + getTokenDecimals(token: any): number { + return token ? token.denom_units[token.denom_units.length - 1].exponent : 6; // Last denom unit has the decimal amount we need from our list + } + + async getBalances(wallet: CosmosWallet): Promise> { + const balances: Record = {}; + + const provider = await this._provider; + + const accounts = await wallet.getAccounts(); + + const { address } = accounts[0]; + + const allTokens = await provider.getAllBalances(address); + + await Promise.all( + allTokens.map(async (t: { denom: string; amount: string }) => { + let token = this.getTokenByBase(t.denom); + + if (!token && t.denom.startsWith('ibc/')) { + const ibcHash: string = t.denom.replace('ibc/', ''); + + // Get base denom by IBC hash + if (ibcHash) { + const { denomTrace } = await setupIbcExtension( + await provider.queryClient + ).ibc.transfer.denomTrace(ibcHash); + + if (denomTrace) { + const { baseDenom } = denomTrace; + + token = this.getTokenByBase(baseDenom); + } + } + } + + // Not all tokens are added in the registry so we use the denom if the token doesn't exist + balances[token ? token.symbol : t.denom] = { + value: BigNumber.from(parseInt(t.amount, 10)), + decimals: this.getTokenDecimals(token), + }; + }) + ); + + return balances; + } + + // returns a cosmos tx for a txHash + async getTransaction(id: string): Promise { + const provider = await this._provider; + const transaction = await provider.getTx(id); + + if (!transaction) { + throw new Error('Transaction not found'); + } + + return transaction; + } + + public getTokenBySymbol(tokenSymbol: string): Token | undefined { + return this.tokenList.find( + (token: Token) => token.symbol.toUpperCase() === tokenSymbol.toUpperCase() + ); + } + + public getTokenByBase(base: string): Token | undefined { + return this.tokenList.find((token: Token) => token.base === base); + } + + async getCurrentBlockNumber(): Promise { + const provider = await this._provider; + + return await provider.getHeight(); + } +} diff --git a/src/services/error-handler.ts b/src/services/error-handler.ts new file mode 100644 index 0000000000..3deb9c6e44 --- /dev/null +++ b/src/services/error-handler.ts @@ -0,0 +1,207 @@ +import { Request, RequestHandler, Response, NextFunction } from 'express'; + +// error origination from ethers library when interracting with node +export interface NodeError extends Error { + code: string | number; + reason?: string; + data?: any; +} + +// custom error for http exceptions +export class HttpException extends Error { + status: number; + message: string; + errorCode: number; + constructor(status: number, message: string, errorCode: number = -1) { + super(message); + this.status = status; + this.message = message; + this.errorCode = errorCode; + } +} + +export class InitializationError extends Error { + message: string; + errorCode: number; + constructor(message: string, errorCode: number) { + super(message); + this.message = message; + this.errorCode = errorCode; + } +} + +export class UniswapishPriceError extends Error { + message: string; + constructor(message: string) { + super(message); + this.message = message; + } +} + +export class InvalidNonceError extends Error { + message: string; + errorCode: number; + constructor(message: string, errorCode: number) { + super(message); + this.message = message; + this.errorCode = errorCode; + } +} + +// Capture errors from an async route, this must wrap any route that uses async. +// For example, `app.get('/', asyncHandler(async (req, res) -> {...}))` +export const asyncHandler = + (fn: RequestHandler) => (req: Request, res: Response, next: NextFunction) => { + return Promise.resolve(fn(req, res, next)).catch(next); + }; + +export interface TransactionError { + errorCode: number; + message: string; +} + +export const parseTransactionGasError = ( + error: any +): TransactionError | null => { + if ('code' in error && error.code === 'SERVER_ERROR') { + if ('body' in error) { + const innerError = JSON.parse(error['body']); + + if ( + 'error' in innerError && + 'code' in innerError['error'] && + innerError['error']['code'] === -32010 && + 'message' in innerError['error'] + ) { + const transactionError: TransactionError = { + errorCode: TRANSACTION_GAS_PRICE_TOO_LOW, + message: innerError['error']['message'], + }; + + return transactionError; + } + } + } + return null; +}; + +export const NETWORK_ERROR_CODE = 1001; +export const RATE_LIMIT_ERROR_CODE = 1002; +export const OUT_OF_GAS_ERROR_CODE = 1003; +export const TRANSACTION_GAS_PRICE_TOO_LOW = 1004; +export const LOAD_WALLET_ERROR_CODE = 1005; +export const TOKEN_NOT_SUPPORTED_ERROR_CODE = 1006; +export const TRADE_FAILED_ERROR_CODE = 1007; +export const SWAP_PRICE_EXCEEDS_LIMIT_PRICE_ERROR_CODE = 1008; +export const SWAP_PRICE_LOWER_THAN_LIMIT_PRICE_ERROR_CODE = 1009; +export const SERVICE_UNITIALIZED_ERROR_CODE = 1010; +export const UNKNOWN_CHAIN_ERROR_CODE = 1011; +export const INVALID_NONCE_ERROR_CODE = 1012; +export const PRICE_FAILED_ERROR_CODE = 1013; +export const INCOMPLETE_REQUEST_PARAM_CODE = 1014; +export const ERROR_RETRIEVING_WALLET_ADDRESS_ERROR_CODE = 1015; +export const ACCOUNT_NOT_SPECIFIED_CODE = 1016; +export const UNKNOWN_ERROR_ERROR_CODE = 1099; + +export const NETWORK_ERROR_MESSAGE = + 'Network error. Please check your node URL, API key, and Internet connection.'; +export const RATE_LIMIT_ERROR_MESSAGE = + 'Blockchain node API rate limit exceeded.'; +export const OUT_OF_GAS_ERROR_MESSAGE = 'Transaction out of gas.'; +export const LOAD_WALLET_ERROR_MESSAGE = 'Failed to load wallet: '; +export const TOKEN_NOT_SUPPORTED_ERROR_MESSAGE = 'Token not supported: '; +export const TRADE_FAILED_ERROR_MESSAGE = 'Trade query failed: '; +export const INCOMPLETE_REQUEST_PARAM = 'Incomplete request parameters.'; +export const INVALID_NONCE_ERROR_MESSAGE = 'Invalid Nonce provided: '; +export const SWAP_PRICE_EXCEEDS_LIMIT_PRICE_ERROR_MESSAGE = ( + price: any, + limitPrice: any +) => `Swap price ${price} exceeds limitPrice ${limitPrice}`; + +export const SWAP_PRICE_LOWER_THAN_LIMIT_PRICE_ERROR_MESSAGE = ( + price: any, + limitPrice: any +) => `Swap price ${price} lower than limitPrice ${limitPrice}`; + +export const SERVICE_UNITIALIZED_ERROR_MESSAGE = (service: any) => + `${service} was called before being initialized.`; + +export const UNKNOWN_KNOWN_CHAIN_ERROR_MESSAGE = (chainName: any) => + `Unrecognized chain name ${chainName}.`; + +export const ACCOUNT_NOT_SPECIFIED_ERROR_MESSAGE = () => + `AccountID or address not specified.`; + +export const ERROR_RETRIEVING_WALLET_ADDRESS_ERROR_MESSAGE = ( + privKey: string +) => + `Unable to retrieve wallet address for provided private key: ${privKey.substring( + 0, + 5 + )}`; + +export const UNKNOWN_ERROR_MESSAGE = 'Unknown error.'; + +export const PRICE_FAILED_ERROR_MESSAGE = 'Price query failed: '; + +export interface ErrorResponse { + stack?: any; + message: string; + httpErrorCode: number; + errorCode: number; +} + +export const gatewayErrorMiddleware = ( + err: Error | NodeError | HttpException | InitializationError +): ErrorResponse => { + const response: ErrorResponse = { + message: err.message || UNKNOWN_ERROR_MESSAGE, + httpErrorCode: 503, + errorCode: UNKNOWN_ERROR_ERROR_CODE, + stack: err.stack, + }; + // the default http error code is 503 for an unknown error + if (err instanceof HttpException) { + response.httpErrorCode = err.status; + response.errorCode = err.errorCode; + } else if (err instanceof InitializationError) { + response.errorCode = err.errorCode; + } else { + response.errorCode = UNKNOWN_ERROR_ERROR_CODE; + response.message = UNKNOWN_ERROR_MESSAGE; + + if ('code' in err) { + switch (typeof err.code) { + case 'string': + // error is from ethers library + if (['NETWORK_ERROR', 'TIMEOUT'].includes(err.code)) { + response.errorCode = NETWORK_ERROR_CODE; + response.message = NETWORK_ERROR_MESSAGE; + } else if (err.code === 'SERVER_ERROR') { + const transactionError = parseTransactionGasError(err); + if (transactionError) { + response.errorCode = transactionError.errorCode; + response.message = transactionError.message; + } else { + response.errorCode = NETWORK_ERROR_CODE; + response.message = NETWORK_ERROR_MESSAGE; + } + } + break; + + case 'number': + // errors from provider, this code comes from infura + if (err.code === -32005) { + // we only handle rate-limit errors + response.errorCode = RATE_LIMIT_ERROR_CODE; + response.message = RATE_LIMIT_ERROR_MESSAGE; + } else if (err.code === -32010) { + response.errorCode = TRANSACTION_GAS_PRICE_TOO_LOW; + response.message = err.message; + } + break; + } + } + } + return response; +}; diff --git a/src/services/ethereum-base.ts b/src/services/ethereum-base.ts new file mode 100644 index 0000000000..4ccc3df7a8 --- /dev/null +++ b/src/services/ethereum-base.ts @@ -0,0 +1,393 @@ +import { + BigNumber, + Contract, + providers, + Transaction, + utils, + Wallet, +} from 'ethers'; +import axios from 'axios'; +import { promises as fs } from 'fs'; +import path from 'path'; +import { rootPath } from '../paths'; +import { TokenListType, TokenValue, walletPath } from './base'; +import { EVMNonceManager } from './evm.nonce'; +import NodeCache from 'node-cache'; +import { EvmTxStorage } from './evm.tx-storage'; +import fse from 'fs-extra'; +import { ConfigManagerCertPassphrase } from './config-manager-cert-passphrase'; +import { logger } from './logger'; +import { ReferenceCountingCloseable } from './refcounting-closeable'; + +// information about an Ethereum token +export interface TokenInfo { + chainId: number; + address: string; + name: string; + symbol: string; + decimals: number; +} + +export type NewBlockHandler = (bn: number) => void; + +export type NewDebugMsgHandler = (msg: any) => void; + +export class EthereumBase { + private _provider; + protected tokenList: TokenInfo[] = []; + private _tokenMap: Record = {}; + // there are async values set in the constructor + private _ready: boolean = false; + private _initializing: boolean = false; + public chainName; + public chainId; + public rpcUrl; + public gasPriceConstant; + private _gasLimitTransaction; + public tokenListSource: string; + public tokenListType: TokenListType; + public cache: NodeCache; + private readonly _refCountingHandle: string; + private readonly _nonceManager: EVMNonceManager; + private readonly _txStorage: EvmTxStorage; + + constructor( + chainName: string, + chainId: number, + rpcUrl: string, + tokenListSource: string, + tokenListType: TokenListType, + gasPriceConstant: number, + gasLimitTransaction: number, + nonceDbPath: string, + transactionDbPath: string + ) { + this._provider = new providers.StaticJsonRpcProvider(rpcUrl); + this.chainName = chainName; + this.chainId = chainId; + this.rpcUrl = rpcUrl; + this.gasPriceConstant = gasPriceConstant; + this.tokenListSource = tokenListSource; + this.tokenListType = tokenListType; + + this._refCountingHandle = ReferenceCountingCloseable.createHandle(); + this._nonceManager = new EVMNonceManager( + chainName, + chainId, + this.resolveDBPath(nonceDbPath) + ); + this._nonceManager.declareOwnership(this._refCountingHandle); + this.cache = new NodeCache({ stdTTL: 3600 }); // set default cache ttl to 1hr + this._gasLimitTransaction = gasLimitTransaction; + this._txStorage = EvmTxStorage.getInstance( + this.resolveDBPath(transactionDbPath), + this._refCountingHandle + ); + this._txStorage.declareOwnership(this._refCountingHandle); + } + + ready(): boolean { + return this._ready; + } + + public get provider() { + return this._provider; + } + + public get gasLimitTransaction() { + return this._gasLimitTransaction; + } + + public resolveDBPath(oldPath: string): string { + if (oldPath.charAt(0) === '/') return oldPath; + const dbDir: string = path.join(rootPath(), 'db/'); + fse.mkdirSync(dbDir, { recursive: true }); + return path.join(dbDir, oldPath); + } + + public events() { + this._provider._events.map(function (event) { + return [event.tag]; + }); + } + + public onNewBlock(func: NewBlockHandler) { + this._provider.on('block', func); + } + + public onDebugMessage(func: NewDebugMsgHandler) { + this._provider.on('debug', func); + } + + async init(): Promise { + if (!this.ready() && !this._initializing) { + this._initializing = true; + await this._nonceManager.init(this.provider); + await this.loadTokens(this.tokenListSource, this.tokenListType); + this._ready = true; + this._initializing = false; + } + return; + } + + async loadTokens( + tokenListSource: string, + tokenListType: TokenListType + ): Promise { + this.tokenList = await this.getTokenList(tokenListSource, tokenListType); + // Only keep tokens in the same chain + this.tokenList = this.tokenList.filter( + (token: TokenInfo) => token.chainId === this.chainId + ); + if (this.tokenList) { + this.tokenList.forEach( + (token: TokenInfo) => (this._tokenMap[token.symbol] = token) + ); + } + } + + // returns a Tokens for a given list source and list type + async getTokenList( + tokenListSource: string, + tokenListType: TokenListType + ): Promise { + let tokens; + if (tokenListType === 'URL') { + ({ + data: { tokens }, + } = await axios.get(tokenListSource)); + } else { + ({ tokens } = JSON.parse(await fs.readFile(tokenListSource, 'utf8'))); + } + return tokens; + } + + public get nonceManager() { + return this._nonceManager; + } + + public get txStorage(): EvmTxStorage { + return this._txStorage; + } + + // ethereum token lists are large. instead of reloading each time with + // getTokenList, we can read the stored tokenList value from when the + // object was initiated. + public get storedTokenList(): TokenInfo[] { + return Object.values(this._tokenMap); + } + + // return the Token object for a symbol + getTokenForSymbol(symbol: string): TokenInfo | null { + return this._tokenMap[symbol] ? this._tokenMap[symbol] : null; + } + + getWalletFromPrivateKey(privateKey: string): Wallet { + return new Wallet(privateKey, this._provider); + } + // returns Wallet for an address + // TODO: Abstract-away into base.ts + async getWallet(address: string): Promise { + const path = `${walletPath}/${this.chainName}`; + + const encryptedPrivateKey: string = await fse.readFile( + `${path}/${address}.json`, + 'utf8' + ); + + const passphrase = ConfigManagerCertPassphrase.readPassphrase(); + if (!passphrase) { + throw new Error('missing passphrase'); + } + return await this.decrypt(encryptedPrivateKey, passphrase); + } + + encrypt(privateKey: string, password: string): Promise { + const wallet = this.getWalletFromPrivateKey(privateKey); + return wallet.encrypt(password); + } + + async decrypt( + encryptedPrivateKey: string, + password: string + ): Promise { + const wallet = await Wallet.fromEncryptedJson( + encryptedPrivateKey, + password + ); + return wallet.connect(this._provider); + } + + // returns the Native balance, convert BigNumber to string + async getNativeBalance(wallet: Wallet): Promise { + const balance = await wallet.getBalance(); + return { value: balance, decimals: 18 }; + } + + // returns the balance for an ERC-20 token + async getERC20Balance( + contract: Contract, + wallet: Wallet, + decimals: number + ): Promise { + logger.info('Requesting balance for owner ' + wallet.address + '.'); + const balance: BigNumber = await contract.balanceOf(wallet.address); + logger.info( + `Raw balance of ${contract.address} for ` + + `${wallet.address}: ${balance.toString()}` + ); + return { value: balance, decimals: decimals }; + } + + // returns the allowance for an ERC-20 token + async getERC20Allowance( + contract: Contract, + wallet: Wallet, + spender: string, + decimals: number + ): Promise { + logger.info( + 'Requesting spender ' + + spender + + ' allowance for owner ' + + wallet.address + + '.' + ); + const allowance = await contract.allowance(wallet.address, spender); + logger.info(allowance); + return { value: allowance, decimals: decimals }; + } + + // returns an ethereum TransactionResponse for a txHash. + async getTransaction(txHash: string): Promise { + return this._provider.getTransaction(txHash); + } + + // caches transaction receipt once they arrive + cacheTransactionReceipt(tx: providers.TransactionReceipt) { + this.cache.set(tx.transactionHash, tx); // transaction hash is used as cache key since it is unique enough + } + + // returns an ethereum TransactionReceipt for a txHash if the transaction has been mined. + async getTransactionReceipt( + txHash: string + ): Promise { + if (this.cache.keys().includes(txHash)) { + // If it's in the cache, return the value in cache, whether it's null or not + return this.cache.get(txHash) as providers.TransactionReceipt; + } else { + // If it's not in the cache, + const fetchedTxReceipt = await this._provider.getTransactionReceipt( + txHash + ); + + this.cache.set(txHash, fetchedTxReceipt); // Cache the fetched receipt, whether it's null or not + + if (!fetchedTxReceipt) { + this._provider.once(txHash, this.cacheTransactionReceipt.bind(this)); + } + + return fetchedTxReceipt; + } + } + + // adds allowance by spender to transfer the given amount of Token + async approveERC20( + contract: Contract, + wallet: Wallet, + spender: string, + amount: BigNumber, + nonce?: number, + maxFeePerGas?: BigNumber, + maxPriorityFeePerGas?: BigNumber, + gasPrice?: number + ): Promise { + logger.info( + 'Calling approve method called for spender ' + + spender + + ' requesting allowance ' + + amount.toString() + + ' from owner ' + + wallet.address + + '.' + ); + return this.nonceManager.provideNonce( + nonce, + wallet.address, + async (nextNonce) => { + const params: any = { + gasLimit: this._gasLimitTransaction, + nonce: nextNonce, + }; + if (maxFeePerGas || maxPriorityFeePerGas) { + params.maxFeePerGas = maxFeePerGas; + params.maxPriorityFeePerGas = maxPriorityFeePerGas; + } else if (gasPrice) { + params.gasPrice = (gasPrice * 1e9).toFixed(0); + } + return contract.approve(spender, amount, params); + } + ); + } + + public getTokenBySymbol(tokenSymbol: string): TokenInfo | undefined { + return this.tokenList.find( + (token: TokenInfo) => + token.symbol.toUpperCase() === tokenSymbol.toUpperCase() && + token.chainId === this.chainId + ); + } + + // returns the current block number + async getCurrentBlockNumber(): Promise { + return this._provider.getBlockNumber(); + } + + // cancel transaction + async cancelTxWithGasPrice( + wallet: Wallet, + nonce: number, + gasPrice: number + ): Promise { + return this.nonceManager.provideNonce( + nonce, + wallet.address, + async (nextNonce) => { + const tx = { + from: wallet.address, + to: wallet.address, + value: utils.parseEther('0'), + nonce: nextNonce, + gasPrice: (gasPrice * 1e9).toFixed(0), + }; + const response = await wallet.sendTransaction(tx); + logger.info(response); + + return response; + } + ); + } + + /** + * Get the base gas fee and the current max priority fee from the EVM + * node, and add them together. + */ + async getGasPrice(): Promise { + if (!this.ready) { + await this.init(); + } + const feeData: providers.FeeData = await this._provider.getFeeData(); + if (feeData.gasPrice !== null && feeData.maxPriorityFeePerGas !== null) { + return ( + feeData.gasPrice.add(feeData.maxPriorityFeePerGas).toNumber() * 1e-9 + ); + } else { + return null; + } + } + + async close() { + await this._nonceManager.close(this._refCountingHandle); + await this._txStorage.close(this._refCountingHandle); + } +} diff --git a/src/services/ethereum.abi.json b/src/services/ethereum.abi.json new file mode 100644 index 0000000000..df4b12646d --- /dev/null +++ b/src/services/ethereum.abi.json @@ -0,0 +1,600 @@ +{ + "ERC20Abi": [ + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_spender", + "type": "address" + }, + { + "name": "_value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_from", + "type": "address" + }, + { + "name": "_to", + "type": "address" + }, + { + "name": "_value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "balance", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_to", + "type": "address" + }, + { + "name": "_value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_owner", + "type": "address" + }, + { + "name": "_spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + } + ], + "MKRAbi": [ + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_spender", + "type": "address" + }, + { + "name": "_value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_from", + "type": "address" + }, + { + "name": "_to", + "type": "address" + }, + { + "name": "_value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "balance", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_to", + "type": "address" + }, + { + "name": "_value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_owner", + "type": "address" + }, + { + "name": "_spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + } + ], + "KovanWETHAbi": [ + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [{ "name": "", "type": "string" }], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { "name": "guy", "type": "address" }, + { "name": "wad", "type": "uint256" } + ], + "name": "approve", + "outputs": [{ "name": "", "type": "bool" }], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [{ "name": "", "type": "uint256" }], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { "name": "src", "type": "address" }, + { "name": "dst", "type": "address" }, + { "name": "wad", "type": "uint256" } + ], + "name": "transferFrom", + "outputs": [{ "name": "", "type": "bool" }], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [{ "name": "wad", "type": "uint256" }], + "name": "withdraw", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [{ "name": "", "type": "uint8" }], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [{ "name": "", "type": "address" }], + "name": "balanceOf", + "outputs": [{ "name": "", "type": "uint256" }], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [{ "name": "", "type": "string" }], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { "name": "dst", "type": "address" }, + { "name": "wad", "type": "uint256" } + ], + "name": "transfer", + "outputs": [{ "name": "", "type": "bool" }], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "deposit", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { "name": "", "type": "address" }, + { "name": "", "type": "address" } + ], + "name": "allowance", + "outputs": [{ "name": "", "type": "uint256" }], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { "payable": true, "stateMutability": "payable", "type": "fallback" }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "name": "src", "type": "address" }, + { "indexed": true, "name": "guy", "type": "address" }, + { "indexed": false, "name": "wad", "type": "uint256" } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "name": "src", "type": "address" }, + { "indexed": true, "name": "dst", "type": "address" }, + { "indexed": false, "name": "wad", "type": "uint256" } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "name": "dst", "type": "address" }, + { "indexed": false, "name": "wad", "type": "uint256" } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "name": "src", "type": "address" }, + { "indexed": false, "name": "wad", "type": "uint256" } + ], + "name": "Withdrawal", + "type": "event" + } + ], + "KovanFaucetAddress": "0xb48Cc42C45d262534e46d5965a9Ac496F1B7a830" +} diff --git a/src/services/evm.nonce.ts b/src/services/evm.nonce.ts new file mode 100644 index 0000000000..400c010354 --- /dev/null +++ b/src/services/evm.nonce.ts @@ -0,0 +1,546 @@ +import ethers from 'ethers'; +import { + InitializationError, + InvalidNonceError, + INVALID_NONCE_ERROR_CODE, + INVALID_NONCE_ERROR_MESSAGE, + SERVICE_UNITIALIZED_ERROR_CODE, + SERVICE_UNITIALIZED_ERROR_MESSAGE, +} from './error-handler'; +import { LocalStorage } from './local-storage'; +import { logger } from './logger'; +import { ReferenceCountingCloseable } from './refcounting-closeable'; + +export class NonceInfo { + constructor(readonly nonce: number, public expiry: number) {} +} + +NonceInfo.prototype.valueOf = function () { + return this.nonce; +}; + +export class NonceLocalStorage extends ReferenceCountingCloseable { + private readonly _localStorage: LocalStorage; + + protected constructor(dbPath: string) { + super(dbPath); + this._localStorage = LocalStorage.getInstance(dbPath, this.handle); + } + + public async init(): Promise { + await this._localStorage.init(); + } + + public async saveLeadingNonce( + chain: string, + chainId: number, + address: string, + nonce: NonceInfo + ): Promise { + const nonceValue: string = String(nonce.nonce); + const nonceExpiry: string = String(nonce.expiry); + + return this._localStorage.save( + chain + '/' + String(chainId) + '/' + address, + `${nonceValue}:${nonceExpiry}` + ); + } + + public async getLeadingNonces( + chain: string, + chainId: number + ): Promise> { + return this._localStorage.get((key: string, value: any) => { + const splitKey: string[] = key.split('/'); + if ( + splitKey.length === 3 && + splitKey[0] === chain && + splitKey[1] === String(chainId) + ) { + const nonceValues: string[] = value.split(':'); + const address: string = String(splitKey[2]); + const nonce: NonceInfo = new NonceInfo( + parseInt(nonceValues[0]), + parseInt(nonceValues[1]) + ); + return [address, nonce]; + } + return; + }); + } + + public async savePendingNonces( + chain: string, + chainId: number, + address: string, + nonces: NonceInfo[] + ): Promise { + let value = ''; + + for (const nonce of nonces) { + const nonceValue: string = String(nonce.nonce); + const nonceExpiry: string = String(nonce.expiry); + value = value + ',' + `${nonceValue}:${nonceExpiry}`; + } + + return this._localStorage.save( + `${chain}/${String(chainId)}/${address}/pending`, + value + ); + } + + public async getPendingNonces( + chain: string, + chainId: number + ): Promise> { + return this._localStorage.get((key: string, value: any) => { + const splitKey: string[] = key.split('/'); + if ( + splitKey.length === 4 && + splitKey[0] === chain && + splitKey[1] === String(chainId) && + splitKey[3] === String('pending') + ) { + const address: string = String(splitKey[2]); + const rawNonceValues: string[] = value.split(','); + + const nonceInfoList = []; + for (const values of rawNonceValues) { + const nonceValues: string[] = values.split(':'); + nonceInfoList.push( + new NonceInfo(parseInt(nonceValues[0]), parseInt(nonceValues[1])) + ); + } + nonceInfoList.splice(0, 1); + return [`${address}`, nonceInfoList]; + } + return; + }); + } + + public async close(handle: string): Promise { + await super.close(handle); + if (this.refCount < 1) { + await this._localStorage.close(this.handle); + } + } +} + +/** + * Manages EVM nonce for addresses to ensure logical consistency of nonces when + * there is a burst of transactions being sent out. + * + * This class aims to solve the following problems: + * + * 1. Sending multiple EVM transactions concurrently. + * Naively, developers would use the transaction count from the EVM node as + * the nonce for new transactions. When multiple transactions are being sent + * out this way - these transactions would often end up using the same nonce + * and thus only one of them would succeed. + * The EVM nonce manager ensures the correct serialization of nonces used in + * this case, s.t. the nonces for new concurrent transactions will go out as + * [n, n+1, n+2, ...] rathan than [n, n, n, ...] + * + * 2. Stuck or dropped transactions. + * If you've sent out a transaction with nonce n before, but it got stuck or + * was dropped from the mem-pool - it's better to just forget about its nonce + * and send the next transaction with its nonce rather than to wait for it to + * be confirmed. + * This is where the `localNonceTTL` parameter comes in. The locally cached + * nonces are only remembered for a period of time (default is 5 minutes). + * After that, nonce values from the EVM node will be used again to prevent + * potentially dropped nonces from blocking new transactions. + * + * 3. Canceling, or re-sending past transactions. + * Canceling or re-sending past transactions would typically re-use past + * nonces. This means the user is intending to reset his transaction chain + * back to a certain nonce. The manager should allow the cached nonce to go + * back to the specified past nonce when it happens. + * This means whenever a transaction is sent with a past nonce or an EVM + * cancel happens, the API logic **must** call commitNonce() to reset the + * cached nonce back to the specified position. + */ +export class EVMNonceManager extends ReferenceCountingCloseable { + // leading nonce means the latest nonce we have passed to the blockchain. + // It may or may not already be included in the blockchain. + #addressToLeadingNonce: Record = {}; + #addressToPendingNonces: Record = {}; + + #initialized: boolean = false; + #chainId: number; + #chainName: string; + #db: NonceLocalStorage; + + // These variables should be private but then we will not be able to mock it otherwise. + public _provider: ethers.providers.Provider | null = null; + public _localNonceTTL: number; + public _pendingNonceTTL: number; + + constructor( + chainName: string, + chainId: number, + dbPath: string, + localNonceTTL: number = 300 * 1000, + pendingNonceTTL: number = 300 * 1000 + ) { + const refCountKey: string = `${chainName}/${chainId}/${dbPath}`; + super(refCountKey); + + this.#chainName = chainName; + this.#chainId = chainId; + this.#db = NonceLocalStorage.getInstance(dbPath, this.handle); + this._localNonceTTL = localNonceTTL; + this._pendingNonceTTL = pendingNonceTTL; + } + + // init can be called many times and generally should always be called + // getInstance, but it only applies the values the first time it is called + public async init(provider: ethers.providers.Provider): Promise { + if (this._localNonceTTL < 0) { + throw new InitializationError( + SERVICE_UNITIALIZED_ERROR_MESSAGE( + 'EVMNonceManager.init localNonceTTL must be greater than or equal to zero.' + ), + SERVICE_UNITIALIZED_ERROR_CODE + ); + } + + if (this._pendingNonceTTL < 0) { + throw new InitializationError( + SERVICE_UNITIALIZED_ERROR_MESSAGE( + 'EVMNonceManager.init pendingNonceTTL must be greater than or equal to zero.' + ), + SERVICE_UNITIALIZED_ERROR_CODE + ); + } + + if (!this._provider) { + this._provider = provider; + } + + if (!this.#initialized) { + await this.#db.init(); + const addressToLeadingNonce: Record = + await this.#db.getLeadingNonces(this.#chainName, this.#chainId); + + const addressToPendingNonces: Record = + await this.#db.getPendingNonces(this.#chainName, this.#chainId); + + for (const [address, nonce] of Object.entries(addressToLeadingNonce)) { + logger.info(`Loading leading nonce ${nonce} for address ${address}.`); + this.#addressToLeadingNonce[address] = nonce; + } + + for (const [address, pendingNonceInfoList] of Object.entries( + addressToPendingNonces + )) { + this.#addressToPendingNonces[address] = pendingNonceInfoList; + } + + await Promise.all( + Object.keys(this.#addressToLeadingNonce).map(async (address) => { + await this.mergeNonceFromEVMNode(address, true); + }) + ); + this.#initialized = true; + } + } + + async mergeNonceFromEVMNode( + ethAddress: string, + intializationPhase: boolean = false + ): Promise { + /* + Retrieves and saves the nonce from the last successful transaction from the EVM node. + If time period of the last stored nonce exceeds the localNonceTTL, we update the nonce using the getTransactionCount + call. + */ + if (this._provider != null && (intializationPhase || this.#initialized)) { + // only run the logic below if the leading nonce does not exist or it has expired + const leadingNonceExpiryTimestamp: number = this.#addressToLeadingNonce[ + ethAddress + ] + ? this.#addressToLeadingNonce[ethAddress].expiry + : -1; + const now: number = new Date().getTime(); + if (leadingNonceExpiryTimestamp > now) { + return; + } + + const externalNonce: number = + (await this._provider.getTransactionCount(ethAddress, 'latest')) - 1; + + // update the address's leading nonce to the latest nonce from the block chain + this.#addressToLeadingNonce[ethAddress] = new NonceInfo( + externalNonce, + now + this._localNonceTTL + ); + + await this.#db.saveLeadingNonce( + this.#chainName, + this.#chainId, + ethAddress, + this.#addressToLeadingNonce[ethAddress] + ); + + // only keep pending nonces that are greater than externalNonce and have not expired + await this.dropExpiredPendingNonces(ethAddress); + } else { + logger.error( + 'EVMNonceManager.mergeNonceFromEVMNode called before initiated' + ); + throw new InitializationError( + SERVICE_UNITIALIZED_ERROR_MESSAGE( + 'EVMNonceManager.mergeNonceFromEVMNode' + ), + SERVICE_UNITIALIZED_ERROR_CODE + ); + } + } + + async getNonceFromMemory(ethAddress: string): Promise { + if (this.#initialized) { + if (this.#addressToLeadingNonce[ethAddress]) { + await this.mergeNonceFromEVMNode(ethAddress); + return this.#addressToLeadingNonce[ethAddress].nonce; + } else { + return null; + } + } else { + logger.error( + 'EVMNonceManager.getNonceFromMemory called before initiated' + ); + throw new InitializationError( + SERVICE_UNITIALIZED_ERROR_MESSAGE('EVMNonceManager.getNonceFromMemory'), + SERVICE_UNITIALIZED_ERROR_CODE + ); + } + } + + async getNonceFromNode(ethAddress: string): Promise { + if (this.#initialized && this._provider != null) { + const externalNonce: number = + (await this._provider.getTransactionCount(ethAddress)) - 1; + + const now: number = new Date().getTime(); + this.#addressToLeadingNonce[ethAddress] = new NonceInfo( + externalNonce, + now + this._pendingNonceTTL + ); + await this.#db.saveLeadingNonce( + this.#chainName, + this.#chainId, + ethAddress, + this.#addressToLeadingNonce[ethAddress] + ); + return this.#addressToLeadingNonce[ethAddress].nonce; + } else { + logger.error('EVMNonceManager.getNonceFromNode called before initiated'); + throw new InitializationError( + SERVICE_UNITIALIZED_ERROR_MESSAGE('EVMNonceManager.getNonceFromNode'), + SERVICE_UNITIALIZED_ERROR_CODE + ); + } + } + + async getNonce(ethAddress: string): Promise { + let nonce: number | null = await this.getNonceFromMemory(ethAddress); + if (nonce === null) { + nonce = await this.getNonceFromNode(ethAddress); + } + return nonce; + } + + async getNextNonce(ethAddress: string): Promise { + /* + Retrieves the next available nonce for a given wallet address. + This function will automatically increment the leading Nonce of the given wallet address. + */ + + if (this.#initialized) { + await this.mergeNonceFromEVMNode(ethAddress); + await this.dropExpiredPendingNonces(ethAddress); + + let newNonce = null; + let numberOfPendingNonce = 0; + const now: number = new Date().getTime(); + + if (this.#addressToPendingNonces[ethAddress] instanceof Array) + numberOfPendingNonce = this.#addressToPendingNonces[ethAddress].length; + if (numberOfPendingNonce > 0) { + const pendingNonces: NonceInfo[] = + this.#addressToPendingNonces[ethAddress]; + + for (const nonceInfo of pendingNonces) { + if (now > nonceInfo.expiry) { + newNonce = nonceInfo; + newNonce.expiry = now + this._pendingNonceTTL; + break; + } + } + if (newNonce === null) { + // All pending nonce have yet to expire. + // Use last entry in pendingNonce to determine next nonce. + newNonce = new NonceInfo( + pendingNonces[pendingNonces.length - 1].nonce + 1, + now + this._pendingNonceTTL + ); + this.#addressToPendingNonces[ethAddress].push(newNonce); + } + } else { + newNonce = new NonceInfo( + (await this.getNonce(ethAddress)) + 1, + now + this._pendingNonceTTL + ); + this.#addressToPendingNonces[ethAddress] = [newNonce]; + } + await this.#db.savePendingNonces( + this.#chainName, + this.#chainId, + `${ethAddress}`, + this.#addressToPendingNonces[ethAddress] + ); + + return newNonce.nonce; + } else { + logger.error('EVMNonceManager.getNextNonce called before initiated'); + throw new InitializationError( + SERVICE_UNITIALIZED_ERROR_MESSAGE('EVMNonceManager.getNextNonce'), + SERVICE_UNITIALIZED_ERROR_CODE + ); + } + } + + private async dropExpiredPendingNonces(ethAddress: string): Promise { + if (this.#addressToPendingNonces[ethAddress] instanceof Array) { + const now: number = new Date().getTime(); + const leadingNonce: NonceInfo | undefined = + this.#addressToLeadingNonce[ethAddress]; + const unexpiredPendingNonces: Array = []; + for (const pendingNonceInfo of this.#addressToPendingNonces[ethAddress]) { + // keep only the nonces that have not expired. If there is a leading nonce, they must also be greater than the leading nonce + if ( + pendingNonceInfo.expiry > now && + (leadingNonce === undefined || + pendingNonceInfo.nonce > leadingNonce.nonce) + ) { + unexpiredPendingNonces.push(pendingNonceInfo); + } + } + this.#addressToPendingNonces[ethAddress] = unexpiredPendingNonces; + + await this.#db.savePendingNonces( + this.#chainName, + this.#chainId, + ethAddress, + this.#addressToPendingNonces[ethAddress] + ); + } + } + + public async provideNonce( + nonce: number | undefined, // when cancelling a transaction, the client specifies the nonce, in most other cases, they late gateway decide the nonce + ethAddress: string, + f: (_nextNonce: number) => Promise // should perform a blockchain transaction that uses the nonce + ): Promise { + let nextNonce: number; + if (nonce === undefined) { + nextNonce = await this.getNextNonce(ethAddress); + } else { + nextNonce = nonce; + } + + // try to perform the transaction function f + try { + logger.info( + `Providing the next nonce ${nextNonce} for address ${ethAddress}.` + ); + const result = await f(nextNonce); // OBS: may say the nonce is too high, or the nonce is too low, can we capture that?, should we try to adjust the nonce automatically? + // OBS: what happens if there is another wallet also emitting transactions? + await this.commitNonce(ethAddress, nextNonce); + return result; + } catch (err) { + logger.error( + `Transaction with nonce ${nextNonce} for address ${ethAddress} failed : ${err}` + ); + // the transaction failed, remove nonces geq nextNonce + this.#addressToPendingNonces[ethAddress] = this.#addressToPendingNonces[ + ethAddress + ].filter((pendingNonceInfo) => pendingNonceInfo.nonce < nextNonce); + + await this.#db.savePendingNonces( + this.#chainName, + this.#chainId, + ethAddress, + this.#addressToPendingNonces[ethAddress] + ); + + throw err; + } + } + + async commitNonce(ethAddress: string, txNonce: number): Promise { + /* + Stores the nonce of the last successful transaction. + */ + if (this.#initialized) { + const now: number = new Date().getTime(); + + if (this.#addressToLeadingNonce[ethAddress]) { + if (txNonce > this.#addressToLeadingNonce[ethAddress].nonce) { + const nonce: NonceInfo = new NonceInfo( + txNonce, + now + this._localNonceTTL + ); + this.#addressToLeadingNonce[ethAddress] = nonce; + await this.#db.saveLeadingNonce( + this.#chainName, + this.#chainId, + ethAddress, + nonce + ); + return; + } else { + logger.error('Provided txNonce is < currentNonce'); + throw new InvalidNonceError( + INVALID_NONCE_ERROR_MESSAGE + + `txNonce(${txNonce}) < currentNonce(${ + this.#addressToLeadingNonce[ethAddress].nonce + })`, + INVALID_NONCE_ERROR_CODE + ); + } + } + const nonce: NonceInfo = new NonceInfo( + txNonce, + now + this._localNonceTTL + ); + this.#addressToLeadingNonce[ethAddress] = nonce; + await this.#db.saveLeadingNonce( + this.#chainName, + this.#chainId, + ethAddress, + nonce + ); + } else { + logger.error('EVMNonceManager.commitNonce called before initiated'); + throw new InitializationError( + SERVICE_UNITIALIZED_ERROR_MESSAGE('EVMNonceManager.commitNonce'), + SERVICE_UNITIALIZED_ERROR_CODE + ); + } + } + + async isValidNonce(ethAddress: string, nonce: number): Promise { + const expectedNonce: number = await this.getNextNonce(ethAddress); + if (nonce == expectedNonce) return true; + return false; + } + + async close(ownerHandle: string): Promise { + await super.close(ownerHandle); + if (this.refCount < 1) { + await this.#db.close(this.handle); + } + } +} diff --git a/src/services/evm.tx-storage.ts b/src/services/evm.tx-storage.ts new file mode 100644 index 0000000000..2af249e9d6 --- /dev/null +++ b/src/services/evm.tx-storage.ts @@ -0,0 +1,70 @@ +import { LocalStorage } from './local-storage'; +import { ReferenceCountingCloseable } from './refcounting-closeable'; + +// store the timestamp for when a transaction was initiated +// this will be used to calculate a heuristic of the likelihood +// a mempool transaction will be included in a future block +export class EvmTxStorage extends ReferenceCountingCloseable { + readonly localStorage: LocalStorage; + + protected constructor(dbPath: string) { + super(dbPath); + this.localStorage = LocalStorage.getInstance(dbPath, this.handle); + } + + public async init(): Promise { + await this.localStorage.init(); + } + + // pass in a date, then store it as a POSIX timestamp + public async saveTx( + chain: string, + chainId: number, + tx: string, + date: Date, + currentGasPrice: number + ): Promise { + return this.localStorage.save( + chain + '/' + String(chainId) + '/' + tx, + date.getTime().toString() + ',' + currentGasPrice.toString() + ); + } + + public async deleteTx( + chain: string, + chainId: number, + tx: string + ): Promise { + return this.localStorage.del(chain + '/' + String(chainId) + '/' + tx); + } + + // retrieve POSIX timestamps and convert them back into JavaScript Date types + public async getTxs( + chain: string, + chainId: number + ): Promise> { + return this.localStorage.get((key: string, value: string) => { + const splitKey = key.split('/'); + const splitValue = value.split(','); + if ( + splitKey.length === 3 && + splitKey[0] === chain && + splitKey[1] === String(chainId) && + splitValue.length === 2 + ) { + return [ + splitKey[2], + [new Date(parseInt(splitValue[0])), parseInt(splitValue[1])], + ]; + } + return; + }); + } + + public async close(handle: string): Promise { + await super.close(handle); + if (this.refCount < 1) { + await this.localStorage.close(this.handle); + } + } +} diff --git a/src/services/local-storage.ts b/src/services/local-storage.ts new file mode 100644 index 0000000000..fb3f01d124 --- /dev/null +++ b/src/services/local-storage.ts @@ -0,0 +1,87 @@ +import { Level } from 'level'; +import { ReferenceCountingCloseable } from './refcounting-closeable'; + +export class LocalStorage extends ReferenceCountingCloseable { + readonly #dbPath: string; + #db: Level; + + protected constructor(dbPath: string) { + super(dbPath); + this.#dbPath = dbPath; + this.#db = new Level(dbPath, { + createIfMissing: true, + valueEncoding: 'json', + }); + } + + public async init(): Promise { + await this.#db.open({ passive: true }); + } + + get dbPath(): string { + return this.#dbPath; + } + + get dbStatus(): string { + return this.#db.status; + } + + private async assertDbOpen(): Promise { + if (this.#db.status === 'open') { + // this is the target state, finish! + return; + } else if (this.#db.status === 'closing') { + // do nothing if closing, then try again + await new Promise((resolve) => setTimeout(resolve, 1000)); + await this.assertDbOpen(); + } else if (this.#db.status === 'closed') { + // reopen the db + await this.#db.open({ createIfMissing: true }); + await this.assertDbOpen(); + } else if (this.#db.status === 'opening') { + // wait for but do not initate the opening of the db + await this.#db.open({ passive: true }); + } + } + + public async save(key: string, value: any): Promise { + await this.assertDbOpen(); + await this.#db.put(key, value); + } + + public async del(key: string): Promise { + await this.assertDbOpen(); + await this.#db.del(key); + } + + public async get( + readFunc: (key: string, string: any) => [string, any] | undefined + ): Promise> { + await this.assertDbOpen(); + + const results: Record = {}; + const kvs = await this.#db + .iterator({ + keys: true, + values: true, + }) + .all(); + for (const [key, value] of kvs) { + const data = readFunc(key, value); + if (data) { + results[data[0]] = data[1]; + } + } + + return results; + } + + public async close(handle: string): Promise { + await super.close(handle); + if (this.refCount < 1) { + // XXX(martin_kou): `await #db.close()` would freeze. So this is used + // instead. + this.#db.close((_) => true); + } + } +} diff --git a/src/services/logger.ts b/src/services/logger.ts new file mode 100644 index 0000000000..90c3a304a8 --- /dev/null +++ b/src/services/logger.ts @@ -0,0 +1,92 @@ +import winston from 'winston'; +import DailyRotateFile from 'winston-daily-rotate-file'; +import { TelemetryTransport } from './telemetry-transport'; +import dayjs from 'dayjs'; +import utc from 'dayjs/plugin/utc'; +import appRoot from 'app-root-path'; +import { ConfigManagerV2 } from './config-manager-v2'; +dayjs.extend(utc); + +const { LEVEL, MESSAGE } = require('triple-beam'); + +const errorsWithStack = winston.format((einfo) => { + if (einfo instanceof Error) { + const info = Object.assign({}, einfo, { + level: einfo.level, + [LEVEL]: einfo[LEVEL] || einfo.level, + message: einfo.message, + [MESSAGE]: einfo[MESSAGE] || einfo.message, + stack: `\n${einfo.stack}` || '', + }); + return info; + } + return einfo; +}); + +export const getLocalDate = () => { + const gmtOffset = ConfigManagerV2.getInstance().get('server.GMTOffset'); + return dayjs().utcOffset(gmtOffset, false).format('YYYY-MM-DD hh:mm:ss'); +}; + +const logFileFormat = winston.format.combine( + winston.format.errors({ stack: true }), + winston.format.align(), + errorsWithStack(), + winston.format.printf((info) => { + const localDate = getLocalDate(); + return `${localDate} | ${info.level} | ${info.message} | ${info.stack}`; + }) +); + +const sdtoutFormat = winston.format.combine( + winston.format.printf((info) => { + const localDate = getLocalDate(); + return `${localDate} | ${info.level} | ${info.message}`; + }) +); + +const getLogPath = () => { + let logPath = ConfigManagerV2.getInstance().get('logging.logPath'); + logPath = [appRoot.path, 'logs'].join('/'); + return logPath; +}; + +const allLogsFileTransport = new DailyRotateFile({ + level: 'info', + filename: `${getLogPath()}/logs_gateway_app.log.%DATE%`, + datePattern: 'YYYY-MM-DD', + handleExceptions: true, + handleRejections: true, +}); + +export const logger = winston.createLogger({ + level: 'info', + format: logFileFormat, + exitOnError: false, + transports: [allLogsFileTransport], +}); + +const toStdout = new winston.transports.Console({ + format: sdtoutFormat, +}); + +const reportingProxy = new TelemetryTransport({ + host: 'api.coinalpha.com', + instanceId: ConfigManagerV2.getInstance().get('server.id'), + level: 'http', +}); + +export const updateLoggerToStdout = () => { + ConfigManagerV2.getInstance().get('logging.logToStdOut') === true + ? logger.add(toStdout) + : logger.remove(toStdout); +}; + +export const telemetry = () => { + ConfigManagerV2.getInstance().get('telemetry.enabled') === true + ? logger.add(reportingProxy) + : logger.remove(reportingProxy); +}; + +updateLoggerToStdout(); +telemetry(); diff --git a/src/services/refcounting-closeable.ts b/src/services/refcounting-closeable.ts new file mode 100644 index 0000000000..0266a653b1 --- /dev/null +++ b/src/services/refcounting-closeable.ts @@ -0,0 +1,179 @@ +import { v4 as uuidv4 } from 'uuid'; + +/** + * A referencing counting implementation for getInstance(), which guarantees + * shared instances would not be closed prematurely. Think about the following + * case: + * + * 1. You have an Ethereum instance, an Avalanche instance, and a Harmony + * instance - all of them depend on a shared database object. + * 2. Let's say you call `avalanche.close()`. The shared database object should + * NOT be closed at this point - since the Ethereum and Harmony instances + * may still want to use it. + * 3. But let's say `harmony.close()` and `ethereum.close()` are also called, + * the shared database should be closed at the last close call - because + * once that's called, there's no longer anyone owning the shared database + * object. + * + * This class provides smarter `getInstance()` and `close()` functions that are + * aware of ownership relation between objects, and use reference counting to + * determine whether an underlying object should actually be finalized or not + * when close() is called. + * + * In the above example, when `avalanche.close()` is called, the class would + * understand that the shared database object is still owned by the `ethereum` + * and `harmony` objects. So the shared database object wouldn't be finalized. + * + * When `ethereum.close()` is called, the class would see that there's no more + * object referencing the shared database, and thus it would finalize the + * database object. + * + * Every `ReferenceCountingCloseable` object has a retrieval key and a handle. + * + * The retrieval key is the shared object ID for use with `getInstance()`. + * Typically, this has to do with the shared object's semantics, like Ethereum + * network name, or database file path. + * + * The handle is the closeable object's random unique ID, used for declaring + * ownership of another shared object. When `getInstance(key, handle)` is called + * with object A's handle to retrieve object B, it means object A owns object B. + * Shared object B's `close()` function would only finalize it when all owning + * objects have also finalized. + */ +export class ReferenceCountingCloseable { + private static _retrievalMap: { + [key: string]: ReferenceCountingCloseable; + } = {}; + private static _refCounts: { [key: string]: Set } = {}; + private readonly _retrievalKey: string; + private readonly _handle: string; + + /** + * Constructs a new closeable object with reference counting. + * + * @param retrievalKey Key for use with getInstance() + * @protected + */ + protected constructor(retrievalKey: string) { + this._retrievalKey = retrievalKey; + this._handle = ReferenceCountingCloseable.createHandle(); + } + + /** + * Shared object retrieval key for use with `getInstance()`. + */ + get retrievalKey(): string { + return this._retrievalKey; + } + + /** + * Object ID for declaring ownership relation on `getInstance()`. + */ + get handle(): string { + return this._handle; + } + + /** + * How many ownership relations are pointing towards this object? + */ + get refCount(): number { + const fullKey: string = `${this.constructor.name}/${this.retrievalKey}`; + if (fullKey in ReferenceCountingCloseable._refCounts) { + return ReferenceCountingCloseable._refCounts[fullKey].size; + } + return 0; + } + + /** + * Creates a randomized object handle string. + */ + public static createHandle(): string { + return uuidv4(); + } + + /** + * Retrieves a shared object of the current class, given a retrieval key and + * the owner's handle. + * + * @param retrievalKey Retrieval key for shared object + * @param ownerHandle Handle string of owner object + */ + public static getInstance( + retrievalKey: string, + ownerHandle: string + ): T { + const fullKey: string = `${this.name}/${retrievalKey}`; + if (fullKey in ReferenceCountingCloseable._retrievalMap) { + ReferenceCountingCloseable._refCounts[fullKey].add(ownerHandle); + return ReferenceCountingCloseable._retrievalMap[fullKey] as T; + } + + const instance: ReferenceCountingCloseable = + this.createInstanceFromKey(retrievalKey); + ReferenceCountingCloseable._retrievalMap[fullKey] = instance; + ReferenceCountingCloseable._refCounts[fullKey] = new Set([ownerHandle]); + + return instance as T; + } + + /** + * Creates an instance of the current class, given a retrieval key. A default + * implementation is provided, but this can be overridden if a child class + * requires a different implementation. This function is called by + * `getInstance()` if there's no existing shared object for a retrieval key. + * + * @param retrievalKey Retrieval key for shared object + */ + public static createInstanceFromKey( + retrievalKey: string + ): ReferenceCountingCloseable { + return new this(retrievalKey); + } + + /** + * Declares ownership of this object to a handle string. This is useful when + * you wish to declare a closeable object to be owned by an outside object. + * + * @param ownerHandle Handle string representing the owner object. + */ + public declareOwnership(ownerHandle: string) { + const fullKey: string = `${this.constructor.name}/${this.retrievalKey}`; + if (!(fullKey in ReferenceCountingCloseable._retrievalMap)) { + ReferenceCountingCloseable._retrievalMap[fullKey] = this; + } + if (!(fullKey in ReferenceCountingCloseable._refCounts)) { + ReferenceCountingCloseable._refCounts[fullKey] = new Set([ownerHandle]); + } else { + ReferenceCountingCloseable._refCounts[fullKey].add(ownerHandle); + } + } + + /** + * Close with reference counting. This declares the owner object represented + * by `ownerHandle` is disposing of this object. If this object has no more + * owners, it should finalize itself (e.g. closing the underlying database, + * network connection, etc.) + * + * This is expected to be overridden by child classes. Typically, every child + * class should override this function to do two things: + * + * 1. Call `await super.close(ownerHandle);`. + * 2. If its own reference count is now 0, finalize itself: + * i. Call `await close()` for all other `ReferenceCountingCloseable` + * objects it owns. + * ii. Finalize / release any system resource it owns, e.g. database + * handles or network connections. + * + * @param ownerHandle + */ + public async close(ownerHandle: string): Promise { + const fullKey: string = `${this.constructor.name}/${this.retrievalKey}`; + if (fullKey in ReferenceCountingCloseable._retrievalMap) { + ReferenceCountingCloseable._refCounts[fullKey].delete(ownerHandle); + if (ReferenceCountingCloseable._refCounts[fullKey].size < 1) { + delete ReferenceCountingCloseable._refCounts[fullKey]; + delete ReferenceCountingCloseable._retrievalMap[fullKey]; + } + } + } +} diff --git a/src/services/schema/configuration-root-schema.json b/src/services/schema/configuration-root-schema.json new file mode 100644 index 0000000000..ad69052095 --- /dev/null +++ b/src/services/schema/configuration-root-schema.json @@ -0,0 +1,28 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": { + "version": { + "type": "integer" + }, + "configurations": { + "type": "object", + "patternProperties": { + "^\\$namespace ": { + "type": "object", + "properties": { + "configurationPath": { + "type": "string" + }, + "schemaPath": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + "additionalProperties": false + } +} diff --git a/src/services/schema/cosmos-schema.json b/src/services/schema/cosmos-schema.json new file mode 100644 index 0000000000..20fe33bf37 --- /dev/null +++ b/src/services/schema/cosmos-schema.json @@ -0,0 +1,30 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": { + "networks": { + "type": "object", + "patternProperties": { + "^\\w+$": { + "type": "object", + "properties": { + "rpcURL": { "type": "string" }, + "tokenListType": { "type": "string" }, + "tokenListSource": { "type": "string" } + }, + "required": [ + "rpcURL", + "tokenListType", + "tokenListSource" + ], + "additionalProperties": false + } + }, + "additionalProperties": false + }, + "network": { "type": "string" }, + "nativeCurrencySymbol": { "type": "string" }, + "manualGasPrice": { "type": "integer" } + }, + "additionalProperties": false +} diff --git a/src/services/schema/cronos-connector-schema.json b/src/services/schema/cronos-connector-schema.json new file mode 100644 index 0000000000..2760a9dcef --- /dev/null +++ b/src/services/schema/cronos-connector-schema.json @@ -0,0 +1,25 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": { + "allowedSlippage": { "type": "string" }, + "gasLimitEstimate": { "type": "integer" }, + "ttl": { "type": "integer" }, + "contractAddresses": { + "type": "object", + "patternProperties": { + "^\\w+$": { + "type": "object", + "properties": { + "routerAddress": { "type": "string" } + }, + "required": ["routerAddress"], + "additionalProperties": false + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": ["allowedSlippage", "ttl", "contractAddresses"] +} diff --git a/src/services/schema/database-schema.json b/src/services/schema/database-schema.json new file mode 100644 index 0000000000..68eb48487d --- /dev/null +++ b/src/services/schema/database-schema.json @@ -0,0 +1,10 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": { + "nonceDbPath": { "type": "string" }, + "transactionDbPath": { "type": "string" } + }, + "additionalProperties": false, + "required": ["nonceDbPath", "transactionDbPath"] +} diff --git a/src/services/schema/defikingdoms-schema.json b/src/services/schema/defikingdoms-schema.json new file mode 100644 index 0000000000..1f5a967e68 --- /dev/null +++ b/src/services/schema/defikingdoms-schema.json @@ -0,0 +1,25 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": { + "allowedSlippage": { "type": "string" }, + "gasLimit": { "type": "integer" }, + "ttl": { "type": "integer" }, + "contractAddresses": { + "type": "object", + "patternProperties": { + "^\\w+$": { + "type": "object", + "properties": { + "routerAddress": { "type": "string" } + }, + "required": ["routerAddress"], + "additionalProperties": false + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": ["allowedSlippage", "gasLimit", "ttl", "contractAddresses"] +} diff --git a/src/services/schema/defira-schema.json b/src/services/schema/defira-schema.json new file mode 100644 index 0000000000..5c4c8f599a --- /dev/null +++ b/src/services/schema/defira-schema.json @@ -0,0 +1,31 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": { + "allowedSlippage": { "type": "string" }, + "gasLimitEstimate": { "type": "integer" }, + "ttl": { "type": "integer" }, + "contractAddresses": { + "type": "object", + "patternProperties": { + "^\\w+$": { + "type": "object", + "properties": { + "routerAddress": { "type": "string" }, + "initCodeHash": { "type": "string" } + }, + "required": ["routerAddress", "initCodeHash"], + "additionalProperties": false + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "allowedSlippage", + "contractAddresses", + "gasLimitEstimate", + "ttl" + ] +} diff --git a/src/services/schema/ethereum-gas-station-schema.json b/src/services/schema/ethereum-gas-station-schema.json new file mode 100644 index 0000000000..8c35c86066 --- /dev/null +++ b/src/services/schema/ethereum-gas-station-schema.json @@ -0,0 +1,12 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": { + "enabled": { "type": "boolean" }, + "gasStationURL": { "type": "string" }, + "APIKey": { "type": ["string", "null"] }, + "gasLevel": { "enum": ["fast", "fastest", "safeLow", "average"] } + }, + "additionalProperties": false, + "required": ["enabled"] +} diff --git a/src/services/schema/ethereum-schema.json b/src/services/schema/ethereum-schema.json new file mode 100644 index 0000000000..e9c3b00b74 --- /dev/null +++ b/src/services/schema/ethereum-schema.json @@ -0,0 +1,34 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": { + "networks": { + "type": "object", + "patternProperties": { + "^\\w+$": { + "type": "object", + "properties": { + "chainID": { "type": "integer" }, + "nodeURL": { "type": "string" }, + "tokenListType": { "type": "string" }, + "tokenListSource": { "type": "string" }, + "nativeCurrencySymbol": { "type": "string" }, + "gasPriceRefreshInterval": { "type": "number" } + }, + "required": [ + "chainID", + "nodeURL", + "tokenListType", + "tokenListSource", + "nativeCurrencySymbol" + ], + "additionalProperties": false + } + }, + "additionalProperties": false + }, + "manualGasPrice": { "type": "integer" }, + "gasLimitTransaction": { "type": "integer" } + }, + "additionalProperties": false +} diff --git a/src/services/schema/harmony-schema.json b/src/services/schema/harmony-schema.json new file mode 100644 index 0000000000..2705fcd810 --- /dev/null +++ b/src/services/schema/harmony-schema.json @@ -0,0 +1,36 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": { + "networks": { + "type": "object", + "patternProperties": { + "^\\w+$": { + "type": "object", + "properties": { + "chainID": { "type": "integer" }, + "nodeURL": { "type": "string" }, + "tokenListType": { "type": "string" }, + "tokenListSource": { "type": "string" }, + "nativeCurrencySymbol": { "type": "string" } + }, + "required": [ + "chainID", + "nodeURL", + "tokenListType", + "tokenListSource", + "nativeCurrencySymbol" + ], + "additionalProperties": false + } + }, + "additionalProperties": false + }, + "network": { "type": "string" }, + "autoGasPrice": { "type": "boolean" }, + "manualGasPrice": { "type": "integer" }, + "gasPricerefreshTime": { "type": "integer" }, + "gasLimitTransaction": { "type": "integer" } + }, + "additionalProperties": false +} diff --git a/src/services/schema/logging-schema.json b/src/services/schema/logging-schema.json new file mode 100644 index 0000000000..b1c5f2dd9f --- /dev/null +++ b/src/services/schema/logging-schema.json @@ -0,0 +1,10 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": { + "logPath": { "type": "string" }, + "logToStdOut": { "type": "boolean" } + }, + "additionalProperties": false, + "required": ["logPath"] +} diff --git a/src/services/schema/openocean-schema.json b/src/services/schema/openocean-schema.json new file mode 100644 index 0000000000..9505b66fe2 --- /dev/null +++ b/src/services/schema/openocean-schema.json @@ -0,0 +1,30 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": { + "allowedSlippage": { "type": "string" }, + "gasLimitEstimate": { "type": "integer" }, + "ttl": { "type": "integer" }, + "contractAddresses": { + "type": "object", + "patternProperties": { + "^\\w+$": { + "type": "object", + "properties": { + "routerAddress": { "type": "string" } + }, + "required": ["routerAddress"], + "additionalProperties": false + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "allowedSlippage", + "gasLimitEstimate", + "ttl", + "contractAddresses" + ] +} diff --git a/src/services/schema/pangolin-schema.json b/src/services/schema/pangolin-schema.json new file mode 100644 index 0000000000..2760a9dcef --- /dev/null +++ b/src/services/schema/pangolin-schema.json @@ -0,0 +1,25 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": { + "allowedSlippage": { "type": "string" }, + "gasLimitEstimate": { "type": "integer" }, + "ttl": { "type": "integer" }, + "contractAddresses": { + "type": "object", + "patternProperties": { + "^\\w+$": { + "type": "object", + "properties": { + "routerAddress": { "type": "string" } + }, + "required": ["routerAddress"], + "additionalProperties": false + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": ["allowedSlippage", "ttl", "contractAddresses"] +} diff --git a/src/services/schema/perp-schema.json b/src/services/schema/perp-schema.json new file mode 100644 index 0000000000..1ca7edad77 --- /dev/null +++ b/src/services/schema/perp-schema.json @@ -0,0 +1,10 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": { + "allowedSlippage": { "type": "string" }, + "ttl": { "type": "integer" } + }, + "additionalProperties": false, + "required": ["allowedSlippage", "ttl"] +} diff --git a/src/services/schema/quickswap-schema.json b/src/services/schema/quickswap-schema.json new file mode 100644 index 0000000000..9505b66fe2 --- /dev/null +++ b/src/services/schema/quickswap-schema.json @@ -0,0 +1,30 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": { + "allowedSlippage": { "type": "string" }, + "gasLimitEstimate": { "type": "integer" }, + "ttl": { "type": "integer" }, + "contractAddresses": { + "type": "object", + "patternProperties": { + "^\\w+$": { + "type": "object", + "properties": { + "routerAddress": { "type": "string" } + }, + "required": ["routerAddress"], + "additionalProperties": false + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "allowedSlippage", + "gasLimitEstimate", + "ttl", + "contractAddresses" + ] +} diff --git a/src/services/schema/ref-schema.json b/src/services/schema/ref-schema.json new file mode 100644 index 0000000000..ae60f366b1 --- /dev/null +++ b/src/services/schema/ref-schema.json @@ -0,0 +1,25 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": { + "allowedSlippage": { "type": "string" }, + "gasLimitEstimate": { "type": "integer" }, + "ttl": { "type": "integer" }, + "contractAddresses": { + "type": "object", + "patternProperties": { + "^\\w+$": { + "type": "object", + "properties": { + "routerAddress": { "type": "string" } + }, + "required": ["routerAddress"], + "additionalProperties": false + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": ["allowedSlippage", "gasLimitEstimate", "ttl"] +} diff --git a/src/services/schema/server-schema.json b/src/services/schema/server-schema.json new file mode 100644 index 0000000000..95d17686e5 --- /dev/null +++ b/src/services/schema/server-schema.json @@ -0,0 +1,13 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": { + "port": { "type": "integer" }, + "ipWhitelist": { "type": "array" }, + "unsafeDevModeWithHTTP": { "type": "boolean" }, + "GMTOffset": { "type": "number" }, + "id": { "type": "string" } + }, + "additionalProperties": false, + "required": ["port", "unsafeDevModeWithHTTP"] +} diff --git a/src/services/schema/ssl-schema.json b/src/services/schema/ssl-schema.json new file mode 100644 index 0000000000..6465fb7914 --- /dev/null +++ b/src/services/schema/ssl-schema.json @@ -0,0 +1,11 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": { + "caCertificatePath": { "type": "string" }, + "certificatePath": { "type": "string" }, + "keyPath": { "type": "string" } + }, + "additionalProperties": false, + "required": ["caCertificatePath", "certificatePath", "keyPath"] +} diff --git a/src/services/schema/sushiswap-schema.json b/src/services/schema/sushiswap-schema.json new file mode 100644 index 0000000000..9fb61fa39f --- /dev/null +++ b/src/services/schema/sushiswap-schema.json @@ -0,0 +1,36 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": { + "allowedSlippage": { "type": "string" }, + "gasLimitEstimate": { "type": "integer" }, + "ttl": { "type": "integer" }, + "contractAddresses": { + "type": "object", + "patternProperties": { + "^[\\w-]+$": { + "type": "object", + "patternProperties": { + "^\\w+$": { + "type": "object", + "properties": { + "sushiswapRouterAddress": { "type": "string" } + }, + "required": ["sushiswapRouterAddress"], + "additionalProperties": false + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "allowedSlippage", + "gasLimitEstimate", + "ttl", + "contractAddresses" + ] +} diff --git a/src/services/schema/telemetry-schema.json b/src/services/schema/telemetry-schema.json new file mode 100644 index 0000000000..cdb8612791 --- /dev/null +++ b/src/services/schema/telemetry-schema.json @@ -0,0 +1,8 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": { + "enabled": { "type": "boolean" } + }, + "required": ["enabled"] +} diff --git a/src/services/schema/traderjoe-schema.json b/src/services/schema/traderjoe-schema.json new file mode 100644 index 0000000000..9505b66fe2 --- /dev/null +++ b/src/services/schema/traderjoe-schema.json @@ -0,0 +1,30 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": { + "allowedSlippage": { "type": "string" }, + "gasLimitEstimate": { "type": "integer" }, + "ttl": { "type": "integer" }, + "contractAddresses": { + "type": "object", + "patternProperties": { + "^\\w+$": { + "type": "object", + "properties": { + "routerAddress": { "type": "string" } + }, + "required": ["routerAddress"], + "additionalProperties": false + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "allowedSlippage", + "gasLimitEstimate", + "ttl", + "contractAddresses" + ] +} diff --git a/src/services/schema/uniswap-schema.json b/src/services/schema/uniswap-schema.json new file mode 100644 index 0000000000..91710caf14 --- /dev/null +++ b/src/services/schema/uniswap-schema.json @@ -0,0 +1,36 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": { + "allowedSlippage": { "type": "string" }, + "gasLimitEstimate": { "type": "integer" }, + "ttl": { "type": "integer" }, + "maximumHops": { "type": "integer" }, + "contractAddresses": { + "type": "object", + "patternProperties": { + "^\\w+$": { + "type": "object", + "properties": { + "uniswapV3SmartOrderRouterAddress": { "type": "string" }, + "uniswapV3NftManagerAddress": { "type": "string" } + }, + "required": [ + "uniswapV3SmartOrderRouterAddress", + "uniswapV3NftManagerAddress" + ], + "additionalProperties": false + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "allowedSlippage", + "gasLimitEstimate", + "ttl", + "maximumHops", + "contractAddresses" + ] +} diff --git a/src/services/swagger-manager.ts b/src/services/swagger-manager.ts new file mode 100644 index 0000000000..04221ca5e0 --- /dev/null +++ b/src/services/swagger-manager.ts @@ -0,0 +1,59 @@ +import fs from 'fs'; +import yaml from 'js-yaml'; + +export namespace SwaggerManager { + export function validateMainFile(o: any): boolean { + return ( + 'swagger' in o && + 'info' in o && + 'host' in o && + 'tags' in o && + 'schemes' in o && + 'externalDocs' in o + ); + } + + export function validateRoutesFile(o: any): boolean { + return 'paths' in o; + } + + export function validateDefinitionsFile(o: any): boolean { + return 'definitions' in o; + } + + export function validate( + fp: string, + f: (o: any) => boolean + ): Record { + const o = yaml.load(fs.readFileSync(fp, 'utf8')); + if (o != null && typeof o === 'object' && f(o)) { + return >o; + } else { + throw new Error(fp + ' does not conform to the expected structure.'); + } + } + + export function generateSwaggerJson( + mainFilePath: string, + definitionsFilePath: string, + routesFilePaths: string[] + ): Record { + const main = validate(mainFilePath, validateMainFile); + + const paths: Record = {}; + + for (const fp of routesFilePaths) { + const routes = validate(fp, validateRoutesFile); + for (const key in routes['paths']) { + paths[key] = routes['paths'][key]; + } + } + + main['paths'] = paths; + + const definitions = validate(definitionsFilePath, validateDefinitionsFile); + main['definitions'] = definitions['definitions']; + + return main; + } +} diff --git a/src/services/telemetry-transport.ts b/src/services/telemetry-transport.ts new file mode 100644 index 0000000000..c76df1c376 --- /dev/null +++ b/src/services/telemetry-transport.ts @@ -0,0 +1,104 @@ +import winston from 'winston'; +import https from 'https'; +import querystring from 'querystring'; + +export type LogCallback = (err: any, res: any) => void; + +// Inherit from `winston-transport Http` so you can take advantage +// of the base functionality and `.exceptions.handle()`. +// +// Note: query and stream wouldn't work on this transport. +export class TelemetryTransport extends winston.transports.Http { + private logInterval: number; + private errorLogBuffer: string[]; + private requestCountAggregator: number; + private instanceId: string; + + constructor(opts: any) { + super(opts); + + this.logInterval = 3600000; + this.instanceId = opts.instanceId || ''; + this.errorLogBuffer = []; + this.requestCountAggregator = 0; + setInterval(this.sendLogs.bind(this), this.logInterval); + } + + private processData(log: any): void { + if ('stack' in log) + this.errorLogBuffer.push(`${Date.now()} - ${log.message}\n${log.stack}`); + else if (log.level === 'http') + this.requestCountAggregator += Number(log.message.split('\t')[1]); + } + + public responseHandler(err: any, res: any): void { + if (res && res.statusCode !== 200) { + err = new Error(`Invalid HTTP Status Code: ${res.statusCode}`); + } + + if (err) { + this.emit('warn', err); + } else { + this.emit('logged', 'Successfully logged metrics.'); + } + } + + public sendLogs(): void { + if (this.errorLogBuffer.length > 0) { + const logData = { + data: JSON.stringify(this.errorLogBuffer), + params: { + ddtags: `instance_id:${this.instanceId},type:logs`, + ddsource: 'gateway', + }, + }; + this._request(logData, true, this.responseHandler.bind(this)); + } + + if (this.requestCountAggregator > 0) { + const metric = { + data: JSON.stringify({ + name: 'request_count', + source: 'gateway', + instance_id: this.instanceId, + value: this.requestCountAggregator, + }), + }; + this._request(metric, false, this.responseHandler.bind(this)); + } + + this.errorLogBuffer = []; // reset error log buffer + this.requestCountAggregator = 0; // reset request counter + } + + public log(data: any, callback: LogCallback) { + this.processData(data); + + if (callback) { + setImmediate(callback); + } + } + + public _request(options: any, isLog: boolean, callback: LogCallback) { + // Prepare options for outgoing HTTP request + const headers = { + 'Content-Type': 'application/json', + 'Content-Length': options.data.length, + }; + const req = https.request({ + method: 'POST', + host: this.host, + port: 443, + path: isLog + ? `/reporting-proxy-v2/log?${querystring.stringify(options.params)}` + : '/reporting-proxy-v2/client_metrics', + headers: headers, + }); + + req.on('error', callback); + req.on('response', (res) => + res.on('end', () => callback(null, res)).resume() + ); + req.end(Buffer.from(options.data, 'utf8')); + } +} diff --git a/src/services/validators.ts b/src/services/validators.ts new file mode 100644 index 0000000000..576c64e1ac --- /dev/null +++ b/src/services/validators.ts @@ -0,0 +1,182 @@ +import { HttpException } from './error-handler'; + +export const invalidAmountError: string = + 'If amount is included it must be a string of a non-negative integer.'; + +export const invalidTokenError: string = 'The token param should be a string.'; + +export const invalidTxHashError: string = 'The txHash param must be a string.'; + +export const invalidTokenSymbolsError: string = + 'The tokenSymbols param should be an array of strings.'; + +export const isNaturalNumberString = (str: string): boolean => { + return /^[0-9]+$/.test(str); +}; + +export const isIntegerString = (str: string): boolean => { + return /^[+-]?[0-9]+$/.test(str); +}; + +export const isFloatString = (str: string): boolean => { + if (isIntegerString(str)) { + return true; + } + const decimalSplit = str.split('.'); + if (decimalSplit.length === 2) { + return ( + isIntegerString(decimalSplit[0]) && isNaturalNumberString(decimalSplit[1]) + ); + } + return false; +}; + +export const isFractionString = (str: string): boolean => { + const fractionSplit = str.split('/'); + if (fractionSplit.length == 2) { + return ( + isIntegerString(fractionSplit[0]) && isIntegerString(fractionSplit[1]) + ); + } + return false; +}; + +// throw an error because the request parameter is malformed, collect all the +// errors related to the request to give the most information possible +export const throwIfErrorsExist = (errors: Array): void => { + if (errors.length > 0) { + throw new HttpException(404, errors.join(', ')); + } +}; + +export const missingParameter = (key: string): string => { + return `The request is missing the key: ${key}`; +}; + +export type Validator = (req: any) => Array; + +export type RequestValidator = (req: any) => void; + +export const mkBranchingValidator = ( + branchingKey: string, + branchingCondition: (req: any, key: string) => boolean, + validator1: Validator, + validator2: Validator +): Validator => { + return (req: any) => { + let errors: Array = []; + if (req[branchingKey]) { + if (branchingCondition(req, branchingKey)) { + errors = errors.concat(validator1(req)); + } else { + errors = errors.concat(validator2(req)); + } + } else { + errors.push(missingParameter(branchingKey)); + } + return errors; + }; +}; + +export const mkSelectingValidator = ( + branchingKey: string, + branchingCondition: (req: any, key: string) => string, + validators: { [id: string]: Validator } +): Validator => { + return (req: any) => { + let errors: Array = []; + if (req[branchingKey]) { + if ( + Object.keys(validators).includes(branchingCondition(req, branchingKey)) + ) { + errors = errors.concat( + validators[branchingCondition(req, branchingKey)](req) + ); + } else { + errors.push( + `No validator exists for ${branchingCondition(req, branchingKey)}.` + ); + } + } else { + errors.push(missingParameter(branchingKey)); + } + return errors; + }; +}; + +export const mkValidator = ( + key: string, + errorMsg: string, + condition: (x: any) => boolean, + optional: boolean = false +): Validator => { + return (req: any) => { + const errors: Array = []; + if (req[key]) { + if (!condition(req[key])) { + errors.push(errorMsg); + } + } else { + if (!optional) { + errors.push(missingParameter(key)); + } + } + + return errors; + }; +}; + +export const mkRequestValidator = ( + validators: Array +): RequestValidator => { + return (req: any) => { + let errors: Array = []; + validators.forEach( + (validator: Validator) => (errors = errors.concat(validator(req))) + ); + throwIfErrorsExist(errors); + }; +}; + +// confirm that tokenSymbols is an array of strings +export const validateTokenSymbols: Validator = (req: any) => { + const errors: Array = []; + if (req.tokenSymbols) { + if (Array.isArray(req.tokenSymbols)) { + req.tokenSymbols.forEach((symbol: any) => { + if (typeof symbol !== 'string') { + errors.push(invalidTokenSymbolsError); + } + }); + } else { + errors.push(invalidTokenSymbolsError); + } + } else { + errors.push(missingParameter('tokenSymbols')); + } + return errors; +}; + +export const isBase58 = (value: string): boolean => + /^[A-HJ-NP-Za-km-z1-9]*$/.test(value); + +// confirm that token is a string +export const validateToken: Validator = mkValidator( + 'token', + invalidTokenError, + (val) => typeof val === 'string' +); + +// if amount exists, confirm that it is a string of a natural number +export const validateAmount: Validator = mkValidator( + 'amount', + invalidAmountError, + (val) => typeof val === 'string' && isNaturalNumberString(val), + true +); + +export const validateTxHash: Validator = mkValidator( + 'txHash', + invalidTxHashError, + (val) => typeof val === 'string' +); diff --git a/src/services/wallet/wallet.controllers.ts b/src/services/wallet/wallet.controllers.ts new file mode 100644 index 0000000000..a1ea9d3641 --- /dev/null +++ b/src/services/wallet/wallet.controllers.ts @@ -0,0 +1,176 @@ +import fse from 'fs-extra'; +import { Avalanche } from '../../chains/avalanche/avalanche'; +import { BinanceSmartChain } from '../../chains/binance-smart-chain/binance-smart-chain'; +import { Cronos } from '../../chains/cronos/cronos'; +import { Ethereum } from '../../chains/ethereum/ethereum'; +import { Polygon } from '../../chains/polygon/polygon'; +import { Cosmos } from '../../chains/cosmos/cosmos'; +import { Harmony } from '../../chains/harmony/harmony'; + +import { + AddWalletRequest, + AddWalletResponse, + RemoveWalletRequest, + GetWalletResponse, +} from './wallet.requests'; + +import { ConfigManagerCertPassphrase } from '../config-manager-cert-passphrase'; + +import { + ERROR_RETRIEVING_WALLET_ADDRESS_ERROR_CODE, + ERROR_RETRIEVING_WALLET_ADDRESS_ERROR_MESSAGE, + ACCOUNT_NOT_SPECIFIED_CODE, + ACCOUNT_NOT_SPECIFIED_ERROR_MESSAGE, + HttpException, + UNKNOWN_CHAIN_ERROR_CODE, + UNKNOWN_KNOWN_CHAIN_ERROR_MESSAGE, +} from '../error-handler'; +import { EthereumBase } from '../ethereum-base'; +import { Near } from '../../chains/near/near'; + +const walletPath = './conf/wallets'; +export async function mkdirIfDoesNotExist(path: string): Promise { + const exists = await fse.pathExists(path); + if (!exists) { + await fse.mkdir(path, { recursive: true }); + } +} + +export async function addWallet( + req: AddWalletRequest +): Promise { + const passphrase = ConfigManagerCertPassphrase.readPassphrase(); + if (!passphrase) { + throw new Error('There is no passphrase'); + } + let connection: EthereumBase | Near | Cosmos; + let address: string | undefined; + let encryptedPrivateKey: string | undefined; + + if (req.chain === 'ethereum') { + connection = Ethereum.getInstance(req.network); + } else if (req.chain === 'avalanche') { + connection = Avalanche.getInstance(req.network); + } else if (req.chain === 'harmony') { + connection = Harmony.getInstance(req.network); + } else if (req.chain === 'cronos') { + connection = Cronos.getInstance(req.network); + } else if (req.chain === 'polygon') { + connection = Polygon.getInstance(req.network); + } else if (req.chain === 'cosmos') { + connection = Cosmos.getInstance(req.network); + } else if (req.chain === 'near') { + if (!('address' in req)) + throw new HttpException( + 500, + ACCOUNT_NOT_SPECIFIED_ERROR_MESSAGE(), + ACCOUNT_NOT_SPECIFIED_CODE + ); + connection = Near.getInstance(req.network); + } else if (req.chain === 'binance-smart-chain') { + connection = BinanceSmartChain.getInstance(req.network); + } else { + throw new HttpException( + 500, + UNKNOWN_KNOWN_CHAIN_ERROR_MESSAGE(req.chain), + UNKNOWN_CHAIN_ERROR_CODE + ); + } + + if (!connection.ready()) { + await connection.init(); + } + + try { + if (connection instanceof EthereumBase) { + address = connection.getWalletFromPrivateKey(req.privateKey).address; + encryptedPrivateKey = await connection.encrypt( + req.privateKey, + passphrase + ); + } else if (connection instanceof Cosmos) { + const wallet = await connection.getAccountsfromPrivateKey( + req.privateKey, + 'cosmos' + ); + address = wallet.address; + encryptedPrivateKey = await connection.encrypt( + req.privateKey, + passphrase + ); + } else if (connection instanceof Near) { + address = ( + await connection.getWalletFromPrivateKey( + req.privateKey, + req.address + ) + ).accountId; + encryptedPrivateKey = connection.encrypt(req.privateKey, passphrase); + } + + if (address === undefined || encryptedPrivateKey === undefined) { + throw new Error('ERROR_RETRIEVING_WALLET_ADDRESS_ERROR_CODE'); + } + } catch (_e: unknown) { + throw new HttpException( + 500, + ERROR_RETRIEVING_WALLET_ADDRESS_ERROR_MESSAGE(req.privateKey), + ERROR_RETRIEVING_WALLET_ADDRESS_ERROR_CODE + ); + } + const path = `${walletPath}/${req.chain}`; + await mkdirIfDoesNotExist(path); + await fse.writeFile(`${path}/${address}.json`, encryptedPrivateKey); + return { address }; +} + +// if the file does not exist, this should not fail +export async function removeWallet(req: RemoveWalletRequest): Promise { + await fse.rm(`./conf/wallets/${req.chain}/${req.address}.json`, { + force: true, + }); +} + +export async function getDirectories(source: string): Promise { + await mkdirIfDoesNotExist(walletPath); + const files = await fse.readdir(source, { withFileTypes: true }); + return files + .filter((dirent) => dirent.isDirectory()) + .map((dirent) => dirent.name); +} + +export function getLastPath(path: string): string { + return path.split('/').slice(-1)[0]; +} + +export function dropExtension(path: string): string { + return path.substr(0, path.lastIndexOf('.')) || path; +} + +export async function getJsonFiles(source: string): Promise { + const files = await fse.readdir(source, { withFileTypes: true }); + return files + .filter((f) => f.isFile() && f.name.endsWith('.json')) + .map((f) => f.name); +} + +export async function getWallets(): Promise { + const chains = await getDirectories(walletPath); + + const responses: GetWalletResponse[] = []; + + for (const chain of chains) { + const walletFiles = await getJsonFiles(`${walletPath}/${chain}`); + + const response: GetWalletResponse = { chain, walletAddresses: [] }; + + for (const walletFile of walletFiles) { + const address = dropExtension(getLastPath(walletFile)); + response.walletAddresses.push(address); + } + + responses.push(response); + } + + return responses; +} diff --git a/src/services/wallet/wallet.requests.ts b/src/services/wallet/wallet.requests.ts new file mode 100644 index 0000000000..bc30504c0b --- /dev/null +++ b/src/services/wallet/wallet.requests.ts @@ -0,0 +1,20 @@ +export interface AddWalletRequest { + chain: string; + network: string; + privateKey: string; + address?: string; +} + +export interface AddWalletResponse { + address: string; +} + +export interface RemoveWalletRequest { + chain: string; + address: string; +} + +export interface GetWalletResponse { + chain: string; + walletAddresses: string[]; +} diff --git a/src/services/wallet/wallet.routes.ts b/src/services/wallet/wallet.routes.ts new file mode 100644 index 0000000000..9b6bd17f1d --- /dev/null +++ b/src/services/wallet/wallet.routes.ts @@ -0,0 +1,57 @@ +/* eslint-disable @typescript-eslint/ban-types */ +import { Router, Request, Response } from 'express'; + +import { asyncHandler } from '../error-handler'; + +import { addWallet, removeWallet, getWallets } from './wallet.controllers'; + +import { + AddWalletRequest, + AddWalletResponse, + RemoveWalletRequest, + GetWalletResponse, +} from './wallet.requests'; + +import { + validateAddWalletRequest, + validateRemoveWalletRequest, +} from './wallet.validators'; + +export namespace WalletRoutes { + export const router = Router(); + + router.get( + '/', + asyncHandler(async (_req, res: Response) => { + const response = await getWallets(); + res.status(200).json(response); + }) + ); + + router.post( + '/add', + asyncHandler( + async ( + req: Request<{}, {}, AddWalletRequest>, + res: Response + ) => { + validateAddWalletRequest(req.body); + res.status(200).json(await addWallet(req.body)); + } + ) + ); + + router.delete( + '/remove', + asyncHandler( + async ( + req: Request<{}, {}, RemoveWalletRequest>, + res: Response + ) => { + validateRemoveWalletRequest(req.body); + await removeWallet(req.body); + res.status(200).json(); + } + ) + ); +} diff --git a/src/services/wallet/wallet.validators.ts b/src/services/wallet/wallet.validators.ts new file mode 100644 index 0000000000..10f9492824 --- /dev/null +++ b/src/services/wallet/wallet.validators.ts @@ -0,0 +1,131 @@ +import { + mkValidator, + mkRequestValidator, + RequestValidator, + Validator, + mkSelectingValidator, +} from '../validators'; +const { fromBase64 } = require('@cosmjs/encoding'); + +export const invalidEthPrivateKeyError: string = + 'The privateKey param is not a valid Ethereum private key (64 hexadecimal characters).'; + +export const invalidNearPrivateKeyError: string = + 'The privateKey param is not a valid Near private key.'; + +export const invalidCosmosPrivateKeyError: string = + 'The privateKey param is not a valid Cosmos private key.'; + +// test if a string matches the shape of an Ethereum private key +export const isEthPrivateKey = (str: string): boolean => { + return /^(0x)?[a-fA-F0-9]{64}$/.test(str); +}; + +// test if a string matches the Near private key encoding format (i.e. :') +export const isNearPrivateKey = (str: string): boolean => { + const parts = str.split(':'); + return parts.length === 2; +}; + +export const isCosmosPrivateKey = (str: string): boolean => { + try { + fromBase64(str); + + return true; + } catch { + return false; + } +}; + +// given a request, look for a key called privateKey that is an Ethereum private key +export const validatePrivateKey: Validator = mkSelectingValidator( + 'chain', + (req, key) => req[key], + { + ethereum: mkValidator( + 'privateKey', + invalidEthPrivateKeyError, + (val) => typeof val === 'string' && isEthPrivateKey(val) + ), + cronos: mkValidator( + 'privateKey', + invalidEthPrivateKeyError, + (val) => typeof val === 'string' && isEthPrivateKey(val) + ), + avalanche: mkValidator( + 'privateKey', + invalidEthPrivateKeyError, + (val) => typeof val === 'string' && isEthPrivateKey(val) + ), + harmony: mkValidator( + 'privateKey', + invalidEthPrivateKeyError, + (val) => typeof val === 'string' && isEthPrivateKey(val) + ), + near: mkValidator( + 'privateKey', + invalidNearPrivateKeyError, + (val) => typeof val === 'string' && isNearPrivateKey(val) + ), + cosmos: mkValidator( + 'privateKey', + invalidCosmosPrivateKeyError, + (val) => typeof val === 'string' && isCosmosPrivateKey(val) + ), + polygon: mkValidator( + 'privateKey', + invalidEthPrivateKeyError, + (val) => typeof val === 'string' && isEthPrivateKey(val) + ), + 'binance-smart-chain': mkValidator( + 'privateKey', + invalidEthPrivateKeyError, + (val) => typeof val === 'string' && isEthPrivateKey(val) + ), + } +); + +export const invalidChainError: string = + 'chain must be "ethereum", "avalanche", "near", "harmony", "cosmos" or "binance-smart-chain"'; + +export const invalidNetworkError: string = + 'expected a string for the network key'; + +export const invalidAddressError: string = 'address must be a string'; + +export const validateChain: Validator = mkValidator( + 'chain', + invalidChainError, + (val) => + typeof val === 'string' && + (val === 'ethereum' || + val === 'avalanche' || + val === 'polygon' || + val == 'near' || + val === 'harmony' || + val === 'cronos' || + val === 'cosmos' || + val === 'binance-smart-chain') +); + +export const validateNetwork: Validator = mkValidator( + 'network', + invalidNetworkError, + (val) => typeof val === 'string' +); + +export const validateAddress: Validator = mkValidator( + 'address', + invalidAddressError, + (val) => typeof val === 'string' +); + +export const validateAddWalletRequest: RequestValidator = mkRequestValidator([ + validatePrivateKey, + validateChain, + validateNetwork, +]); + +export const validateRemoveWalletRequest: RequestValidator = mkRequestValidator( + [validateAddress, validateChain] +); diff --git a/src/templates/avalanche.yml b/src/templates/avalanche.yml new file mode 100644 index 0000000000..3fc09d0261 --- /dev/null +++ b/src/templates/avalanche.yml @@ -0,0 +1,19 @@ +# list the Avalanche networks available to gateway +networks: + fuji: + chainID: 43113 + nodeURL: https://rpc.ankr.com/avalanche_fuji + tokenListType: 'FILE' + tokenListSource: 'src/chains/avalanche/avalanche_tokens_fuji.json' + nativeCurrencySymbol: 'AVAX' + gasPriceRefreshInterval: 60 + avalanche: + chainID: 43114 + nodeURL: https://rpc.ankr.com/avalanche + tokenListType: 'FILE' + tokenListSource: 'src/chains/avalanche/avanlanche_tokens.json' + nativeCurrencySymbol: 'AVAX' + gasPriceRefreshInterval: 60 + +manualGasPrice: 100 +gasLimitTransaction: 3000000 diff --git a/src/templates/binance-smart-chain.yml b/src/templates/binance-smart-chain.yml new file mode 100644 index 0000000000..f4cd74d2dc --- /dev/null +++ b/src/templates/binance-smart-chain.yml @@ -0,0 +1,19 @@ +# list the BSC networks available to gateway +networks: + mainnet: + chainID: 56 + nodeURL: 'https://bsc-dataseed1.binance.org/' + tokenListType: FILE + tokenListSource: src/chains/binance-smart-chain/bep20_tokens_mainnet.json + nativeCurrencySymbol: 'BNB' + gasPriceRefreshInterval: 60 + testnet: + chainID: 97 + nodeURL: 'https://data-seed-prebsc-1-s1.binance.org:8545/' + tokenListType: 'FILE' + tokenListSource: 'src/chains/binance-smart-chain/bep20_tokens_testnet.json' + nativeCurrencySymbol: 'BNB' + gasPriceRefreshInterval: 60 + +manualGasPrice: 100 +gasLimitTransaction: 3000000 diff --git a/src/templates/cosmos.yml b/src/templates/cosmos.yml new file mode 100644 index 0000000000..830ab6cf8d --- /dev/null +++ b/src/templates/cosmos.yml @@ -0,0 +1,13 @@ +networks: + mainnet: + rpcURL: https://cosmos-mainnet-rpc.allthatnode.com:26657 + tokenListType: URL + tokenListSource: >- + https://cosmos-chain-registry-list.vercel.app/list.json + testnet: + rpcURL: https://cosmos-testnet-rpc.allthatnode.com:26657 + tokenListType: URL + tokenListSource: https://cosmos-chain-registry-list.vercel.app/list.json +network: mainnet +nativeCurrencySymbol: ATOM +manualGasPrice: 110 diff --git a/src/templates/cronos.yml b/src/templates/cronos.yml new file mode 100644 index 0000000000..f20afe40fb --- /dev/null +++ b/src/templates/cronos.yml @@ -0,0 +1,19 @@ +# list the cronos networks available to gateway +networks: + mainnet: + chainID: 25 + nodeURL: 'https://evm.cronos.org/' + tokenListType: 'FILE' + tokenListSource: 'src/chains/cronos/mainnet_beta.json' + nativeCurrencySymbol: 'CRO' + gasPriceRefreshInterval: 60 + testnet: + chainID: 338 + nodeURL: 'https://evm-t3.cronos.org/' + tokenListType: 'FILE' + tokenListSource: 'src/chains/cronos/testnet.json' + nativeCurrencySymbol: 'CRO' + gasPriceRefreshInterval: 60 + +manualGasPrice: 100 +gasLimitTransaction: 3000000 diff --git a/src/templates/database.yml b/src/templates/database.yml new file mode 100644 index 0000000000..ccbd1db6af --- /dev/null +++ b/src/templates/database.yml @@ -0,0 +1,2 @@ +nonceDbPath: 'nonce.level' +transactionDbPath: 'transaction.level' diff --git a/src/templates/defikingdoms.yml b/src/templates/defikingdoms.yml new file mode 100644 index 0000000000..86956e6323 --- /dev/null +++ b/src/templates/defikingdoms.yml @@ -0,0 +1,14 @@ +# how much the execution price is allowed to move unfavorably from the trade +# execution price. It uses a rational number for precision. +allowedSlippage: '2/100' + +# the maximum gas allowed for a defikingdoms trade. +gasLimit: 2000000 + +# how long a trade is valid in seconds. After time passes defikingdoms will not +# perform the trade, but the gas will still be spent. +ttl: 300 + +contractAddresses: + mainnet: + routerAddress: '0x24ad62502d1C652Cc7684081169D04896aC20f30' diff --git a/src/templates/defira.yml b/src/templates/defira.yml new file mode 100644 index 0000000000..b6cff6865f --- /dev/null +++ b/src/templates/defira.yml @@ -0,0 +1,18 @@ +# how much the execution price is allowed to move unfavorably from the trade +# execution price. It uses a rational number for precision. +allowedSlippage: '2/100' + +# the maximum gas allowed for a defira trade. +gasLimitEstimate: 150688 + +# how long a trade is valid in seconds. After time passes defira will not +# perform the trade, but the gas will still be spent. +ttl: 600 + +contractAddresses: + mainnet: + routerAddress: '0x3C8BF7e25EbfAaFb863256A4380A8a93490d8065' + initCodeHash: '0x8e129668eb66a23d5dbb072b9b801a6ca1147df379e11546ad4ac19e28557e6c' + testnet: + routerAddress: '0xA5C5D1fd1Fd07F95359E2bde419CB5B2cdC622A9' + initCodeHash: '0x7224a10f5f94e12d3973f5ef0f63a558539a93e1eef47935934ffc4d741b4b9f' diff --git a/src/templates/ethereum.yml b/src/templates/ethereum.yml new file mode 100644 index 0000000000..2e3dc35830 --- /dev/null +++ b/src/templates/ethereum.yml @@ -0,0 +1,37 @@ +networks: + arbitrum_one: + chainID: 42161 + nodeURL: https://rpc.ankr.com/arbitrum + tokenListType: FILE + tokenListSource: src/chains/ethereum/arbitrum_one_tokens.json + nativeCurrencySymbol: ETH + gasPriceRefreshInterval: 60 + arbitrum_rinkeby: + chainID: 421611 + nodeURL: https://arbitrum-rinkeby.infura.io/v3/ + tokenListType: FILE + tokenListSource: src/chains/ethereum/arbitrum_rinkeby_tokens.json + nativeCurrencySymbol: ETH + mainnet: + chainID: 1 + nodeURL: https://rpc.ankr.com/eth + tokenListType: FILE + nativeCurrencySymbol: ETH + tokenListSource: src/chains/ethereum/erc20_tokens_mainnet.json + gasPriceRefreshInterval: 60 + optimism: + chainID: 10 + nodeURL: https://rpc.ankr.com/optimism + tokenListType: FILE + tokenListSource: src/chains/ethereum/optimism_tokens.json + nativeCurrencySymbol: OETH + gasPriceRefreshInterval: 60 + goerli: + chainID: 5 + nodeURL: https://rpc.ankr.com/eth_goerli + tokenListType: FILE + tokenListSource: src/chains/ethereum/erc20_tokens_goerli.json + nativeCurrencySymbol: ETH + +gasLimitTransaction: 3000000 +manualGasPrice: 200 diff --git a/src/templates/harmony.yml b/src/templates/harmony.yml new file mode 100644 index 0000000000..bdb40f1c10 --- /dev/null +++ b/src/templates/harmony.yml @@ -0,0 +1,20 @@ +# list the Avalanche networks available to gateway +networks: + mainnet: + chainID: 1666600000 + nodeURL: https://rpc.ankr.com/harmony + tokenListType: 'FILE' + tokenListSource: 'src/chains/harmony/harmony_tokens_sushiswap.json' + nativeCurrencySymbol: 'ONE' + testnet: + chainID: 1666700000 + nodeURL: 'https://api.s0.b.hmny.io' + tokenListType: 'FILE' + tokenListSource: 'src/chains/harmony/harmony_tokens_sushiswap_testnet.json' + nativeCurrencySymbol: 'ONE' + +network: 'harmony' +autoGasPrice: true +manualGasPrice: 30 +gasPricerefreshTime: 60 +gasLimitTransaction: 3000000 diff --git a/src/templates/logging.yml b/src/templates/logging.yml new file mode 100644 index 0000000000..c5ffe44046 --- /dev/null +++ b/src/templates/logging.yml @@ -0,0 +1,6 @@ +# The directory path where logs will be stored. +logPath: './logs' + +# If true, logs will be stored in logPath and printed to stdout. If false, they +# will only be stored in logPath and not printed to stdout. +logToStdOut: true diff --git a/src/templates/mad_meerkat.yml b/src/templates/mad_meerkat.yml new file mode 100644 index 0000000000..5ee1d01fc1 --- /dev/null +++ b/src/templates/mad_meerkat.yml @@ -0,0 +1,14 @@ +# how much the execution price is allowed to move unfavorably from the trade +# execution price. It uses a rational number for precision. +allowedSlippage: '1/100' + +# the maximum gas used to estimate gasCost for a Mad Meerkat Finance trade. +gasLimitEstimate: 150688 + +# how long a trade is valid in seconds. After time passes Mad Meerkat will not +# perform the trade, but the gas will still be spent. +ttl: 300 + +contractAddresses: + mainnet: + routerAddress: '0x145677FC4d9b8F19B5D56d1820c48e0443049a30' diff --git a/src/templates/near.yml b/src/templates/near.yml new file mode 100644 index 0000000000..69e118f081 --- /dev/null +++ b/src/templates/near.yml @@ -0,0 +1,19 @@ +networks: + mainnet: + chainID: 0 + nodeURL: https://rpc.mainnet.near.org + tokenListType: FILE + nativeCurrencySymbol: NEAR + tokenListSource: src/chains/near/near_tokens.json + gasPriceRefreshInterval: 60 + testnet: + chainID: 0 + nodeURL: https://rpc.testnet.near.org + tokenListType: FILE + tokenListSource: src/chains/near/near_testnet_tokens.json + nativeCurrencySymbol: NEAR + gasPriceRefreshInterval: 60 + +gasLimitTransaction: 3000000000000 +manualGasPrice: 0 + \ No newline at end of file diff --git a/src/templates/openocean.yml b/src/templates/openocean.yml new file mode 100644 index 0000000000..2ef5da3f5d --- /dev/null +++ b/src/templates/openocean.yml @@ -0,0 +1,14 @@ +# how much the execution price is allowed to move unfavorably from the trade +# execution price. It uses a rational number for precision. +allowedSlippage: '1/100' + +# the maximum gas allowed for a openocean trade. +gasLimitEstimate: 185837 + +# how long a trade is valid in seconds. After time passes openocean will not +# perform the trade, but the gas will still be spent. +ttl: 300 + +contractAddresses: + avalanche: + routerAddress: '0x6352a56caadC4F1E25CD6c75970Fa768A3304e64' diff --git a/src/templates/pancakeswap.yml b/src/templates/pancakeswap.yml new file mode 100644 index 0000000000..0f57ea04f1 --- /dev/null +++ b/src/templates/pancakeswap.yml @@ -0,0 +1,16 @@ +# how much the execution price is allowed to move unfavorably from the trade +# execution price. It uses a rational number for precision. +allowedSlippage: '1/100' + +# the maximum gas used to estimate gasCost for a uniswap trade. +gasLimitEstimate: 150688 + +# how long a trade is valid in seconds. After time passes pancakeswap will not +# perform the trade, but the gas will still be spent. +ttl: 300 + +contractAddresses: + mainnet: + routerAddress: '0x10ED43C718714eb63d5aA57B78B54704E256024E' + testnet: + routerAddress: '0xdc4904b5f716Ff30d8495e35dC99c109bb5eCf81' diff --git a/src/templates/pangolin.yml b/src/templates/pangolin.yml new file mode 100644 index 0000000000..5ce88b0e2f --- /dev/null +++ b/src/templates/pangolin.yml @@ -0,0 +1,16 @@ +# how much the execution price is allowed to move unfavorably from the trade +# execution price. It uses a rational number for precision. +allowedSlippage: '1/100' + +# the maximum gas used to estimate gasCost for a pangolin trade. +gasLimitEstimate: 150688 + +# how long a trade is valid in seconds. After time passes pangolin will not +# perform the trade, but the gas will still be spent. +ttl: 300 + +contractAddresses: + fuji: + routerAddress: '0xE54Ca86531e17Ef3616d22Ca28b0D458b6C89106' + avalanche: + routerAddress: '0xE54Ca86531e17Ef3616d22Ca28b0D458b6C89106' diff --git a/src/templates/perp.yml b/src/templates/perp.yml new file mode 100644 index 0000000000..1b4811ee04 --- /dev/null +++ b/src/templates/perp.yml @@ -0,0 +1,6 @@ +# how much price slippage tp allow +allowedSlippage: '2/100' + +# how long a transaction is valid in seconds. After time passes transactio will +# fail and gas will still be sent. +ttl: 600 \ No newline at end of file diff --git a/src/templates/polygon.yml b/src/templates/polygon.yml new file mode 100644 index 0000000000..ed2639dd8f --- /dev/null +++ b/src/templates/polygon.yml @@ -0,0 +1,17 @@ +# list the Polygon networks available to gateway +networks: + mainnet: + chainID: 137 + nodeURL: https://rpc.ankr.com/polygon + tokenListType: 'FILE' + tokenListSource: 'src/chains/polygon/polygon_tokens_mainnet.json' + nativeCurrencySymbol: 'MATIC' + mumbai: + chainID: 80001 + nodeURL: https://rpc.ankr.com/polygon_mumbai + tokenListType: 'FILE' + tokenListSource: 'src/chains/polygon/polygon_tokens_mumbai.json' + nativeCurrencySymbol: 'MATIC' + +manualGasPrice: 100 +gasLimitTransaction: 3000000 diff --git a/src/templates/quickswap.yml b/src/templates/quickswap.yml new file mode 100644 index 0000000000..80051a487e --- /dev/null +++ b/src/templates/quickswap.yml @@ -0,0 +1,16 @@ +# how much the execution price is allowed to move unfavorably from the trade +# execution price. It uses a rational number for precision. +allowedSlippage: '1/100' + +# the maximum gas used to estimate cost of a traderjoe trade. +gasLimitEstimate: 300000 + +# how long a trade is valid in seconds. After time passes traderjoe will not +# perform the trade, but the gas will still be spent. +ttl: 300 + +contractAddresses: + mainnet: + routerAddress: '0xa5E0829CaCEd8fFDD4De3c43696c57F7D7A678ff' + mumbai: + routerAddress: '0x8954AfA98594b838bda56FE4C12a09D7739D179b' diff --git a/src/templates/ref.yml b/src/templates/ref.yml new file mode 100644 index 0000000000..18b2de0bb1 --- /dev/null +++ b/src/templates/ref.yml @@ -0,0 +1,16 @@ +# how much the execution price is allowed to move unfavorably from the trade +# execution price. It uses a rational number for precision. +allowedSlippage: '2/100' + +# the maximum gas allowed for a ref trade. +gasLimitEstimate: 2000000 + +# how long a trade is valid in seconds. After time passes ref will not +# perform the trade, but the gas will still be spent. +ttl: 300 + +contractAddresses: + mainnet: + routerAddress: 'v2.ref-finance.near' + testnet: + routerAddress: 'ref-finance-101.testnet' diff --git a/src/templates/root.yml b/src/templates/root.yml new file mode 100644 index 0000000000..74976f195f --- /dev/null +++ b/src/templates/root.yml @@ -0,0 +1,109 @@ +version: 1 +configurations: + $namespace harmony: + configurationPath: harmony.yml + schemaPath: harmony-schema.json + + $namespace avalanche: + configurationPath: avalanche.yml + schemaPath: ethereum-schema.json + + $namespace database: + configurationPath: database.yml + schemaPath: database-schema.json + + $namespace ethereum: + configurationPath: ethereum.yml + schemaPath: ethereum-schema.json + + $namespace polygon: + configurationPath: polygon.yml + schemaPath: ethereum-schema.json + + $namespace ethereumGasStation: + configurationPath: ethereum-gas-station.yml + schemaPath: ethereum-gas-station-schema.json + + $namespace logging: + configurationPath: logging.yml + schemaPath: logging-schema.json + + $namespace ssl: + configurationPath: ssl.yml + schemaPath: ssl-schema.json + + $namespace defira: + configurationPath: defira.yml + schemaPath: defira-schema.json + + $namespace near: + configurationPath: near.yml + schemaPath: ethereum-schema.json + + $namespace pangolin: + configurationPath: pangolin.yml + schemaPath: pangolin-schema.json + + $namespace quickswap: + configurationPath: quickswap.yml + schemaPath: quickswap-schema.json + + $namespace perp: + configurationPath: perp.yml + schemaPath: perp-schema.json + + $namespace sushiswap: + configurationPath: sushiswap.yml + schemaPath: sushiswap-schema.json + + $namespace traderjoe: + configurationPath: traderjoe.yml + schemaPath: traderjoe-schema.json + + $namespace server: + configurationPath: server.yml + schemaPath: server-schema.json + + $namespace telemetry: + configurationPath: telemetry.yml + schemaPath: telemetry-schema.json + + $namespace uniswap: + configurationPath: uniswap.yml + schemaPath: uniswap-schema.json + + $namespace ref: + configurationPath: ref.yml + schemaPath: ref-schema.json + + $namespace openocean: + configurationPath: openocean.yml + schemaPath: openocean-schema.json + + $namespace defikingdoms: + configurationPath: defikingdoms.yml + schemaPath: defikingdoms-schema.json + + $namespace cosmos: + configurationPath: cosmos.yml + schemaPath: cosmos-schema.json + + $namespace cronos: + configurationPath: cronos.yml + schemaPath: ethereum-schema.json + + $namespace mad_meerkat: + configurationPath: mad_meerkat.yml + schemaPath: cronos-connector-schema.json + + $namespace vvs: + configurationPath: vvs.yml + schemaPath: cronos-connector-schema.json + + $namespace binance-smart-chain: + configurationPath: binance-smart-chain.yml + schemaPath: ethereum-schema.json + + $namespace pancakeswap: + configurationPath: pancakeswap.yml + schemaPath: pangolin-schema.json diff --git a/src/templates/server.yml b/src/templates/server.yml new file mode 100644 index 0000000000..93d4137ebb --- /dev/null +++ b/src/templates/server.yml @@ -0,0 +1,10 @@ +# The port to expose the gateway server on. +port: 15888 + +# The IPs allowed to access gateway. localhost is allowed by default. +ipWhitelist: [] + +unsafeDevModeWithHTTP: false + + +GMTOffset: +0800 diff --git a/src/templates/ssl.yml b/src/templates/ssl.yml new file mode 100644 index 0000000000..e5bfacf950 --- /dev/null +++ b/src/templates/ssl.yml @@ -0,0 +1,8 @@ +# need more details... +caCertificatePath: /usr/src/app/certs/ca_cert.pem + +# need more details... +certificatePath: /usr/src/app/certs/server_cert.pem + +# need more details... +keyPath: /usr/src/app/certs/server_key.pem diff --git a/src/templates/sushiswap.yml b/src/templates/sushiswap.yml new file mode 100644 index 0000000000..3196c83b33 --- /dev/null +++ b/src/templates/sushiswap.yml @@ -0,0 +1,26 @@ + +# how much the execution price is allowed to move unfavorably from the trade +# execution price. It uses a rational number for precision. +allowedSlippage: '2/100' + +# the maximum gas allowed for a unsiwap trade. +# TODO: find best values for sushi swap +gasLimitEstimate: 150688 + +# how long a trade is valid in seconds. After time passes sushiswap will not +# perform the trade, but the gas will still be sent. +ttl: 600 + +contractAddresses: + ethereum: + mainnet: + sushiswapRouterAddress: '0xd9e1cE17f2641f24aE83637ab66a2cca9C378B9F' + kovan: + sushiswapRouterAddress: '0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506' + ropsten: + sushiswapRouterAddress: '0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506' + binance-smart-chain: + mainnet: + sushiswapRouterAddress: '0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506' + testnet: + sushiswapRouterAddress: '0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506' \ No newline at end of file diff --git a/src/templates/telemetry.yml b/src/templates/telemetry.yml new file mode 100644 index 0000000000..d8e96575f4 --- /dev/null +++ b/src/templates/telemetry.yml @@ -0,0 +1,2 @@ +# If true it will collect data about API usage. +enabled: false diff --git a/src/templates/traderjoe.yml b/src/templates/traderjoe.yml new file mode 100644 index 0000000000..c1e6cc0532 --- /dev/null +++ b/src/templates/traderjoe.yml @@ -0,0 +1,16 @@ +# how much the execution price is allowed to move unfavorably from the trade +# execution price. It uses a rational number for precision. +allowedSlippage: '1/100' + +# the maximum gas allowed for a traderjoe trade. +gasLimitEstimate: 300000 + +# how long a trade is valid in seconds. After time passes traderjoe will not +# perform the trade, but the gas will still be spent. +ttl: 300 + +contractAddresses: + fuji: + routerAddress: '0x60aE616a2155Ee3d9A68541Ba4544862310933d4' + avalanche: + routerAddress: '0x60aE616a2155Ee3d9A68541Ba4544862310933d4' diff --git a/src/templates/uniswap.yml b/src/templates/uniswap.yml new file mode 100644 index 0000000000..601c7aa3ba --- /dev/null +++ b/src/templates/uniswap.yml @@ -0,0 +1,37 @@ +# how much the execution price is allowed to move unfavorably from the trade +# execution price. It uses a rational number for precision. +allowedSlippage: '2/100' + +# the maximum gas used to estimate gasCost for a uniswap trade. +gasLimitEstimate: 150688 + +# how long a trade is valid in seconds. After time passes uniswap will not +# perform the trade, but the gas will still be sent. +ttl: 600 + +# For each swap, the maximum number of hops to consider. +# Note: More hops will increase latency of the algorithm. +maximumHops: 4 + +contractAddresses: + mainnet: + uniswapV3SmartOrderRouterAddress: '0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45' + uniswapV3NftManagerAddress: '0xC36442b4a4522E871399CD717aBDD847Ab11FE88' + kovan: + uniswapV3SmartOrderRouterAddress: '0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45' + uniswapV3NftManagerAddress: '0xC36442b4a4522E871399CD717aBDD847Ab11FE88' + goerli: + uniswapV3SmartOrderRouterAddress: '0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45' + uniswapV3NftManagerAddress: '0xC36442b4a4522E871399CD717aBDD847Ab11FE88' + ropsten: + uniswapV3SmartOrderRouterAddress: '0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45' + uniswapV3NftManagerAddress: '0xC36442b4a4522E871399CD717aBDD847Ab11FE88' + arbitrum_one: + uniswapV3SmartOrderRouterAddress: '0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45' + uniswapV3NftManagerAddress: '0xC36442b4a4522E871399CD717aBDD847Ab11FE88' + optimism: + uniswapV3SmartOrderRouterAddress: '0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45' + uniswapV3NftManagerAddress: '0xC36442b4a4522E871399CD717aBDD847Ab11FE88' + mumbai: + uniswapV3SmartOrderRouterAddress: '0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45' + uniswapV3NftManagerAddress: '0xC36442b4a4522E871399CD717aBDD847Ab11FE88' diff --git a/src/templates/vvs.yml b/src/templates/vvs.yml new file mode 100644 index 0000000000..2d30f1c92c --- /dev/null +++ b/src/templates/vvs.yml @@ -0,0 +1,14 @@ +# how much the execution price is allowed to move unfavorably from the trade +# execution price. It uses a rational number for precision. +allowedSlippage: '1/100' + +# the maximum gas used to estimate gasCost for a VSS trade. +gasLimitEstimate: 150688 + +# how long a trade is valid in seconds. After time passes Mad Meerkat will not +# perform the trade, but the gas will still be spent. +ttl: 300 + +contractAddresses: + mainnet: + routerAddress: '0x145863Eb42Cf62847A6Ca784e6416C1682b1b2Ae' diff --git a/startup.sh b/startup.sh new file mode 100644 index 0000000000..1d264eddbf --- /dev/null +++ b/startup.sh @@ -0,0 +1,7 @@ +#!/bin/bash +node dist/src/index.js $1 + +while [ $? != 0 ]; do + echo "Gateway API server stopped unexpectedly. Restarting..." + node dist/src/index.js $1; +done \ No newline at end of file diff --git a/test-scripts/README.md b/test-scripts/README.md new file mode 100644 index 0000000000..af73803287 --- /dev/null +++ b/test-scripts/README.md @@ -0,0 +1,6 @@ +# gateway test scripts + +Make sure to properly setup your config files and add a wallet to use for testing. +Then set the environment variable `ETH_PUBLIC_KEY` to an added wallet. +Start a local instance of the gateway API with `yarn start`, and run the +test script with `yarn test:scripts`. diff --git a/test-scripts/cosmos.test.ts b/test-scripts/cosmos.test.ts new file mode 100644 index 0000000000..3488ecdd5f --- /dev/null +++ b/test-scripts/cosmos.test.ts @@ -0,0 +1,73 @@ +import 'jest-extended'; +import { + privateKey, + publicKey, +} from '../test/chains/cosmos/cosmos.validators.test'; +import { request } from './test.base'; + +// constants +const TOKENS = ['ATOM']; + +jest.setTimeout(300000); // run for 5 mins + +export const unitTests = async () => { + test('cosmos routes', async () => { + await cosmosTests(TOKENS); + }); +}; + +export const cosmosTests = async (tokens: string[] = []) => { + console.log('\nStarting Cosmos tests'); + console.log('***************************************************'); + console.log('Token symbols used in tests: ', tokens); + expect(tokens.length).toEqual(1); + + // call / + console.log('Checking status of gateway server...'); + const result = await request('GET', '/', {}); + // confirm expected response + console.log(result); + expect(result.status).toEqual('ok'); + + // Check wallet for public key is added + console.log(`Checking if wallet ${publicKey} has been added...`); + const wallets = await request('GET', '/wallet/', {}); + let alreadyAdded = false; + for (const chain of wallets) { + if (chain.chain === 'cosmos' && publicKey in chain.walletAddresses) { + console.log(`Wallet ${publicKey} has been already added...`); + alreadyAdded = true; + } + } + if (alreadyAdded === false) { + console.log(`Adding wallet ${publicKey}...`); + await request('POST', '/wallet/add', { + privateKey: privateKey, + chain: 'cosmos', + network: 'testnet', + }); + } + + // call /balances with invalid token symbol + // confirm expected error message + console.log('calling balances with invalid token symbols 15B and LLL...'); + const balancesResponse1 = await request('POST', '/cosmos/balances', { + address: publicKey, + tokenSymbols: ['15B', 'LLL'], + }); + expect(balancesResponse1).toBeUndefined(); + + // call /balances + console.log('Checking balances...'); + const balancesResponse = await request('POST', '/cosmos/balances', { + address: publicKey, + tokenSymbols: tokens, + }); + // confirm and save balances + const balances = balancesResponse.balances; + expect(parseFloat(balances.ATOM)).toBeGreaterThanOrEqual(0.0); +}; + +(async () => { + await unitTests(); +})(); diff --git a/test-scripts/ethereum.test.base.ts b/test-scripts/ethereum.test.base.ts new file mode 100644 index 0000000000..502d7aedd7 --- /dev/null +++ b/test-scripts/ethereum.test.base.ts @@ -0,0 +1,133 @@ +import 'jest-extended'; +import { request } from './test.base'; + +const ALLOWANCE = 5000000; + +let publicKey: string; +if (process.env.ETH_PUBLIC_KEY && process.env.ETH_PUBLIC_KEY !== '') { + publicKey = process.env.ETH_PUBLIC_KEY; +} else { + console.log( + 'Please define the env variable ETH_PUBLIC_KEY in order to run the tests.' + ); + process.exit(1); +} + +const sleep = (ms: number) => { + return new Promise((resolve) => setTimeout(resolve, ms)); +}; + +jest.setTimeout(300000); // run for 5 mins + +export const ethTests = async ( + connector: string = '', + tokens: string[] = [] +) => { + console.log('\nStarting ETH tests'); + console.log('***************************************************'); + console.log('Token symbols used in tests: ', tokens); + expect(tokens.length).toEqual(3); + + // Check wallet for public key is added + console.log('Checking wallet has been added...'); + const wallets = await request('GET', '/wallet/', {}); + console.log(wallets); + for (const chain of wallets) { + if (chain.chain === 'ethereum') + expect(chain.walletAddresses).toContain(publicKey); + } + + // call / + console.log('Checking status of gateway server...'); + const result = await request('GET', '/', {}); + // confirm expected response + console.log(result); + expect(result.status).toEqual('ok'); + + // call /balances + console.log('Checking balances...'); + const balancesResponse = await request('POST', '/eth/balances', { + tokenSymbols: tokens, + }); + // confirm and save balances + const balances = balancesResponse.balances; + console.log(balances); + expect(parseFloat(balances.ETH)).toBeGreaterThan(0); + + // call /balances with invalid token symbol + // confirm expected error message + console.log('calling balances with invalid token symbols ABC and XYZ...'); + const balancesResponse1 = await request('POST', '/eth/balances', { + tokenSymbols: ['ABC', 'XYZ'], + }); + expect(balancesResponse1).toBeUndefined(); + + // call /allowances + // confirm and save allowances + console.log('checking initial allowances...'); + const allowancesResponse1 = await request('POST', '/eth/allowances', { + tokenSymbols: tokens, + spender: connector, + }); + let allowances = allowancesResponse1.approvals; + console.log(allowances); + + for (const token of [tokens[0], tokens[1]]) { + // call /approve on each token + console.log(`Resetting allowance for ${token} to ${ALLOWANCE}...`); + const nonce = await request('POST', '/eth/nonce', {}); + console.log(`Nonce: ${nonce.nonce}`); + const approve1 = await request('POST', '/eth/approve', { + token: token, + spender: connector, + amount: ALLOWANCE.toString(), + nonce: nonce.nonce, + }); + console.log(approve1); + while (allowances[token] !== approve1.amount) { + console.log( + 'Waiting for atleast 1 block time (i.e 13 secs) to give time for approval to be mined.' + ); + await sleep(13000); + // confirm that allowance changed correctly + console.log('Rechecking allowances to confirm approval...'); + const allowancesResponse2 = await request('POST', '/eth/allowances', { + tokenSymbols: tokens, + spender: connector, + }); + allowances = allowancesResponse2.approvals; + console.log(allowances); + } + } + + // call /approve with invalid spender address + console.log('Trying to approve for invalid contract...'); + const approve3 = await request('POST', '/eth/approve', { + token: tokens[0], + spender: 'nill', + }); + console.log(approve3); + // confirm expected error message + expect(approve3).toBeUndefined(); + + // call /approve with invalid token symbol + console.log('Trying to approve invalid token ABC...'); + const approve4 = await request('POST', '/eth/approve', { + token: 'ABC', + spender: connector, + }); + console.log(approve4); + // confirm expected error message + expect(approve4).toBeUndefined(); + + // call /approve with invalid amount + console.log('Trying to approve invalid amount...'); + const approve5 = await request('POST', '/eth/approve', { + token: tokens[0], + connector: connector, + amount: 'number', + }); + console.log(approve5); + // confirm expected error message + expect(approve5).toBeUndefined(); +}; diff --git a/test-scripts/harmony.test.ts b/test-scripts/harmony.test.ts new file mode 100644 index 0000000000..5320ca2099 --- /dev/null +++ b/test-scripts/harmony.test.ts @@ -0,0 +1,176 @@ +import 'jest-extended'; +import { requestHarmony as request } from './test.base'; + +const ALLOWANCE = '5000000'; + +let publicKey: string; +if (process.env.ETH_PUBLIC_KEY && process.env.ETH_PUBLIC_KEY !== '') { + publicKey = process.env.ETH_PUBLIC_KEY; +} else { + console.log( + 'Please define the env variable ETH_PUBLIC_KEY in order to run the tests.' + ); + process.exit(1); +} + +const sleep = (ms: number) => { + return new Promise((resolve) => setTimeout(resolve, ms)); +}; + +jest.setTimeout(300000); // run for 5 mins + +export const unitTests = async () => { + test('harmony routes', async () => { + await harmonyTests(); + }); +}; + +const network = 'mainnet'; // Replace with `testnet` for testing on test net + +export const harmonyTests = async ( + connector: string = '0x1b02da8cb0d097eb8d57a175b88c7d8b47997506', // Sushiswap router address + tokens: string[] = ['WONE', 'USDC'] +) => { + console.log('\nStarting Harmony tests'); + console.log('***************************************************'); + console.log('Token symbols used in tests: ', tokens); + expect(tokens.length).toEqual(2); + + // Check wallet for public key is added + console.log('Checking wallet has been added...'); + const wallets = await request('GET', '/wallet', {}); + console.log(wallets); + for (const chain of wallets) { + if (chain.chain === 'harmony') + expect(chain.walletAddresses).toContain(publicKey); + } + + // call / + console.log('Checking status of gateway server...'); + const result = await request('GET', '/', {}); + // confirm expected response + console.log(result); + expect(result.status).toEqual('ok'); + + // call /balances + console.log('Checking balances...'); + const balancesResponse = await request('POST', '/network/balances', { + address: publicKey, + chain: 'harmony', + network, + tokenSymbols: tokens, + }); + // confirm and save balances + const balances = balancesResponse.balances; + console.log(balances); + expect(parseFloat(balances['WONE'])).toBeDefined(); + expect(parseFloat(balances['USDC'])).toBeDefined(); + + // call /balances with invalid token symbol + // confirm expected error message + console.log('calling balances with invalid token symbols ABC and XYZ...'); + const balancesResponse1 = await request('POST', '/network/balances', { + address: publicKey, + chain: 'harmony', + network, + tokenSymbols: ['ABC', 'XYZ'], + }); + expect(balancesResponse1).toBeUndefined(); + + // call /allowances + // confirm and save allowances + console.log('checking initial allowances...'); + const allowancesResponse1 = await request('POST', '/evm/allowances', { + address: publicKey, + chain: 'harmony', + network, + tokenSymbols: tokens, + spender: connector, + }); + let allowances = allowancesResponse1.approvals; + console.log(allowances); + + // TODO: For some reason, the approve amount is not working + + for (const token of [tokens[0], tokens[1]]) { + // call /approve on each token + console.log(`Resetting allowance for ${token} to ${ALLOWANCE}...`); + const nonce = await request('POST', '/evm/nonce', { + address: publicKey, + chain: 'harmony', + network, + }); + console.log(`Nonce: ${nonce.nonce}`); + const approve1 = await request('POST', '/evm/approve', { + address: publicKey, + chain: 'harmony', + network, + token: token, + spender: connector, + amount: ALLOWANCE, + nonce: nonce.nonce, + }); + console.log(approve1); + while (allowances[token] !== approve1.amount) { + console.log( + 'Waiting for atleast 1 block time (i.e 13 secs) to give time for approval to be mined.' + ); + await sleep(13000); + // confirm that allowance changed correctly + console.log('Rechecking allowances to confirm approval...'); + const allowancesResponse2 = await request('POST', '/evm/allowances', { + address: publicKey, + chain: 'harmony', + network, + tokenSymbols: tokens, + spender: connector, + }); + allowances = allowancesResponse2.approvals; + console.log(allowances); + } + } + + // call /approve with invalid spender address + console.log('Trying to approve for invalid contract...'); + const approve3 = await request('POST', '/evm/approve', { + address: publicKey, + chain: 'harmony', + network, + token: tokens[0], + spender: 'nill', + }); + console.log(approve3); + // confirm expected error message + expect(approve3).toBeUndefined(); + + // call /approve with invalid token symbol + console.log('Trying to approve invalid token ABC...'); + const approve4 = await request('POST', '/evm/approve', { + address: publicKey, + chain: 'harmony', + network, + token: 'ABC', + spender: connector, + }); + console.log(approve4); + // confirm expected error message + expect(approve4).toBeUndefined(); + + // call /approve with invalid amount + console.log('Trying to approve invalid amount...'); + const approve5 = await request('POST', '/evm/approve', { + address: publicKey, + chain: 'harmony', + network, + token: tokens[0], + connector: connector, + amount: 'number', + }); + console.log(approve5); + // confirm expected error message + expect(approve5).toBeUndefined(); +}; + +(async () => { + await unitTests(); +})(); diff --git a/test-scripts/test.base.ts b/test-scripts/test.base.ts new file mode 100644 index 0000000000..fc2e1815c1 --- /dev/null +++ b/test-scripts/test.base.ts @@ -0,0 +1,72 @@ +import fs = require('fs'); +import path = require('path'); +import https = require('https'); +import axios from 'axios'; +import { ConfigManagerV2 } from '../src/services/config-manager-v2'; + +type method = 'GET' | 'POST'; + +const confV2 = new ConfigManagerV2(path.join(__dirname, '../conf/root.yml')); +const certPath = path.dirname(confV2.get('ssl.certificatePath')); +const host = 'localhost'; +const port = confV2.get('server.port'); + +const httpsAgent = axios.create({ + httpsAgent: new https.Agent({ + ca: fs.readFileSync(certPath.concat('/ca_cert.pem'), { + encoding: 'utf-8', + }), + cert: fs.readFileSync(certPath.concat('/client_cert.pem'), { + encoding: 'utf-8', + }), + key: fs.readFileSync(certPath.concat('/client_key.pem'), { + encoding: 'utf-8', + }), + host: host, + port: port, + requestCert: true, + rejectUnauthorized: false, + }), +}); + +export const request = async ( + method: method, + path: string, + params: Record +) => { + try { + let response; + const gatewayAddress = `${ + ConfigManagerV2.getInstance().get('server.unsafeDevModeWithHTTP') + ? 'http://' + : 'https://' + }${host}:${port}`; + if (method === 'GET') { + response = await httpsAgent.get(gatewayAddress + path); + } else { + response = await httpsAgent.post(gatewayAddress + path, params); + } + return response.data; + } catch (err) { + console.log(`${method} ${path} - ${err}`); + } +}; + +export const requestHarmony = async ( + method: method, + path: string, + params: Record +) => { + try { + let response; + const gatewayAddress = `https://${host}:${port}`; + if (method === 'GET') { + response = await httpsAgent.get(gatewayAddress + path); + } else { + response = await httpsAgent.post(gatewayAddress + path, params); + } + return response.data; + } catch (err) { + console.log(`${method} ${path} - ${err}`); + } +}; diff --git a/test-scripts/uniswap.v2.test.ts b/test-scripts/uniswap.v2.test.ts new file mode 100644 index 0000000000..89556c1602 --- /dev/null +++ b/test-scripts/uniswap.v2.test.ts @@ -0,0 +1,124 @@ +import { ethTests } from './ethereum.test.base'; +import 'jest-extended'; +import { request } from './test.base'; + +// constants +const TOKENS = ['WETH', 'DAI', 'ETH']; +const AMOUNT_PRICE = 1; +const AMOUNT_TRADE = 0.01; +const SCALE_FACTOR = 1000; + +jest.setTimeout(300000); // run for 5 mins + +export const unitTests = async () => { + test('ethereum routes', async () => { + await ethTests('uniswap', TOKENS); + console.log('\nStarting Uniswap tests'); + console.log('***************************************************'); + // call / + const pair = `${TOKENS[0]}-${TOKENS[1]}`; + console.log(`Starting Uniswap v2 on pair ${pair}...`); + const root = await request('GET', '/eth/uniswap/', {}); + console.log(root); + + // price buy + console.log(`Checking buy price for ${pair}...`); + const buyPrice = await request('POST', '/eth/uniswap/price', { + base: TOKENS[0], + quote: TOKENS[1], + amount: AMOUNT_PRICE.toString(), + side: 'BUY', + }); + console.log(`Buy price: ${buyPrice.price}`); + + // price sell + console.log(`Checking sell price for ${pair}...`); + const sellPrice = await request('POST', '/eth/uniswap/price', { + base: TOKENS[0], + quote: TOKENS[1], + amount: AMOUNT_PRICE.toString(), + side: 'SELL', + }); + console.log(`Sell price: ${sellPrice.price}`); + + // trade buy + console.log( + `Executing buy trade on ${pair} with ${AMOUNT_TRADE} amount...` + ); + const buy = await request('POST', '/eth/uniswap/trade', { + base: TOKENS[0], + quote: TOKENS[1], + amount: AMOUNT_TRADE.toString(), + side: 'BUY', + }); + expect(buy.txHash).toBeDefined(); + console.log(`Buy hash - ${buy.txHash}`); + let txStatus = 0; + let tx1, tx2; + console.log(`Polling...`); + while (txStatus !== 1) { + tx1 = await request('POST', '/eth/poll', { txHash: buy.txHash }); + console.log(tx1); + txStatus = tx1.txStatus; + } + expect(tx1.txReceipt.status).toEqual(1); + + txStatus = 0; + + // trade sell + console.log( + `Executing sell trade on ${pair} with ${AMOUNT_TRADE} amount...` + ); + const sell = await request('POST', '/eth/uniswap/trade', { + base: TOKENS[0], + quote: TOKENS[1], + amount: AMOUNT_TRADE.toString(), + side: 'SELL', + }); + expect(sell.txHash).toBeDefined(); + console.log(`Sell hash - ${sell.txHash}`); + console.log(`Polling...`); + while (txStatus !== 1) { + tx2 = await request('POST', '/eth/poll', { txHash: sell.txHash }); + console.log(tx2); + txStatus = tx2.txStatus; + } + expect(tx2.txReceipt.status).toEqual(1); + + // add tests for extreme values of limitPrice - buy and sell + console.log( + `Testing for failure with ${ + buyPrice.price / SCALE_FACTOR + } buy limitPrice...` + ); + expect( + await request('POST', '/eth/uniswap/trade', { + base: TOKENS[0], + quote: TOKENS[1], + amount: '1', + side: 'BUY', + limitPrice: buyPrice.price / SCALE_FACTOR, + }) + ).toBeUndefined(); + + // add tests for extreme values of minimumSlippage + console.log( + `Testing for failure with ${ + sellPrice.price * SCALE_FACTOR + } sell limitPrice...` + ); + expect( + await request('POST', '/eth/uniswap/trade', { + base: TOKENS[0], + quote: TOKENS[1], + amount: '1', + side: 'SELL', + limitPrice: sellPrice.price * SCALE_FACTOR, + }) + ).toBeUndefined(); + }); +}; + +(async () => { + await unitTests(); +})(); diff --git a/test/amm/amm.validators.test.ts b/test/amm/amm.validators.test.ts new file mode 100644 index 0000000000..82ccfeb61b --- /dev/null +++ b/test/amm/amm.validators.test.ts @@ -0,0 +1,192 @@ +import { + invalidQuoteError, + validateQuote, + invalidBaseError, + validateBase, + invalidSideError, + validateSide, + invalidLimitPriceError, + validateLimitPrice, + invalidAllowedSlippageError, + validateAllowedSlippage, +} from '../../src/amm/amm.validators'; + +import { missingParameter } from '../../src/services/validators'; + +import 'jest-extended'; + +describe('validateQuote', () => { + it('valid when req.quote is a string', () => { + expect( + validateQuote({ + quote: 'DAI', + }) + ).toEqual([]); + + expect( + validateQuote({ + quote: 'WETH', + }) + ).toEqual([]); + }); + + it('return error when req.quote does not exist', () => { + expect( + validateQuote({ + hello: 'world', + }) + ).toEqual([missingParameter('quote')]); + }); + + it('return error when req.quote is invalid', () => { + expect( + validateQuote({ + quote: 123, + }) + ).toEqual([invalidQuoteError]); + }); +}); + +describe('validateBase', () => { + it('valid when req.base is a string', () => { + expect( + validateBase({ + base: 'DAI', + }) + ).toEqual([]); + + expect( + validateBase({ + base: 'WETH', + }) + ).toEqual([]); + }); + + it('return error when req.base does not exist', () => { + expect( + validateBase({ + hello: 'world', + }) + ).toEqual([missingParameter('base')]); + }); + + it('return error when req.base is invalid', () => { + expect( + validateBase({ + base: 123, + }) + ).toEqual([invalidBaseError]); + }); +}); + +describe('validateSide', () => { + it('valid when req.side is a string', () => { + expect( + validateSide({ + side: 'BUY', + }) + ).toEqual([]); + + expect( + validateSide({ + side: 'SELL', + }) + ).toEqual([]); + }); + + it('return error when req.side does not exist', () => { + expect( + validateSide({ + hello: 'world', + }) + ).toEqual([missingParameter('side')]); + }); + + it('return error when req.side is invalid', () => { + expect( + validateSide({ + side: 'comprar', + }) + ).toEqual([invalidSideError]); + }); +}); + +describe('validateLimitPrice', () => { + it('valid when req.limitPrice is a string', () => { + expect( + validateLimitPrice({ + limitPrice: '12000.123', + }) + ).toEqual([]); + + expect( + validateLimitPrice({ + limitPrice: '89425894', + }) + ).toEqual([]); + }); + + it('pass when req.limitPrice does not exist', () => { + expect( + validateLimitPrice({ + hello: 'world', + }) + ).toEqual([]); + }); + + it('return error when req.limitPrice is invalid', () => { + expect( + validateLimitPrice({ + limitPrice: 'comprar', + }) + ).toEqual([invalidLimitPriceError]); + }); +}); + +describe('validateAllowedSlippage', () => { + it('valid when req.allowedSlippage is a fraction string', () => { + expect( + validateAllowedSlippage({ + allowedSlippage: '1/100', + }) + ).toEqual([]); + + expect( + validateAllowedSlippage({ + allowedSlippage: '0/1', + }) + ).toEqual([]); + }); + + it('pass when req.allowedSlippage does not exist', () => { + expect( + validateAllowedSlippage({ + hello: 'world', + }) + ).toEqual([]); + }); + + it('return error when req.allowedSlippage is a number', () => { + expect( + validateAllowedSlippage({ + allowedSlippage: 100, + }) + ).toEqual([invalidAllowedSlippageError]); + }); + + it('return error when req.allowedSlippage is a non-fraction string', () => { + expect( + validateAllowedSlippage({ + allowedSlippage: 'hello', + }) + ).toEqual([invalidAllowedSlippageError]); + }); + + it('return error when req.allowedSlippage is a non-fraction number string', () => { + expect( + validateAllowedSlippage({ + allowedSlippage: '100', + }) + ).toEqual([invalidAllowedSlippageError]); + }); +}); diff --git a/test/app.test.ts b/test/app.test.ts new file mode 100644 index 0000000000..83ba274246 --- /dev/null +++ b/test/app.test.ts @@ -0,0 +1,37 @@ +jest.useFakeTimers(); +import { gatewayApp, swaggerDocument } from '../src/app'; +import { difference } from 'lodash'; + +describe('verify swagger docs', () => { + it('All routes should have swagger documentation', () => { + const documentedRoutes = Object.keys(swaggerDocument.paths).sort(); + + const allRoutes: any[] = []; + gatewayApp._router.stack.forEach(function (middleware: any) { + if (middleware.route) { + // routes registered directly on the gatewayApp + allRoutes.push(middleware.route.path); + } else if (middleware.name === 'router') { + const parentPath = middleware.regexp + .toString() + .split('?')[0] + .slice(2) + .replaceAll('\\', '') + .slice(0, -1); + // router middleware + middleware.handle.stack.forEach(function (handler: any) { + const route = handler.route; + if (route) { + route.path = `${parentPath}${route.path}`; + if (route.path.slice(-1) === '/') + route.path = route.path.slice(0, -1); + allRoutes.push(route.path); + } + }); + } + }); + allRoutes.sort(); + const routesNotDocumented = difference(allRoutes, documentedRoutes); + expect(routesNotDocumented).toEqual([]); + }); +}); diff --git a/test/chains/avalanche/avalanche.routes.test.ts b/test/chains/avalanche/avalanche.routes.test.ts new file mode 100644 index 0000000000..32cb12ed06 --- /dev/null +++ b/test/chains/avalanche/avalanche.routes.test.ts @@ -0,0 +1,379 @@ +import request from 'supertest'; +import { patch, unpatch } from '../../services/patch'; +import { gatewayApp } from '../../../src/app'; +import { + NETWORK_ERROR_CODE, + OUT_OF_GAS_ERROR_CODE, + UNKNOWN_ERROR_ERROR_CODE, + NETWORK_ERROR_MESSAGE, + OUT_OF_GAS_ERROR_MESSAGE, + UNKNOWN_ERROR_MESSAGE, +} from '../../../src/services/error-handler'; +import * as transactionSuccesful from '../ethereum/fixtures/transaction-succesful.json'; +import * as transactionSuccesfulReceipt from '../ethereum/fixtures/transaction-succesful-receipt.json'; +import * as transactionOutOfGas from '../ethereum/fixtures/transaction-out-of-gas.json'; +import * as transactionOutOfGasReceipt from '../ethereum/fixtures/transaction-out-of-gas-receipt.json'; +import { Avalanche } from '../../../src/chains/avalanche/avalanche'; +let avalanche: Avalanche; + +const address: string = '0xFaA12FD102FE8623C9299c72B03E45107F2772B5'; + +beforeAll(async () => { + avalanche = Avalanche.getInstance('fuji'); +}); + +afterAll(async () => { + await avalanche.close(); +}); + +afterEach(unpatch); + +const patchGetWallet = () => { + patch(avalanche, 'getWallet', () => { + return { + address, + }; + }); +}; + +const patchGetNonce = () => { + patch(avalanche.nonceManager, 'getNonce', () => 2); +}; + +const patchGetTokenBySymbol = () => { + patch(avalanche, 'getTokenBySymbol', () => { + return { + chainId: 43114, + address: '0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7', + decimals: 18, + name: 'Wrapped AVAX', + symbol: 'WAVAX', + logoURI: + 'https://raw.githubusercontent.com/ava-labs/bridge-tokens/main/avalanche-tokens/0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7/logo.png', + }; + }); +}; + +const patchApproveERC20 = () => { + patch(avalanche, 'approveERC20', () => { + return { + type: 2, + chainId: 43114, + nonce: 115, + maxPriorityFeePerGas: { toString: () => '106000000000' }, + maxFeePerGas: { toString: () => '106000000000' }, + gasPrice: { toString: () => null }, + gasLimit: { toString: () => '100000' }, + to: '0x4F96Fe3b7A6Cf9725f59d353F723c1bDb64CA6Aa', + value: { toString: () => '0' }, + data: '0x095ea7b30000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', // noqa: mock + accessList: [], + hash: '0x75f98675a8f64dcf14927ccde9a1d59b67fa09b72cc2642ad055dae4074853d9', // noqa: mock + v: 0, + r: '0xbeb9aa40028d79b9fdab108fcef5de635457a05f3a254410414c095b02c64643', // noqa: mock + s: '0x5a1506fa4b7f8b4f3826d8648f27ebaa9c0ee4bd67f569414b8cd8884c073100', // noqa: mock + from: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + confirmations: 0, + }; + }); +}; + +const patchGetERC20Allowance = () => { + patch(avalanche, 'getERC20Allowance', () => ({ value: 1, decimals: 3 })); +}; + +const patchGetNativeBalance = () => { + patch(avalanche, 'getNativeBalance', () => ({ value: 1, decimals: 3 })); +}; + +const patchGetERC20Balance = () => { + patch(avalanche, 'getERC20Balance', () => ({ value: 1, decimals: 3 })); +}; + +describe('POST /evm/nonce', () => { + it('should return 200', async () => { + patchGetWallet(); + patchGetNonce(); + + await request(gatewayApp) + .post(`/evm/nonce`) + .send({ + chain: 'avalanche', + network: 'fuji', + address, + }) + .set('Accept', 'application/json') + .expect('Content-Type', /json/) + .expect(200) + .expect((res) => expect(res.body.nonce).toBe(2)); + }); + + it('should return 404 when parameters are invalid', async () => { + await request(gatewayApp) + .post(`/evm/nonce`) + .send({ + chain: 'avalanche', + network: 'fuji', + address: 'da857cbda0ba96757fed842617a4', + }) + .expect(404); + }); +}); + +describe('POST /evm/approve', () => { + it('should return 200', async () => { + patchGetWallet(); + avalanche.getContract = jest.fn().mockReturnValue({ + address, + }); + patch(avalanche.nonceManager, 'getNonce', () => 115); + patchGetTokenBySymbol(); + patchApproveERC20(); + + await request(gatewayApp) + .post(`/evm/approve`) + .send({ + chain: 'avalanche', + network: 'fuji', + address, + spender: 'pangolin', + token: 'PNG', + }) + .set('Accept', 'application/json') + .expect('Content-Type', /json/) + .expect(200) + .then((res: any) => { + expect(res.body.nonce).toEqual(115); + }); + }); + + it('should return 404 when parameters are invalid', async () => { + await request(gatewayApp) + .post(`/evm/approve`) + .send({ + chain: 'avalanche', + network: 'fuji', + address, + spender: 'pangolin', + token: 123, + nonce: '23', + }) + .expect(404); + }); +}); + +describe('POST /evm/allowances', () => { + it('should return 200 asking for allowances', async () => { + patchGetWallet(); + patchGetTokenBySymbol(); + const spender = '0xFaA12FD102FE8623C9299c72B03E45107F2772B5'; + avalanche.getSpender = jest.fn().mockReturnValue(spender); + avalanche.getContract = jest.fn().mockReturnValue({ + address: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + }); + patchGetERC20Allowance(); + + await request(gatewayApp) + .post(`/evm/allowances`) + .send({ + chain: 'avalanche', + network: 'fuji', + address: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + spender: spender, + tokenSymbols: ['WETH', 'DAI'], + }) + .set('Accept', 'application/json') + .expect('Content-Type', /json/) + .expect(200) + .expect((res) => expect(res.body.spender).toEqual(spender)) + .expect((res) => expect(res.body.approvals.WETH).toEqual('0.001')) + .expect((res) => expect(res.body.approvals.DAI).toEqual('0.001')); + }); +}); + +describe('POST /network/balances', () => { + it('should return 200 asking for supported tokens', async () => { + patchGetWallet(); + patchGetTokenBySymbol(); + patchGetNativeBalance(); + patchGetERC20Balance(); + avalanche.getContract = jest.fn().mockReturnValue({ + address: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + }); + + await request(gatewayApp) + .post(`/network/balances`) + .send({ + chain: 'avalanche', + network: 'fuji', + address: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + tokenSymbols: ['WETH', 'DAI'], + }) + .set('Accept', 'application/json') + .expect('Content-Type', /json/) + .expect(200) + .expect((res) => expect(res.body.balances.WETH).toBeDefined()) + .expect((res) => expect(res.body.balances.DAI).toBeDefined()); + }); +}); + +describe('POST /evm/cancel', () => { + it('should return 200', async () => { + // override getWallet (network call) + avalanche.getWallet = jest.fn().mockReturnValue({ + address, + }); + + avalanche.cancelTx = jest.fn().mockReturnValue({ + hash: '0xf6b9e7cec507cb3763a1179ff7e2a88c6008372e3a6f297d9027a0b39b0fff77', // noqa: mock + }); + + await request(gatewayApp) + .post(`/evm/cancel`) + .send({ + chain: 'avalanche', + network: 'fuji', + address, + nonce: 23, + }) + .set('Accept', 'application/json') + .expect('Content-Type', /json/) + .expect(200) + .then((res: any) => { + expect(res.body.txHash).toEqual( + '0xf6b9e7cec507cb3763a1179ff7e2a88c6008372e3a6f297d9027a0b39b0fff77' // noqa: mock + ); + }); + }); + + it('should return 404 when parameters are invalid', async () => { + await request(gatewayApp) + .post(`/evm/cancel`) + .send({ + chain: 'avalanche', + network: 'fuji', + address: '', + nonce: '23', + }) + .expect(404); + }); +}); + +describe('POST /network/poll', () => { + it('should get a NETWORK_ERROR_CODE when the network is unavailable', async () => { + patch(avalanche, 'getCurrentBlockNumber', () => { + const error: any = new Error('something went wrong'); + error.code = 'NETWORK_ERROR'; + throw error; + }); + + const res = await request(gatewayApp).post('/network/poll').send({ + chain: 'avalanche', + network: 'fuji', + txHash: + '0x2faeb1aa55f96c1db55f643a8cf19b0f76bf091d0b7d1b068d2e829414576362', // noqa: mock + }); + + expect(res.statusCode).toEqual(503); + expect(res.body.errorCode).toEqual(NETWORK_ERROR_CODE); + expect(res.body.message).toEqual(NETWORK_ERROR_MESSAGE); + }); + + it('should get a UNKNOWN_ERROR_ERROR_CODE when an unknown error is thrown', async () => { + patch(avalanche, 'getCurrentBlockNumber', () => { + throw new Error(); + }); + + const res = await request(gatewayApp).post('/network/poll').send({ + chain: 'avalanche', + network: 'fuji', + txHash: + '0x2faeb1aa55f96c1db55f643a8cf19b0f76bf091d0b7d1b068d2e829414576362', // noqa: mock + }); + + expect(res.statusCode).toEqual(503); + expect(res.body.errorCode).toEqual(UNKNOWN_ERROR_ERROR_CODE); + }); + + it('should get an OUT of GAS error for failed out of gas transactions', async () => { + patch(avalanche, 'getCurrentBlockNumber', () => 1); + patch(avalanche, 'getTransaction', () => transactionOutOfGas); + patch(avalanche, 'getTransactionReceipt', () => transactionOutOfGasReceipt); + const res = await request(gatewayApp).post('/network/poll').send({ + chain: 'avalanche', + network: 'fuji', + txHash: + '0x2faeb1aa55f96c1db55f643a8cf19b0f76bf091d0b7d1b068d2e829414576362', // noqa: mock + }); + + expect(res.statusCode).toEqual(503); + expect(res.body.errorCode).toEqual(OUT_OF_GAS_ERROR_CODE); + expect(res.body.message).toEqual(OUT_OF_GAS_ERROR_MESSAGE); + }); + + it('should get a null in txReceipt for Tx in the mempool', async () => { + patch(avalanche, 'getCurrentBlockNumber', () => 1); + patch(avalanche, 'getTransaction', () => transactionOutOfGas); + patch(avalanche, 'getTransactionReceipt', () => null); + const res = await request(gatewayApp).post('/network/poll').send({ + chain: 'avalanche', + network: 'fuji', + txHash: + '0x2faeb1aa55f96c1db55f643a8cf19b0f76bf091d0b7d1b068d2e829414576362', // noqa: mock + }); + expect(res.statusCode).toEqual(200); + expect(res.body.txReceipt).toEqual(null); + expect(res.body.txData).toBeDefined(); + }); + + it('should get a null in txReceipt and txData for Tx that didnt reach the mempool and TxReceipt is null', async () => { + patch(avalanche, 'getCurrentBlockNumber', () => 1); + patch(avalanche, 'getTransaction', () => null); + patch(avalanche, 'getTransactionReceipt', () => null); + const res = await request(gatewayApp).post('/network/poll').send({ + chain: 'avalanche', + network: 'fuji', + txHash: + '0x2faeb1aa55f96c1db55f643a8cf19b0f76bf091d0b7d1b068d2e829414576362', // noqa: mock + }); + expect(res.statusCode).toEqual(200); + expect(res.body.txReceipt).toEqual(null); + expect(res.body.txData).toEqual(null); + }); + + it('should get txStatus = 1 for a succesful query', async () => { + patch(avalanche, 'getCurrentBlockNumber', () => 1); + patch(avalanche, 'getTransaction', () => transactionSuccesful); + patch( + avalanche, + 'getTransactionReceipt', + () => transactionSuccesfulReceipt + ); + const res = await request(gatewayApp).post('/network/poll').send({ + chain: 'avalanche', + network: 'fuji', + txHash: + '0x6d068067a5e5a0f08c6395b31938893d1cdad81f54a54456221ecd8c1941294d', // noqa: mock + }); + expect(res.statusCode).toEqual(200); + expect(res.body.txReceipt).toBeDefined(); + expect(res.body.txData).toBeDefined(); + }); + + it('should get unknown error', async () => { + patch(avalanche, 'getCurrentBlockNumber', () => { + const error: any = new Error('something went wrong'); + error.code = -32006; + throw error; + }); + const res = await request(gatewayApp).post('/network/poll').send({ + chain: 'avalanche', + network: 'fuji', + txHash: + '0x2faeb1aa55f96c1db55f643a8cf19b0f76bf091d0b7d1b068d2e829414576362', // noqa: mock + }); + expect(res.statusCode).toEqual(503); + expect(res.body.errorCode).toEqual(UNKNOWN_ERROR_ERROR_CODE); + expect(res.body.message).toEqual(UNKNOWN_ERROR_MESSAGE); + }); +}); diff --git a/test/chains/avalanche/avalanche.test.ts b/test/chains/avalanche/avalanche.test.ts new file mode 100644 index 0000000000..c6c1259a13 --- /dev/null +++ b/test/chains/avalanche/avalanche.test.ts @@ -0,0 +1,56 @@ +jest.useFakeTimers(); +import { patch, unpatch } from '../../services/patch'; +import { Avalanche } from '../../../src/chains/avalanche/avalanche'; +import { patchEVMNonceManager } from '../../evm.nonce.mock'; +let avalanche: Avalanche; + +// Fake data for for testing +const TOKENS = [ + { + chainId: 11111, + address: '0x21cf0eB2E3Ab483a67C900b27dA8F34185991982', + decimals: 18, + name: 'Wrapped AVAX', + symbol: 'WAVAX', + logoURI: + 'https://raw.githubusercontent.com/pangolindex/tokens/main/assets/11111/0x21cf0eB2E3Ab483a67C900b27dA8F34185991982/logo.png', + }, + { + chainId: 43114, + address: '0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7', + decimals: 18, + name: 'Wrapped AVAX', + symbol: 'WAVAX', + logoURI: + 'https://raw.githubusercontent.com/pangolindex/tokens/main/assets/0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7/logo.png', + }, +]; + +beforeAll(async () => { + avalanche = Avalanche.getInstance('avalanche'); + // Return the mocked token list instead of getting the list from github + patch(avalanche, 'getTokenList', () => TOKENS); + patchEVMNonceManager(avalanche.nonceManager); + + await avalanche.init(); +}); + +beforeEach(() => { + patchEVMNonceManager(avalanche.nonceManager); +}); + +afterEach(() => { + unpatch(); +}); + +afterAll(async () => { + await avalanche.close(); +}); + +describe('verify Pangolin storedTokenList', () => { + it('Should only return tokens in the chain', async () => { + const tokenList = avalanche.storedTokenList; + // Only one of them has chainId 43114 + expect(tokenList).toEqual([TOKENS[1]]); + }); +}); diff --git a/test/chains/avalanche/avalanche.validators.test.ts b/test/chains/avalanche/avalanche.validators.test.ts new file mode 100644 index 0000000000..2d68c949d9 --- /dev/null +++ b/test/chains/avalanche/avalanche.validators.test.ts @@ -0,0 +1,42 @@ +import { + validateSpender, + invalidSpenderError, +} from '../../../src/chains/avalanche/avalanche.validators'; + +import { missingParameter } from '../../../src/services/validators'; + +import 'jest-extended'; + +describe('validateSpender', () => { + it('valid when req.spender is a publicKey', () => { + expect( + validateSpender({ + spender: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + }) + ).toEqual([]); + }); + + it("valid when req.spender is a 'uniswap'", () => { + expect( + validateSpender({ + spender: 'pangolin', + }) + ).toEqual([]); + }); + + it('return error when req.spender does not exist', () => { + expect( + validateSpender({ + hello: 'world', + }) + ).toEqual([missingParameter('spender')]); + }); + + it('return error when req.spender is invalid', () => { + expect( + validateSpender({ + spender: 'world', + }) + ).toEqual([invalidSpenderError]); + }); +}); diff --git a/test/chains/avalanche/openocean/openocean.routes.test.ts b/test/chains/avalanche/openocean/openocean.routes.test.ts new file mode 100644 index 0000000000..6c9a8f90ff --- /dev/null +++ b/test/chains/avalanche/openocean/openocean.routes.test.ts @@ -0,0 +1,705 @@ +import request from 'supertest'; +import { Avalanche } from '../../../../src/chains/avalanche/avalanche'; +import { Openocean } from '../../../../src/connectors/openocean/openocean'; +import { patchEVMNonceManager } from '../../../evm.nonce.mock'; +import { patch, unpatch } from '../../../services/patch'; +import { gasCostInEthString } from '../../../../src/services/base'; +import { AmmRoutes } from '../../../../src/amm/amm.routes'; +import express from 'express'; +import { Express } from 'express-serve-static-core'; +let app: Express; +let avalanche: Avalanche; +let openocean: Openocean; + +beforeAll(async () => { + app = express(); + app.use(express.json()); + + avalanche = Avalanche.getInstance('avalanche'); + patchEVMNonceManager(avalanche.nonceManager); + await avalanche.init(); + + openocean = Openocean.getInstance('avalanche', 'avalanche'); + await openocean.init(); + + app.use('/amm', AmmRoutes.router); +}); + +beforeEach(() => { + patchEVMNonceManager(avalanche.nonceManager); +}); + +afterEach(() => { + unpatch(); +}); + +afterAll(async () => { + await avalanche.close(); +}); + +const address: string = '0xFaA12FD102FE8623C9299c72B03E45107F2772B5'; + +const patchGetWallet = () => { + patch(avalanche, 'getWallet', () => { + return { + address: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + }; + }); +}; + +const patchInit = () => { + patch(openocean, 'init', async () => { + return; + }); +}; + +const patchStoredTokenList = () => { + patch(avalanche, 'tokenList', () => { + return [ + { + chainId: 43114, + name: 'USDC', + symbol: 'USDC', + address: '0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E', + decimals: 6, + }, + { + chainId: 43114, + name: 'sAVAX', + symbol: 'sAVAX', + address: '0x2b2C81e08f1Af8835a78Bb2A90AE924ACE0eA4bE', + decimals: 18, + }, + ]; + }); +}; + +const patchGetTokenBySymbol = () => { + patch(avalanche, 'getTokenBySymbol', (symbol: string) => { + if (symbol === 'USDC') { + return { + chainId: 43114, + name: 'USDC', + symbol: 'USDC', + address: '0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E', + decimals: 6, + }; + } else { + return { + chainId: 43114, + name: 'sAVAX', + symbol: 'sAVAX', + address: '0x2b2C81e08f1Af8835a78Bb2A90AE924ACE0eA4bE', + decimals: 18, + }; + } + }); +}; + +const patchGetTokenByAddress = () => { + patch(openocean, 'getTokenByAddress', () => { + return { + chainId: 43114, + name: 'USDC', + symbol: 'USDC', + address: '0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E', + decimals: 6, + }; + }); +}; + +const patchGasPrice = () => { + patch(avalanche, 'gasPrice', () => 100); +}; + +const patchEstimateBuyTrade = () => { + patch(openocean, 'estimateBuyTrade', () => { + return { + expectedAmount: { + toSignificant: () => 100, + }, + trade: { + executionPrice: { + invert: jest.fn().mockReturnValue({ + toSignificant: () => 100, + toFixed: () => '100', + }), + }, + }, + }; + }); +}; + +const patchEstimateSellTrade = () => { + patch(openocean, 'estimateSellTrade', () => { + return { + expectedAmount: { + toSignificant: () => 100, + }, + trade: { + executionPrice: { + toSignificant: () => 100, + toFixed: () => '100', + }, + }, + }; + }); +}; + +const patchGetNonce = () => { + patch(avalanche.nonceManager, 'getNonce', () => 21); +}; + +const patchExecuteTrade = () => { + patch(openocean, 'executeTrade', () => { + return { nonce: 21, hash: '000000000000000' }; + }); +}; + +describe('POST /amm/price', () => { + it('should return 200 for BUY', async () => { + patchGetWallet(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patchGasPrice(); + patchEstimateBuyTrade(); + patchGetNonce(); + patchExecuteTrade(); + await request(app) + .post(`/amm/price`) + .send({ + chain: 'avalanche', + network: 'avalanche', + connector: 'openocean', + quote: 'sAVAX', + base: 'USDC', + amount: '0.01', + side: 'BUY', + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body.amount).toEqual('0.010000'); + expect(res.body.rawAmount).toEqual('10000'); + }); + }); + + it('should return 200 for SELL', async () => { + patchGetWallet(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patchGasPrice(); + patchEstimateSellTrade(); + patchGetNonce(); + patchExecuteTrade(); + await request(app) + .post(`/amm/price`) + .send({ + chain: 'avalanche', + network: 'avalanche', + connector: 'openocean', + quote: 'USDC', + base: 'sAVAX', + amount: '10000', + side: 'SELL', + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body.amount).toEqual('10000.000000'); + expect(res.body.rawAmount).toEqual('10000000000'); + }); + }); + + it('should return 500 for unrecognized quote symbol', async () => { + patchGetWallet(); + patchStoredTokenList(); + patch(avalanche, 'getTokenBySymbol', (symbol: string) => { + if (symbol === 'WETH') { + return { + chainId: 43114, + name: 'WETH', + symbol: 'WETH', + address: '0xd0A1E359811322d97991E03f863a0C30C2cF029C', + decimals: 18, + }; + } else { + return null; + } + }); + patchGetTokenByAddress(); + await request(app) + .post(`/amm/price`) + .send({ + chain: 'avalanche', + network: 'avalanche', + connector: 'openocean', + quote: 'USDC', + base: 'bDAI', + amount: '10000', + side: 'SELL', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 500 for unrecognized base symbol', async () => { + patchGetWallet(); + patchStoredTokenList(); + patch(avalanche, 'getTokenBySymbol', (symbol: string) => { + if (symbol === 'WETH') { + return { + chainId: 43114, + name: 'WETH', + symbol: 'WETH', + address: '0xd0A1E359811322d97991E03f863a0C30C2cF029C', + decimals: 18, + }; + } else { + return null; + } + }); + patchGetTokenByAddress(); + await request(app) + .post(`/amm/price`) + .send({ + chain: 'avalanche', + network: 'avalanche', + connector: 'openocean', + quote: 'USDC', + base: 'bDAI', + amount: '10000', + side: 'SELL', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 500 for unrecognized base symbol with decimals in the amount and SELL', async () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + + await request(app) + .post(`/amm/price`) + .send({ + chain: 'avalanche', + network: 'avalanche', + connector: 'openocean', + quote: 'USDC', + base: 'bDAI', + amount: '10.000', + side: 'SELL', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 500 for unrecognized base symbol with decimals in the amount and BUY', async () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + + await request(app) + .post(`/amm/price`) + .send({ + chain: 'avalanche', + network: 'avalanche', + connector: 'openocean', + quote: 'USDC', + base: 'bDAI', + amount: '10.000', + side: 'BUY', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 500 when the priceSwapIn operation fails', async () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patch(openocean, 'priceSwapIn', () => { + return 'error'; + }); + + await request(app) + .post(`/amm/price`) + .send({ + chain: 'avalanche', + network: 'avalanche', + connector: 'openocean', + quote: 'USDC', + base: 'bDAI', + amount: '10000', + side: 'SELL', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 500 when the priceSwapOut operation fails', async () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patch(openocean, 'priceSwapOut', () => { + return 'error'; + }); + + await request(app) + .post(`/amm/price`) + .send({ + chain: 'avalanche', + network: 'avalanche', + connector: 'openocean', + quote: 'USDC', + base: 'bDAI', + amount: '10000', + side: 'BUY', + }) + .set('Accept', 'application/json') + .expect(500); + }); +}); + +describe('POST /amm/trade', () => { + const patchForBuy = () => { + patchGetWallet(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patchGasPrice(); + patchEstimateBuyTrade(); + patchGetNonce(); + patchExecuteTrade(); + }; + it('should return 200 for BUY', async () => { + patchForBuy(); + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'avalanche', + network: 'avalanche', + connector: 'openocean', + quote: 'sAVAX', + base: 'USDC', + amount: '0.01', + address, + side: 'BUY', + nonce: 21, + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body.nonce).toEqual(21); + }); + }); + + it('should return 200 for BUY without nonce parameter', async () => { + patchForBuy(); + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'avalanche', + network: 'avalanche', + connector: 'openocean', + quote: 'sAVAX', + base: 'USDC', + amount: '0.01', + address, + side: 'BUY', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + it('should return 200 for BUY with maxFeePerGas and maxPriorityFeePerGas', async () => { + patchForBuy(); + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'avalanche', + network: 'avalanche', + connector: 'openocean', + quote: 'sAVAX', + base: 'USDC', + amount: '0.01', + address, + side: 'BUY', + nonce: 21, + maxFeePerGas: '5000000000', + maxPriorityFeePerGas: '5000000000', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + const patchForSell = () => { + patchGetWallet(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patchGasPrice(); + patchEstimateSellTrade(); + patchGetNonce(); + patchExecuteTrade(); + }; + it('should return 200 for SELL', async () => { + patchForSell(); + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'avalanche', + network: 'avalanche', + connector: 'openocean', + quote: 'USDC', + base: 'sAVAX', + amount: '10000', + address, + side: 'SELL', + nonce: 21, + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body.nonce).toEqual(21); + }); + }); + + it('should return 200 for SELL with maxFeePerGas and maxPriorityFeePerGas', async () => { + patchForSell(); + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'avalanche', + network: 'avalanche', + connector: 'openocean', + quote: 'USDC', + base: 'sAVAX', + amount: '10000', + address, + side: 'SELL', + nonce: 21, + maxFeePerGas: '5000000000', + maxPriorityFeePerGas: '5000000000', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + it('should return 404 when parameters are incorrect', async () => { + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'avalanche', + network: 'avalanche', + connector: 'openocean', + quote: 'USDC', + base: 'sAVAX', + amount: 10000, + address: 'da8', + side: 'comprar', + }) + .set('Accept', 'application/json') + .expect(404); + }); + + it('should return 500 when base token is unknown', async () => { + patchForSell(); + patch(avalanche, 'getTokenBySymbol', (symbol: string) => { + if (symbol === 'USDC') { + return { + chainId: 43114, + name: 'USDC', + symbol: 'USDC', + address: '0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E', + decimals: 6, + }; + } else { + return null; + } + }); + + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'avalanche', + network: 'avalanche', + connector: 'openocean', + quote: 'USDC', + base: 'BITCOIN', + amount: '10000', + address, + side: 'BUY', + nonce: 21, + maxFeePerGas: '5000000000', + maxPriorityFeePerGas: '5000000000', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 500 when quote token is unknown', async () => { + patchForSell(); + patch(avalanche, 'getTokenBySymbol', (symbol: string) => { + if (symbol === 'USDC') { + return { + chainId: 43114, + name: 'USDC', + symbol: 'USDC', + address: '0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E', + decimals: 6, + }; + } else { + return null; + } + }); + + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'avalanche', + network: 'avalanche', + connector: 'openocean', + quote: 'BITCOIN', + base: 'USDC', + amount: '10000', + address, + side: 'BUY', + nonce: 21, + maxFeePerGas: '5000000000', + maxPriorityFeePerGas: '5000000000', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 200 for SELL with limitPrice', async () => { + patchForSell(); + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'avalanche', + network: 'avalanche', + connector: 'openocean', + quote: 'USDC', + base: 'sAVAX', + amount: '10000', + address, + side: 'SELL', + nonce: 21, + limitPrice: '9', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + it('should return 200 for BUY with limitPrice', async () => { + patchForBuy(); + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'avalanche', + network: 'avalanche', + connector: 'openocean', + quote: 'sAVAX', + base: 'USDC', + amount: '0.01', + address, + side: 'BUY', + nonce: 21, + limitPrice: '999999999999999999999', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + it('should return 200 for SELL with price higher than limitPrice', async () => { + patchForSell(); + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'avalanche', + network: 'avalanche', + connector: 'openocean', + quote: 'USDC', + base: 'sAVAX', + amount: '10000', + address, + side: 'SELL', + nonce: 21, + limitPrice: '99999999999', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 200 for BUY with price less than limitPrice', async () => { + patchForBuy(); + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'avalanche', + network: 'avalanche', + connector: 'openocean', + quote: 'sAVAX', + base: 'USDC', + amount: '0.01', + address, + side: 'BUY', + nonce: 21, + limitPrice: '9', + }) + .set('Accept', 'application/json') + .expect(500); + }); +}); + +describe('POST /amm/estimateGas', () => { + it('should return 200 for valid connector', async () => { + patchInit(); + patchGasPrice(); + + await request(app) + .post('/amm/estimateGas') + .send({ + chain: 'avalanche', + network: 'avalanche', + connector: 'openocean', + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body.network).toEqual('avalanche'); + expect(res.body.gasPrice).toEqual(100); + expect(res.body.gasCost).toEqual( + gasCostInEthString(100, openocean.gasLimitEstimate) + ); + }); + }); + + it('should return 500 for invalid connector', async () => { + patchInit(); + patchGasPrice(); + + await request(app) + .post('/amm/estimateGas') + .send({ + chain: 'avalanche', + network: 'avalanche', + connector: 'sushiswap', + }) + .set('Accept', 'application/json') + .expect(500); + }); +}); diff --git a/test/chains/avalanche/openocean/openocean.test.ts b/test/chains/avalanche/openocean/openocean.test.ts new file mode 100644 index 0000000000..24fd9a9068 --- /dev/null +++ b/test/chains/avalanche/openocean/openocean.test.ts @@ -0,0 +1,83 @@ +import { patchEVMNonceManager } from '../../../evm.nonce.mock'; + +jest.useFakeTimers(); +jest.setTimeout(30000); +import { Openocean } from '../../../../src/connectors/openocean/openocean'; +import { UniswapishPriceError } from '../../../../src/services/error-handler'; +import { Token } from '@uniswap/sdk'; +import { BigNumber } from 'ethers'; +import { Avalanche } from '../../../../src/chains/avalanche/avalanche'; + +let avalanche: Avalanche; +let openocean: Openocean; + +const USDC = new Token( + 43114, + '0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E', + 6, + 'USDC' +); +const WAVAX = new Token( + 43114, + '0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7', + 18, + 'WAVAX' +); +const bDAI = new Token( + 43114, + '0x6807eD4369d9399847F306D7d835538915fA749d', + 18, + 'bDAI' +); + +beforeAll(async () => { + avalanche = Avalanche.getInstance('avalanche'); + patchEVMNonceManager(avalanche.nonceManager); + await avalanche.init(); + openocean = Openocean.getInstance('avalanche', 'avalanche'); + await openocean.init(); +}); + +describe('verify Openocean estimateSellTrade', () => { + it('Should return an ExpectedTrade when available', async () => { + const expectedTrade = await openocean.estimateSellTrade( + USDC, + WAVAX, + BigNumber.from((10 ** USDC.decimals).toString()) + ); + expect(expectedTrade).toHaveProperty('trade'); + expect(expectedTrade).toHaveProperty('expectedAmount'); + }); + + it('Should throw an error if no pair is available', async () => { + await expect(async () => { + await openocean.estimateSellTrade( + USDC, + bDAI, + BigNumber.from((10 ** USDC.decimals).toString()) + ); + }).rejects.toThrow(UniswapishPriceError); + }); +}); + +describe('verify Openocean estimateBuyTrade', () => { + it('Should return an ExpectedTrade when available', async () => { + const expectedTrade = await openocean.estimateBuyTrade( + USDC, + WAVAX, + BigNumber.from((10 ** WAVAX.decimals).toString()) + ); + expect(expectedTrade).toHaveProperty('trade'); + expect(expectedTrade).toHaveProperty('expectedAmount'); + }); + + it('Should return an error if no pair is available', async () => { + await expect(async () => { + await openocean.estimateBuyTrade( + USDC, + bDAI, + BigNumber.from((10 ** bDAI.decimals).toString()) + ); + }).rejects.toThrow(UniswapishPriceError); + }); +}); diff --git a/test/chains/avalanche/pangolin/pangolin.routes.test.ts b/test/chains/avalanche/pangolin/pangolin.routes.test.ts new file mode 100644 index 0000000000..ca6b6da9d5 --- /dev/null +++ b/test/chains/avalanche/pangolin/pangolin.routes.test.ts @@ -0,0 +1,561 @@ +import request from 'supertest'; +import { patch, unpatch } from '../../../services/patch'; +import { gatewayApp } from '../../../../src/app'; +import { Avalanche } from '../../../../src/chains/avalanche/avalanche'; +import { Pangolin } from '../../../../src/connectors/pangolin/pangolin'; +import { patchEVMNonceManager } from '../../../evm.nonce.mock'; +let avalanche: Avalanche; +let pangolin: Pangolin; + +beforeAll(async () => { + avalanche = Avalanche.getInstance('fuji'); + patchEVMNonceManager(avalanche.nonceManager); + await avalanche.init(); + + pangolin = Pangolin.getInstance('avalanche', 'fuji'); + await pangolin.init(); +}); + +beforeEach(() => { + patchEVMNonceManager(avalanche.nonceManager); +}); + +afterEach(() => { + unpatch(); +}); + +afterAll(async () => { + await avalanche.close(); +}); + +const address: string = '0xFaA12FD102FE8623C9299c72B03E45107F2772B5'; + +const patchGetWallet = () => { + patch(avalanche, 'getWallet', () => { + return { + address: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + }; + }); +}; + +const patchStoredTokenList = () => { + patch(avalanche, 'tokenList', () => { + return [ + { + chainId: 43114, + name: 'WETH', + symbol: 'WETH', + address: '0xd0A1E359811322d97991E03f863a0C30C2cF029C', + decimals: 18, + }, + { + chainId: 43114, + name: 'Wrapped AVAX', + symbol: 'WAVAX', + address: '0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7', + decimals: 18, + }, + ]; + }); +}; + +const patchGetTokenBySymbol = () => { + patch(avalanche, 'getTokenBySymbol', (symbol: string) => { + if (symbol === 'WETH') { + return { + chainId: 43114, + name: 'WETH', + symbol: 'WETH', + address: '0xd0A1E359811322d97991E03f863a0C30C2cF029C', + decimals: 18, + }; + } else { + return { + chainId: 42, + name: 'WAVAX', + symbol: 'WAVAX', + address: '0x4f96fe3b7a6cf9725f59d353f723c1bdb64ca6aa', + decimals: 18, + }; + } + }); +}; + +const patchGetTokenByAddress = () => { + patch(pangolin, 'getTokenByAddress', () => { + return { + chainId: 43114, + name: 'WETH', + symbol: 'WETH', + address: '0xd0A1E359811322d97991E03f863a0C30C2cF029C', + decimals: 18, + }; + }); +}; + +const patchGasPrice = () => { + patch(avalanche, 'gasPrice', () => 100); +}; + +const patchEstimateBuyTrade = () => { + patch(pangolin, 'estimateBuyTrade', () => { + return { + expectedAmount: { + toSignificant: () => 100, + }, + trade: { + executionPrice: { + invert: jest.fn().mockReturnValue({ + toSignificant: () => 100, + toFixed: () => '100', + }), + }, + }, + }; + }); +}; + +const patchEstimateSellTrade = () => { + patch(pangolin, 'estimateSellTrade', () => { + return { + expectedAmount: { + toSignificant: () => 100, + }, + trade: { + executionPrice: { + toSignificant: () => 100, + toFixed: () => '100', + }, + }, + }; + }); +}; + +const patchGetNonce = () => { + patch(avalanche.nonceManager, 'getNonce', () => 21); +}; + +const patchExecuteTrade = () => { + patch(pangolin, 'executeTrade', () => { + return { nonce: 21, hash: '000000000000000' }; + }); +}; + +describe('POST /amm/price', () => { + it('should return 200 for BUY', async () => { + patchGetWallet(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patchGasPrice(); + patchEstimateBuyTrade(); + patchGetNonce(); + patchExecuteTrade(); + + await request(gatewayApp) + .post(`/amm/price`) + .send({ + chain: 'avalanche', + network: 'fuji', + connector: 'pangolin', + quote: 'WAVAX', + base: 'WETH', + amount: '10000', + side: 'BUY', + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body.amount).toEqual('10000.000000000000000000'); + expect(res.body.rawAmount).toEqual('10000000000000000000000'); + }); + }); + + it('should return 200 for SELL', async () => { + patchGetWallet(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patchGasPrice(); + patchEstimateSellTrade(); + patchGetNonce(); + patchExecuteTrade(); + + await request(gatewayApp) + .post(`/amm/price`) + .send({ + chain: 'avalanche', + network: 'fuji', + connector: 'pangolin', + quote: 'WAVAX', + base: 'WETH', + amount: '10000', + side: 'SELL', + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body.amount).toEqual('10000.000000000000000000'); + expect(res.body.rawAmount).toEqual('10000000000000000000000'); + }); + }); + + it('should return 500 for unrecognized quote symbol', async () => { + patchGetWallet(); + patchStoredTokenList(); + patch(avalanche, 'getTokenBySymbol', (symbol: string) => { + if (symbol === 'WETH') { + return { + chainId: 43114, + name: 'WETH', + symbol: 'WETH', + address: '0xd0A1E359811322d97991E03f863a0C30C2cF029C', + decimals: 18, + }; + } else { + return null; + } + }); + patchGetTokenByAddress(); + + await request(gatewayApp) + .post(`/amm/price`) + .send({ + chain: 'avalanche', + network: 'fuji', + connector: 'pangolin', + quote: 'DOGE', + base: 'WETH', + amount: '10000', + side: 'SELL', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 500 for unrecognized base symbol', async () => { + patchGetWallet(); + patchStoredTokenList(); + patch(avalanche, 'getTokenBySymbol', (symbol: string) => { + if (symbol === 'WETH') { + return { + chainId: 43114, + name: 'WETH', + symbol: 'WETH', + address: '0xd0A1E359811322d97991E03f863a0C30C2cF029C', + decimals: 18, + }; + } else { + return null; + } + }); + patchGetTokenByAddress(); + + await request(gatewayApp) + .post(`/amm/price`) + .send({ + chain: 'avalanche', + network: 'fuji', + connector: 'pangolin', + quote: 'WAVAX', + base: 'SHIBA', + amount: '10000', + side: 'SELL', + }) + .set('Accept', 'application/json') + .expect(500); + }); +}); + +describe('POST /amm/trade', () => { + const patchForBuy = () => { + patchGetWallet(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patchGasPrice(); + patchEstimateBuyTrade(); + patchGetNonce(); + patchExecuteTrade(); + }; + it('should return 200 for BUY', async () => { + patchForBuy(); + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'avalanche', + network: 'fuji', + connector: 'pangolin', + quote: 'WAVAX', + base: 'WETH', + amount: '10000', + address, + side: 'BUY', + nonce: 21, + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body.nonce).toEqual(21); + }); + }); + + it('should return 200 for BUY without nonce parameter', async () => { + patchForBuy(); + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'avalanche', + network: 'fuji', + connector: 'pangolin', + quote: 'WAVAX', + base: 'WETH', + amount: '10000', + address, + side: 'BUY', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + it('should return 200 for BUY with maxFeePerGas and maxPriorityFeePerGas', async () => { + patchForBuy(); + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'avalanche', + network: 'fuji', + connector: 'pangolin', + quote: 'WAVAX', + base: 'WETH', + amount: '10000', + address, + side: 'BUY', + nonce: 21, + maxFeePerGas: '5000000000', + maxPriorityFeePerGas: '5000000000', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + const patchForSell = () => { + patchGetWallet(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patchGasPrice(); + patchEstimateSellTrade(); + patchGetNonce(); + patchExecuteTrade(); + }; + it('should return 200 for SELL', async () => { + patchForSell(); + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'avalanche', + network: 'fuji', + connector: 'pangolin', + quote: 'WAVAX', + base: 'WETH', + amount: '10000', + address, + side: 'SELL', + nonce: 21, + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body.nonce).toEqual(21); + }); + }); + + it('should return 200 for SELL with maxFeePerGas and maxPriorityFeePerGas', async () => { + patchForSell(); + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'avalanche', + network: 'fuji', + connector: 'pangolin', + quote: 'WAVAX', + base: 'WETH', + amount: '10000', + address, + side: 'SELL', + nonce: 21, + maxFeePerGas: '5000000000', + maxPriorityFeePerGas: '5000000000', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + it('should return 404 when parameters are incorrect', async () => { + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'avalanche', + network: 'fuji', + connector: 'pangolin', + quote: 'WAVAX', + base: 'WETH', + amount: 10000, + address: 'da8', + side: 'comprar', + }) + .set('Accept', 'application/json') + .expect(404); + }); + + it('should return 500 when base token is unknown', async () => { + patchForSell(); + patch(avalanche, 'getTokenBySymbol', (symbol: string) => { + if (symbol === 'WETH') { + return { + chainId: 43114, + name: 'WETH', + symbol: 'WETH', + address: '0xd0A1E359811322d97991E03f863a0C30C2cF029C', + decimals: 18, + }; + } else { + return null; + } + }); + + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'avalanche', + network: 'fuji', + connector: 'pangolin', + quote: 'WETH', + base: 'BITCOIN', + amount: '10000', + address, + side: 'BUY', + nonce: 21, + maxFeePerGas: '5000000000', + maxPriorityFeePerGas: '5000000000', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 500 when quote token is unknown', async () => { + patchForSell(); + patch(avalanche, 'getTokenBySymbol', (symbol: string) => { + if (symbol === 'WETH') { + return { + chainId: 43114, + name: 'WETH', + symbol: 'WETH', + address: '0xd0A1E359811322d97991E03f863a0C30C2cF029C', + decimals: 18, + }; + } else { + return null; + } + }); + + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'avalanche', + network: 'fuji', + connector: 'pangolin', + quote: 'BITCOIN', + base: 'WETH', + amount: '10000', + address, + side: 'BUY', + nonce: 21, + maxFeePerGas: '5000000000', + maxPriorityFeePerGas: '5000000000', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 200 for SELL with limitPrice', async () => { + patchForSell(); + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'avalanche', + network: 'fuji', + connector: 'pangolin', + quote: 'WAVAX', + base: 'WETH', + amount: '10000', + address, + side: 'SELL', + nonce: 21, + limitPrice: '9', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + it('should return 200 for BUY with limitPrice', async () => { + patchForBuy(); + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'avalanche', + network: 'fuji', + connector: 'pangolin', + quote: 'WAVAX', + base: 'WETH', + amount: '10000', + address, + side: 'BUY', + nonce: 21, + limitPrice: '999999999999999999999', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + it('should return 200 for SELL with price higher than limitPrice', async () => { + patchForSell(); + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'avalanche', + network: 'fuji', + connector: 'pangolin', + quote: 'WAVAX', + base: 'WETH', + amount: '10000', + address, + side: 'SELL', + nonce: 21, + limitPrice: '99999999999', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 200 for BUY with price less than limitPrice', async () => { + patchForBuy(); + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'avalanche', + network: 'fuji', + connector: 'pangolin', + quote: 'WAVAX', + base: 'WETH', + amount: '10000', + address, + side: 'BUY', + nonce: 21, + limitPrice: '9', + }) + .set('Accept', 'application/json') + .expect(500); + }); +}); diff --git a/test/chains/avalanche/pangolin/pangolin.test.ts b/test/chains/avalanche/pangolin/pangolin.test.ts new file mode 100644 index 0000000000..29bd95ef5f --- /dev/null +++ b/test/chains/avalanche/pangolin/pangolin.test.ts @@ -0,0 +1,148 @@ +jest.useFakeTimers(); +import { Pangolin } from '../../../../src/connectors/pangolin/pangolin'; +import { patch, unpatch } from '../../../services/patch'; +import { UniswapishPriceError } from '../../../../src/services/error-handler'; +import { + Fetcher, + Pair, + Percent, + Route, + Token, + TokenAmount, + Trade, + TradeType, +} from '@pangolindex/sdk'; +import { BigNumber } from 'ethers'; +import { Avalanche } from '../../../../src/chains/avalanche/avalanche'; +import { patchEVMNonceManager } from '../../../evm.nonce.mock'; +let avalanche: Avalanche; +let pangolin: Pangolin; + +const WETH = new Token( + 43114, + '0xd0A1E359811322d97991E03f863a0C30C2cF029C', + 18, + 'WETH' +); +const WAVAX = new Token( + 43114, + '0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7', + 18, + 'WAVAX' +); + +beforeAll(async () => { + avalanche = Avalanche.getInstance('fuji'); + patchEVMNonceManager(avalanche.nonceManager); + await avalanche.init(); + + pangolin = Pangolin.getInstance('avalanche', 'fuji'); + await pangolin.init(); +}); + +beforeEach(() => { + patchEVMNonceManager(avalanche.nonceManager); +}); + +afterEach(() => { + unpatch(); +}); + +afterAll(async () => { + await avalanche.close(); +}); + +const patchFetchPairData = () => { + patch(Fetcher, 'fetchPairData', () => { + return new Pair( + new TokenAmount(WETH, '2000000000000000000'), + new TokenAmount(WAVAX, '1000000000000000000'), + 43114 + ); + }); +}; + +const patchTrade = (key: string, error?: Error) => { + patch(Trade, key, () => { + if (error) return []; + const WETH_WAVAX = new Pair( + new TokenAmount(WETH, '2000000000000000000'), + new TokenAmount(WAVAX, '1000000000000000000'), + 43114 + ); + const WAVAX_TO_WETH = new Route([WETH_WAVAX], WAVAX); + return [ + new Trade( + WAVAX_TO_WETH, + new TokenAmount(WAVAX, '1000000000000000'), + TradeType.EXACT_INPUT, + 43114 + ), + ]; + }); +}; + +describe('verify Pangolin estimateSellTrade', () => { + it('Should return an ExpectedTrade when available', async () => { + patchFetchPairData(); + patchTrade('bestTradeExactIn'); + + const expectedTrade = await pangolin.estimateSellTrade( + WETH, + WAVAX, + BigNumber.from(1) + ); + expect(expectedTrade).toHaveProperty('trade'); + expect(expectedTrade).toHaveProperty('expectedAmount'); + }); + + it('Should throw an error if no pair is available', async () => { + patchFetchPairData(); + patchTrade('bestTradeExactIn', new Error('error getting trade')); + + await expect(async () => { + await pangolin.estimateSellTrade(WETH, WAVAX, BigNumber.from(1)); + }).rejects.toThrow(UniswapishPriceError); + }); +}); + +describe('verify Pangolin estimateBuyTrade', () => { + it('Should return an ExpectedTrade when available', async () => { + patchFetchPairData(); + patchTrade('bestTradeExactOut'); + + const expectedTrade = await pangolin.estimateBuyTrade( + WETH, + WAVAX, + BigNumber.from(1) + ); + expect(expectedTrade).toHaveProperty('trade'); + expect(expectedTrade).toHaveProperty('expectedAmount'); + }); + + it('Should return an error if no pair is available', async () => { + patchFetchPairData(); + patchTrade('bestTradeExactOut', new Error('error getting trade')); + + await expect(async () => { + await pangolin.estimateBuyTrade(WETH, WAVAX, BigNumber.from(1)); + }).rejects.toThrow(UniswapishPriceError); + }); +}); + +describe('getAllowedSlippage', () => { + it('return value of string when not null', () => { + const allowedSlippage = pangolin.getAllowedSlippage('3/100'); + expect(allowedSlippage).toEqual(new Percent('3', '100')); + }); + + it('return value from config when string is null', () => { + const allowedSlippage = pangolin.getAllowedSlippage(); + expect(allowedSlippage).toEqual(new Percent('1', '100')); + }); + + it('return value from config when string is malformed', () => { + const allowedSlippage = pangolin.getAllowedSlippage('yo'); + expect(allowedSlippage).toEqual(new Percent('1', '100')); + }); +}); diff --git a/test/chains/avalanche/traderjoe/traderjoe.test.ts b/test/chains/avalanche/traderjoe/traderjoe.test.ts new file mode 100644 index 0000000000..0c0308c5d3 --- /dev/null +++ b/test/chains/avalanche/traderjoe/traderjoe.test.ts @@ -0,0 +1,148 @@ +jest.useFakeTimers(); +import { Traderjoe } from '../../../../src/connectors/traderjoe/traderjoe'; +import { patch, unpatch } from '../../../services/patch'; +import { UniswapishPriceError } from '../../../../src/services/error-handler'; +import { + Fetcher, + Pair, + Percent, + Route, + Token, + TokenAmount, + Trade, + TradeType, +} from '@traderjoe-xyz/sdk'; +import { BigNumber } from 'ethers'; +import { Avalanche } from '../../../../src/chains/avalanche/avalanche'; +import { patchEVMNonceManager } from '../../../evm.nonce.mock'; +let avalanche: Avalanche; +let traderjoe: Traderjoe; + +const WETH = new Token( + 43114, + '0xd0A1E359811322d97991E03f863a0C30C2cF029C', + 18, + 'WETH' +); +const WAVAX = new Token( + 43114, + '0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7', + 18, + 'WAVAX' +); + +beforeAll(async () => { + avalanche = Avalanche.getInstance('fuji'); + patchEVMNonceManager(avalanche.nonceManager); + await avalanche.init(); + + traderjoe = Traderjoe.getInstance('avalanche', 'fuji'); + await traderjoe.init(); +}); + +beforeEach(() => { + patchEVMNonceManager(avalanche.nonceManager); +}); + +afterEach(() => { + unpatch(); +}); + +afterAll(async () => { + await avalanche.close(); +}); + +const patchFetchPairData = () => { + patch(Fetcher, 'fetchPairData', () => { + return new Pair( + new TokenAmount(WETH, '2000000000000000000'), + new TokenAmount(WAVAX, '1000000000000000000'), + 43114 + ); + }); +}; + +const patchTrade = (key: string, error?: Error) => { + patch(Trade, key, () => { + if (error) return []; + const WETH_WAVAX = new Pair( + new TokenAmount(WETH, '2000000000000000000'), + new TokenAmount(WAVAX, '1000000000000000000'), + 43114 + ); + const WAVAX_TO_WETH = new Route([WETH_WAVAX], WAVAX); + return [ + new Trade( + WAVAX_TO_WETH, + new TokenAmount(WAVAX, '1000000000000000'), + TradeType.EXACT_INPUT, + 43114 + ), + ]; + }); +}; + +describe('verify Traderjoe estimateSellTrade', () => { + it('Should return an ExpectedTrade when available', async () => { + patchFetchPairData(); + patchTrade('bestTradeExactIn'); + + const expectedTrade = await traderjoe.estimateSellTrade( + WETH, + WAVAX, + BigNumber.from(1) + ); + expect(expectedTrade).toHaveProperty('trade'); + expect(expectedTrade).toHaveProperty('expectedAmount'); + }); + + it('Should throw an error if no pair is available', async () => { + patchFetchPairData(); + patchTrade('bestTradeExactIn', new Error('error getting trade')); + + await expect(async () => { + await traderjoe.estimateSellTrade(WETH, WAVAX, BigNumber.from(1)); + }).rejects.toThrow(UniswapishPriceError); + }); +}); + +describe('verify Traderjoe estimateBuyTrade', () => { + it('Should return an ExpectedTrade when available', async () => { + patchFetchPairData(); + patchTrade('bestTradeExactOut'); + + const expectedTrade = await traderjoe.estimateBuyTrade( + WETH, + WAVAX, + BigNumber.from(1) + ); + expect(expectedTrade).toHaveProperty('trade'); + expect(expectedTrade).toHaveProperty('expectedAmount'); + }); + + it('Should return an error if no pair is available', async () => { + patchFetchPairData(); + patchTrade('bestTradeExactOut', new Error('error getting trade')); + + await expect(async () => { + await traderjoe.estimateBuyTrade(WETH, WAVAX, BigNumber.from(1)); + }).rejects.toThrow(UniswapishPriceError); + }); +}); + +describe('getAllowedSlippage', () => { + it('return value of string when not null', () => { + const allowedSlippage = traderjoe.getAllowedSlippage('3/100'); + expect(allowedSlippage).toEqual(new Percent('3', '100')); + }); + + it('return value from config when string is null', () => { + const allowedSlippage = traderjoe.getAllowedSlippage(); + expect(allowedSlippage).toEqual(new Percent('1', '100')); + }); + + it('return value from config when string is malformed', () => { + const allowedSlippage = traderjoe.getAllowedSlippage('yo'); + expect(allowedSlippage).toEqual(new Percent('1', '100')); + }); +}); diff --git a/test/chains/binance-smart-chain/binance-smart-chain.routes.test.ts b/test/chains/binance-smart-chain/binance-smart-chain.routes.test.ts new file mode 100644 index 0000000000..990111a6ed --- /dev/null +++ b/test/chains/binance-smart-chain/binance-smart-chain.routes.test.ts @@ -0,0 +1,376 @@ +import request from 'supertest'; +import { patch, unpatch } from '../../services/patch'; +import { gatewayApp } from '../../../src/app'; +import { + NETWORK_ERROR_CODE, + NETWORK_ERROR_MESSAGE, + OUT_OF_GAS_ERROR_CODE, + OUT_OF_GAS_ERROR_MESSAGE, + UNKNOWN_ERROR_ERROR_CODE, + UNKNOWN_ERROR_MESSAGE, +} from '../../../src/services/error-handler'; +import * as transactionSuccesful from '../ethereum/fixtures/transaction-succesful.json'; +import * as transactionSuccesfulReceipt from '../ethereum//fixtures/transaction-succesful-receipt.json'; +import * as transactionOutOfGas from '../ethereum//fixtures/transaction-out-of-gas.json'; +import * as transactionOutOfGasReceipt from '../ethereum/fixtures/transaction-out-of-gas-receipt.json'; +import { BinanceSmartChain } from '../../../src/chains/binance-smart-chain/binance-smart-chain'; +import { patchEVMNonceManager } from '../../evm.nonce.mock'; + +let bsc: BinanceSmartChain; + +beforeAll(async () => { + bsc = BinanceSmartChain.getInstance('testnet'); + + patchEVMNonceManager(bsc.nonceManager); + + await bsc.init(); +}); + +beforeEach(() => { + patchEVMNonceManager(bsc.nonceManager); +}); + +afterEach(() => { + unpatch(); +}); + +afterAll(async () => { + await bsc.close(); +}); + +const address: string = '0x242532ebDfcc760f2Ddfe8378eB51f5F847CE5bD'; + +const patchGetWallet = () => { + patch(bsc, 'getWallet', () => { + return { + address, + }; + }); +}; + +const patchGetNonce = () => { + patch(bsc.nonceManager, 'getNonce', () => 0); +}; + +const patchGetTokenBySymbol = () => { + patch(bsc, 'getTokenBySymbol', () => { + return { + chainId: 97, + address: '0xae13d989dac2f0debff460ac112a837c89baa7cd', + decimals: 18, + name: 'WBNB Token', + symbol: 'WBNB', + logoURI: + 'https://exchange.pancakeswap.finance/images/coins/0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c.png', + }; + }); +}; + +const patchApproveERC20 = () => { + patch(bsc, 'approveERC20', () => { + return { + type: 2, + chainId: 97, + nonce: 0, + maxPriorityFeePerGas: { toString: () => '106000000000' }, + maxFeePerGas: { toString: () => '106000000000' }, + gasPrice: { toString: () => null }, + gasLimit: { toString: () => '66763' }, + to: '0x8babbb98678facc7342735486c851abd7a0d17ca', + value: { toString: () => '0' }, + data: '0x095ea7b30000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', // noqa: mock + accessList: [], + hash: '0xffdb7b393b46d3795b82c94b8d836ad6b3087a914244634fa89c3abbbf00ed72', // noqa: mock + v: 229, + r: '0x8800b16cbc6d468acad057dd5f724944d6aa48543cd90472e28dd5c6e90268b1', // noqa: mock + s: '0x662ed86bb86fb40911738ab67785f6e6c76f1c989d977ca23c504ef7a4796d08', // noqa: mock + from: '0x242532ebdfcc760f2ddfe8378eb51f5f847ce5bd', + confirmations: 98, + }; + }); +}; + +const patchGetERC20Allowance = () => { + patch(bsc, 'getERC20Allowance', () => ({ value: 1, decimals: 3 })); +}; + +const patchGetNativeBalance = () => { + patch(bsc, 'getNativeBalance', () => ({ value: 1, decimals: 3 })); +}; + +const patchGetERC20Balance = () => { + patch(bsc, 'getERC20Balance', () => ({ value: 1, decimals: 3 })); +}; + +describe('POST /evm/approve', () => { + it('should return 200', async () => { + patchGetWallet(); + bsc.getContract = jest.fn().mockReturnValue({ + address, + }); + patchGetNonce(); + patchGetTokenBySymbol(); + patchApproveERC20(); + + await request(gatewayApp) + .post(`/evm/approve`) + .send({ + chain: 'binance-smart-chain', + network: 'testnet', + address, + spender: address, + token: 'BNB', + }) + .set('Accept', 'application/json') + .expect('Content-Type', /json/) + .expect(200) + .then((res: any) => { + expect(res.body.nonce).toEqual(0); + }); + }); + + it('should return 404 when parameters are invalid', async () => { + await request(gatewayApp) + .post(`/evm/approve`) + .send({ + chain: 'binance-smart-chain', + network: 'testnet', + address, + spender: address, + token: 123, + nonce: '23', + }) + .expect(404); + }); +}); + +describe('POST /evm/nonce', () => { + it('should return 200', async () => { + patchGetWallet(); + patchGetNonce(); + + await request(gatewayApp) + .post(`/evm/nonce`) + .send({ + chain: 'binance-smart-chain', + network: 'testnet', + address, + }) + .set('Accept', 'application/json') + .expect('Content-Type', /json/) + .expect(200) + .expect((res) => expect(res.body.nonce).toBe(0)); + }); +}); + +describe('POST /evm/allowances', () => { + it('should return 200 asking for allowances', async () => { + patchGetWallet(); + patchGetTokenBySymbol(); + const spender = '0x242532ebDfcc760f2Ddfe8378eB51f5F847CE5bD'; + bsc.getSpender = jest.fn().mockReturnValue(spender); + bsc.getContract = jest.fn().mockReturnValue({ + address: '0x242532ebDfcc760f2Ddfe8378eB51f5F847CE5bD', + }); + patchGetERC20Allowance(); + + await request(gatewayApp) + .post(`/evm/allowances`) + .send({ + chain: 'binance-smart-chain', + network: 'testnet', + address: '0x242532ebDfcc760f2Ddfe8378eB51f5F847CE5bD', + spender: spender, + tokenSymbols: ['BNB', 'DAI'], + }) + .set('Accept', 'application/json') + .expect('Content-Type', /json/) + .expect(200) + .expect((res) => expect(res.body.spender).toEqual(spender)) + .expect((res) => expect(res.body.approvals.BNB).toEqual('0.001')) + .expect((res) => expect(res.body.approvals.DAI).toEqual('0.001')); + }); +}); + +describe('POST /network/balances', () => { + it('should return 200 asking for supported tokens', async () => { + patchGetWallet(); + patchGetTokenBySymbol(); + patchGetNativeBalance(); + patchGetERC20Balance(); + bsc.getContract = jest.fn().mockReturnValue({ + address: '0x242532ebDfcc760f2Ddfe8378eB51f5F847CE5bD', + }); + + await request(gatewayApp) + .post(`/network/balances`) + .send({ + chain: 'binance-smart-chain', + network: 'testnet', + address: '0x242532ebDfcc760f2Ddfe8378eB51f5F847CE5bD', + tokenSymbols: ['WETH', 'DAI'], + }) + .set('Accept', 'application/json') + .expect('Content-Type', /json/) + .expect(200) + .expect((res) => expect(res.body.balances.WETH).toBeDefined()) + .expect((res) => expect(res.body.balances.DAI).toBeDefined()); + }); +}); + +describe('POST /evm/cancel', () => { + it('should return 200', async () => { + // override getWallet (network call) + bsc.getWallet = jest.fn().mockReturnValue({ + address, + }); + + bsc.cancelTx = jest.fn().mockReturnValue({ + hash: '0xf6b9e7cec507cb3763a1179ff7e2a88c6008372e3a6f297d9027a0b39b0fff77', // noqa: mock + }); + + await request(gatewayApp) + .post(`/evm/cancel`) + .send({ + chain: 'binance-smart-chain', + network: 'testnet', + address, + nonce: 23, + }) + .set('Accept', 'application/json') + .expect('Content-Type', /json/) + .expect(200) + .then((res: any) => { + expect(res.body.txHash).toEqual( + '0xf6b9e7cec507cb3763a1179ff7e2a88c6008372e3a6f297d9027a0b39b0fff77' // noqa: mock + ); + }); + }); + + it('should return 404 when parameters are invalid', async () => { + await request(gatewayApp) + .post(`/evm/cancel`) + .send({ + chain: 'binance-smart-chain', + network: 'testnet', + address: '', + nonce: '23', + }) + .expect(404); + }); +}); + +describe('POST /network/poll', () => { + it('should get a NETWORK_ERROR_CODE when the network is unavailable', async () => { + patch(bsc, 'getCurrentBlockNumber', () => { + const error: any = new Error('something went wrong'); + error.code = 'NETWORK_ERROR'; + throw error; + }); + + const res = await request(gatewayApp).post('/network/poll').send({ + chain: 'binance-smart-chain', + network: 'testnet', + txHash: + '0xffdb7b393b46d3795b82c94b8d836ad6b3087a914244634fa89c3abbbf00ed72', // noqa: mock + }); + + expect(res.statusCode).toEqual(503); + expect(res.body.errorCode).toEqual(NETWORK_ERROR_CODE); + expect(res.body.message).toEqual(NETWORK_ERROR_MESSAGE); + }); + + it('should get a UNKNOWN_ERROR_ERROR_CODE when an unknown error is thrown', async () => { + patch(bsc, 'getCurrentBlockNumber', () => { + throw new Error(); + }); + + const res = await request(gatewayApp).post('/network/poll').send({ + chain: 'binance-smart-chain', + network: 'testnet', + txHash: + '0xffdb7b393b46d3795b82c94b8d836ad6b3087a914244634fa89c3abbbf00ed72', // noqa: mock + }); + + expect(res.statusCode).toEqual(503); + expect(res.body.errorCode).toEqual(UNKNOWN_ERROR_ERROR_CODE); + }); + + it('should get an OUT of GAS error for failed out of gas transactions', async () => { + patch(bsc, 'getCurrentBlockNumber', () => 1); + patch(bsc, 'getTransaction', () => transactionOutOfGas); + patch(bsc, 'getTransactionReceipt', () => transactionOutOfGasReceipt); + const res = await request(gatewayApp).post('/network/poll').send({ + chain: 'binance-smart-chain', + network: 'testnet', + txHash: + '0xffdb7b393b46d3795b82c94b8d836ad6b3087a914244634fa89c3abbbf00ed72', // noqa: mock + }); + + expect(res.statusCode).toEqual(503); + expect(res.body.errorCode).toEqual(OUT_OF_GAS_ERROR_CODE); + expect(res.body.message).toEqual(OUT_OF_GAS_ERROR_MESSAGE); + }); + + it('should get a null in txReceipt for Tx in the mempool', async () => { + patch(bsc, 'getCurrentBlockNumber', () => 1); + patch(bsc, 'getTransaction', () => transactionOutOfGas); + patch(bsc, 'getTransactionReceipt', () => null); + const res = await request(gatewayApp).post('/network/poll').send({ + chain: 'binance-smart-chain', + network: 'testnet', + txHash: + '0xffdb7b393b46d3795b82c94b8d836ad6b3087a914244634fa89c3abbbf00ed72', // noqa: mock + }); + expect(res.statusCode).toEqual(200); + expect(res.body.txReceipt).toEqual(null); + expect(res.body.txData).toBeDefined(); + }); + + it('should get a null in txReceipt and txData for Tx that didnt reach the mempool and TxReceipt is null', async () => { + patch(bsc, 'getCurrentBlockNumber', () => 1); + patch(bsc, 'getTransaction', () => null); + patch(bsc, 'getTransactionReceipt', () => null); + const res = await request(gatewayApp).post('/network/poll').send({ + chain: 'binance-smart-chain', + network: 'testnet', + txHash: + '0xffdb7b393b46d3795b82c94b8d836ad6b3087a914244634fa89c3abbbf00ed72', // noqa: mock + }); + expect(res.statusCode).toEqual(200); + expect(res.body.txReceipt).toEqual(null); + expect(res.body.txData).toEqual(null); + }); + + it('should get txStatus = 1 for a succesful query', async () => { + patch(bsc, 'getCurrentBlockNumber', () => 1); + patch(bsc, 'getTransaction', () => transactionSuccesful); + patch(bsc, 'getTransactionReceipt', () => transactionSuccesfulReceipt); + const res = await request(gatewayApp).post('/network/poll').send({ + chain: 'binance-smart-chain', + network: 'testnet', + txHash: + '0xffdb7b393b46d3795b82c94b8d836ad6b3087a914244634fa89c3abbbf00ed72', // noqa: mock + }); + expect(res.statusCode).toEqual(200); + expect(res.body.txReceipt).toBeDefined(); + expect(res.body.txData).toBeDefined(); + }); + + it('should get unknown error', async () => { + patch(bsc, 'getCurrentBlockNumber', () => { + const error: any = new Error('something went wrong'); + error.code = -32006; + throw error; + }); + const res = await request(gatewayApp).post('/network/poll').send({ + chain: 'binance-smart-chain', + network: 'testnet', + txHash: + '0xffdb7b393b46d3795b82c94b8d836ad6b3087a914244634fa89c3abbbf00ed72', // noqa: mock + }); + expect(res.statusCode).toEqual(503); + expect(res.body.errorCode).toEqual(UNKNOWN_ERROR_ERROR_CODE); + expect(res.body.message).toEqual(UNKNOWN_ERROR_MESSAGE); + }); +}); diff --git a/test/chains/binance-smart-chain/pancakeswap/pancakeswap.routes.test.ts b/test/chains/binance-smart-chain/pancakeswap/pancakeswap.routes.test.ts new file mode 100644 index 0000000000..f67cdd096a --- /dev/null +++ b/test/chains/binance-smart-chain/pancakeswap/pancakeswap.routes.test.ts @@ -0,0 +1,561 @@ +import request from 'supertest'; +import { gatewayApp } from '../../../../src/app'; +import { BinanceSmartChain } from '../../../../src/chains/binance-smart-chain/binance-smart-chain'; +import { PancakeSwap } from '../../../../src/connectors/pancakeswap/pancakeswap'; +import { patch, unpatch } from '../../../services/patch'; +import { patchEVMNonceManager } from '../../../evm.nonce.mock'; + +let bsc: BinanceSmartChain; +let pancakeswap: PancakeSwap; + +beforeAll(async () => { + bsc = BinanceSmartChain.getInstance('testnet'); + patchEVMNonceManager(bsc.nonceManager); + await bsc.init(); + pancakeswap = PancakeSwap.getInstance('binance-smart-chain', 'testnet'); + await pancakeswap.init(); +}); + +beforeEach(() => { + patchEVMNonceManager(bsc.nonceManager); +}); + +afterEach(() => { + unpatch(); +}); + +afterAll(async () => { + await bsc.close(); +}); + +const address: string = '0x242532ebDfcc760f2Ddfe8378eB51f5F847CE5bD'; + +const patchGetWallet = () => { + patch(bsc, 'getWallet', () => { + return { + address: address, + }; + }); +}; + +const patchStoredTokenList = () => { + patch(bsc, 'tokenList', () => { + return [ + { + chainId: 97, + name: 'WBNB', + symbol: 'WBNB', + address: '0xae13d989dac2f0debff460ac112a837c89baa7cd', + decimals: 18, + }, + { + chainId: 97, + name: 'DAI', + symbol: 'DAI', + address: '0x8a9424745056Eb399FD19a0EC26A14316684e274', + decimals: 18, + }, + ]; + }); +}; + +const patchGetTokenBySymbol = () => { + patch(bsc, 'getTokenBySymbol', (symbol: string) => { + if (symbol === 'WBNB') { + return { + chainId: 97, + name: 'WBNB', + symbol: 'WBNB', + address: '0xae13d989dac2f0debff460ac112a837c89baa7cd', + decimals: 18, + }; + } else { + return { + chainId: 97, + name: 'DAI', + symbol: 'DAI', + address: '0x8a9424745056Eb399FD19a0EC26A14316684e274', + decimals: 18, + }; + } + }); +}; + +const patchGetTokenByAddress = () => { + patch(pancakeswap, 'getTokenByAddress', () => { + return { + chainId: 97, + name: 'WBNB', + symbol: 'WBNB', + address: '0xae13d989dac2f0debff460ac112a837c89baa7cd', + decimals: 18, + }; + }); +}; + +const patchGasPrice = () => { + patch(bsc, 'gasPrice', () => 100); +}; + +const patchEstimateBuyTrade = () => { + patch(pancakeswap, 'estimateBuyTrade', () => { + return { + expectedAmount: { + toSignificant: () => 100, + }, + trade: { + executionPrice: { + invert: jest.fn().mockReturnValue({ + toSignificant: () => 100, + toFixed: () => '100', + }), + }, + }, + }; + }); +}; + +const patchEstimateSellTrade = () => { + patch(pancakeswap, 'estimateSellTrade', () => { + return { + expectedAmount: { + toSignificant: () => 100, + }, + trade: { + executionPrice: { + toSignificant: () => 100, + toFixed: () => '100', + }, + }, + }; + }); +}; + +const patchGetNonce = () => { + patch(bsc.nonceManager, 'getNonce', () => 21); +}; + +const patchExecuteTrade = () => { + patch(pancakeswap, 'executeTrade', () => { + return { nonce: 21, hash: '000000000000000' }; + }); +}; + +describe('POST /amm/price', () => { + it('should return 200 for BUY', async () => { + patchGetWallet(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patchGasPrice(); + patchEstimateBuyTrade(); + patchGetNonce(); + patchExecuteTrade(); + + await request(gatewayApp) + .post(`/amm/price`) + .send({ + chain: 'binance-smart-chain', + network: 'testnet', + connector: 'pancakeswap', + quote: 'DAI', + base: 'WBNB', + amount: '10000', + side: 'BUY', + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body.amount).toEqual('10000.000000000000000000'); + expect(res.body.rawAmount).toEqual('10000000000000000000000'); + }); + }); + + it('should return 200 for SELL', async () => { + patchGetWallet(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patchGasPrice(); + patchEstimateSellTrade(); + patchGetNonce(); + patchExecuteTrade(); + + await request(gatewayApp) + .post(`/amm/price`) + .send({ + chain: 'binance-smart-chain', + network: 'testnet', + connector: 'pancakeswap', + quote: 'DAI', + base: 'WBNB', + amount: '10000', + side: 'SELL', + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body.amount).toEqual('10000.000000000000000000'); + expect(res.body.rawAmount).toEqual('10000000000000000000000'); + }); + }); + + it('should return 500 for unrecognized quote symbol', async () => { + patchGetWallet(); + patchStoredTokenList(); + patch(bsc, 'getTokenBySymbol', (symbol: string) => { + if (symbol === 'WBNB') { + return { + chainId: 97, + name: 'WBNB', + symbol: 'WBNB', + address: '0xae13d989dac2f0debff460ac112a837c89baa7cd', + decimals: 18, + }; + } else { + return null; + } + }); + patchGetTokenByAddress(); + + await request(gatewayApp) + .post(`/amm/price`) + .send({ + chain: 'binance-smart-chain', + network: 'testnet', + connector: 'pancakeswap', + quote: 'DOGE', + base: 'WBNB', + amount: '10000', + side: 'SELL', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 500 for unrecognized base symbol', async () => { + patchGetWallet(); + patchStoredTokenList(); + patch(bsc, 'getTokenBySymbol', (symbol: string) => { + if (symbol === 'WBNB') { + return { + chainId: 97, + name: 'WBNB', + symbol: 'WBNB', + address: '0xae13d989dac2f0debff460ac112a837c89baa7cd', + decimals: 18, + }; + } else { + return null; + } + }); + patchGetTokenByAddress(); + + await request(gatewayApp) + .post(`/amm/price`) + .send({ + chain: 'binance-smart-chain', + network: 'testnet', + connector: 'pancakeswap', + quote: 'DAI', + base: 'SHIBA', + amount: '10000', + side: 'SELL', + }) + .set('Accept', 'application/json') + .expect(500); + }); +}); + +describe('POST /amm/trade', () => { + const patchForBuy = () => { + patchGetWallet(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patchGasPrice(); + patchEstimateBuyTrade(); + patchGetNonce(); + patchExecuteTrade(); + }; + it('should return 200 for BUY', async () => { + patchForBuy(); + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'binance-smart-chain', + network: 'testnet', + connector: 'pancakeswap', + quote: 'DAI', + base: 'WBNB', + amount: '10000', + address, + side: 'BUY', + nonce: 21, + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body.nonce).toEqual(21); + }); + }); + + it('should return 200 for BUY without nonce parameter', async () => { + patchForBuy(); + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'binance-smart-chain', + network: 'testnet', + connector: 'pancakeswap', + quote: 'DAI', + base: 'WBNB', + amount: '10000', + address, + side: 'BUY', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + it('should return 200 for BUY with maxFeePerGas and maxPriorityFeePerGas', async () => { + patchForBuy(); + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'binance-smart-chain', + network: 'testnet', + connector: 'pancakeswap', + quote: 'DAI', + base: 'WBNB', + amount: '10000', + address, + side: 'BUY', + nonce: 21, + maxFeePerGas: '5000000000', + maxPriorityFeePerGas: '5000000000', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + const patchForSell = () => { + patchGetWallet(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patchGasPrice(); + patchEstimateSellTrade(); + patchGetNonce(); + patchExecuteTrade(); + }; + it('should return 200 for SELL', async () => { + patchForSell(); + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'binance-smart-chain', + network: 'testnet', + connector: 'pancakeswap', + quote: 'DAI', + base: 'WBNB', + amount: '10000', + address, + side: 'SELL', + nonce: 21, + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body.nonce).toEqual(21); + }); + }); + + it('should return 200 for SELL with maxFeePerGas and maxPriorityFeePerGas', async () => { + patchForSell(); + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'binance-smart-chain', + network: 'testnet', + connector: 'pancakeswap', + quote: 'DAI', + base: 'WBNB', + amount: '10000', + address, + side: 'SELL', + nonce: 21, + maxFeePerGas: '5000000000', + maxPriorityFeePerGas: '5000000000', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + it('should return 404 when parameters are incorrect', async () => { + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'binance-smart-chain', + network: 'testnet', + connector: 'pancakeswap', + quote: 'DAI', + base: 'WBNB', + amount: 10000, + address: 'da8', + side: 'comprar', + }) + .set('Accept', 'application/json') + .expect(404); + }); + + it('should return 500 when base token is unknown', async () => { + patchForSell(); + patch(bsc, 'getTokenBySymbol', (symbol: string) => { + if (symbol === 'WBNB') { + return { + chainId: 97, + name: 'WBNB', + symbol: 'WBNB', + address: '0xae13d989dac2f0debff460ac112a837c89baa7cd', + decimals: 18, + }; + } else { + return null; + } + }); + + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'binance-smart-chain', + network: 'testnet', + connector: 'pancakeswap', + quote: 'WBNB', + base: 'BITCOIN', + amount: '10000', + address, + side: 'BUY', + nonce: 21, + maxFeePerGas: '5000000000', + maxPriorityFeePerGas: '5000000000', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 500 when quote token is unknown', async () => { + patchForSell(); + patch(bsc, 'getTokenBySymbol', (symbol: string) => { + if (symbol === 'WBNB') { + return { + chainId: 97, + name: 'WBNB', + symbol: 'WBNB', + address: '0xae13d989dac2f0debff460ac112a837c89baa7cd', + decimals: 18, + }; + } else { + return null; + } + }); + + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'binance-smart-chain', + network: 'testnet', + connector: 'pancakeswap', + quote: 'BITCOIN', + base: 'WBNB', + amount: '10000', + address, + side: 'BUY', + nonce: 21, + maxFeePerGas: '5000000000', + maxPriorityFeePerGas: '5000000000', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 200 for SELL with limitPrice', async () => { + patchForSell(); + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'binance-smart-chain', + network: 'testnet', + connector: 'pancakeswap', + quote: 'DAI', + base: 'WBNB', + amount: '10000', + address, + side: 'SELL', + nonce: 21, + limitPrice: '9', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + it('should return 200 for BUY with limitPrice', async () => { + patchForBuy(); + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'binance-smart-chain', + network: 'testnet', + connector: 'pancakeswap', + quote: 'DAI', + base: 'WBNB', + amount: '10000', + address, + side: 'BUY', + nonce: 21, + limitPrice: '999999999999999999999', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + it('should return 200 for SELL with price higher than limitPrice', async () => { + patchForSell(); + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'binance-smart-chain', + network: 'testnet', + connector: 'pancakeswap', + quote: 'DAI', + base: 'WBNB', + amount: '10000', + address, + side: 'SELL', + nonce: 21, + limitPrice: '99999999999', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 200 for BUY with price less than limitPrice', async () => { + patchForBuy(); + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'binance-smart-chain', + network: 'testnet', + connector: 'pancakeswap', + quote: 'DAI', + base: 'WBNB', + amount: '10000', + address, + side: 'BUY', + nonce: 21, + limitPrice: '9', + }) + .set('Accept', 'application/json') + .expect(500); + }); +}); diff --git a/test/chains/binance-smart-chain/pancakeswap/pancakeswap.test.ts b/test/chains/binance-smart-chain/pancakeswap/pancakeswap.test.ts new file mode 100644 index 0000000000..9099212b9e --- /dev/null +++ b/test/chains/binance-smart-chain/pancakeswap/pancakeswap.test.ts @@ -0,0 +1,141 @@ +jest.useFakeTimers(); +import { + Fetcher, + Pair, + Percent, + Route, + Token, + TokenAmount, + Trade, + TradeType, +} from '@pancakeswap/sdk'; +import { BigNumber } from 'ethers'; +import { BinanceSmartChain } from '../../../../src/chains/binance-smart-chain/binance-smart-chain'; +import { PancakeSwap } from '../../../../src/connectors/pancakeswap/pancakeswap'; +import { UniswapishPriceError } from '../../../../src/services/error-handler'; +import { patchEVMNonceManager } from '../../../evm.nonce.mock'; +import { patch, unpatch } from '../../../services/patch'; + +let bsc: BinanceSmartChain; +let pancakeswap: PancakeSwap; + +const WBNB = new Token( + 97, + '0xae13d989dac2f0debff460ac112a837c89baa7cd', + 18, + 'WBNB' +); +const DAI = new Token( + 97, + '0x8a9424745056Eb399FD19a0EC26A14316684e274', + 18, + 'DAI' +); + +beforeAll(async () => { + bsc = BinanceSmartChain.getInstance('testnet'); + patchEVMNonceManager(bsc.nonceManager); + await bsc.init(); + pancakeswap = PancakeSwap.getInstance('binance-smart-chain', 'testnet'); + await pancakeswap.init(); +}); + +afterEach(() => { + unpatch(); +}); + +afterAll(async () => { + await bsc.close(); +}); + +const patchFetchPairData = () => { + patch(Fetcher, 'fetchPairData', () => { + return new Pair( + new TokenAmount(WBNB, '2000000000000000000'), + new TokenAmount(DAI, '1000000000000000000') + ); + }); +}; + +const patchTrade = (key: string, error?: Error) => { + patch(Trade, key, () => { + if (error) return []; + const WBNB_DAI = new Pair( + new TokenAmount(WBNB, '2000000000000000000'), + new TokenAmount(DAI, '1000000000000000000') + ); + const DAI_TO_WBNB = new Route([WBNB_DAI], DAI); + return [ + new Trade( + DAI_TO_WBNB, + new TokenAmount(DAI, '1000000000000000'), + TradeType.EXACT_INPUT + ), + ]; + }); +}; + +describe('verify PancakeSwap estimateSellTrade', () => { + it('Should return an ExpectedTrade when available', async () => { + patchFetchPairData(); + patchTrade('bestTradeExactIn'); + + const expectedTrade = await pancakeswap.estimateSellTrade( + WBNB, + DAI, + BigNumber.from(1) + ); + expect(expectedTrade).toHaveProperty('trade'); + expect(expectedTrade).toHaveProperty('expectedAmount'); + }); + + it('Should throw an error if no pair is available', async () => { + patchFetchPairData(); + patchTrade('bestTradeExactIn', new Error('error getting trade')); + + await expect(async () => { + await pancakeswap.estimateSellTrade(WBNB, DAI, BigNumber.from(1)); + }).rejects.toThrow(UniswapishPriceError); + }); +}); + +describe('verify PancakeSwap estimateBuyTrade', () => { + it('Should return an ExpectedTrade when available', async () => { + patchFetchPairData(); + patchTrade('bestTradeExactOut'); + + const expectedTrade = await pancakeswap.estimateBuyTrade( + WBNB, + DAI, + BigNumber.from(1) + ); + expect(expectedTrade).toHaveProperty('trade'); + expect(expectedTrade).toHaveProperty('expectedAmount'); + }); + + it('Should return an error if no pair is available', async () => { + patchFetchPairData(); + patchTrade('bestTradeExactOut', new Error('error getting trade')); + + await expect(async () => { + await pancakeswap.estimateBuyTrade(WBNB, DAI, BigNumber.from(1)); + }).rejects.toThrow(UniswapishPriceError); + }); +}); + +describe('getAllowedSlippage', () => { + it('return value of string when not null', () => { + const allowedSlippage = pancakeswap.getAllowedSlippage('3/100'); + expect(allowedSlippage).toEqual(new Percent('3', '100')); + }); + + it('return value from config when string is null', () => { + const allowedSlippage = pancakeswap.getAllowedSlippage(); + expect(allowedSlippage).toEqual(new Percent('1', '100')); + }); + + it('return value from config when string is malformed', () => { + const allowedSlippage = pancakeswap.getAllowedSlippage('yo'); + expect(allowedSlippage).toEqual(new Percent('1', '100')); + }); +}); diff --git a/test/chains/cosmos/cosmos.routes.test.ts b/test/chains/cosmos/cosmos.routes.test.ts new file mode 100644 index 0000000000..bd9cccf285 --- /dev/null +++ b/test/chains/cosmos/cosmos.routes.test.ts @@ -0,0 +1,127 @@ +import request from 'supertest'; +import { patch, unpatch } from '../../services/patch'; +import { gatewayApp } from '../../../src/app'; +import { publicKey } from './cosmos.validators.test'; +import * as getTransactionData from './fixtures/getTransaction.json'; +import { BigNumber } from 'ethers'; +import { Cosmos } from '../../../src/chains/cosmos/cosmos'; +const { decodeTxRaw } = require('@cosmjs/proto-signing'); + +let cosmos: Cosmos; + +const tokens = ['ATOM', 'AXS']; + +beforeAll(async () => { + cosmos = Cosmos.getInstance('testnet'); + await cosmos.init(); +}); + +afterEach(() => unpatch()); + +describe('GET /cosmos', () => { + it('should return 200', async () => { + await request(gatewayApp) + .get(`/cosmos`) + .expect('Content-Type', /json/) + .expect(200) + .expect((res) => expect(res.body.connection).toBe(true)) + .expect((res) => expect(res.body.rpcUrl).toBe(cosmos.rpcUrl)); + }); +}); + +const patchGetBalances = () => { + patch(cosmos, 'getBalances', () => { + return { + [tokens[0]]: { value: BigNumber.from(228293), decimals: 9 }, + [tokens[1]]: { value: BigNumber.from(300003), decimals: 9 }, + }; + }); +}; + +const patchGetWallet = () => { + patch(cosmos, 'getWallet', () => { + return { + address: publicKey, + prefix: 'cosmos', + }; + }); +}; + +describe('POST /cosmos/balances', () => { + it('should return 200', async () => { + patchGetWallet(); + patchGetBalances(); + + await request(gatewayApp) + .post(`/cosmos/balances`) + .send({ address: publicKey, tokenSymbols: tokens, network: cosmos.chain }) + .expect('Content-Type', /json/) + .expect(200) + .expect((res) => expect(res.body.network).toBe(cosmos.chain)) + .expect((res) => expect(res.body.timestamp).toBeNumber()) + .expect((res) => expect(res.body.latency).toBeNumber()) + .expect((res) => + expect(res.body.balances).toEqual({ + [tokens[0]]: '0.000228293', + [tokens[1]]: '0.000300003', + }) + ); + }); + + it('should return 500 when asking for an unsupported token', async () => { + patchGetWallet(); + patchGetBalances(); + + await request(gatewayApp) + .post(`/cosmos/balances`) + .send({ + address: publicKey, + tokenSymbols: ['AXSS'], + network: cosmos.chain, + }) + .expect(500); + }); + + it('should return 404 when parameters are invalid', async () => { + await request(gatewayApp).post(`/cosmos/balances`).send({}).expect(404); + }); +}); + +const CurrentBlockNumber = 11829933; +const patchGetCurrentBlockNumber = () => { + patch(cosmos, 'getCurrentBlockNumber', () => CurrentBlockNumber); +}; + +const patchGetTransaction = () => { + patch(cosmos, 'getTransaction', () => getTransactionData); +}; + +const txHash = + 'F499E2C489FAF5C8E575650666EE8934963DF15E7850E710179BB4C00713C190'; // noqa: mock + +describe('POST /cosmos/poll', () => { + it('should return 200', async () => { + patchGetCurrentBlockNumber(); + patchGetTransaction(); + + await request(gatewayApp) + .post(`/cosmos/poll`) + .send({ + txHash, + network: cosmos.chain, + }) + .expect('Content-Type', /json/) + .expect((res) => expect(res.body.network).toBe(cosmos.chain)) + .expect(200) + .expect((res) => expect(res.body.timestamp).toBeNumber()) + .expect((res) => expect(res.body.currentBlock).toBe(CurrentBlockNumber)) + .expect((res) => expect(res.body.txHash).toBe(txHash)) + .expect((res) => + expect(res.body.txData).toEqual(decodeTxRaw(getTransactionData.tx)) + ); + }); + + it('should return 404 when parameters are invalid', async () => { + await request(gatewayApp).post(`/cosmos/poll`).send({}).expect(404); + }); +}); diff --git a/test/chains/cosmos/cosmos.validators.test.ts b/test/chains/cosmos/cosmos.validators.test.ts new file mode 100644 index 0000000000..d4723bf852 --- /dev/null +++ b/test/chains/cosmos/cosmos.validators.test.ts @@ -0,0 +1,51 @@ +import { + invalidCosmosAddressError, + isValidCosmosAddress, + validatePublicKey, +} from '../../../src/chains/cosmos/cosmos.validators'; +import { missingParameter } from '../../../src/services/validators'; +import 'jest-extended'; + +export const publicKey = 'cosmos1pc8m5m7n0z8xe7sx2tawkvc0v6qkjql83js0dr'; +export const privateKey = + 'b6dd181dfa0023013b2479c109e483cb8dc3c20d6fdae6b2443be147c11e5220'; // noqa: mock + +describe('isValidCosmosAddress', () => { + it('pass against a well formed public key', () => { + expect(isValidCosmosAddress(publicKey)).toEqual(true); + }); + + it('fail against a string that is too short', () => { + expect(isValidCosmosAddress(publicKey.substring(2))).toEqual(false); + }); + + it('fail against a string that is too long', () => { + expect(isValidCosmosAddress(publicKey + 1)).toEqual(false); + }); +}); + +describe('validatePublicKey', () => { + it('valid when req.publicKey is a publicKey', () => { + expect( + validatePublicKey({ + address: publicKey, + }) + ).toEqual([]); + }); + + it('return error when req.publicKey does not exist', () => { + expect( + validatePublicKey({ + hello: 'world', + }) + ).toEqual([missingParameter('address')]); + }); + + it('return error when req.publicKey is invalid', () => { + expect( + validatePublicKey({ + address: 'world', + }) + ).toEqual([invalidCosmosAddressError]); + }); +}); diff --git a/test/chains/cosmos/fixtures/getTransaction.json b/test/chains/cosmos/fixtures/getTransaction.json new file mode 100644 index 0000000000..d901a137f6 --- /dev/null +++ b/test/chains/cosmos/fixtures/getTransaction.json @@ -0,0 +1 @@ +{"height":11829902,"hash":"43785B183B154C3701CD62C07187CBFBE0A938B27D032094FBE9F9FA288BC6ED","code":0,"rawLog":"[{\"events\":[{\"type\":\"coin_received\",\"attributes\":[{\"key\":\"receiver\",\"value\":\"cosmos1e4l5lg68vl6r85zcemhryy6hyjwsw59c740p8u\"},{\"key\":\"amount\",\"value\":\"415432uatom\"}]},{\"type\":\"coin_spent\",\"attributes\":[{\"key\":\"spender\",\"value\":\"cosmos1jv65s3grqf6v6jl3dp4t6c9t9rk99cd88lyufl\"},{\"key\":\"amount\",\"value\":\"415432uatom\"}]},{\"type\":\"message\",\"attributes\":[{\"key\":\"action\",\"value\":\"/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward\"},{\"key\":\"sender\",\"value\":\"cosmos1jv65s3grqf6v6jl3dp4t6c9t9rk99cd88lyufl\"},{\"key\":\"module\",\"value\":\"distribution\"},{\"key\":\"sender\",\"value\":\"cosmos1e4l5lg68vl6r85zcemhryy6hyjwsw59c740p8u\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"cosmos1e4l5lg68vl6r85zcemhryy6hyjwsw59c740p8u\"},{\"key\":\"sender\",\"value\":\"cosmos1jv65s3grqf6v6jl3dp4t6c9t9rk99cd88lyufl\"},{\"key\":\"amount\",\"value\":\"415432uatom\"}]},{\"type\":\"withdraw_rewards\",\"attributes\":[{\"key\":\"amount\",\"value\":\"415432uatom\"},{\"key\":\"validator\",\"value\":\"cosmosvaloper1fsg635n5vgc7jazz9sx5725wnc3xqgr7awxaag\"}]}]}]","tx":{"0":10,"1":163,"2":1,"3":10,"4":160,"5":1,"6":10,"7":55,"8":47,"9":99,"10":111,"11":115,"12":109,"13":111,"14":115,"15":46,"16":100,"17":105,"18":115,"19":116,"20":114,"21":105,"22":98,"23":117,"24":116,"25":105,"26":111,"27":110,"28":46,"29":118,"30":49,"31":98,"32":101,"33":116,"34":97,"35":49,"36":46,"37":77,"38":115,"39":103,"40":87,"41":105,"42":116,"43":104,"44":100,"45":114,"46":97,"47":119,"48":68,"49":101,"50":108,"51":101,"52":103,"53":97,"54":116,"55":111,"56":114,"57":82,"58":101,"59":119,"60":97,"61":114,"62":100,"63":18,"64":101,"65":10,"66":45,"67":99,"68":111,"69":115,"70":109,"71":111,"72":115,"73":49,"74":101,"75":52,"76":108,"77":53,"78":108,"79":103,"80":54,"81":56,"82":118,"83":108,"84":54,"85":114,"86":56,"87":53,"88":122,"89":99,"90":101,"91":109,"92":104,"93":114,"94":121,"95":121,"96":54,"97":104,"98":121,"99":106,"100":119,"101":115,"102":119,"103":53,"104":57,"105":99,"106":55,"107":52,"108":48,"109":112,"110":56,"111":117,"112":18,"113":52,"114":99,"115":111,"116":115,"117":109,"118":111,"119":115,"120":118,"121":97,"122":108,"123":111,"124":112,"125":101,"126":114,"127":49,"128":102,"129":115,"130":103,"131":54,"132":51,"133":53,"134":110,"135":53,"136":118,"137":103,"138":99,"139":55,"140":106,"141":97,"142":122,"143":122,"144":57,"145":115,"146":120,"147":53,"148":55,"149":50,"150":53,"151":119,"152":110,"153":99,"154":51,"155":120,"156":113,"157":103,"158":114,"159":55,"160":97,"161":119,"162":120,"163":97,"164":97,"165":103,"166":18,"167":103,"168":10,"169":80,"170":10,"171":70,"172":10,"173":31,"174":47,"175":99,"176":111,"177":115,"178":109,"179":111,"180":115,"181":46,"182":99,"183":114,"184":121,"185":112,"186":116,"187":111,"188":46,"189":115,"190":101,"191":99,"192":112,"193":50,"194":53,"195":54,"196":107,"197":49,"198":46,"199":80,"200":117,"201":98,"202":75,"203":101,"204":121,"205":18,"206":35,"207":10,"208":33,"209":3,"210":120,"211":171,"212":247,"213":204,"214":94,"215":113,"216":116,"217":105,"218":24,"219":78,"220":111,"221":14,"222":99,"223":19,"224":173,"225":248,"226":235,"227":83,"228":144,"229":210,"230":208,"231":99,"232":221,"233":29,"234":216,"235":53,"236":134,"237":224,"238":207,"239":144,"240":78,"241":236,"242":18,"243":4,"244":10,"245":2,"246":8,"247":1,"248":24,"249":33,"250":18,"251":19,"252":10,"253":13,"254":10,"255":5,"256":117,"257":97,"258":116,"259":111,"260":109,"261":18,"262":4,"263":49,"264":48,"265":48,"266":48,"267":16,"268":160,"269":194,"270":30,"271":26,"272":64,"273":104,"274":84,"275":138,"276":51,"277":234,"278":178,"279":225,"280":249,"281":173,"282":23,"283":107,"284":22,"285":60,"286":218,"287":27,"288":215,"289":147,"290":212,"291":187,"292":134,"293":95,"294":144,"295":146,"296":58,"297":29,"298":244,"299":154,"300":29,"301":176,"302":248,"303":157,"304":209,"305":24,"306":45,"307":86,"308":11,"309":110,"310":233,"311":139,"312":142,"313":145,"314":56,"315":182,"316":58,"317":59,"318":33,"319":195,"320":10,"321":156,"322":185,"323":85,"324":73,"325":56,"326":34,"327":147,"328":52,"329":168,"330":230,"331":166,"332":62,"333":12,"334":56,"335":94,"336":31},"gasUsed":116639,"gasWanted":500000} \ No newline at end of file diff --git a/test/chains/cronos/cronos.routes.test.ts b/test/chains/cronos/cronos.routes.test.ts new file mode 100644 index 0000000000..26338cb01d --- /dev/null +++ b/test/chains/cronos/cronos.routes.test.ts @@ -0,0 +1,371 @@ +import request from 'supertest'; +import { patch, unpatch } from '../../services/patch'; +import { gatewayApp } from '../../../src/app'; +import { + NETWORK_ERROR_CODE, + NETWORK_ERROR_MESSAGE, + OUT_OF_GAS_ERROR_CODE, + OUT_OF_GAS_ERROR_MESSAGE, + UNKNOWN_ERROR_ERROR_CODE, + UNKNOWN_ERROR_MESSAGE, +} from '../../../src/services/error-handler'; +import * as transactionSuccesful from '../ethereum/fixtures/transaction-succesful.json'; +import * as transactionSuccesfulReceipt from '../ethereum/fixtures/transaction-succesful-receipt.json'; +import * as transactionOutOfGas from '../ethereum/fixtures/transaction-out-of-gas.json'; +import * as transactionOutOfGasReceipt from '../ethereum/fixtures/transaction-out-of-gas-receipt.json'; +import { Cronos } from '../../../src/chains/cronos/cronos'; +import { patchEVMNonceManager } from '../../evm.nonce.mock'; + +let cronos: Cronos; +const address: string = '0x242532ebDfcc760f2Ddfe8378eB51f5F847CE5bD'; // noqa: mock + +beforeAll(async () => { + cronos = Cronos.getInstance('testnet'); + patchEVMNonceManager(cronos.nonceManager); + await cronos.init(); +}); + +beforeEach(() => { + patchEVMNonceManager(cronos.nonceManager); +}); + +afterEach(() => { + unpatch(); +}); + +afterAll(async () => { + await cronos.close(); +}); + +const patchGetWallet = () => { + patch(cronos, 'getWallet', () => { + return { + address, + }; + }); +}; + +const patchGetNonce = () => { + patch(cronos.nonceManager, 'getNonce', () => 0); +}; + +const patchGetTokenBySymbol = () => { + patch(cronos, 'getTokenBySymbol', () => { + return { + chainId: 25, + address: '0xae13d989dac2f0debff460ac112a837c89baa7cd', + decimals: 18, + name: 'WCRON Token', + symbol: 'WCRON', + }; + }); +}; + +const patchApproveERC20 = () => { + patch(cronos, 'approveERC20', () => { + return { + type: 2, + chainId: 25, + nonce: 0, + maxPriorityFeePerGas: { toString: () => '106000000000' }, + maxFeePerGas: { toString: () => '106000000000' }, + gasPrice: { toString: () => null }, + gasLimit: { toString: () => '66763' }, + to: '0x8babbb98678facc7342735486c851abd7a0d17ca', // noqa: mock + value: { toString: () => '0' }, + data: '0x095ea7b30000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', // noqa: mock + accessList: [], + hash: '0xffdb7b393b46d3795b82c94b8d836ad6b3087a914244634fa89c3abbbf00ed72', // noqa: mock + v: 229, + r: '0x8800b16cbc6d468acad057dd5f724944d6aa48543cd90472e28dd5c6e90268b1', // noqa: mock + s: '0x662ed86bb86fb40911738ab67785f6e6c76f1c989d977ca23c504ef7a4796d08', // noqa: mock + from: '0x242532ebdfcc760f2ddfe8378eb51f5f847ce5bd', // noqa: mock + confirmations: 98, + }; + }); +}; + +const patchGetERC20Allowance = () => { + patch(cronos, 'getERC20Allowance', () => ({ value: 1, decimals: 3 })); +}; + +const patchGetNativeBalance = () => { + patch(cronos, 'getNativeBalance', () => ({ value: 1, decimals: 3 })); +}; + +const patchGetERC20Balance = () => { + patch(cronos, 'getERC20Balance', () => ({ value: 1, decimals: 3 })); +}; + +describe('POST /evm/approve', () => { + it('should return 200', async () => { + patchGetWallet(); + cronos.getContract = jest.fn().mockReturnValue({ + address, + }); + patchGetNonce(); + patchGetTokenBySymbol(); + patchApproveERC20(); + + await request(gatewayApp) + .post(`/evm/approve`) + .send({ + chain: 'cronos', + network: 'testnet', + address, + spender: address, + token: 'BNB', + }) + .set('Accept', 'application/json') + .expect('Content-Type', /json/) + .expect(200) + .then((res: any) => { + expect(res.body.nonce).toEqual(0); + }); + }); + + it('should return 404 when parameters are invalid', async () => { + await request(gatewayApp) + .post(`/evm/approve`) + .send({ + chain: 'cronos', + network: 'testnet', + address, + spender: address, + token: 123, + nonce: '23', + }) + .expect(404); + }); +}); + +describe('POST /evm/nonce', () => { + it('should return 200', async () => { + patchGetWallet(); + patchGetNonce(); + + await request(gatewayApp) + .post(`/evm/nonce`) + .send({ + chain: 'cronos', + network: 'testnet', + address, + }) + .set('Accept', 'application/json') + .expect('Content-Type', /json/) + .expect(200) + .expect((res) => expect(res.body.nonce).toBe(0)); + }); +}); + +describe('POST /evm/allowances', () => { + it('should return 200 asking for allowances', async () => { + patchGetWallet(); + patchGetTokenBySymbol(); + const spender = '0x242532ebDfcc760f2Ddfe8378eB51f5F847CE5bD'; // noqa: mock + cronos.getSpender = jest.fn().mockReturnValue(spender); + cronos.getContract = jest.fn().mockReturnValue({ + address: '0x242532ebDfcc760f2Ddfe8378eB51f5F847CE5bD', // noqa: mock + }); + patchGetERC20Allowance(); + + await request(gatewayApp) + .post(`/evm/allowances`) + .send({ + chain: 'cronos', + network: 'testnet', + address: '0x242532ebDfcc760f2Ddfe8378eB51f5F847CE5bD', // noqa: mock + spender: spender, + tokenSymbols: ['BNB', 'DAI'], + }) + .set('Accept', 'application/json') + .expect('Content-Type', /json/) + .expect(200) + .expect((res) => expect(res.body.spender).toEqual(spender)) + .expect((res) => expect(res.body.approvals.BNB).toEqual('0.001')) + .expect((res) => expect(res.body.approvals.DAI).toEqual('0.001')); + }); +}); + +describe('POST /network/balances', () => { + it('should return 200 asking for supported tokens', async () => { + patchGetWallet(); + patchGetTokenBySymbol(); + patchGetNativeBalance(); + patchGetERC20Balance(); + cronos.getContract = jest.fn().mockReturnValue({ + address: '0x242532ebDfcc760f2Ddfe8378eB51f5F847CE5bD', // noqa: mock + }); + + await request(gatewayApp) + .post(`/network/balances`) + .send({ + chain: 'cronos', + network: 'testnet', + address: '0x242532ebDfcc760f2Ddfe8378eB51f5F847CE5bD', // noqa: mock + tokenSymbols: ['WETH', 'DAI'], + }) + .set('Accept', 'application/json') + .expect('Content-Type', /json/) + .expect(200) + .expect((res) => expect(res.body.balances.WETH).toBeDefined()) + .expect((res) => expect(res.body.balances.DAI).toBeDefined()); + }); +}); + +describe('POST /evm/cancel', () => { + it('should return 200', async () => { + // override getWallet (network call) + cronos.getWallet = jest.fn().mockReturnValue({ + address, + }); + + cronos.cancelTx = jest.fn().mockReturnValue({ + hash: '0xf6b9e7cec507cb3763a1179ff7e2a88c6008372e3a6f297d9027a0b39b0fff77', // noqa: mock + }); + + await request(gatewayApp) + .post(`/evm/cancel`) + .send({ + chain: 'cronos', + network: 'testnet', + address, + nonce: 23, + }) + .set('Accept', 'application/json') + .expect('Content-Type', /json/) + .expect(200) + .then((res: any) => { + expect(res.body.txHash).toEqual( + '0xf6b9e7cec507cb3763a1179ff7e2a88c6008372e3a6f297d9027a0b39b0fff77' // noqa: mock + ); + }); + }); + + it('should return 404 when parameters are invalid', async () => { + await request(gatewayApp) + .post(`/evm/cancel`) + .send({ + chain: 'cronos', + network: 'testnet', + address: '', + nonce: '23', + }) + .expect(404); + }); +}); + +describe('POST /network/poll', () => { + it('should get a NETWORK_ERROR_CODE when the network is unavailable', async () => { + patch(cronos, 'getCurrentBlockNumber', () => { + const error: any = new Error('something went wrong'); + error.code = 'NETWORK_ERROR'; + throw error; + }); + + const res = await request(gatewayApp).post('/network/poll').send({ + chain: 'cronos', + network: 'testnet', + txHash: + '0xffdb7b393b46d3795b82c94b8d836ad6b3087a914244634fa89c3abbbf00ed72', // noqa: mock + }); + + expect(res.statusCode).toEqual(503); + expect(res.body.errorCode).toEqual(NETWORK_ERROR_CODE); + expect(res.body.message).toEqual(NETWORK_ERROR_MESSAGE); + }); + + it('should get a UNKNOWN_ERROR_ERROR_CODE when an unknown error is thrown', async () => { + patch(cronos, 'getCurrentBlockNumber', () => { + throw new Error(); + }); + + const res = await request(gatewayApp).post('/network/poll').send({ + chain: 'cronos', + network: 'testnet', + txHash: + '0xffdb7b393b46d3795b82c94b8d836ad6b3087a914244634fa89c3abbbf00ed72', // noqa: mock + }); + + expect(res.statusCode).toEqual(503); + expect(res.body.errorCode).toEqual(UNKNOWN_ERROR_ERROR_CODE); + }); + + it('should get an OUT of GAS error for failed out of gas transactions', async () => { + patch(cronos, 'getCurrentBlockNumber', () => 1); + patch(cronos, 'getTransaction', () => transactionOutOfGas); + patch(cronos, 'getTransactionReceipt', () => transactionOutOfGasReceipt); + const res = await request(gatewayApp).post('/network/poll').send({ + chain: 'cronos', + network: 'testnet', + txHash: + '0xffdb7b393b46d3795b82c94b8d836ad6b3087a914244634fa89c3abbbf00ed72', // noqa: mock + }); + + expect(res.statusCode).toEqual(503); + expect(res.body.errorCode).toEqual(OUT_OF_GAS_ERROR_CODE); + expect(res.body.message).toEqual(OUT_OF_GAS_ERROR_MESSAGE); + }); + + it('should get a null in txReceipt for Tx in the mempool', async () => { + patch(cronos, 'getCurrentBlockNumber', () => 1); + patch(cronos, 'getTransaction', () => transactionOutOfGas); + patch(cronos, 'getTransactionReceipt', () => null); + const res = await request(gatewayApp).post('/network/poll').send({ + chain: 'cronos', + network: 'testnet', + txHash: + '0xffdb7b393b46d3795b82c94b8d836ad6b3087a914244634fa89c3abbbf00ed72', // noqa: mock + }); + expect(res.statusCode).toEqual(200); + expect(res.body.txReceipt).toEqual(null); + expect(res.body.txData).toBeDefined(); + }); + + it('should get a null in txReceipt and txData for Tx that didnt reach the mempool and TxReceipt is null', async () => { + patch(cronos, 'getCurrentBlockNumber', () => 1); + patch(cronos, 'getTransaction', () => null); + patch(cronos, 'getTransactionReceipt', () => null); + const res = await request(gatewayApp).post('/network/poll').send({ + chain: 'cronos', + network: 'testnet', + txHash: + '0xffdb7b393b46d3795b82c94b8d836ad6b3087a914244634fa89c3abbbf00ed72', // noqa: mock + }); + expect(res.statusCode).toEqual(200); + expect(res.body.txReceipt).toEqual(null); + expect(res.body.txData).toEqual(null); + }); + + it('should get txStatus = 1 for a succesful query', async () => { + patch(cronos, 'getCurrentBlockNumber', () => 1); + patch(cronos, 'getTransaction', () => transactionSuccesful); + patch(cronos, 'getTransactionReceipt', () => transactionSuccesfulReceipt); + const res = await request(gatewayApp).post('/network/poll').send({ + chain: 'cronos', + network: 'testnet', + txHash: + '0xffdb7b393b46d3795b82c94b8d836ad6b3087a914244634fa89c3abbbf00ed72', // noqa: mock + }); + expect(res.statusCode).toEqual(200); + expect(res.body.txReceipt).toBeDefined(); + expect(res.body.txData).toBeDefined(); + }); + + it('should get unknown error', async () => { + patch(cronos, 'getCurrentBlockNumber', () => { + const error: any = new Error('something went wrong'); + error.code = -32006; + throw error; + }); + const res = await request(gatewayApp).post('/network/poll').send({ + chain: 'cronos', + network: 'testnet', + txHash: + '0xffdb7b393b46d3795b82c94b8d836ad6b3087a914244634fa89c3abbbf00ed72', // noqa: mock + }); + expect(res.statusCode).toEqual(503); + expect(res.body.errorCode).toEqual(UNKNOWN_ERROR_ERROR_CODE); + expect(res.body.message).toEqual(UNKNOWN_ERROR_MESSAGE); + }); +}); diff --git a/test/chains/cronos/mad_meerkat/mad-meerkat.routes.test.ts b/test/chains/cronos/mad_meerkat/mad-meerkat.routes.test.ts new file mode 100644 index 0000000000..2e4bba7f89 --- /dev/null +++ b/test/chains/cronos/mad_meerkat/mad-meerkat.routes.test.ts @@ -0,0 +1,560 @@ +import request from 'supertest'; +import { patch, unpatch } from '../../../services/patch'; +import { gatewayApp } from '../../../../src/app'; +import { Cronos } from '../../../../src/chains/cronos/cronos'; +import { MadMeerkat } from '../../../../src/connectors/mad_meerkat/mad_meerkat'; +import { patchEVMNonceManager } from '../../../evm.nonce.mock'; +let cronos: Cronos; +let madMeerkat: MadMeerkat; + +beforeAll(async () => { + cronos = Cronos.getInstance('mainnet'); + patchEVMNonceManager(cronos.nonceManager); + await cronos.init(); + madMeerkat = MadMeerkat.getInstance('cronos', 'mainnet') as MadMeerkat; + await madMeerkat.init(); +}); + +beforeEach(() => { + patchEVMNonceManager(cronos.nonceManager); +}); + +afterEach(() => { + unpatch(); +}); + +afterAll(async () => { + await cronos.close(); +}); + +const address: string = '0xFaA12FD102FE8623C9299c72B03E45107F2772B5'; + +const patchGetWallet = () => { + patch(cronos, 'getWallet', () => { + return { + address: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + }; + }); +}; + +const patchStoredTokenList = () => { + patch(cronos, 'tokenList', () => { + return [ + { + chainId: 43114, + name: 'WETH', + symbol: 'WETH', + address: '0xd0A1E359811322d97991E03f863a0C30C2cF029C', + decimals: 18, + }, + { + chainId: 43114, + name: 'Wrapped AVAX', + symbol: 'WAVAX', + address: '0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7', + decimals: 18, + }, + ]; + }); +}; + +const patchGetTokenBySymbol = () => { + patch(cronos, 'getTokenBySymbol', (symbol: string) => { + if (symbol === 'WETH') { + return { + chainId: 43114, + name: 'WETH', + symbol: 'WETH', + address: '0xd0A1E359811322d97991E03f863a0C30C2cF029C', + decimals: 18, + }; + } else { + return { + chainId: 42, + name: 'WAVAX', + symbol: 'WAVAX', + address: '0x4f96fe3b7a6cf9725f59d353f723c1bdb64ca6aa', + decimals: 18, + }; + } + }); +}; + +const patchGetTokenByAddress = () => { + patch(madMeerkat, 'getTokenByAddress', () => { + return { + chainId: 43114, + name: 'WETH', + symbol: 'WETH', + address: '0xd0A1E359811322d97991E03f863a0C30C2cF029C', + decimals: 18, + }; + }); +}; + +const patchGasPrice = () => { + patch(cronos, 'gasPrice', () => 100); +}; + +const patchEstimateBuyTrade = () => { + patch(madMeerkat, 'estimateBuyTrade', () => { + return { + expectedAmount: { + toSignificant: () => 100, + }, + trade: { + executionPrice: { + invert: jest.fn().mockReturnValue({ + toSignificant: () => 100, + toFixed: () => '100', + }), + }, + }, + }; + }); +}; + +const patchEstimateSellTrade = () => { + patch(madMeerkat, 'estimateSellTrade', () => { + return { + expectedAmount: { + toSignificant: () => 100, + }, + trade: { + executionPrice: { + toSignificant: () => 100, + toFixed: () => '100', + }, + }, + }; + }); +}; + +const patchGetNonce = () => { + patch(cronos.nonceManager, 'getNonce', () => 21); +}; + +const patchExecuteTrade = () => { + patch(madMeerkat, 'executeTrade', () => { + return { nonce: 21, hash: '000000000000000' }; + }); +}; + +describe('POST /amm/price', () => { + it('should return 200 for BUY', async () => { + patchGetWallet(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patchGasPrice(); + patchEstimateBuyTrade(); + patchGetNonce(); + patchExecuteTrade(); + + await request(gatewayApp) + .post(`/amm/price`) + .send({ + chain: 'cronos', + network: 'mainnet', + connector: 'mad_meerkat', + quote: 'WAVAX', + base: 'WETH', + amount: '10000', + side: 'BUY', + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body.amount).toEqual('10000.000000000000000000'); + expect(res.body.rawAmount).toEqual('10000000000000000000000'); + }); + }); + + it('should return 200 for SELL', async () => { + patchGetWallet(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patchGasPrice(); + patchEstimateSellTrade(); + patchGetNonce(); + patchExecuteTrade(); + + await request(gatewayApp) + .post(`/amm/price`) + .send({ + chain: 'cronos', + network: 'mainnet', + connector: 'mad_meerkat', + quote: 'WAVAX', + base: 'WETH', + amount: '10000', + side: 'SELL', + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body.amount).toEqual('10000.000000000000000000'); + expect(res.body.rawAmount).toEqual('10000000000000000000000'); + }); + }); + + it('should return 500 for unrecognized quote symbol', async () => { + patchGetWallet(); + patchStoredTokenList(); + patch(cronos, 'getTokenBySymbol', (symbol: string) => { + if (symbol === 'WETH') { + return { + chainId: 43114, + name: 'WETH', + symbol: 'WETH', + address: '0xd0A1E359811322d97991E03f863a0C30C2cF029C', + decimals: 18, + }; + } else { + return null; + } + }); + patchGetTokenByAddress(); + + await request(gatewayApp) + .post(`/amm/price`) + .send({ + chain: 'cronos', + network: 'mainnet', + connector: 'mad_meerkat', + quote: 'DOGE', + base: 'WETH', + amount: '10000', + side: 'SELL', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 500 for unrecognized base symbol', async () => { + patchGetWallet(); + patchStoredTokenList(); + patch(cronos, 'getTokenBySymbol', (symbol: string) => { + if (symbol === 'WETH') { + return { + chainId: 43114, + name: 'WETH', + symbol: 'WETH', + address: '0xd0A1E359811322d97991E03f863a0C30C2cF029C', + decimals: 18, + }; + } else { + return null; + } + }); + patchGetTokenByAddress(); + + await request(gatewayApp) + .post(`/amm/price`) + .send({ + chain: 'cronos', + network: 'mainnet', + connector: 'mad_meerkat', + quote: 'WAVAX', + base: 'SHIBA', + amount: '10000', + side: 'SELL', + }) + .set('Accept', 'application/json') + .expect(500); + }); +}); + +describe('POST /amm/trade', () => { + const patchForBuy = () => { + patchGetWallet(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patchGasPrice(); + patchEstimateBuyTrade(); + patchGetNonce(); + patchExecuteTrade(); + }; + it('should return 200 for BUY', async () => { + patchForBuy(); + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'cronos', + network: 'mainnet', + connector: 'mad_meerkat', + quote: 'WAVAX', + base: 'WETH', + amount: '10000', + address, + side: 'BUY', + nonce: 21, + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body.nonce).toEqual(21); + }); + }); + + it('should return 200 for BUY without nonce parameter', async () => { + patchForBuy(); + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'cronos', + network: 'mainnet', + connector: 'mad_meerkat', + quote: 'WAVAX', + base: 'WETH', + amount: '10000', + address, + side: 'BUY', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + it('should return 200 for BUY with maxFeePerGas and maxPriorityFeePerGas', async () => { + patchForBuy(); + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'cronos', + network: 'mainnet', + connector: 'mad_meerkat', + quote: 'WAVAX', + base: 'WETH', + amount: '10000', + address, + side: 'BUY', + nonce: 21, + maxFeePerGas: '5000000000', + maxPriorityFeePerGas: '5000000000', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + const patchForSell = () => { + patchGetWallet(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patchGasPrice(); + patchEstimateSellTrade(); + patchGetNonce(); + patchExecuteTrade(); + }; + it('should return 200 for SELL', async () => { + patchForSell(); + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'cronos', + network: 'mainnet', + connector: 'mad_meerkat', + quote: 'WAVAX', + base: 'WETH', + amount: '10000', + address, + side: 'SELL', + nonce: 21, + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body.nonce).toEqual(21); + }); + }); + + it('should return 200 for SELL with maxFeePerGas and maxPriorityFeePerGas', async () => { + patchForSell(); + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'cronos', + network: 'mainnet', + connector: 'mad_meerkat', + quote: 'WAVAX', + base: 'WETH', + amount: '10000', + address, + side: 'SELL', + nonce: 21, + maxFeePerGas: '5000000000', + maxPriorityFeePerGas: '5000000000', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + it('should return 404 when parameters are incorrect', async () => { + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'cronos', + network: 'mainnet', + connector: 'mad_meerkat', + quote: 'WAVAX', + base: 'WETH', + amount: 10000, + address: 'da8', + side: 'comprar', + }) + .set('Accept', 'application/json') + .expect(404); + }); + + it('should return 500 when base token is unknown', async () => { + patchForSell(); + patch(cronos, 'getTokenBySymbol', (symbol: string) => { + if (symbol === 'WETH') { + return { + chainId: 43114, + name: 'WETH', + symbol: 'WETH', + address: '0xd0A1E359811322d97991E03f863a0C30C2cF029C', + decimals: 18, + }; + } else { + return null; + } + }); + + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'cronos', + network: 'mainnet', + connector: 'mad_meerkat', + quote: 'WETH', + base: 'BITCOIN', + amount: '10000', + address, + side: 'BUY', + nonce: 21, + maxFeePerGas: '5000000000', + maxPriorityFeePerGas: '5000000000', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 500 when quote token is unknown', async () => { + patchForSell(); + patch(cronos, 'getTokenBySymbol', (symbol: string) => { + if (symbol === 'WETH') { + return { + chainId: 43114, + name: 'WETH', + symbol: 'WETH', + address: '0xd0A1E359811322d97991E03f863a0C30C2cF029C', + decimals: 18, + }; + } else { + return null; + } + }); + + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'cronos', + network: 'mainnet', + connector: 'mad_meerkat', + quote: 'BITCOIN', + base: 'WETH', + amount: '10000', + address, + side: 'BUY', + nonce: 21, + maxFeePerGas: '5000000000', + maxPriorityFeePerGas: '5000000000', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 200 for SELL with limitPrice', async () => { + patchForSell(); + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'cronos', + network: 'mainnet', + connector: 'mad_meerkat', + quote: 'WAVAX', + base: 'WETH', + amount: '10000', + address, + side: 'SELL', + nonce: 21, + limitPrice: '9', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + it('should return 200 for BUY with limitPrice', async () => { + patchForBuy(); + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'cronos', + network: 'mainnet', + connector: 'mad_meerkat', + quote: 'WAVAX', + base: 'WETH', + amount: '10000', + address, + side: 'BUY', + nonce: 21, + limitPrice: '999999999999999999999', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + it('should return 200 for SELL with price higher than limitPrice', async () => { + patchForSell(); + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'cronos', + network: 'mainnet', + connector: 'mad_meerkat', + quote: 'WAVAX', + base: 'WETH', + amount: '10000', + address, + side: 'SELL', + nonce: 21, + limitPrice: '99999999999', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 200 for BUY with price less than limitPrice', async () => { + patchForBuy(); + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'cronos', + network: 'mainnet', + connector: 'mad_meerkat', + quote: 'WAVAX', + base: 'WETH', + amount: '10000', + address, + side: 'BUY', + nonce: 21, + limitPrice: '9', + }) + .set('Accept', 'application/json') + .expect(500); + }); +}); diff --git a/test/chains/cronos/mad_meerkat/mad-meerkat.test.ts b/test/chains/cronos/mad_meerkat/mad-meerkat.test.ts new file mode 100644 index 0000000000..849b47c4a5 --- /dev/null +++ b/test/chains/cronos/mad_meerkat/mad-meerkat.test.ts @@ -0,0 +1,146 @@ +jest.useFakeTimers(); +import { MadMeerkat } from '../../../../src/connectors/mad_meerkat/mad_meerkat'; +import { patch, unpatch } from '../../../services/patch'; +import { UniswapishPriceError } from '../../../../src/services/error-handler'; +import { + ChainId, + Fetcher, + Pair, + Percent, + Route, + Token, + TokenAmount, + Trade, + TradeType, +} from '@crocswap/sdk'; +import { BigNumber } from 'ethers'; +import { Cronos } from '../../../../src/chains/cronos/cronos'; +import { patchEVMNonceManager } from '../../../evm.nonce.mock'; + +let cronos: Cronos; +let madMeerkat: MadMeerkat; + +const WETH = new Token( + ChainId.MAINNET, + '0xd0A1E359811322d97991E03f863a0C30C2cF029C', + 18, + 'WETH' +); +const WAVAX = new Token( + ChainId.MAINNET, + '0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7', + 18, + 'WAVAX' +); + +beforeAll(async () => { + cronos = Cronos.getInstance('mainnet'); + patchEVMNonceManager(cronos.nonceManager); + await cronos.init(); + madMeerkat = MadMeerkat.getInstance('cronos', 'mainnet') as MadMeerkat; + await madMeerkat.init(); +}); + +beforeEach(() => { + patchEVMNonceManager(cronos.nonceManager); +}); + +afterEach(() => { + unpatch(); +}); + +afterAll(async () => { + await cronos.close(); +}); + +const patchFetchPairData = () => { + patch(Fetcher, 'fetchPairData', () => { + return new Pair( + new TokenAmount(WETH, '2000000000000000000'), + new TokenAmount(WAVAX, '1000000000000000000') + ); + }); +}; + +const patchTrade = (key: string, error?: Error) => { + patch(Trade, key, () => { + if (error) return []; + const WETH_WAVAX = new Pair( + new TokenAmount(WETH, '2000000000000000000'), + new TokenAmount(WAVAX, '1000000000000000000') + ); + const WAVAX_TO_WETH = new Route([WETH_WAVAX], WAVAX); + return [ + new Trade( + WAVAX_TO_WETH, + new TokenAmount(WAVAX, '1000000000000000'), + TradeType.EXACT_INPUT + ), + ]; + }); +}; + +describe('verify MadMeerkat estimateSellTrade', () => { + it('Should return an ExpectedTrade when available', async () => { + patchFetchPairData(); + patchTrade('bestTradeExactIn'); + + const expectedTrade = await madMeerkat.estimateSellTrade( + WETH, + WAVAX, + BigNumber.from(1) + ); + expect(expectedTrade).toHaveProperty('trade'); + expect(expectedTrade).toHaveProperty('expectedAmount'); + }); + + it('Should throw an error if no pair is available', async () => { + patchFetchPairData(); + patchTrade('bestTradeExactIn', new Error('error getting trade')); + + await expect(async () => { + await madMeerkat.estimateSellTrade(WETH, WAVAX, BigNumber.from(1)); + }).rejects.toThrow(UniswapishPriceError); + }); +}); + +describe('verify MadMeerkat estimateBuyTrade', () => { + it('Should return an ExpectedTrade when available', async () => { + patchFetchPairData(); + patchTrade('bestTradeExactOut'); + + const expectedTrade = await madMeerkat.estimateBuyTrade( + WETH, + WAVAX, + BigNumber.from(1) + ); + expect(expectedTrade).toHaveProperty('trade'); + expect(expectedTrade).toHaveProperty('expectedAmount'); + }); + + it('Should return an error if no pair is available', async () => { + patchFetchPairData(); + patchTrade('bestTradeExactOut', new Error('error getting trade')); + + await expect(async () => { + await madMeerkat.estimateBuyTrade(WETH, WAVAX, BigNumber.from(1)); + }).rejects.toThrow(UniswapishPriceError); + }); +}); + +describe('getAllowedSlippage', () => { + it('return value of string when not null', () => { + const allowedSlippage = madMeerkat.getAllowedSlippage('3/100'); + expect(allowedSlippage).toEqual(new Percent('3', '100')); + }); + + it('return value from config when string is null', () => { + const allowedSlippage = madMeerkat.getAllowedSlippage(); + expect(allowedSlippage).toEqual(new Percent('1', '100')); + }); + + it('return value from config when string is malformed', () => { + const allowedSlippage = madMeerkat.getAllowedSlippage('yo'); + expect(allowedSlippage).toEqual(new Percent('1', '100')); + }); +}); diff --git a/test/chains/cronos/vvs/vvs.routes.test.ts b/test/chains/cronos/vvs/vvs.routes.test.ts new file mode 100644 index 0000000000..3314d7d6c5 --- /dev/null +++ b/test/chains/cronos/vvs/vvs.routes.test.ts @@ -0,0 +1,560 @@ +import request from 'supertest'; +import { patch, unpatch } from '../../../services/patch'; +import { gatewayApp } from '../../../../src/app'; +import { Cronos } from '../../../../src/chains/cronos/cronos'; +import { VVSConnector } from '../../../../src/connectors/vvs/vvs'; +import { patchEVMNonceManager } from '../../../evm.nonce.mock'; +let cronos: Cronos; +let vvs: VVSConnector; + +beforeAll(async () => { + cronos = Cronos.getInstance('mainnet'); + patchEVMNonceManager(cronos.nonceManager); + await cronos.init(); + vvs = VVSConnector.getInstance('cronos', 'mainnet') as VVSConnector; + await vvs.init(); +}); + +beforeEach(() => { + patchEVMNonceManager(cronos.nonceManager); +}); + +afterEach(() => { + unpatch(); +}); + +afterAll(async () => { + await cronos.close(); +}); + +const address: string = '0xFaA12FD102FE8623C9299c72B03E45107F2772B5'; + +const patchGetWallet = () => { + patch(cronos, 'getWallet', () => { + return { + address: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + }; + }); +}; + +const patchStoredTokenList = () => { + patch(cronos, 'tokenList', () => { + return [ + { + chainId: 43114, + name: 'WETH', + symbol: 'WETH', + address: '0xd0A1E359811322d97991E03f863a0C30C2cF029C', + decimals: 18, + }, + { + chainId: 43114, + name: 'Wrapped AVAX', + symbol: 'WAVAX', + address: '0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7', + decimals: 18, + }, + ]; + }); +}; + +const patchGetTokenBySymbol = () => { + patch(cronos, 'getTokenBySymbol', (symbol: string) => { + if (symbol === 'WETH') { + return { + chainId: 43114, + name: 'WETH', + symbol: 'WETH', + address: '0xd0A1E359811322d97991E03f863a0C30C2cF029C', + decimals: 18, + }; + } else { + return { + chainId: 42, + name: 'WAVAX', + symbol: 'WAVAX', + address: '0x4f96fe3b7a6cf9725f59d353f723c1bdb64ca6aa', + decimals: 18, + }; + } + }); +}; + +const patchGetTokenByAddress = () => { + patch(vvs, 'getTokenByAddress', () => { + return { + chainId: 43114, + name: 'WETH', + symbol: 'WETH', + address: '0xd0A1E359811322d97991E03f863a0C30C2cF029C', + decimals: 18, + }; + }); +}; + +const patchGasPrice = () => { + patch(cronos, 'gasPrice', () => 100); +}; + +const patchEstimateBuyTrade = () => { + patch(vvs, 'estimateBuyTrade', () => { + return { + expectedAmount: { + toSignificant: () => 100, + }, + trade: { + executionPrice: { + invert: jest.fn().mockReturnValue({ + toSignificant: () => 100, + toFixed: () => '100', + }), + }, + }, + }; + }); +}; + +const patchEstimateSellTrade = () => { + patch(vvs, 'estimateSellTrade', () => { + return { + expectedAmount: { + toSignificant: () => 100, + }, + trade: { + executionPrice: { + toSignificant: () => 100, + toFixed: () => '100', + }, + }, + }; + }); +}; + +const patchGetNonce = () => { + patch(cronos.nonceManager, 'getNonce', () => 21); +}; + +const patchExecuteTrade = () => { + patch(vvs, 'executeTrade', () => { + return { nonce: 21, hash: '000000000000000' }; + }); +}; + +describe('POST /amm/price', () => { + it('should return 200 for BUY', async () => { + patchGetWallet(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patchGasPrice(); + patchEstimateBuyTrade(); + patchGetNonce(); + patchExecuteTrade(); + + await request(gatewayApp) + .post(`/amm/price`) + .send({ + chain: 'cronos', + network: 'mainnet', + connector: 'vvs', + quote: 'WAVAX', + base: 'WETH', + amount: '10000', + side: 'BUY', + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body.amount).toEqual('10000.000000000000000000'); + expect(res.body.rawAmount).toEqual('10000000000000000000000'); + }); + }); + + it('should return 200 for SELL', async () => { + patchGetWallet(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patchGasPrice(); + patchEstimateSellTrade(); + patchGetNonce(); + patchExecuteTrade(); + + await request(gatewayApp) + .post(`/amm/price`) + .send({ + chain: 'cronos', + network: 'mainnet', + connector: 'vvs', + quote: 'WAVAX', + base: 'WETH', + amount: '10000', + side: 'SELL', + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body.amount).toEqual('10000.000000000000000000'); + expect(res.body.rawAmount).toEqual('10000000000000000000000'); + }); + }); + + it('should return 500 for unrecognized quote symbol', async () => { + patchGetWallet(); + patchStoredTokenList(); + patch(cronos, 'getTokenBySymbol', (symbol: string) => { + if (symbol === 'WETH') { + return { + chainId: 43114, + name: 'WETH', + symbol: 'WETH', + address: '0xd0A1E359811322d97991E03f863a0C30C2cF029C', + decimals: 18, + }; + } else { + return null; + } + }); + patchGetTokenByAddress(); + + await request(gatewayApp) + .post(`/amm/price`) + .send({ + chain: 'cronos', + network: 'mainnet', + connector: 'vvs', + quote: 'DOGE', + base: 'WETH', + amount: '10000', + side: 'SELL', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 500 for unrecognized base symbol', async () => { + patchGetWallet(); + patchStoredTokenList(); + patch(cronos, 'getTokenBySymbol', (symbol: string) => { + if (symbol === 'WETH') { + return { + chainId: 43114, + name: 'WETH', + symbol: 'WETH', + address: '0xd0A1E359811322d97991E03f863a0C30C2cF029C', + decimals: 18, + }; + } else { + return null; + } + }); + patchGetTokenByAddress(); + + await request(gatewayApp) + .post(`/amm/price`) + .send({ + chain: 'cronos', + network: 'mainnet', + connector: 'vvs', + quote: 'WAVAX', + base: 'SHIBA', + amount: '10000', + side: 'SELL', + }) + .set('Accept', 'application/json') + .expect(500); + }); +}); + +describe('POST /amm/trade', () => { + const patchForBuy = () => { + patchGetWallet(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patchGasPrice(); + patchEstimateBuyTrade(); + patchGetNonce(); + patchExecuteTrade(); + }; + it('should return 200 for BUY', async () => { + patchForBuy(); + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'cronos', + network: 'mainnet', + connector: 'vvs', + quote: 'WAVAX', + base: 'WETH', + amount: '10000', + address, + side: 'BUY', + nonce: 21, + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body.nonce).toEqual(21); + }); + }); + + it('should return 200 for BUY without nonce parameter', async () => { + patchForBuy(); + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'cronos', + network: 'mainnet', + connector: 'vvs', + quote: 'WAVAX', + base: 'WETH', + amount: '10000', + address, + side: 'BUY', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + it('should return 200 for BUY with maxFeePerGas and maxPriorityFeePerGas', async () => { + patchForBuy(); + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'cronos', + network: 'mainnet', + connector: 'vvs', + quote: 'WAVAX', + base: 'WETH', + amount: '10000', + address, + side: 'BUY', + nonce: 21, + maxFeePerGas: '5000000000', + maxPriorityFeePerGas: '5000000000', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + const patchForSell = () => { + patchGetWallet(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patchGasPrice(); + patchEstimateSellTrade(); + patchGetNonce(); + patchExecuteTrade(); + }; + it('should return 200 for SELL', async () => { + patchForSell(); + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'cronos', + network: 'mainnet', + connector: 'vvs', + quote: 'WAVAX', + base: 'WETH', + amount: '10000', + address, + side: 'SELL', + nonce: 21, + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body.nonce).toEqual(21); + }); + }); + + it('should return 200 for SELL with maxFeePerGas and maxPriorityFeePerGas', async () => { + patchForSell(); + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'cronos', + network: 'mainnet', + connector: 'vvs', + quote: 'WAVAX', + base: 'WETH', + amount: '10000', + address, + side: 'SELL', + nonce: 21, + maxFeePerGas: '5000000000', + maxPriorityFeePerGas: '5000000000', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + it('should return 404 when parameters are incorrect', async () => { + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'cronos', + network: 'mainnet', + connector: 'vvs', + quote: 'WAVAX', + base: 'WETH', + amount: 10000, + address: 'da8', + side: 'comprar', + }) + .set('Accept', 'application/json') + .expect(404); + }); + + it('should return 500 when base token is unknown', async () => { + patchForSell(); + patch(cronos, 'getTokenBySymbol', (symbol: string) => { + if (symbol === 'WETH') { + return { + chainId: 43114, + name: 'WETH', + symbol: 'WETH', + address: '0xd0A1E359811322d97991E03f863a0C30C2cF029C', + decimals: 18, + }; + } else { + return null; + } + }); + + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'cronos', + network: 'mainnet', + connector: 'vvs', + quote: 'WETH', + base: 'BITCOIN', + amount: '10000', + address, + side: 'BUY', + nonce: 21, + maxFeePerGas: '5000000000', + maxPriorityFeePerGas: '5000000000', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 500 when quote token is unknown', async () => { + patchForSell(); + patch(cronos, 'getTokenBySymbol', (symbol: string) => { + if (symbol === 'WETH') { + return { + chainId: 43114, + name: 'WETH', + symbol: 'WETH', + address: '0xd0A1E359811322d97991E03f863a0C30C2cF029C', + decimals: 18, + }; + } else { + return null; + } + }); + + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'cronos', + network: 'mainnet', + connector: 'vvs', + quote: 'BITCOIN', + base: 'WETH', + amount: '10000', + address, + side: 'BUY', + nonce: 21, + maxFeePerGas: '5000000000', + maxPriorityFeePerGas: '5000000000', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 200 for SELL with limitPrice', async () => { + patchForSell(); + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'cronos', + network: 'mainnet', + connector: 'vvs', + quote: 'WAVAX', + base: 'WETH', + amount: '10000', + address, + side: 'SELL', + nonce: 21, + limitPrice: '9', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + it('should return 200 for BUY with limitPrice', async () => { + patchForBuy(); + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'cronos', + network: 'mainnet', + connector: 'vvs', + quote: 'WAVAX', + base: 'WETH', + amount: '10000', + address, + side: 'BUY', + nonce: 21, + limitPrice: '999999999999999999999', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + it('should return 200 for SELL with price higher than limitPrice', async () => { + patchForSell(); + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'cronos', + network: 'mainnet', + connector: 'vvs', + quote: 'WAVAX', + base: 'WETH', + amount: '10000', + address, + side: 'SELL', + nonce: 21, + limitPrice: '99999999999', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 200 for BUY with price less than limitPrice', async () => { + patchForBuy(); + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'cronos', + network: 'mainnet', + connector: 'vvs', + quote: 'WAVAX', + base: 'WETH', + amount: '10000', + address, + side: 'BUY', + nonce: 21, + limitPrice: '9', + }) + .set('Accept', 'application/json') + .expect(500); + }); +}); diff --git a/test/chains/cronos/vvs/vvs.test.ts b/test/chains/cronos/vvs/vvs.test.ts new file mode 100644 index 0000000000..ffd0983a70 --- /dev/null +++ b/test/chains/cronos/vvs/vvs.test.ts @@ -0,0 +1,146 @@ +jest.useFakeTimers(); +import { VVSConnector } from '../../../../src/connectors/vvs/vvs'; +import { patch, unpatch } from '../../../services/patch'; +import { UniswapishPriceError } from '../../../../src/services/error-handler'; +import { + ChainId, + Fetcher, + Pair, + Percent, + Route, + Token, + TokenAmount, + Trade, + TradeType, +} from 'vvs-sdk'; +import { BigNumber } from 'ethers'; +import { Cronos } from '../../../../src/chains/cronos/cronos'; +import { patchEVMNonceManager } from '../../../evm.nonce.mock'; + +let cronos: Cronos; +let vvs: VVSConnector; + +const WETH = new Token( + ChainId.MAINNET, + '0xd0A1E359811322d97991E03f863a0C30C2cF029C', + 18, + 'WETH' +); +const WAVAX = new Token( + ChainId.MAINNET, + '0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7', + 18, + 'WAVAX' +); + +beforeAll(async () => { + cronos = Cronos.getInstance('mainnet'); + patchEVMNonceManager(cronos.nonceManager); + await cronos.init(); + vvs = VVSConnector.getInstance('cronos', 'mainnet') as VVSConnector; + await vvs.init(); +}); + +beforeEach(() => { + patchEVMNonceManager(cronos.nonceManager); +}); + +afterEach(() => { + unpatch(); +}); + +afterAll(async () => { + await cronos.close(); +}); + +const patchFetchPairData = () => { + patch(Fetcher, 'fetchPairData', () => { + return new Pair( + new TokenAmount(WETH, '2000000000000000000'), + new TokenAmount(WAVAX, '1000000000000000000') + ); + }); +}; + +const patchTrade = (key: string, error?: Error) => { + patch(Trade, key, () => { + if (error) return []; + const WETH_WAVAX = new Pair( + new TokenAmount(WETH, '2000000000000000000'), + new TokenAmount(WAVAX, '1000000000000000000') + ); + const WAVAX_TO_WETH = new Route([WETH_WAVAX], WAVAX); + return [ + new Trade( + WAVAX_TO_WETH, + new TokenAmount(WAVAX, '1000000000000000'), + TradeType.EXACT_INPUT + ), + ]; + }); +}; + +describe('verify VVS estimateSellTrade', () => { + it('Should return an ExpectedTrade when available', async () => { + patchFetchPairData(); + patchTrade('bestTradeExactIn'); + + const expectedTrade = await vvs.estimateSellTrade( + WETH, + WAVAX, + BigNumber.from(1) + ); + expect(expectedTrade).toHaveProperty('trade'); + expect(expectedTrade).toHaveProperty('expectedAmount'); + }); + + it('Should throw an error if no pair is available', async () => { + patchFetchPairData(); + patchTrade('bestTradeExactIn', new Error('error getting trade')); + + await expect(async () => { + await vvs.estimateSellTrade(WETH, WAVAX, BigNumber.from(1)); + }).rejects.toThrow(UniswapishPriceError); + }); +}); + +describe('verify VVS estimateBuyTrade', () => { + it('Should return an ExpectedTrade when available', async () => { + patchFetchPairData(); + patchTrade('bestTradeExactOut'); + + const expectedTrade = await vvs.estimateBuyTrade( + WETH, + WAVAX, + BigNumber.from(1) + ); + expect(expectedTrade).toHaveProperty('trade'); + expect(expectedTrade).toHaveProperty('expectedAmount'); + }); + + it('Should return an error if no pair is available', async () => { + patchFetchPairData(); + patchTrade('bestTradeExactOut', new Error('error getting trade')); + + await expect(async () => { + await vvs.estimateBuyTrade(WETH, WAVAX, BigNumber.from(1)); + }).rejects.toThrow(UniswapishPriceError); + }); +}); + +describe('getAllowedSlippage', () => { + it('return value of string when not null', () => { + const allowedSlippage = vvs.getAllowedSlippage('3/100'); + expect(allowedSlippage).toEqual(new Percent('3', '100')); + }); + + it('return value from config when string is null', () => { + const allowedSlippage = vvs.getAllowedSlippage(); + expect(allowedSlippage).toEqual(new Percent('1', '100')); + }); + + it('return value from config when string is malformed', () => { + const allowedSlippage = vvs.getAllowedSlippage('yo'); + expect(allowedSlippage).toEqual(new Percent('1', '100')); + }); +}); diff --git a/test/chains/ethereum/ethereum.controllers.test.ts b/test/chains/ethereum/ethereum.controllers.test.ts new file mode 100644 index 0000000000..1d61cbe445 --- /dev/null +++ b/test/chains/ethereum/ethereum.controllers.test.ts @@ -0,0 +1,292 @@ +import { BigNumber } from 'ethers'; +import { Ethereum } from '../../../src/chains/ethereum/ethereum'; +import { patch, unpatch } from '../../services/patch'; +import { TokenInfo } from '../../../src/services/ethereum-base'; +import { + nonce, + nextNonce, + getTokenSymbolsToTokens, + allowances, + approve, + balances, + cancel, + willTxSucceed, +} from '../../../src/chains/ethereum/ethereum.controllers'; +import { + HttpException, + LOAD_WALLET_ERROR_CODE, + LOAD_WALLET_ERROR_MESSAGE, + TOKEN_NOT_SUPPORTED_ERROR_MESSAGE, + TOKEN_NOT_SUPPORTED_ERROR_CODE, +} from '../../../src/services/error-handler'; +import { patchEVMNonceManager } from '../../evm.nonce.mock'; +let eth: Ethereum; + +beforeAll(async () => { + eth = Ethereum.getInstance('kovan'); + + patchEVMNonceManager(eth.nonceManager); + + await eth.init(); +}); + +beforeEach(() => { + patchEVMNonceManager(eth.nonceManager); +}); + +afterEach(() => { + unpatch(); +}); + +afterAll(async () => { + await eth.close(); +}); + +const zeroAddress = + '0000000000000000000000000000000000000000000000000000000000000000'; // noqa: mock + +describe('nonce', () => { + it('return a nonce for a wallet', async () => { + patch(eth, 'getWallet', () => { + return { + address: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + }; + }); + patch(eth.nonceManager, 'getNonce', () => 2); + const n = await nonce(eth, { + chain: 'ethereum', + network: 'kovan', + address: zeroAddress, + }); + expect(n).toEqual({ nonce: 2 }); + }); + + it('return next nonce for a wallet', async () => { + patch(eth, 'getWallet', () => { + return { + address: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + }; + }); + patch(eth.nonceManager, 'getNextNonce', () => 3); + const n = await nextNonce(eth, { + chain: 'ethereum', + network: 'kovan', + address: zeroAddress, + }); + expect(n).toEqual({ nonce: 3 }); + }); +}); + +const weth: TokenInfo = { + chainId: 42, + name: 'WETH', + symbol: 'WETH', + address: '0xd0A1E359811322d97991E03f863a0C30C2cF029C', + decimals: 18, +}; +describe('getTokenSymbolsToTokens', () => { + it('return tokens for strings', () => { + patch(eth, 'getTokenBySymbol', () => { + return weth; + }); + expect(getTokenSymbolsToTokens(eth, ['WETH'])).toEqual({ WETH: weth }); + }); +}); + +const uniswap = '0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D'; + +describe('allowances', () => { + it('return allowances for an owner, spender and tokens', async () => { + patch(eth, 'getWallet', () => { + return { + address: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + }; + }); + + patch(eth, 'getTokenBySymbol', () => { + return weth; + }); + + patch(eth, 'getSpender', () => { + return uniswap; + }); + + patch(eth, 'getERC20Allowance', () => { + return { + value: BigNumber.from('999999999999999999999999'), + decimals: 2, + }; + }); + + const result = await allowances(eth, { + chain: 'ethereum', + network: 'kovan', + address: zeroAddress, + spender: uniswap, + tokenSymbols: ['WETH'], + }); + expect((result as any).approvals).toEqual({ + WETH: '9999999999999999999999.99', + }); + }); +}); + +describe('approve', () => { + it('approve a spender for an owner, token and amount', async () => { + patch(eth, 'getSpender', () => { + return uniswap; + }); + eth.getContract = jest.fn().mockReturnValue({ + address: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + }); + + patch(eth, 'ready', () => true); + + patch(eth, 'getWallet', () => { + return { + address: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + }; + }); + + patch(eth, 'getTokenBySymbol', () => { + return weth; + }); + + patch(eth, 'approveERC20', () => { + return { + spender: uniswap, + value: { toString: () => '9999999' }, + }; + }); + + const result = await approve(eth, { + chain: 'ethereum', + network: 'kovan', + address: zeroAddress, + spender: uniswap, + token: 'WETH', + }); + expect((result as any).spender).toEqual(uniswap); + }); + + it('fail if wallet not found', async () => { + patch(eth, 'getSpender', () => { + return uniswap; + }); + + const err = 'wallet does not exist'; + patch(eth, 'getWallet', () => { + throw new Error(err); + }); + + await expect( + approve(eth, { + chain: 'ethereum', + network: 'kovan', + address: zeroAddress, + spender: uniswap, + token: 'WETH', + }) + ).rejects.toThrow( + new HttpException( + 500, + LOAD_WALLET_ERROR_MESSAGE + 'Error: ' + err, + LOAD_WALLET_ERROR_CODE + ) + ); + }); + + it('fail if token not found', async () => { + patch(eth, 'getSpender', () => { + return uniswap; + }); + + patch(eth, 'getWallet', () => { + return { + address: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + }; + }); + + patch(eth, 'getTokenBySymbol', () => { + return null; + }); + + await expect( + approve(eth, { + chain: 'ethereum', + network: 'kovan', + address: zeroAddress, + spender: uniswap, + token: 'WETH', + }) + ).rejects.toThrow( + new HttpException( + 500, + TOKEN_NOT_SUPPORTED_ERROR_MESSAGE + 'WETH', + TOKEN_NOT_SUPPORTED_ERROR_CODE + ) + ); + }); +}); + +describe('balances', () => { + it('fail if wallet not found', async () => { + const err = 'wallet does not exist'; + patch(eth, 'getWallet', () => { + throw new Error(err); + }); + + await expect( + balances(eth, { + chain: 'ethereum', + network: 'kovan', + address: zeroAddress, + tokenSymbols: ['WETH', 'DAI'], + }) + ).rejects.toThrow( + new HttpException( + 500, + LOAD_WALLET_ERROR_MESSAGE + 'Error: ' + err, + LOAD_WALLET_ERROR_CODE + ) + ); + }); +}); + +describe('cancel', () => { + it('fail if wallet not found', async () => { + const err = 'wallet does not exist'; + patch(eth, 'getWallet', () => { + throw new Error(err); + }); + + await expect( + cancel(eth, { + chain: 'ethereum', + network: 'kovan', + nonce: 123, + address: zeroAddress, + }) + ).rejects.toThrow( + new HttpException( + 500, + LOAD_WALLET_ERROR_MESSAGE + 'Error: ' + err, + LOAD_WALLET_ERROR_CODE + ) + ); + }); +}); + +describe('willTxSucceed', () => { + it('time limit met and gas price higher than that of the tx', () => { + expect(willTxSucceed(100, 10, 10, 100)).toEqual(false); + }); + + it('time limit met but gas price has not exceeded that of the tx', () => { + expect(willTxSucceed(100, 10, 100, 90)).toEqual(true); + }); + + it('time limit not met', () => { + expect(willTxSucceed(10, 100, 100, 90)).toEqual(true); + }); +}); diff --git a/test/chains/ethereum/ethereum.routes.test.ts b/test/chains/ethereum/ethereum.routes.test.ts new file mode 100644 index 0000000000..a30342a4df --- /dev/null +++ b/test/chains/ethereum/ethereum.routes.test.ts @@ -0,0 +1,634 @@ +import request from 'supertest'; +import { Ethereum } from '../../../src/chains/ethereum/ethereum'; +import { patch, unpatch } from '../../services/patch'; +import { gatewayApp } from '../../../src/app'; +import { + NETWORK_ERROR_CODE, + RATE_LIMIT_ERROR_CODE, + OUT_OF_GAS_ERROR_CODE, + UNKNOWN_ERROR_ERROR_CODE, + NETWORK_ERROR_MESSAGE, + RATE_LIMIT_ERROR_MESSAGE, + OUT_OF_GAS_ERROR_MESSAGE, + UNKNOWN_ERROR_MESSAGE, +} from '../../../src/services/error-handler'; +import { patchEVMNonceManager } from '../../evm.nonce.mock'; +import * as transactionSuccesful from './fixtures/transaction-succesful.json'; +import * as transactionSuccesfulReceipt from './fixtures/transaction-succesful-receipt.json'; +import * as transactionOutOfGas from './fixtures/transaction-out-of-gas.json'; +import * as transactionOutOfGasReceipt from './fixtures/transaction-out-of-gas-receipt.json'; +let eth: Ethereum; + +beforeAll(async () => { + eth = Ethereum.getInstance('kovan'); + patchEVMNonceManager(eth.nonceManager); + await eth.init(); +}); + +beforeEach(() => { + patchEVMNonceManager(eth.nonceManager); +}); + +afterEach(() => { + unpatch(); +}); + +afterAll(async () => { + await eth.close(); +}); + +const patchGetWallet = () => { + patch(eth, 'getWallet', () => { + return { + address: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + }; + }); +}; + +const patchGetNonce = () => { + patch(eth.nonceManager, 'getNonce', () => 2); +}; + +const patchGetNextNonce = () => { + patch(eth.nonceManager, 'getNextNonce', () => 3); +}; + +const patchGetERC20Balance = () => { + patch(eth, 'getERC20Balance', () => ({ value: 1, decimals: 3 })); +}; + +const patchGetNativeBalance = () => { + patch(eth, 'getNativeBalance', () => ({ value: 1, decimals: 3 })); +}; + +const patchGetERC20Allowance = () => { + patch(eth, 'getERC20Allowance', () => ({ value: 1, decimals: 3 })); +}; + +const patchGetTokenBySymbol = () => { + patch(eth, 'getTokenBySymbol', (symbol: string) => { + let result; + switch (symbol) { + case 'WETH': + result = { + chainId: 42, + name: 'WETH', + symbol: 'WETH', + address: '0xd0A1E359811322d97991E03f863a0C30C2cF029C', + decimals: 18, + }; + break; + case 'DAI': + result = { + chainId: 42, + name: 'DAI', + symbol: 'DAI', + address: '0xd0A1E359811322d97991E03f863a0C30C2cFFFFF', + decimals: 18, + }; + break; + } + return result; + }); +}; + +const patchApproveERC20 = (tx_type?: string) => { + const default_tx = { + type: 2, + chainId: 42, + nonce: 115, + maxPriorityFeePerGas: { toString: () => '106000000000' }, + maxFeePerGas: { toString: () => '106000000000' }, + gasPrice: { toString: () => null }, + gasLimit: { toString: () => '100000' }, + to: '0x4F96Fe3b7A6Cf9725f59d353F723c1bDb64CA6Aa', + value: { toString: () => '0' }, + data: '0x095ea7b30000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', // noqa: mock + accessList: [], + hash: '0x75f98675a8f64dcf14927ccde9a1d59b67fa09b72cc2642ad055dae4074853d9', // noqa: mock + v: 0, + r: '0xbeb9aa40028d79b9fdab108fcef5de635457a05f3a254410414c095b02c64643', // noqa: mock + s: '0x5a1506fa4b7f8b4f3826d8648f27ebaa9c0ee4bd67f569414b8cd8884c073100', // noqa: mock + from: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + confirmations: 0, + }; + if (tx_type === 'overwritten_tx') { + default_tx.hash = + '0x5a1ed682d0d7a58fbd7828bbf5994cd024feb8895d4da82c741ec4a191b9e849'; // noqa: mock + } + patch(eth, 'approveERC20', () => { + return default_tx; + }); +}; + +describe('POST /evm/allowances', () => { + it('should return 200 asking for allowances', async () => { + patchGetWallet(); + patchGetTokenBySymbol(); + const theSpender = '0xFaA12FD102FE8623C9299c72B03E45107F2772B5'; + eth.getSpender = jest.fn().mockReturnValue(theSpender); + eth.getContract = jest.fn().mockReturnValue({ + address: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + }); + patchGetERC20Allowance(); + + await request(gatewayApp) + .post(`/evm/allowances`) + .send({ + chain: 'ethereum', + network: 'kovan', + address: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + spender: theSpender, + tokenSymbols: ['WETH', 'DAI'], + }) + .set('Accept', 'application/json') + .expect('Content-Type', /json/) + .expect(200) + .expect((res) => expect(res.body.spender).toEqual(theSpender)) + .expect((res) => expect(res.body.approvals.WETH).toEqual('0.001')) + .expect((res) => expect(res.body.approvals.DAI).toEqual('0.001')); + }); + + it('should return 404 when parameters are invalid', async () => { + await request(gatewayApp) + .post(`/evm/allowances`) + .send({ + chain: 'ethereum', + network: 'kovan', + address: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + spender: '0xSpender', + tokenSymbols: ['WETH', 'DAI'], + }) + .expect(404); + }); +}); + +describe('POST /network/balances', () => { + it('should return 200 asking for supported tokens', async () => { + patchGetWallet(); + patchGetTokenBySymbol(); + patchGetNativeBalance(); + patchGetERC20Balance(); + eth.getContract = jest.fn().mockReturnValue({ + address: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + }); + + await request(gatewayApp) + .post(`/network/balances`) + .send({ + chain: 'ethereum', + network: 'kovan', + address: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + tokenSymbols: ['WETH', 'DAI'], + }) + .set('Accept', 'application/json') + .expect('Content-Type', /json/) + .expect(200) + .expect((res) => expect(res.body.balances.WETH).toBeDefined()) + .expect((res) => expect(res.body.balances.DAI).toBeDefined()); + }); + + it('should return 200 asking for native token', async () => { + patchGetWallet(); + patchGetTokenBySymbol(); + patchGetNativeBalance(); + patchGetERC20Balance(); + eth.getContract = jest.fn().mockReturnValue({ + address: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + }); + + await request(gatewayApp) + .post(`/network/balances`) + .send({ + chain: 'ethereum', + network: 'kovan', + address: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + tokenSymbols: ['ETH'], + }) + .set('Accept', 'application/json') + .expect('Content-Type', /json/) + .expect(200) + .expect((res) => expect(res.body.balances.ETH).toBeDefined()) + .expect((res) => console.log(res.body)); + }); + + it('should return 500 for unsupported tokens', async () => { + patchGetWallet(); + patchGetTokenBySymbol(); + patchGetNativeBalance(); + patchGetERC20Balance(); + eth.getContract = jest.fn().mockReturnValue({ + address: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + }); + + await request(gatewayApp) + .post(`/network/balances`) + .send({ + chain: 'ethereum', + network: 'kovan', + address: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + tokenSymbols: ['XXX', 'YYY'], + }) + .set('Accept', 'application/json') + .expect('Content-Type', /json/) + .expect(500); + }); + + it('should return 404 when parameters are invalid', async () => { + await request(gatewayApp) + .post(`/network/balances`) + .send({ + chain: 'ethereum', + network: 'kovan', + address: 'da857cbda0ba96757fed842617a4', + }) + .expect(404); + }); +}); + +describe('POST /evm/nonce', () => { + it('should return 200', async () => { + patchGetWallet(); + patchGetNonce(); + + await request(gatewayApp) + .post(`/evm/nonce`) + .send({ + chain: 'ethereum', + network: 'kovan', + address: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + }) + .set('Accept', 'application/json') + .expect('Content-Type', /json/) + .expect(200) + .expect((res) => expect(res.body.nonce).toBe(2)); + }); + + it('should return 404 when parameters are invalid', async () => { + await request(gatewayApp) + .post(`/evm/nonce`) + .send({ + chain: 'ethereum', + network: 'kovan', + address: 'da857cbda0ba96757fed842617a4', + }) + .expect(404); + }); +}); + +describe('POST /evm/nextNonce', () => { + it('should return 200', async () => { + patchGetWallet(); + patchGetNextNonce(); + + await request(gatewayApp) + .post(`/evm/nextNonce`) + .send({ + chain: 'ethereum', + network: 'kovan', + address: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + }) + .set('Accept', 'application/json') + .expect('Content-Type', /json/) + .expect(200) + .expect((res) => expect(res.body.nonce).toBe(3)); + }); + + it('should return 404 when parameters are invalid', async () => { + await request(gatewayApp) + .post(`/evm/nextNonce`) + .send({ + chain: 'ethereum', + network: 'kovan', + address: 'da857cbda0ba96757fed842617a4', + }) + .expect(404); + }); +}); + +describe('POST /evm/approve', () => { + it('approve without nonce parameter should return 200', async () => { + patchGetWallet(); + eth.getContract = jest.fn().mockReturnValue({ + address: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + }); + patch(eth.nonceManager, 'getNonce', () => 115); + patchGetTokenBySymbol(); + patchApproveERC20(); + + await request(gatewayApp) + .post(`/evm/approve`) + .send({ + chain: 'ethereum', + network: 'kovan', + address: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + spender: 'uniswap', + token: 'WETH', + }) + .set('Accept', 'application/json') + .expect('Content-Type', /json/) + .expect(200); + }); + + it('approve with nonce parameter should return 200', async () => { + patchGetWallet(); + patch(eth.nonceManager, 'getNonce', () => 115); + patchGetTokenBySymbol(); + patchApproveERC20(); + + await request(gatewayApp) + .post(`/evm/approve`) + .send({ + chain: 'ethereum', + network: 'kovan', + address: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + spender: 'uniswap', + token: 'WETH', + nonce: 115, + }) + .set('Accept', 'application/json') + .expect('Content-Type', /json/) + .expect(200) + .then((res: any) => { + expect(res.body.nonce).toEqual(115); + }); + }); + + it('approve with maxFeePerGas and maxPriorityFeePerGas should return 200', async () => { + patchGetWallet(); + patch(eth.nonceManager, 'getNonce', () => 115); + patchGetTokenBySymbol(); + patchApproveERC20(); + + await request(gatewayApp) + .post(`/evm/approve`) + .send({ + chain: 'ethereum', + network: 'kovan', + address: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + spender: 'uniswap', + token: 'WETH', + nonce: 115, + maxFeePerGas: '5000000000', + maxPriorityFeePerGas: '5000000000', + }) + .set('Accept', 'application/json') + .expect('Content-Type', /json/) + .expect(200); + }); + + it('should return 404 when parameters are invalid', async () => { + await request(gatewayApp) + .post(`/evm/approve`) + .send({ + chain: 'ethereum', + network: 'kovan', + address: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + spender: 'uniswap', + token: 123, + nonce: '23', + }) + .expect(404); + }); +}); + +describe('POST /evm/cancel', () => { + it('should return 200', async () => { + // override getWallet (network call) + eth.getWallet = jest.fn().mockReturnValue({ + address: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + }); + + eth.cancelTx = jest.fn().mockReturnValue({ + hash: '0xf6b9e7cec507cb3763a1179ff7e2a88c6008372e3a6f297d9027a0b39b0fff77', // noqa: mock + }); + + await request(gatewayApp) + .post(`/evm/cancel`) + .send({ + chain: 'ethereum', + network: 'kovan', + address: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + nonce: 23, + }) + .set('Accept', 'application/json') + .expect('Content-Type', /json/) + .expect(200) + .then((res: any) => { + expect(res.body.txHash).toEqual( + '0xf6b9e7cec507cb3763a1179ff7e2a88c6008372e3a6f297d9027a0b39b0fff77' // noqa: mock + ); + }); + }); + + it('should return 404 when parameters are invalid', async () => { + await request(gatewayApp) + .post(`/evm/cancel`) + .send({ + chain: 'ethereum', + network: 'kovan', + address: '', + nonce: '23', + }) + .expect(404); + }); +}); + +describe('POST /network/poll', () => { + it('should get a NETWORK_ERROR_CODE when the network is unavailable', async () => { + patch(eth, 'getCurrentBlockNumber', () => { + const error: any = new Error('something went wrong'); + error.code = 'NETWORK_ERROR'; + throw error; + }); + + const res = await request(gatewayApp).post('/network/poll').send({ + chain: 'ethereum', + network: 'kovan', + txHash: + '0x2faeb1aa55f96c1db55f643a8cf19b0f76bf091d0b7d1b068d2e829414576362', // noqa: mock + }); + + expect(res.statusCode).toEqual(503); + expect(res.body.errorCode).toEqual(NETWORK_ERROR_CODE); + expect(res.body.message).toEqual(NETWORK_ERROR_MESSAGE); + }); + + it('should get a UNKNOWN_ERROR_ERROR_CODE when an unknown error is thrown', async () => { + patch(eth, 'getCurrentBlockNumber', () => { + throw new Error(); + }); + + const res = await request(gatewayApp).post('/network/poll').send({ + txHash: + '0x2faeb1aa55f96c1db55f643a8cf19b0f76bf091d0b7d1b068d2e829414576362', // noqa: mock + }); + + expect(res.statusCode).toEqual(503); + expect(res.body.errorCode).toEqual(UNKNOWN_ERROR_ERROR_CODE); + }); + + it('should get an OUT of GAS error for failed out of gas transactions', async () => { + patch(eth, 'getCurrentBlockNumber', () => 1); + patch(eth, 'getTransaction', () => transactionOutOfGas); + patch(eth, 'getTransactionReceipt', () => transactionOutOfGasReceipt); + const res = await request(gatewayApp).post('/network/poll').send({ + chain: 'ethereum', + network: 'kovan', + txHash: + '0x2faeb1aa55f96c1db55f643a8cf19b0f76bf091d0b7d1b068d2e829414576362', // noqa: mock + }); + + expect(res.statusCode).toEqual(503); + expect(res.body.errorCode).toEqual(OUT_OF_GAS_ERROR_CODE); + expect(res.body.message).toEqual(OUT_OF_GAS_ERROR_MESSAGE); + }); + + it('should get a null in txReceipt for Tx in the mempool', async () => { + patch(eth, 'getCurrentBlockNumber', () => 1); + patch(eth, 'getTransaction', () => transactionOutOfGas); + patch(eth, 'getTransactionReceipt', () => null); + const res = await request(gatewayApp).post('/network/poll').send({ + chain: 'ethereum', + network: 'kovan', + txHash: + '0x2faeb1aa55f96c1db55f643a8cf19b0f76bf091d0b7d1b068d2e829414576362', // noqa: mock + }); + expect(res.statusCode).toEqual(200); + expect(res.body.txReceipt).toEqual(null); + expect(res.body.txData).toBeDefined(); + }); + + it('should get a null in txReceipt and txData for Tx that didnt reach the mempool and TxReceipt is null', async () => { + patch(eth, 'getCurrentBlockNumber', () => 1); + patch(eth, 'getTransaction', () => null); + patch(eth, 'getTransactionReceipt', () => null); + const res = await request(gatewayApp).post('/network/poll').send({ + chain: 'ethereum', + network: 'kovan', + txHash: + '0x2faeb1aa55f96c1db55f643a8cf19b0f76bf091d0b7d1b068d2e829414576362', // noqa: mock + }); + expect(res.statusCode).toEqual(200); + expect(res.body.txReceipt).toEqual(null); + expect(res.body.txData).toEqual(null); + }); + + it('should get txStatus = 1 for a succesful query', async () => { + patch(eth, 'getCurrentBlockNumber', () => 1); + patch(eth, 'getTransaction', () => transactionSuccesful); + patch(eth, 'getTransactionReceipt', () => transactionSuccesfulReceipt); + const res = await request(gatewayApp).post('/network/poll').send({ + chain: 'ethereum', + network: 'kovan', + txHash: + '0x6d068067a5e5a0f08c6395b31938893d1cdad81f54a54456221ecd8c1941294d', // noqa: mock + }); + expect(res.statusCode).toEqual(200); + expect(res.body.txReceipt).toBeDefined(); + expect(res.body.txData).toBeDefined(); + }); + + it('should get an RATE_LIMIT_ERROR_CODE when the blockchain API is rate limited', async () => { + patch(eth, 'getCurrentBlockNumber', () => { + const error: any = new Error( + 'daily request count exceeded, request rate limited' + ); + error.code = -32005; + error.data = { + see: 'https://infura.io/docs/ethereum/jsonrpc/ratelimits', + current_rps: 13.333, + allowed_rps: 10.0, + backoff_seconds: 30.0, + }; + throw error; + }); + const res = await request(gatewayApp).post('/network/poll').send({ + chain: 'ethereum', + network: 'kovan', + txHash: + '0x2faeb1aa55f96c1db55f643a8cf19b0f76bf091d0b7d1b068d2e829414576362', // noqa: mock + }); + expect(res.statusCode).toEqual(503); + expect(res.body.errorCode).toEqual(RATE_LIMIT_ERROR_CODE); + expect(res.body.message).toEqual(RATE_LIMIT_ERROR_MESSAGE); + }); + + it('should get unknown error', async () => { + patch(eth, 'getCurrentBlockNumber', () => { + const error: any = new Error('something went wrong'); + error.code = -32006; + throw error; + }); + const res = await request(gatewayApp).post('/network/poll').send({ + chain: 'ethereum', + network: 'kovan', + txHash: + '0x2faeb1aa55f96c1db55f643a8cf19b0f76bf091d0b7d1b068d2e829414576362', // noqa: mock + }); + expect(res.statusCode).toEqual(503); + expect(res.body.errorCode).toEqual(UNKNOWN_ERROR_ERROR_CODE); + expect(res.body.message).toEqual(UNKNOWN_ERROR_MESSAGE); + }); +}); + +describe('overwrite existing transaction', () => { + it('overwritten transaction is dropped', async () => { + patchGetWallet(); + patch(eth.nonceManager, 'getNonce', () => 115); + patchGetTokenBySymbol(); + + const requestParam = { + chain: 'ethereum', + network: 'kovan', + address: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + spender: 'uniswap', + token: 'WETH', + nonce: 115, + maxFeePerGas: '5000000000', + maxPriorityFeePerGas: '5000000000', + }; + + patchApproveERC20('overwritten_tx'); + const tx_1 = await request(gatewayApp) + .post(`/evm/approve`) + .send(requestParam) + .set('Accept', 'application/json') + .expect('Content-Type', /json/) + .expect(200); + + patchApproveERC20(); // patch to return different tx_hash + requestParam.maxPriorityFeePerGas = '8000000000'; // we only increase maxPriorityFeePerGas + const tx_2 = await request(gatewayApp) + .post(`/evm/approve`) + .send(requestParam) + .set('Accept', 'application/json') + .expect('Content-Type', /json/) + .expect(200); + + // once tx_2 is confirmed, tx_1 will be dropped + patch(eth, 'getCurrentBlockNumber', () => 1); + patch(eth, 'getTransaction', () => null); + patch(eth, 'getTransactionReceipt', () => null); + const res_1 = await request(gatewayApp).post('/network/poll').send({ + chain: 'ethereum', + network: 'kovan', + txHash: tx_1.body.approval.hash, + }); + expect(res_1.statusCode).toEqual(200); + expect(res_1.body.txReceipt).toEqual(null); + expect(res_1.body.txData).toEqual(null); + + patch(eth, 'getCurrentBlockNumber', () => 1); + patch(eth, 'getTransaction', () => transactionSuccesful); + patch(eth, 'getTransactionReceipt', () => transactionSuccesfulReceipt); + const res_2 = await request(gatewayApp).post('/network/poll').send({ + chain: 'ethereum', + network: 'kovan', + txHash: tx_2.body.approval.hash, + }); + expect(res_2.statusCode).toEqual(200); + expect(res_2.body.txReceipt).toBeDefined(); + expect(res_2.body.txData).toBeDefined(); + }); +}); diff --git a/test/chains/ethereum/ethereum.validators.test.ts b/test/chains/ethereum/ethereum.validators.test.ts new file mode 100644 index 0000000000..cc6744a048 --- /dev/null +++ b/test/chains/ethereum/ethereum.validators.test.ts @@ -0,0 +1,196 @@ +import { + isAddress, + validateAddress, + invalidAddressError, + validateSpender, + invalidSpenderError, + validateNonce, + invalidNonceError, + invalidMaxFeePerGasError, + validateMaxFeePerGas, + invalidMaxPriorityFeePerGasError, + validateMaxPriorityFeePerGas, +} from '../../../src/chains/ethereum/ethereum.validators'; + +import { missingParameter } from '../../../src/services/validators'; + +import 'jest-extended'; + +describe('isAddress', () => { + it('pass against a well formed public key', () => { + expect(isAddress('0xFaA12FD102FE8623C9299c72B03E45107F2772B5')).toEqual( + true + ); + }); + + it('fail against a string that is too short', () => { + expect(isAddress('0xFaA12FD102FE8623C9299c72')).toEqual(false); + }); + + it('fail against a string that has non-hexadecimal characters', () => { + expect(isAddress('0xFaA12FD102FE8623C9299c7iwqpneciqwopienff')).toEqual( + false + ); + }); + + it('fail against a valid public key that is missing the initial 0x', () => { + expect(isAddress('FaA12FD102FE8623C9299c72B03E45107F2772B5')).toEqual( + false + ); + }); +}); + +describe('validateAddress', () => { + it('valid when req.address is a address', () => { + expect( + validateAddress({ + address: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + }) + ).toEqual([]); + }); + + it('return error when req.address does not exist', () => { + expect( + validateAddress({ + hello: 'world', + }) + ).toEqual([missingParameter('address')]); + }); + + it('return error when req.address is invalid', () => { + expect( + validateAddress({ + address: 'world', + }) + ).toEqual([invalidAddressError]); + }); +}); + +describe('validateSpender', () => { + it('valid when req.spender is a publicKey', () => { + expect( + validateSpender({ + spender: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + }) + ).toEqual([]); + }); + + it("valid when req.spender is a 'uniswap'", () => { + expect( + validateSpender({ + spender: 'uniswap', + }) + ).toEqual([]); + }); + + it('return error when req.spender does not exist', () => { + expect( + validateSpender({ + hello: 'world', + }) + ).toEqual([missingParameter('spender')]); + }); + + it('return error when req.spender is invalid', () => { + expect( + validateSpender({ + spender: 'world', + }) + ).toEqual([invalidSpenderError]); + }); +}); + +describe('validateNonce', () => { + it('valid when req.nonce is a number', () => { + expect( + validateNonce({ + nonce: 0, + }) + ).toEqual([]); + expect( + validateNonce({ + nonce: 999, + }) + ).toEqual([]); + }); + + it('valid when req.nonce does not exist', () => { + expect( + validateNonce({ + hello: 'world', + }) + ).toEqual([]); + }); + + it('return error when req.nonce is invalid', () => { + expect( + validateNonce({ + nonce: '123', + }) + ).toEqual([invalidNonceError]); + }); +}); + +describe('validateMaxFeePerGas', () => { + it('valid when req.quote is a string', () => { + expect( + validateMaxFeePerGas({ + maxFeePerGas: '5000000000', + }) + ).toEqual([]); + + expect( + validateMaxFeePerGas({ + maxFeePerGas: '1', + }) + ).toEqual([]); + }); + + it('return no error when req.maxFeePerGas does not exist', () => { + expect( + validateMaxFeePerGas({ + hello: 'world', + }) + ).toEqual([]); + }); + + it('return error when req.maxFeePerGas is invalid', () => { + expect( + validateMaxFeePerGas({ + maxFeePerGas: 123, + }) + ).toEqual([invalidMaxFeePerGasError]); + }); +}); + +describe('validateMaxPriorityFeePerGas', () => { + it('valid when req.quote is a string', () => { + expect( + validateMaxPriorityFeePerGas({ + maxPriorityFeePerGasError: '5000000000', + }) + ).toEqual([]); + + expect( + validateMaxPriorityFeePerGas({ + maxPriorityFeePerGasError: '1', + }) + ).toEqual([]); + }); + + it('return no error when req.maxPriorityFeePerGas does not exist', () => { + expect( + validateMaxPriorityFeePerGas({ + hello: 'world', + }) + ).toEqual([]); + }); + + it('return error when req.maxPriorityFeePerGas is invalid', () => { + expect( + validateMaxPriorityFeePerGas({ + maxPriorityFeePerGas: 123, + }) + ).toEqual([invalidMaxPriorityFeePerGasError]); + }); +}); diff --git a/test/chains/ethereum/evm.nonce.test.ts b/test/chains/ethereum/evm.nonce.test.ts new file mode 100644 index 0000000000..b8ed629f76 --- /dev/null +++ b/test/chains/ethereum/evm.nonce.test.ts @@ -0,0 +1,331 @@ +import fs from 'fs'; +import fsp from 'fs/promises'; +import os from 'os'; +import path from 'path'; + +import { providers } from 'ethers'; +import { + InitializationError, + InvalidNonceError, + INVALID_NONCE_ERROR_CODE, + INVALID_NONCE_ERROR_MESSAGE, + SERVICE_UNITIALIZED_ERROR_CODE, + SERVICE_UNITIALIZED_ERROR_MESSAGE, +} from '../../../src/services/error-handler'; +import { EVMNonceManager } from '../../../src/services/evm.nonce'; +import { patch, unpatch } from '../../services/patch'; + +import 'jest-extended'; +import { ReferenceCountingCloseable } from '../../../src/services/refcounting-closeable'; + +const exampleAddress = '0xFaA12FD102FE8623C9299c72B03E45107F2772B5'; + +afterEach(() => { + unpatch(); +}); + +describe('uninitiated EVMNodeService', () => { + let dbPath = ''; + const handle: string = ReferenceCountingCloseable.createHandle(); + let nonceManager: EVMNonceManager; + + beforeAll(async () => { + jest.useFakeTimers(); + dbPath = await fsp.mkdtemp( + path.join(os.tmpdir(), '/evm-nonce1.test.level') + ); + nonceManager = new EVMNonceManager('ethereum', 43, dbPath, 0, 0); + nonceManager.declareOwnership(handle); + }); + + afterAll(async () => { + await nonceManager.close(handle); + fs.rmSync(dbPath, { force: true, recursive: true }); + }); + + it('mergeNonceFromEVMNode throws error', async () => { + await expect( + nonceManager.mergeNonceFromEVMNode(exampleAddress) + ).rejects.toThrow( + new InitializationError( + SERVICE_UNITIALIZED_ERROR_MESSAGE( + 'EVMNonceManager.mergeNonceFromEVMNode' + ), + SERVICE_UNITIALIZED_ERROR_CODE + ) + ); + }); + + it('getNonce throws error', async () => { + await expect(nonceManager.getNonce(exampleAddress)).rejects.toThrow( + new InitializationError( + SERVICE_UNITIALIZED_ERROR_MESSAGE('EVMNonceManager.getNonceFromMemory'), + SERVICE_UNITIALIZED_ERROR_CODE + ) + ); + }); + + it('commitNonce (txNonce not null) throws error', async () => { + await expect(nonceManager.commitNonce(exampleAddress, 87)).rejects.toThrow( + new InitializationError( + SERVICE_UNITIALIZED_ERROR_MESSAGE('EVMNonceManager.commitNonce'), + SERVICE_UNITIALIZED_ERROR_CODE + ) + ); + }); + + it('localNonceTTL value too low', async () => { + const provider = new providers.StaticJsonRpcProvider( + 'https://ethereum.node.com' + ); + + const nonceManager2 = new EVMNonceManager('ethereum', 43, dbPath, -5, 0); + nonceManager2.declareOwnership(handle); + + try { + await expect(nonceManager2.init(provider)).rejects.toThrow( + new InitializationError( + SERVICE_UNITIALIZED_ERROR_MESSAGE( + 'EVMNonceManager.init localNonceTTL must be greater than or equal to zero.' + ), + SERVICE_UNITIALIZED_ERROR_CODE + ) + ); + } finally { + await nonceManager2.close(handle); + } + }); + + it('pendingNonceTTL value too low', async () => { + const provider = new providers.StaticJsonRpcProvider( + 'https://ethereum.node.com' + ); + + const nonceManager2 = new EVMNonceManager('ethereum', 43, dbPath, 0, -5); + nonceManager2.declareOwnership(handle); + + try { + await expect(nonceManager2.init(provider)).rejects.toThrow( + new InitializationError( + SERVICE_UNITIALIZED_ERROR_MESSAGE( + 'EVMNonceManager.init pendingNonceTTL must be greater than or equal to zero.' + ), + SERVICE_UNITIALIZED_ERROR_CODE + ) + ); + } finally { + await nonceManager2.close(handle); + } + }); +}); + +describe('EVMNodeService', () => { + let nonceManager: EVMNonceManager; + let dbPath = ''; + const handle: string = ReferenceCountingCloseable.createHandle(); + const provider = new providers.StaticJsonRpcProvider( + 'https://ethereum.node.com' + ); + + beforeEach(async () => { + dbPath = await fsp.mkdtemp( + path.join(os.tmpdir(), '/evm-nonce2.test.level') + ); + nonceManager = new EVMNonceManager('ethereum', 43, dbPath, 0, 0); + nonceManager.declareOwnership(handle); + await nonceManager.init(provider); + await nonceManager.commitNonce(exampleAddress, 0); + }); + + afterAll(async () => { + await nonceManager.close(handle); + fs.rmSync(dbPath, { force: true, recursive: true }); + }); + + const patchGetTransactionCount = () => { + if (nonceManager._provider) { + patch(nonceManager._provider, 'getTransactionCount', () => 11); + } + }; + + const patchDropExpiredPendingNonces = () => { + patch(nonceManager, 'dropExpiredPendingNonces', (_: any) => { + return null; + }); + }; + + it('commitNonce with a provided txNonce will only update current nonce if txNonce > currentNonce', async () => { + patchGetTransactionCount(); + await nonceManager.commitNonce(exampleAddress, 10); + let nonce = await nonceManager.getNonce(exampleAddress); + await expect(nonce).toEqual(10); + + await expect(nonceManager.commitNonce(exampleAddress, 5)).rejects.toThrow( + new InvalidNonceError( + INVALID_NONCE_ERROR_MESSAGE + `txNonce(5) < currentNonce(10)`, + INVALID_NONCE_ERROR_CODE + ) + ); + + nonce = await nonceManager.getNonce(exampleAddress); + await expect(nonce).toEqual(10); + }); + + it('mergeNonceFromEVMNode should update with nonce from EVM node (local { + if (nonceManager._provider) { + patch(nonceManager._provider, 'getTransactionCount', () => 20); + } + + await nonceManager.commitNonce(exampleAddress, 8); + jest.advanceTimersByTime(300000); + await nonceManager.mergeNonceFromEVMNode(exampleAddress); + const nonce = await nonceManager.getNonce(exampleAddress); + await expect(nonce).toEqual(19); + }); + + it('getNextNonce should return nonces that are sequentially increasing', async () => { + // Prevents nonce from expiring. + patchGetTransactionCount(); + patchDropExpiredPendingNonces(); + patch(nonceManager, '_pendingNonceTTL', 300 * 1000); + nonceManager.commitNonce(exampleAddress, 1); + jest.advanceTimersByTime(300000); + + const pendingNonce1 = await nonceManager.getNextNonce(exampleAddress); + expect(pendingNonce1).toEqual(11); + + const pendingNonce2 = await nonceManager.getNextNonce(exampleAddress); + expect(pendingNonce2).toEqual(pendingNonce1 + 1); + }); + + it('getNextNonce should reuse expired nonces', async () => { + // Prevents nonce from expiring. + patchGetTransactionCount(); + + const pendingNonce1 = await nonceManager.getNextNonce(exampleAddress); + expect(pendingNonce1).toEqual(11); + + // if this runs too quickly it will fail (the nonce has not expired yet) + jest.advanceTimersByTime(1000); + + const pendingNonce2 = await nonceManager.getNextNonce(exampleAddress); + expect(pendingNonce2).toEqual(pendingNonce1); + + await nonceManager.commitNonce(exampleAddress, 20); + jest.advanceTimersByTime(300000); + await nonceManager.mergeNonceFromEVMNode(exampleAddress); + const nonce = await nonceManager.getNonce(exampleAddress); + await expect(nonce).toEqual(10); + }); + + it('provideNonce, nonce not provided. should return function results and commit nonce on successful execution of transaction', async () => { + // Prevents leading nonce from expiring. + patchGetTransactionCount(); + patch(nonceManager, '_localNonceTTL', 300 * 1000); + + const testFunction = async (_nonce: number) => { + return { + nonce: _nonce, + }; + }; + const transactionResult = await nonceManager.provideNonce( + undefined, + exampleAddress, + testFunction + ); + const currentNonceFromMemory = await nonceManager.getNonceFromMemory( + exampleAddress + ); + + expect(transactionResult.nonce).toEqual(11); + expect(currentNonceFromMemory).toEqual(11); + }); + + it('provideNonce, nonce not provided. should remove all pendingNonces greater or equal should function fail', async () => { + // Prevents leading nonce from expiring. + patchGetTransactionCount(); + + const expectedNonce = await nonceManager.getNonceFromMemory(exampleAddress); + expect(expectedNonce).toEqual(10); + + const pendingNonce1 = await nonceManager.getNextNonce(exampleAddress); // This nonce should expire. + expect(pendingNonce1).toEqual(11); + + const testFunction = async (_nonce: number) => { + throw new Error('testFunction has failed.'); + }; + + jest.advanceTimersByTime(300000); + + try { + await nonceManager.provideNonce(undefined, exampleAddress, testFunction); + } catch (error) { + expect(error).toEqual(new Error('testFunction has failed.')); + } + + const currentNonceFromMemory = await nonceManager.getNonceFromMemory( + exampleAddress + ); + + expect(currentNonceFromMemory).toEqual(expectedNonce); + + const pendingNonce2 = await nonceManager.getNextNonce(exampleAddress); + expect(pendingNonce2).toEqual(pendingNonce1); // Nonce is re-used. + }); +}); + +describe("EVMNodeService was previously a singleton. Let's prove that it no longer is.", () => { + let nonceManager1: EVMNonceManager; + let nonceManager2: EVMNonceManager; + let dbPath = ''; + const handle: string = ReferenceCountingCloseable.createHandle(); + + beforeAll(async () => { + dbPath = await fsp.mkdtemp( + path.join(os.tmpdir(), '/evm-nonce3.test.level') + ); + nonceManager1 = new EVMNonceManager('ethereum', 43, dbPath, 60, 60); + const provider1 = new providers.StaticJsonRpcProvider( + 'https://ethereum.node.com' + ); + nonceManager1.declareOwnership(handle); + await nonceManager1.init(provider1); + + nonceManager2 = new EVMNonceManager('avalanche', 56, dbPath, 60, 60); + nonceManager2.declareOwnership(handle); + const provider2 = new providers.StaticJsonRpcProvider( + 'https://avalanche.node.com' + ); + await nonceManager2.init(provider2); + }); + + afterAll(async () => { + await nonceManager1.close(handle); + await nonceManager2.close(handle); + fs.rmSync(dbPath, { force: true, recursive: true }); + }); + + it('commitNonce with a provided txNonce will only update current nonce if txNonce > currentNonce', async () => { + if (nonceManager1._provider) { + patch(nonceManager1._provider, 'getTransactionCount', () => 11); + } + if (nonceManager2._provider) { + patch(nonceManager2._provider, 'getTransactionCount', () => 24); + } + + await nonceManager1.commitNonce(exampleAddress, 10); + jest.advanceTimersByTime(300000); + const nonce1 = await nonceManager1.getNonce(exampleAddress); + await expect(nonce1).toEqual(10); + + await nonceManager2.commitNonce(exampleAddress, 23); + jest.advanceTimersByTime(300000); + const nonce2 = await nonceManager2.getNonce(exampleAddress); + await expect(nonce2).toEqual(23); + + await nonceManager1.commitNonce(exampleAddress, 11); + jest.advanceTimersByTime(300000); + const nonce3 = await nonceManager1.getNonce(exampleAddress); + await expect(nonce3).toEqual(10); + }); +}); diff --git a/test/chains/ethereum/fixtures/transaction-out-of-gas-receipt.json b/test/chains/ethereum/fixtures/transaction-out-of-gas-receipt.json new file mode 100644 index 0000000000..8a835b215e --- /dev/null +++ b/test/chains/ethereum/fixtures/transaction-out-of-gas-receipt.json @@ -0,0 +1,18 @@ +{ + "to": "0xf650C3d88D12dB855b8bf7D11Be6C55A4e07dCC9", + "from": "0x58B7AA5bEd029A5D149E108Ad4bdF836D10F70Ea", + "contractAddress": null, + "transactionIndex": 44, + "gasUsed": { "type": "BigNumber", "hex": "0x033111" }, + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0xf1780cff8a16b790fcf06bccb9ad09a4ab1a037beeb031c92c45142176cf765b", + "transactionHash": "0x2faeb1aa55f96c1db55f643a8cf19b0f76bf091d0b7d1b068d2e829414576362", + "logs": [], + "blockNumber": 11156112, + "confirmations": 1991737, + "cumulativeGasUsed": { "type": "BigNumber", "hex": "0x44787d" }, + "effectiveGasPrice": { "type": "BigNumber", "hex": "0x0773594000" }, + "status": 0, + "type": 0, + "byzantium": true +} diff --git a/test/chains/ethereum/fixtures/transaction-out-of-gas.json b/test/chains/ethereum/fixtures/transaction-out-of-gas.json new file mode 100644 index 0000000000..f2f07dba5b --- /dev/null +++ b/test/chains/ethereum/fixtures/transaction-out-of-gas.json @@ -0,0 +1,21 @@ +{ + "hash": "0x2faeb1aa55f96c1db55f643a8cf19b0f76bf091d0b7d1b068d2e829414576362", + "type": 0, + "accessList": null, + "blockHash": "0xf1780cff8a16b790fcf06bccb9ad09a4ab1a037beeb031c92c45142176cf765b", + "blockNumber": 11156112, + "transactionIndex": 44, + "confirmations": 2036758, + "from": "0x58B7AA5bEd029A5D149E108Ad4bdF836D10F70Ea", + "gasPrice": { "type": "BigNumber", "hex": "0x0773594000" }, + "gasLimit": { "type": "BigNumber", "hex": "0x033c34" }, + "to": "0xf650C3d88D12dB855b8bf7D11Be6C55A4e07dCC9", + "value": { "type": "BigNumber", "hex": "0x00" }, + "nonce": 75, + "data": "0xa0712d680000000000000000000000000000000000000000000000000000000005efe122", + "r": "0xf062197d2148efd8a86969f747e812d738fd8355583c1443aa5bc28f57cf9d77", + "s": "0x57b010a8c20f0fa5911b0ec20d555f08ff93368f456d33c03e2ea62ff33dcf1b", + "v": 37, + "creates": null, + "chainId": 1 +} diff --git a/test/chains/ethereum/fixtures/transaction-succesful-receipt.json b/test/chains/ethereum/fixtures/transaction-succesful-receipt.json new file mode 100644 index 0000000000..036a0ae3ab --- /dev/null +++ b/test/chains/ethereum/fixtures/transaction-succesful-receipt.json @@ -0,0 +1,55 @@ +{ + "to": "0x37F4df6e6E75F288f85B970F3a58D1Aeb5E882A1", + "from": "0xf4f087451055f7daf82ece742489F6F428A24e20", + "contractAddress": null, + "transactionIndex": 15, + "gasUsed": { + "type": "BigNumber", + "hex": "0x011cdd" + }, + "logsBloom": "0x00000000000000000000000000000000000000008000400000000000000000000000000000000000000000000000000000000000000020000000800000000000000000000040000000000008000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000010400000000000000100000000000008000800000000000000000000000000000000000000000000080000000400000000000000000000000000000000000000000000000000000002000000000100000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000", + "blockHash": "0xefbb71d5ad4e145f15484b3fd4807b308b91118880305ccf6fa5c3fb5c9b1aab", + "transactionHash": "0x6d068067a5e5a0f08c6395b31938893d1cdad81f54a54456221ecd8c1941294d", + "logs": [ + { + "transactionIndex": 15, + "blockNumber": 26549862, + "transactionHash": "0x6d068067a5e5a0f08c6395b31938893d1cdad81f54a54456221ecd8c1941294d", + "address": "0x6E8363b3499B54944674fB546BfFe52c5F411A79", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x00000000000000000000000037f4df6e6e75f288f85b970f3a58d1aeb5e882a1", + "0x000000000000000000000000f4f087451055f7daf82ece742489f6f428a24e20" + ], + "data": "0x00000000000000000000000000000000000000000000000002700417b49d51b5", + "logIndex": 30, + "blockHash": "0xefbb71d5ad4e145f15484b3fd4807b308b91118880305ccf6fa5c3fb5c9b1aab" + }, + { + "transactionIndex": 15, + "blockNumber": 26549862, + "transactionHash": "0x6d068067a5e5a0f08c6395b31938893d1cdad81f54a54456221ecd8c1941294d", + "address": "0x37F4df6e6E75F288f85B970F3a58D1Aeb5E882A1", + "topics": [ + "0xe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e0486", + "0x000000000000000000000000f4f087451055f7daf82ece742489f6f428a24e20" + ], + "data": "0x00000000000000000000000000000000000000000000000002700417b49d51b5", + "logIndex": 31, + "blockHash": "0xefbb71d5ad4e145f15484b3fd4807b308b91118880305ccf6fa5c3fb5c9b1aab" + } + ], + "blockNumber": 26549862, + "confirmations": 1029723, + "cumulativeGasUsed": { + "type": "BigNumber", + "hex": "0x3ed4ac" + }, + "effectiveGasPrice": { + "type": "BigNumber", + "hex": "0x3b9aca00" + }, + "status": 1, + "type": 0, + "byzantium": true +} diff --git a/test/chains/ethereum/fixtures/transaction-succesful.json b/test/chains/ethereum/fixtures/transaction-succesful.json new file mode 100644 index 0000000000..d540e6f4be --- /dev/null +++ b/test/chains/ethereum/fixtures/transaction-succesful.json @@ -0,0 +1,31 @@ +{ + "hash": "0x6d068067a5e5a0f08c6395b31938893d1cdad81f54a54456221ecd8c1941294d", + "type": 0, + "accessList": null, + "blockHash": "0xefbb71d5ad4e145f15484b3fd4807b308b91118880305ccf6fa5c3fb5c9b1aab", + "blockNumber": 26549862, + "transactionIndex": 15, + "confirmations": 1029723, + "from": "0xf4f087451055f7daf82ece742489F6F428A24e20", + "gasPrice": { + "type": "BigNumber", + "hex": "0x3b9aca00" + }, + "gasLimit": { + "type": "BigNumber", + "hex": "0x03b85d" + }, + "to": "0x37F4df6e6E75F288f85B970F3a58D1Aeb5E882A1", + "value": { + "type": "BigNumber", + "hex": "0x00" + }, + "nonce": 14, + "data": "0x3d18b912", + "r": "0xb1d265af60265817dcd3baed68fcd92cb501bd36332c1d70d6838ceaae3a7abe", + "s": "0x1f32c4f3a20e90e26bde70dbb458dddbeedc96dd05318d25b9bad3f731eadf38", + "v": 120, + "creates": null, + "raw": "0xf8680e843b9aca008303b85d9437f4df6e6e75f288f85b970f3a58d1aeb5e882a180843d18b91278a0b1d265af60265817dcd3baed68fcd92cb501bd36332c1d70d6838ceaae3a7abea01f32c4f3a20e90e26bde70dbb458dddbeedc96dd05318d25b9bad3f731eadf38", + "chainId": 42 +} diff --git a/test/chains/ethereum/perp/perp.routes.test.ts b/test/chains/ethereum/perp/perp.routes.test.ts new file mode 100644 index 0000000000..011b79c5f8 --- /dev/null +++ b/test/chains/ethereum/perp/perp.routes.test.ts @@ -0,0 +1,356 @@ +import express from 'express'; +import { Express } from 'express-serve-static-core'; +import request from 'supertest'; +import { Big } from 'big.js'; +import { MarketStatus } from '@perp/sdk-curie'; +import { Ethereum } from '../../../../src/chains/ethereum/ethereum'; +import { Perp } from '../../../../src/connectors/perp/perp'; + +import { PerpAmmRoutes } from '../../../../src/amm/amm.routes'; +import { patch, unpatch } from '../../../services/patch'; +import { gasCostInEthString } from '../../../../src/services/base'; +import { patchEVMNonceManager } from '../../../evm.nonce.mock'; + +let app: Express; +let ethereum: Ethereum; +let perp: Perp, perp2: Perp; + +beforeAll(async () => { + app = express(); + app.use(express.json()); + + ethereum = Ethereum.getInstance('optimism'); + patchEVMNonceManager(ethereum.nonceManager); + await ethereum.init(); + + perp = Perp.getInstance('ethereum', 'optimism'); + perp2 = Perp.getInstance('ethereum', 'optimism', address); + + app.use('/amm/perp', PerpAmmRoutes.router); +}); + +beforeEach(() => { + patchEVMNonceManager(ethereum.nonceManager); + patch(perp, 'ready', () => { + return true; + }); + patch(perp2, 'ready', () => { + return true; + }); +}); + +afterEach(() => { + unpatch(); +}); + +afterAll(async () => { + await ethereum.close(); +}); + +const address: string = '0xFaA12FD102FE8623C9299c72B03E45107F2772B5'; + +const patchGasPrice = () => { + patch(ethereum, 'gasPrice', () => 100); +}; + +const patchMarket = () => { + patch(perp.perp, 'markets', () => { + return { + getMarket() { + return { + getPrices() { + return { + markPrice: new Big('1'), + indexPrice: new Big('2'), + indexTwapPrice: new Big('3'), + }; + }, + async getStatus() { + return MarketStatus.ACTIVE; + }, + }; + }, + get marketMap() { + return { + AAVEUSD: 1, + WETHUSD: 2, + WBTCUSD: 3, + }; + }, + }; + }); +}; + +const patchPosition = () => { + patch(perp.perp, 'positions', () => { + return { + getTakerPositionByTickerSymbol() { + return; + }, + getTotalPendingFundingPayments() { + return {}; + }, + }; + }); +}; + +const patchCH = () => { + patch(perp.perp, 'clearingHouse', () => { + return { + createPositionDraft() { + return; + }, + async openPosition() { + return { + transaction: { + type: 2, + chainId: 42, + nonce: 115, + maxPriorityFeePerGas: { toString: () => '106000000000' }, + maxFeePerGas: { toString: () => '106000000000' }, + gasPrice: { toString: () => null }, + gasLimit: { toString: () => '100000' }, + to: '0x4F96Fe3b7A6Cf9725f59d353F723c1bDb64CA6Aa', + value: { toString: () => '0' }, + data: '0x095ea7b30000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', // noqa: mock + accessList: [], + hash: '0x75f98675a8f64dcf14927ccde9a1d59b67fa09b72cc2642ad055dae4074853d9', // noqa: mock + v: 0, + r: '0xbeb9aa40028d79b9fdab108fcef5de635457a05f3a254410414c095b02c64643', // noqa: mock + s: '0x5a1506fa4b7f8b4f3826d8648f27ebaa9c0ee4bd67f569414b8cd8884c073100', // noqa: mock + from: address, + confirmations: 0, + }, + }; + }, + async getAccountValue() { + return new Big('10'); + }, + }; + }); +}; + +describe('POST /amm/perp/market-prices', () => { + it('should return 200 with right parameter', async () => { + patchMarket(); + + await request(app) + .post(`/amm/perp/market-prices`) + .send({ + chain: 'ethereum', + network: 'optimism', + connector: 'perp', + quote: 'USD', + base: 'WETH', + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body.markPrice).toEqual('1'); + expect(res.body.indexPrice).toEqual('2'); + expect(res.body.indexTwapPrice).toEqual('3'); + }); + }); + + it('should return 500 with wrong paramters', async () => { + patchMarket(); + + await request(app) + .post(`/amm/perp/market-prices`) + .send({ + chain: 'ethereum', + network: 'optimism', + connector: 'perpp', + quote: '1234', + base: 'WETH', + }) + .set('Accept', 'application/json') + .expect(500); + }); +}); + +describe('POST /amm/perp/market-status', () => { + it('should return 200 with right parameter', async () => { + patchMarket(); + + await request(app) + .post(`/amm/perp/market-status`) + .send({ + chain: 'ethereum', + network: 'optimism', + connector: 'perp', + quote: 'USD', + base: 'WETH', + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body.isActive).toEqual(true); + }); + }); + + it('should return 500 with wrong paramters', async () => { + patchMarket(); + + await request(app) + .post(`/amm/perp/market-status`) + .send({ + chain: 'ethereum', + network: 'optimism', + connector: 'perpp', + quote: '1234', + base: 'WETH', + }) + .set('Accept', 'application/json') + .expect(500); + }); +}); + +describe('POST /amm/perp/pairs', () => { + it('should return list of available pairs', async () => { + patchMarket(); + + await request(app) + .post(`/amm/perp/pairs`) + .send({ + chain: 'ethereum', + network: 'optimism', + connector: 'perp', + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body.pairs).toEqual(['AAVEUSD', 'WETHUSD', 'WBTCUSD']); + }); + }); +}); + +describe('POST /amm/perp/position', () => { + it('should return a default object of a perp position', async () => { + patchPosition(); + + await request(app) + .post(`/amm/perp/position`) + .send({ + chain: 'ethereum', + network: 'optimism', + connector: 'perp', + quote: 'USD', + base: 'WETH', + address: address, + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body).toHaveProperty('positionAmt'); + expect(res.body).toHaveProperty('positionSide'); + expect(res.body).toHaveProperty('unrealizedProfit'); + expect(res.body).toHaveProperty('leverage'); + expect(res.body).toHaveProperty('entryPrice'); + expect(res.body).toHaveProperty('tickerSymbol'); + expect(res.body).toHaveProperty('pendingFundingPayment'); + }); + }); +}); + +describe('POST /amm/perp/balance', () => { + it('should return a account value', async () => { + patchCH(); + + await request(app) + .post(`/amm/perp/balance`) + .send({ + chain: 'ethereum', + network: 'optimism', + connector: 'perp', + address: address, + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body).toHaveProperty('balance'); + }); + }); +}); + +describe('POST /amm/perp/open and /amm/perp/close', () => { + it('open should return with hash', async () => { + patchGasPrice(); + patchPosition(); + patchCH(); + + await request(app) + .post(`/amm/perp/open`) + .send({ + chain: 'ethereum', + network: 'optimism', + connector: 'perp', + quote: 'USD', + base: 'WETH', + amount: '0.01', + side: 'LONG', + address: address, + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body).toHaveProperty('txHash'); + expect(res.body.nonce).toEqual(115); + }); + }); + + it('close should return error', async () => { + patchPosition(); + patchCH(); + + await request(app) + .post(`/amm/perp/close`) + .send({ + chain: 'ethereum', + network: 'optimism', + connector: 'perp', + quote: 'USD', + base: 'WETH', + address: address, + }) + .set('Accept', 'application/json') + .expect(500); + }); +}); + +describe('POST /amm/perp/estimateGas', () => { + it('should return 200 with right parameter', async () => { + patchGasPrice(); + + await request(app) + .post('/amm/perp/estimateGas') + .send({ + chain: 'ethereum', + network: 'optimism', + connector: 'perp', + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body.network).toEqual('optimism'); + expect(res.body.gasPrice).toEqual(100); + expect(res.body.gasCost).toEqual( + gasCostInEthString(100, perp.gasLimit) + ); + }); + }); + + it('should return 500 for invalid connector', async () => { + patchGasPrice(); + + await request(app) + .post('/amm/perp/estimateGas') + .send({ + chain: 'ethereum', + network: 'optimism', + connector: 'pangolin', + }) + .set('Accept', 'application/json') + .expect(500); + }); +}); diff --git a/test/chains/ethereum/perp/perp.test.ts b/test/chains/ethereum/perp/perp.test.ts new file mode 100644 index 0000000000..4bf8c6a4f8 --- /dev/null +++ b/test/chains/ethereum/perp/perp.test.ts @@ -0,0 +1,187 @@ +jest.useFakeTimers(); +import { Perp } from '../../../../src/connectors/perp/perp'; +import { MarketStatus } from '@perp/sdk-curie'; +import { patch, unpatch } from '../../../services/patch'; +import { Big } from 'big.js'; +import { Ethereum } from '../../../../src/chains/ethereum/ethereum'; +import { patchEVMNonceManager } from '../../../evm.nonce.mock'; + +let ethereum: Ethereum; +let perp: Perp; + +beforeAll(async () => { + ethereum = Ethereum.getInstance('optimism'); + patchEVMNonceManager(ethereum.nonceManager); + await ethereum.init(); + + perp = Perp.getInstance('ethereum', 'optimism'); +}); + +beforeEach(() => { + patchEVMNonceManager(ethereum.nonceManager); +}); + +afterEach(() => { + unpatch(); +}); + +const patchMarket = () => { + patch(perp.perp, 'markets', () => { + return { + getMarket() { + return { + getPrices() { + return { + markPrice: new Big('1'), + indexPrice: new Big('2'), + indexTwapPrice: new Big('3'), + }; + }, + async getStatus() { + return MarketStatus.ACTIVE; + }, + }; + }, + get marketMap() { + return { + AAVEUSD: 1, + WETHUSD: 2, + WBTCUSD: 3, + }; + }, + }; + }); +}; + +const patchPosition = () => { + patch(perp.perp, 'positions', () => { + return { + getTakerPositionByTickerSymbol() { + return; + }, + getTotalPendingFundingPayments() { + return {}; + }, + }; + }); +}; + +const patchCH = () => { + patch(perp.perp, 'clearingHouse', () => { + return { + createPositionDraft() { + return; + }, + async openPosition() { + return { + transaction: { + type: 2, + chainId: 42, + nonce: 115, + maxPriorityFeePerGas: { toString: () => '106000000000' }, + maxFeePerGas: { toString: () => '106000000000' }, + gasPrice: { toString: () => null }, + gasLimit: { toString: () => '100000' }, + to: '0x4F96Fe3b7A6Cf9725f59d353F723c1bDb64CA6Aa', + value: { toString: () => '0' }, + data: '0x095ea7b30000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', // noqa: mock + accessList: [], + hash: '0x75f98675a8f64dcf14927ccde9a1d59b67fa09b72cc2642ad055dae4074853d9', // noqa: mock + v: 0, + r: '0xbeb9aa40028d79b9fdab108fcef5de635457a05f3a254410414c095b02c64643', // noqa: mock + s: '0x5a1506fa4b7f8b4f3826d8648f27ebaa9c0ee4bd67f569414b8cd8884c073100', // noqa: mock + from: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + confirmations: 0, + }, + }; + }, + async getAccountValue() { + return new Big('10'); + }, + }; + }); +}; + +describe('verify market functions', () => { + it('available pairs should return a list of pairs', async () => { + patchMarket(); + + const pairs = perp.availablePairs(); + expect(pairs).toEqual(['AAVEUSD', 'WETHUSD', 'WBTCUSD']); + }); + + it('tickerSymbol should return prices', async () => { + patchMarket(); + + const prices = await perp.prices('AAVEUSD'); + expect(prices.markPrice.toString()).toEqual('1'); + expect(prices.indexPrice.toString()).toEqual('2'); + expect(prices.indexTwapPrice.toString()).toEqual('3'); + }); + + it('market state should return boolean', async () => { + patchMarket(); + + const state = await perp.isMarketActive('AAVEUSD'); + expect(state).toEqual(true); + }); +}); + +describe('verify perp position', () => { + it('getPositions should return data', async () => { + patchPosition(); + + const pos = await perp.getPositions('AAVEUSD'); + expect(pos).toHaveProperty('positionAmt'); + expect(pos).toHaveProperty('positionSide'); + expect(pos).toHaveProperty('unrealizedProfit'); + expect(pos).toHaveProperty('leverage'); + expect(pos).toHaveProperty('entryPrice'); + expect(pos).toHaveProperty('tickerSymbol'); + expect(pos).toHaveProperty('pendingFundingPayment'); + }); +}); + +describe('verify perp open/close position', () => { + it('openPosition should return', async () => { + patchCH(); + + const pos = await perp.openPosition(true, 'AAVEUSD', '0.01', '1/10'); + expect(pos.hash).toEqual( + '0x75f98675a8f64dcf14927ccde9a1d59b67fa09b72cc2642ad055dae4074853d9' // noqa: mock + ); + }); + + it('getAccountValue should return', async () => { + patchCH(); + + const bal = await perp.getAccountValue(); + expect(bal.toString()).toEqual('10'); + }); + + it('closePosition should throw', async () => { + patchPosition(); + patchCH(); + + await expect(async () => { + await perp.closePosition('AAVEUSD', '1/10'); + }).rejects.toThrow(new Error(`No active position on AAVEUSD.`)); + }); +}); + +describe('getAllowedSlippage', () => { + it('return value of string when not null', () => { + const allowedSlippage = perp.getAllowedSlippage('1/100'); + expect(allowedSlippage).toEqual(0.01); + }); + + it('return value from config when string is null', () => { + const allowedSlippage = perp.getAllowedSlippage(); + expect(allowedSlippage).toEqual(0.02); + }); + + it('return value from config when string is malformed', () => { + const allowedSlippage = perp.getAllowedSlippage('yo'); + expect(allowedSlippage).toEqual(0.02); + }); +}); diff --git a/test/chains/ethereum/sushiswap/sushiswap.routes.test.ts b/test/chains/ethereum/sushiswap/sushiswap.routes.test.ts new file mode 100644 index 0000000000..c3c950a138 --- /dev/null +++ b/test/chains/ethereum/sushiswap/sushiswap.routes.test.ts @@ -0,0 +1,669 @@ +import express from 'express'; +import { Express } from 'express-serve-static-core'; +import request from 'supertest'; +import { Ethereum } from '../../../../src/chains/ethereum/ethereum'; +import { Sushiswap } from '../../../../src/connectors/sushiswap/sushiswap'; +import { AmmRoutes } from '../../../../src/amm/amm.routes'; +import { patch, unpatch } from '../../../services/patch'; +import { gasCostInEthString } from '../../../../src/services/base'; +let app: Express; +let ethereum: Ethereum; +let sushiswap: Sushiswap; + +beforeAll(async () => { + app = express(); + app.use(express.json()); + ethereum = Ethereum.getInstance('kovan'); + await ethereum.init(); + sushiswap = Sushiswap.getInstance('ethereum', 'kovan'); + await sushiswap.init(); + app.use('/amm', AmmRoutes.router); +}); + +afterEach(() => { + unpatch(); +}); + +afterAll(async () => { + await ethereum.close(); +}); + +const address: string = '0xFaA12FD102FE8623C9299c72B03E45107F2772B5'; + +const patchGetWallet = () => { + patch(ethereum, 'getWallet', () => { + return { + address: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + }; + }); +}; + +const patchInit = () => { + patch(sushiswap, 'init', async () => { + return; + }); +}; + +const patchStoredTokenList = () => { + patch(ethereum, 'tokenList', () => { + return [ + { + chainId: 42, + name: 'WETH', + symbol: 'WETH', + address: '0xd0A1E359811322d97991E03f863a0C30C2cF029C', + decimals: 18, + }, + { + chainId: 42, + name: 'DAI', + symbol: 'DAI', + address: '0x4f96fe3b7a6cf9725f59d353f723c1bdb64ca6aa', + decimals: 18, + }, + ]; + }); +}; + +const patchGetTokenBySymbol = () => { + patch(ethereum, 'getTokenBySymbol', (symbol: string) => { + if (symbol === 'WETH') { + return { + chainId: 42, + name: 'WETH', + symbol: 'WETH', + address: '0xd0A1E359811322d97991E03f863a0C30C2cF029C', + decimals: 18, + }; + } else { + return { + chainId: 42, + name: 'DAI', + symbol: 'DAI', + address: '0x4f96fe3b7a6cf9725f59d353f723c1bdb64ca6aa', + decimals: 18, + }; + } + }); +}; + +const patchGetTokenByAddress = () => { + patch(sushiswap, 'getTokenByAddress', () => { + return { + chainId: 42, + name: 'WETH', + symbol: 'WETH', + address: '0xd0A1E359811322d97991E03f863a0C30C2cF029C', + decimals: 18, + }; + }); +}; + +const patchGasPrice = () => { + patch(ethereum, 'gasPrice', () => 100); +}; + +const patchEstimateBuyTrade = () => { + patch(sushiswap, 'estimateBuyTrade', () => { + return { + expectedAmount: { + toSignificant: () => 100, + }, + trade: { + executionPrice: { + invert: jest.fn().mockReturnValue({ + toSignificant: () => 100, + toFixed: () => '100', + }), + }, + }, + }; + }); +}; + +const patchEstimateSellTrade = () => { + patch(sushiswap, 'estimateSellTrade', () => { + return { + expectedAmount: { + toSignificant: () => 100, + }, + trade: { + executionPrice: { + toSignificant: () => 100, + toFixed: () => '100', + }, + }, + }; + }); +}; + +const patchGetNonce = () => { + patch(ethereum.nonceManager, 'getNonce', () => 21); +}; + +const patchExecuteTrade = () => { + patch(sushiswap, 'executeTrade', () => { + return { nonce: 21, hash: '000000000000000' }; + }); +}; + +describe('POST /amm/price', () => { + it('should return 200 for BUY', async () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patchGasPrice(); + patchEstimateBuyTrade(); + patchGetNonce(); + patchExecuteTrade(); + + await request(app) + .post(`/amm/price`) + .send({ + chain: 'ethereum', + network: 'kovan', + connector: 'sushiswap', + quote: 'DAI', + base: 'WETH', + amount: '10000', + side: 'BUY', + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body.amount).toEqual('10000.000000000000000000'); + expect(res.body.rawAmount).toEqual('10000000000000000000000'); + }); + }); + + it('should return 200 for SELL', async () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patchGasPrice(); + patchEstimateSellTrade(); + patchGetNonce(); + patchExecuteTrade(); + + await request(app) + .post(`/amm/price`) + .send({ + chain: 'ethereum', + network: 'kovan', + connector: 'sushiswap', + quote: 'DAI', + base: 'WETH', + amount: '10000', + side: 'SELL', + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body.amount).toEqual('10000.000000000000000000'); + expect(res.body.rawAmount).toEqual('10000000000000000000000'); + }); + }); + + it('should return 500 for unrecognized quote symbol', async () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + + await request(app) + .post(`/amm/price`) + .send({ + chain: 'ethereum', + network: 'kovan', + connector: 'sushiswap', + quote: 'DOGE', + base: 'WETH', + amount: '10000', + side: 'SELL', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 500 for unrecognized base symbol', async () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + + await request(app) + .post(`/amm/price`) + .send({ + chain: 'ethereum', + network: 'kovan', + connector: 'sushiswap', + quote: 'DAI', + base: 'SHIBA', + amount: '10000', + side: 'SELL', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 500 for unrecognized base symbol with decimals in the amount and SELL', async () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + + await request(app) + .post(`/amm/price`) + .send({ + chain: 'ethereum', + network: 'kovan', + connector: 'sushiswap', + quote: 'DAI', + base: 'SHIBA', + amount: '10.000', + side: 'SELL', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 500 for unrecognized base symbol with decimals in the amount and BUY', async () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + + await request(app) + .post(`/amm/price`) + .send({ + chain: 'ethereum', + network: 'kovan', + connector: 'sushiswap', + quote: 'DAI', + base: 'SHIBA', + amount: '10.000', + side: 'BUY', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 500 when the priceSwapIn operation fails', async () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patch(sushiswap, 'priceSwapIn', () => { + return 'error'; + }); + + await request(app) + .post(`/amm/price`) + .send({ + chain: 'ethereum', + network: 'kovan', + connector: 'sushiswap', + quote: 'DOGE', + base: 'WETH', + amount: '10000', + side: 'SELL', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 500 when the priceSwapOut operation fails', async () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patch(sushiswap, 'priceSwapOut', () => { + return 'error'; + }); + + await request(app) + .post(`/amm/price`) + .send({ + chain: 'ethereum', + network: 'kovan', + connector: 'sushiswap', + quote: 'DOGE', + base: 'WETH', + amount: '10000', + side: 'BUY', + }) + .set('Accept', 'application/json') + .expect(500); + }); +}); + +describe('POST /amm/trade', () => { + const patchForBuy = () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patchGasPrice(); + patchEstimateBuyTrade(); + patchGetNonce(); + patchExecuteTrade(); + }; + it('should return 200 for BUY', async () => { + patchForBuy(); + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'ethereum', + network: 'kovan', + connector: 'sushiswap', + quote: 'DAI', + base: 'WETH', + amount: '10000', + address, + side: 'BUY', + nonce: 21, + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body.nonce).toEqual(21); + }); + }); + + it('should return 200 for BUY without nonce parameter', async () => { + patchForBuy(); + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'ethereum', + network: 'kovan', + connector: 'sushiswap', + quote: 'DAI', + base: 'WETH', + amount: '10000', + address, + side: 'BUY', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + it('should return 200 for BUY with maxFeePerGas and maxPriorityFeePerGas', async () => { + patchForBuy(); + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'ethereum', + network: 'kovan', + connector: 'sushiswap', + quote: 'DAI', + base: 'WETH', + amount: '10000', + address, + side: 'BUY', + nonce: 21, + maxFeePerGas: '5000000000', + maxPriorityFeePerGas: '5000000000', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + const patchForSell = () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patchGasPrice(); + patchEstimateSellTrade(); + patchGetNonce(); + patchExecuteTrade(); + }; + it('should return 200 for SELL', async () => { + patchForSell(); + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'ethereum', + network: 'kovan', + connector: 'sushiswap', + quote: 'DAI', + base: 'WETH', + amount: '10000', + address, + side: 'SELL', + nonce: 21, + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body.nonce).toEqual(21); + }); + }); + + it('should return 200 for SELL with maxFeePerGas and maxPriorityFeePerGas', async () => { + patchForSell(); + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'ethereum', + network: 'kovan', + connector: 'sushiswap', + quote: 'DAI', + base: 'WETH', + amount: '10000', + address, + side: 'SELL', + nonce: 21, + maxFeePerGas: '5000000000', + maxPriorityFeePerGas: '5000000000', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + it('should return 200 for SELL with limitPrice', async () => { + patchForSell(); + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'ethereum', + network: 'kovan', + connector: 'sushiswap', + quote: 'DAI', + base: 'WETH', + amount: '10000', + address, + side: 'SELL', + nonce: 21, + limitPrice: '9', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + it('should return 200 for BUY with limitPrice', async () => { + patchForBuy(); + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'ethereum', + network: 'kovan', + connector: 'sushiswap', + quote: 'DAI', + base: 'WETH', + amount: '10000', + address, + side: 'BUY', + nonce: 21, + limitPrice: '999999999999999999999', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + it('should return 500 for BUY with price smaller than limitPrice', async () => { + patchForBuy(); + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'ethereum', + network: 'kovan', + connector: 'sushiswap', + quote: 'DAI', + base: 'WETH', + amount: '10000', + address, + side: 'BUY', + nonce: 21, + limitPrice: '9', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 500 for SELL with price higher than limitPrice', async () => { + patchForSell(); + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'ethereum', + network: 'kovan', + connector: 'sushiswap', + quote: 'DAI', + base: 'WETH', + amount: '10000', + address, + side: 'SELL', + nonce: 21, + limitPrice: '99999999999', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 404 when parameters are incorrect', async () => { + patchInit(); + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'ethereum', + network: 'kovan', + connector: 'sushiswap', + quote: 'DAI', + base: 'WETH', + amount: 10000, + address: 'da8', + side: 'comprar', + }) + .set('Accept', 'application/json') + .expect(404); + }); + it('should return 500 when the priceSwapIn operation fails', async () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patch(sushiswap, 'priceSwapIn', () => { + return 'error'; + }); + + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'ethereum', + network: 'kovan', + connector: 'sushiswap', + quote: 'DAI', + base: 'WETH', + amount: '10000', + address, + side: 'SELL', + nonce: 21, + maxFeePerGas: '5000000000', + maxPriorityFeePerGas: '5000000000', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 500 when the priceSwapOut operation fails', async () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patch(sushiswap, 'priceSwapOut', () => { + return 'error'; + }); + + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'ethereum', + network: 'kovan', + connector: 'sushiswap', + quote: 'DAI', + base: 'WETH', + amount: '10000', + address, + side: 'BUY', + nonce: 21, + maxFeePerGas: '5000000000', + maxPriorityFeePerGas: '5000000000', + }) + .set('Accept', 'application/json') + .expect(500); + }); +}); + +describe('POST /amm/estimateGas', () => { + it('should return 200 for valid connector', async () => { + patchInit(); + patchGasPrice(); + + await request(app) + .post('/amm/estimateGas') + .send({ + chain: 'ethereum', + network: 'kovan', + connector: 'sushiswap', + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body.network).toEqual('kovan'); + expect(res.body.gasPrice).toEqual(100); + expect(res.body.gasCost).toEqual( + gasCostInEthString(100, sushiswap.gasLimitEstimate) + ); + }); + }); + + it('should return 500 for invalid connector', async () => { + patchInit(); + patchGasPrice(); + + await request(app) + .post('/amm/estimateGas') + .send({ + chain: 'ethereum', + network: 'kovan', + connector: 'pangolin', + }) + .set('Accept', 'application/json') + .expect(500); + }); +}); diff --git a/test/chains/ethereum/sushiswap/sushiswap.test.ts b/test/chains/ethereum/sushiswap/sushiswap.test.ts new file mode 100644 index 0000000000..e93b3a6da1 --- /dev/null +++ b/test/chains/ethereum/sushiswap/sushiswap.test.ts @@ -0,0 +1,135 @@ +jest.useFakeTimers(); +import { Sushiswap } from '../../../../src/connectors/sushiswap/sushiswap'; +import { patch, unpatch } from '../../../services/patch'; +import { UniswapishPriceError as SushiswapishPriceError } from '../../../../src/services/error-handler'; +import { + Token, + CurrencyAmount, + Trade, + Pair, + TradeType, + Route, +} from '@sushiswap/sdk'; +import { BigNumber } from 'ethers'; +import { Ethereum } from '../../../../src/chains/ethereum/ethereum'; +import { patchEVMNonceManager } from '../../../evm.nonce.mock'; + +let ethereum: Ethereum; +let sushiswap: Sushiswap; + +const WETH = new Token( + 3, + '0xd0A1E359811322d97991E03f863a0C30C2cF029C', + 18, + 'WETH' +); +const DAI = new Token( + 3, + '0x4f96fe3b7a6cf9725f59d353f723c1bdb64ca6aa', + 18, + 'DAI' +); + +beforeAll(async () => { + ethereum = Ethereum.getInstance('kovan'); + patchEVMNonceManager(ethereum.nonceManager); + await ethereum.init(); + + sushiswap = Sushiswap.getInstance('ethereum', 'kovan'); + await sushiswap.init(); +}); + +beforeEach(() => { + patchEVMNonceManager(ethereum.nonceManager); +}); + +afterEach(() => { + unpatch(); +}); + +afterAll(async () => { + await ethereum.close(); +}); + +const patchFetchData = () => { + patch(sushiswap, 'fetchData', () => { + return new Pair( + CurrencyAmount.fromRawAmount(WETH, '2000000000000000000'), + CurrencyAmount.fromRawAmount(DAI, '1000000000000000000') + ); + }); +}; +const patchTrade = (key: string, error?: Error) => { + patch(Trade, key, () => { + if (error) return []; + const WETH_DAI = new Pair( + CurrencyAmount.fromRawAmount(WETH, '2000000000000000000'), + CurrencyAmount.fromRawAmount(DAI, '1000000000000000000') + ); + const DAI_TO_WETH = new Route([WETH_DAI], DAI, WETH); + return [ + new Trade( + DAI_TO_WETH, + CurrencyAmount.fromRawAmount(DAI, '1000000000000000'), + TradeType.EXACT_INPUT + ), + ]; + }); +}; + +describe('verify Sushiswap estimateSellTrade', () => { + it('Should return an ExpectedTrade when available', async () => { + patchFetchData(); + patchTrade('bestTradeExactIn'); + + const expectedTrade = await sushiswap.estimateSellTrade( + WETH, + DAI, + BigNumber.from(1) + ); + expect(expectedTrade).toHaveProperty('trade'); + expect(expectedTrade).toHaveProperty('expectedAmount'); + }); + + it('Should throw an error if no pair is available', async () => { + patchFetchData(); + patchTrade('bestTradeExactIn', new Error('error getting trade')); + + await expect(async () => { + await sushiswap.estimateSellTrade(WETH, DAI, BigNumber.from(1)); + }).rejects.toThrow(SushiswapishPriceError); + }); +}); + +describe('verify sushiswap estimateBuyTrade', () => { + it('Should return an ExpectedTrade when available', async () => { + patchFetchData(); + patchTrade('bestTradeExactOut'); + + const expectedTrade = await sushiswap.estimateBuyTrade( + WETH, + DAI, + BigNumber.from(1) + ); + expect(expectedTrade).toHaveProperty('trade'); + expect(expectedTrade).toHaveProperty('expectedAmount'); + }); + + it('Should return an error if no pair is available', async () => { + patchFetchData(); + patchTrade('bestTradeExactOut', new Error('error getting trade')); + + await expect(async () => { + await sushiswap.estimateBuyTrade(WETH, DAI, BigNumber.from(1)); + }).rejects.toThrow(SushiswapishPriceError); + }); +}); + +describe('verify sushiswap Token List', () => { + it('Should return a token by address', async () => { + const token = sushiswap.getTokenByAddress( + '0x4f96fe3b7a6cf9725f59d353f723c1bdb64ca6aa' + ); + expect(token).toBeInstanceOf(Token); + }); +}); diff --git a/test/chains/ethereum/uniswap/uniswap.lp.routes.test.ts b/test/chains/ethereum/uniswap/uniswap.lp.routes.test.ts new file mode 100644 index 0000000000..7b6d930c95 --- /dev/null +++ b/test/chains/ethereum/uniswap/uniswap.lp.routes.test.ts @@ -0,0 +1,442 @@ +import express from 'express'; +import { Express } from 'express-serve-static-core'; +import request from 'supertest'; +import { Ethereum } from '../../../../src/chains/ethereum/ethereum'; +import { UniswapLP } from '../../../../src/connectors/uniswap/uniswap.lp'; +import { AmmLiquidityRoutes } from '../../../../src/amm/amm.routes'; +import { patch, unpatch } from '../../../services/patch'; +import { patchEVMNonceManager } from '../../../evm.nonce.mock'; + +let app: Express; +let ethereum: Ethereum; +let uniswap: UniswapLP; + +beforeAll(async () => { + app = express(); + app.use(express.json()); + ethereum = Ethereum.getInstance('kovan'); + patchEVMNonceManager(ethereum.nonceManager); + await ethereum.init(); + + uniswap = UniswapLP.getInstance('ethereum', 'kovan'); + await uniswap.init(); + app.use('/amm/liquidity', AmmLiquidityRoutes.router); +}); + +beforeEach(() => { + patchEVMNonceManager(ethereum.nonceManager); +}); + +afterEach(() => { + unpatch(); +}); + +afterAll(async () => { + await ethereum.close(); +}); + +const address: string = '0xFaA12FD102FE8623C9299c72B03E45107F2772B5'; + +const patchGetWallet = () => { + patch(ethereum, 'getWallet', () => { + return { + address: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + }; + }); +}; + +const patchInit = () => { + patch(uniswap, 'init', async () => { + return; + }); +}; + +const patchStoredTokenList = () => { + patch(ethereum, 'tokenList', () => { + return [ + { + chainId: 42, + name: 'WETH', + symbol: 'WETH', + address: '0xd0A1E359811322d97991E03f863a0C30C2cF029C', + decimals: 18, + }, + { + chainId: 42, + name: 'DAI', + symbol: 'DAI', + address: '0x4f96fe3b7a6cf9725f59d353f723c1bdb64ca6aa', + decimals: 18, + }, + ]; + }); +}; + +const patchGetTokenBySymbol = () => { + patch(ethereum, 'getTokenBySymbol', (symbol: string) => { + if (symbol === 'WETH') { + return { + chainId: 42, + name: 'WETH', + symbol: 'WETH', + address: '0xd0A1E359811322d97991E03f863a0C30C2cF029C', + decimals: 18, + }; + } else { + return { + chainId: 42, + name: 'DAI', + symbol: 'DAI', + address: '0x4f96fe3b7a6cf9725f59d353f723c1bdb64ca6aa', + decimals: 18, + }; + } + }); +}; + +const patchGetTokenByAddress = () => { + patch(uniswap, 'getTokenByAddress', () => { + return { + chainId: 42, + name: 'WETH', + symbol: 'WETH', + address: '0xd0A1E359811322d97991E03f863a0C30C2cF029C', + decimals: 18, + }; + }); +}; + +const patchGasPrice = () => { + patch(ethereum, 'gasPrice', () => 100); +}; + +const patchGetNonce = () => { + patch(ethereum.nonceManager, 'getNonce', () => 21); +}; + +const patchAddPosition = () => { + patch(uniswap, 'addPosition', () => { + return { nonce: 21, hash: '000000000000000' }; + }); +}; + +const patchRemovePosition = () => { + patch(uniswap, 'reducePosition', () => { + return { nonce: 21, hash: '000000000000000' }; + }); +}; + +const patchCollectFees = () => { + patch(uniswap, 'collectFees', () => { + return { nonce: 21, hash: '000000000000000' }; + }); +}; + +const patchPosition = () => { + patch(uniswap, 'getPosition', () => { + return { + token0: 'DAI', + token1: 'WETH', + fee: 300, + lowerPrice: '1', + upperPrice: '5', + amount0: '1', + amount1: '1', + unclaimedToken0: '1', + unclaimedToken1: '1', + }; + }); +}; + +describe('POST /liquidity/add', () => { + it('should return 200 when all parameter are OK', async () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patchGasPrice(); + patchAddPosition(); + patchGetNonce(); + + await request(app) + .post(`/amm/liquidity/add`) + .send({ + address: address, + token0: 'DAI', + token1: 'WETH', + amount0: '1', + amount1: '1', + fee: 'LOW', + lowerPrice: '1', + upperPrice: '5', + chain: 'ethereum', + network: 'kovan', + connector: 'uniswapLP', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + it('should return 500 for unrecognized token0 symbol', async () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + + await request(app) + .post(`/amm/liquidity/add`) + .send({ + address: address, + token0: 'DOGE', + token1: 'WETH', + amount0: '1', + amount1: '1', + fee: 'LOW', + lowerPrice: '1', + upperPrice: '5', + chain: 'ethereum', + network: 'kovan', + connector: 'uniswapLP', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 404 for invalid fee tier', async () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + + await request(app) + .post(`/amm/liquidity/add`) + .send({ + address: address, + token0: 'DAI', + token1: 'WETH', + amount0: '1', + amount1: '1', + fee: 300, + lowerPrice: '1', + upperPrice: '5', + chain: 'ethereum', + network: 'kovan', + connector: 'uniswapLP', + }) + .set('Accept', 'application/json') + .expect(404); + }); + + it('should return 500 when the helper operation fails', async () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patch(uniswap, 'addPositionHelper', () => { + return 'error'; + }); + + await request(app) + .post(`/amm/liquidity/add`) + .send({ + address: address, + token0: 'DAI', + token1: 'WETH', + amount0: '1', + amount1: '1', + fee: 'LOW', + lowerPrice: '1', + upperPrice: '5', + chain: 'ethereum', + network: 'kovan', + connector: 'uniswapLP', + }) + .set('Accept', 'application/json') + .expect(500); + }); +}); + +describe('POST /liquidity/remove', () => { + const patchForBuy = () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patchGasPrice(); + patchRemovePosition(); + patchGetNonce(); + }; + it('should return 200 when all parameter are OK', async () => { + patchForBuy(); + await request(app) + .post(`/amm/liquidity/remove`) + .send({ + address: address, + tokenId: 2732, + chain: 'ethereum', + network: 'kovan', + connector: 'uniswapLP', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + it('should return 404 when the tokenId is invalid', async () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + + await request(app) + .post(`/amm/liquidity/remove`) + .send({ + address: address, + tokenId: 'Invalid', + chain: 'ethereum', + network: 'kovan', + connector: 'uniswapLP', + }) + .set('Accept', 'application/json') + .expect(404); + }); +}); + +describe('POST /liquidity/collect_fees', () => { + const patchForBuy = () => { + patchGetWallet(); + patchInit(); + patchGasPrice(); + patchCollectFees(); + patchGetNonce(); + }; + it('should return 200 when all parameter are OK', async () => { + patchForBuy(); + await request(app) + .post(`/amm/liquidity/collect_fees`) + .send({ + address: address, + tokenId: 2732, + chain: 'ethereum', + network: 'kovan', + connector: 'uniswapLP', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + it('should return 404 when the tokenId is invalid', async () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + + await request(app) + .post(`/amm/liquidity/collect_fees`) + .send({ + address: address, + tokenId: 'Invalid', + chain: 'ethereum', + network: 'kovan', + connector: 'uniswapLP', + }) + .set('Accept', 'application/json') + .expect(404); + }); +}); + +describe('POST /liquidity/position', () => { + it('should return 200 when all parameter are OK', async () => { + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patchPosition(); + + await request(app) + .post(`/amm/liquidity/position`) + .send({ + tokenId: 2732, + chain: 'ethereum', + network: 'kovan', + connector: 'uniswapLP', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + it('should return 404 when the tokenId is invalid', async () => { + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + + await request(app) + .post(`/amm/liquidity/position`) + .send({ + tokenId: 'Invalid', + chain: 'ethereum', + network: 'kovan', + connector: 'uniswapLP', + }) + .set('Accept', 'application/json') + .expect(404); + }); +}); + +describe('POST /liquidity/price', () => { + const patchForBuy = () => { + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patch(uniswap, 'poolPrice', () => { + return ['100', '105']; + }); + }; + it('should return 200 when all parameter are OK', async () => { + patchForBuy(); + await request(app) + .post(`/amm/liquidity/price`) + .send({ + token0: 'DAI', + token1: 'WETH', + fee: 'LOW', + period: 120, + interval: 60, + chain: 'ethereum', + network: 'kovan', + connector: 'uniswapLP', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + it('should return 404 when the fee is invalid', async () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + + await request(app) + .post(`/amm/liquidity/price`) + .send({ + token0: 'DAI', + token1: 'WETH', + fee: 11, + period: 120, + interval: 60, + chain: 'ethereum', + network: 'kovan', + connector: 'uniswapLP', + }) + .set('Accept', 'application/json') + .expect(404); + }); +}); diff --git a/test/chains/ethereum/uniswap/uniswap.lp.test.ts b/test/chains/ethereum/uniswap/uniswap.lp.test.ts new file mode 100644 index 0000000000..08448a3a6c --- /dev/null +++ b/test/chains/ethereum/uniswap/uniswap.lp.test.ts @@ -0,0 +1,285 @@ +jest.useFakeTimers(); +import { Token } from '@uniswap/sdk-core'; +import * as uniV3 from '@uniswap/v3-sdk'; +import { BigNumber, Transaction, Wallet } from 'ethers'; +import { Ethereum } from '../../../../src/chains/ethereum/ethereum'; +import { UniswapLP } from '../../../../src/connectors/uniswap/uniswap.lp'; +import { patch, unpatch } from '../../../services/patch'; +import { patchEVMNonceManager } from '../../../evm.nonce.mock'; +let ethereum: Ethereum; +let uniswapLP: UniswapLP; +let wallet: Wallet; + +const WETH = new Token( + 42, + '0xd0A1E359811322d97991E03f863a0C30C2cF029C', + 18, + 'WETH' +); + +const DAI = new Token( + 42, + '0x4f96fe3b7a6cf9725f59d353f723c1bdb64ca6aa', + 18, + 'DAI' +); + +const USDC = new Token( + 42, + '0x2F375e94FC336Cdec2Dc0cCB5277FE59CBf1cAe5', + 18, + 'DAI' +); + +const TX = { + type: 2, + chainId: 42, + nonce: 115, + maxPriorityFeePerGas: { toString: () => '106000000000' }, + maxFeePerGas: { toString: () => '106000000000' }, + gasPrice: { toString: () => null }, + gasLimit: { toString: () => '100000' }, + to: '0x4F96Fe3b7A6Cf9725f59d353F723c1bDb64CA6Aa', + value: { toString: () => '0' }, + data: '0x095ea7b30000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', // noqa: mock + accessList: [], + hash: '0x75f98675a8f64dcf14927ccde9a1d59b67fa09b72cc2642ad055dae4074853d9', // noqa: mock + v: 0, + r: '0xbeb9aa40028d79b9fdab108fcef5de635457a05f3a254410414c095b02c64643', // noqa: mock + s: '0x5a1506fa4b7f8b4f3826d8648f27ebaa9c0ee4bd67f569414b8cd8884c073100', // noqa: mock + from: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + confirmations: 0, +}; + +const POOL_SQRT_RATIO_START = uniV3.encodeSqrtRatioX96(100e6, 100e18); + +const POOL_TICK_CURRENT = uniV3.TickMath.getTickAtSqrtRatio( + POOL_SQRT_RATIO_START +); + +const DAI_USDC_POOL = new uniV3.Pool( + DAI, + USDC, + 500, + POOL_SQRT_RATIO_START, + 0, + POOL_TICK_CURRENT, + [] +); + +beforeAll(async () => { + ethereum = Ethereum.getInstance('kovan'); + patchEVMNonceManager(ethereum.nonceManager); + await ethereum.init(); + + wallet = new Wallet( + '0000000000000000000000000000000000000000000000000000000000000002', // noqa: mock + ethereum.provider + ); + uniswapLP = UniswapLP.getInstance('ethereum', 'kovan'); + await uniswapLP.init(); +}); + +beforeEach(() => { + patchEVMNonceManager(ethereum.nonceManager); +}); + +afterEach(() => { + unpatch(); +}); + +afterAll(async () => { + await ethereum.close(); +}); + +const patchPoolState = () => { + patch(uniswapLP, 'getPoolContract', () => { + return { + liquidity() { + return DAI_USDC_POOL.liquidity; + }, + slot0() { + return [ + DAI_USDC_POOL.sqrtRatioX96, + DAI_USDC_POOL.tickCurrent, + 0, + 1, + 1, + 0, + true, + ]; + }, + ticks() { + return ['-118445039955967015140', '118445039955967015140']; + }, + }; + }); +}; + +const patchAlphaRouter = () => { + patch(uniswapLP.alphaRouter, 'routeToRatio', () => { + return { status: 3 }; + }); +}; + +const patchContract = () => { + patch(uniswapLP, 'getContract', () => { + return { + estimateGas: { + multicall() { + return BigNumber.from(5); + }, + }, + positions() { + return { + token0: WETH.address, + token1: USDC.address, + fee: 500, + tickLower: 0, + tickUpper: 23030, + liquidity: '6025055903594410671025', + }; + }, + multicall() { + return TX; + }, + collect() { + return TX; + }, + }; + }); +}; + +const patchWallet = () => { + patch(wallet, 'sendTransaction', () => { + return TX; + }); +}; + +describe('verify UniswapLP Nft functions', () => { + it('Should return correct contract addresses', async () => { + expect(uniswapLP.router).toEqual( + '0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45' + ); + expect(uniswapLP.nftManager).toEqual( + '0xC36442b4a4522E871399CD717aBDD847Ab11FE88' + ); + }); + + it('Should return correct contract abi', async () => { + expect(Array.isArray(uniswapLP.routerAbi)).toEqual(true); + expect(Array.isArray(uniswapLP.nftAbi)).toEqual(true); + expect(Array.isArray(uniswapLP.poolAbi)).toEqual(true); + }); + + it('addPositionHelper returns calldata and value', async () => { + patchPoolState(); + patchAlphaRouter(); + + const callData = await uniswapLP.addPositionHelper( + wallet, + DAI, + WETH, + '10', + '10', + 500, + 1, + 10 + ); + expect(callData).toHaveProperty('calldata'); + expect(callData).toHaveProperty('value'); + }); + + it('reducePositionHelper returns calldata and value', async () => { + patchPoolState(); + patchContract(); + + const callData = await uniswapLP.reducePositionHelper(wallet, 1, 100); + expect(callData).toHaveProperty('calldata'); + expect(callData).toHaveProperty('value'); + }); + + it('basic functions should work', async () => { + patchContract(); + patchPoolState(); + + expect(uniswapLP.ready()).toEqual(true); + expect(uniswapLP.gasLimitEstimate).toBeGreaterThan(0); + expect(typeof uniswapLP.getContract('nft', ethereum.provider)).toEqual( + 'object' + ); + expect( + typeof uniswapLP.getPoolContract( + '0x4F96Fe3b7A6Cf9725f59d353F723c1bDb64CA6Aa', + wallet + ) + ).toEqual('object'); + }); + + it('generateOverrides returns overrides correctly', async () => { + const overrides = uniswapLP.generateOverrides( + 1, + 2, + 3, + BigNumber.from(4), + BigNumber.from(5), + '6' + ); + expect(overrides.gasLimit).toEqual(BigNumber.from('1')); + expect(overrides.gasPrice).toBeUndefined(); + expect(overrides.nonce).toEqual(BigNumber.from(3)); + expect(overrides.maxFeePerGas as BigNumber).toEqual(BigNumber.from(4)); + expect(overrides.maxPriorityFeePerGas as BigNumber).toEqual( + BigNumber.from(5) + ); + expect(overrides.value).toEqual(BigNumber.from('6')); + }); + + it('reducePosition should work', async () => { + patchPoolState(); + patchContract(); + + const reduceTx = (await uniswapLP.reducePosition( + wallet, + 1, + 100, + 50000, + 10 + )) as Transaction; + expect(reduceTx.hash).toEqual( + '0x75f98675a8f64dcf14927ccde9a1d59b67fa09b72cc2642ad055dae4074853d9' // noqa: mock + ); + }); + + it('addPosition should work', async () => { + patchPoolState(); + patchWallet(); + patchAlphaRouter(); + + const addTx = await uniswapLP.addPosition( + wallet, + DAI, + WETH, + '10', + '10', + 500, + 1, + 10, + 0, + 1, + 1 + ); + expect(addTx.hash).toEqual( + '0x75f98675a8f64dcf14927ccde9a1d59b67fa09b72cc2642ad055dae4074853d9' // noqa: mock + ); + }); + + it('collectFees should work', async () => { + patchContract(); + + const collectTx = (await uniswapLP.collectFees(wallet, 1)) as Transaction; + expect(collectTx.hash).toEqual( + '0x75f98675a8f64dcf14927ccde9a1d59b67fa09b72cc2642ad055dae4074853d9' // noqa: mock + ); + }); +}); diff --git a/test/chains/ethereum/uniswap/uniswap.routes.test.ts b/test/chains/ethereum/uniswap/uniswap.routes.test.ts new file mode 100644 index 0000000000..e16539c040 --- /dev/null +++ b/test/chains/ethereum/uniswap/uniswap.routes.test.ts @@ -0,0 +1,678 @@ +import express from 'express'; +import { Express } from 'express-serve-static-core'; +import request from 'supertest'; +import { Ethereum } from '../../../../src/chains/ethereum/ethereum'; +import { Uniswap } from '../../../../src/connectors/uniswap/uniswap'; +import { AmmRoutes } from '../../../../src/amm/amm.routes'; +import { patch, unpatch } from '../../../services/patch'; +import { gasCostInEthString } from '../../../../src/services/base'; +import { patchEVMNonceManager } from '../../../evm.nonce.mock'; +let app: Express; +let ethereum: Ethereum; +let uniswap: Uniswap; + +beforeAll(async () => { + app = express(); + app.use(express.json()); + + ethereum = Ethereum.getInstance('kovan'); + patchEVMNonceManager(ethereum.nonceManager); + await ethereum.init(); + + uniswap = Uniswap.getInstance('ethereum', 'kovan'); + await uniswap.init(); + + app.use('/amm', AmmRoutes.router); +}); + +beforeEach(() => { + patchEVMNonceManager(ethereum.nonceManager); +}); + +afterEach(() => { + unpatch(); +}); + +afterAll(async () => { + await ethereum.close(); +}); + +const address: string = '0xFaA12FD102FE8623C9299c72B03E45107F2772B5'; + +const patchGetWallet = () => { + patch(ethereum, 'getWallet', () => { + return { + address: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + }; + }); +}; + +const patchInit = () => { + patch(uniswap, 'init', async () => { + return; + }); +}; + +const patchStoredTokenList = () => { + patch(ethereum, 'tokenList', () => { + return [ + { + chainId: 42, + name: 'WETH', + symbol: 'WETH', + address: '0xd0A1E359811322d97991E03f863a0C30C2cF029C', + decimals: 18, + }, + { + chainId: 42, + name: 'DAI', + symbol: 'DAI', + address: '0x4f96fe3b7a6cf9725f59d353f723c1bdb64ca6aa', + decimals: 18, + }, + ]; + }); +}; + +const patchGetTokenBySymbol = () => { + patch(ethereum, 'getTokenBySymbol', (symbol: string) => { + if (symbol === 'WETH') { + return { + chainId: 42, + name: 'WETH', + symbol: 'WETH', + address: '0xd0A1E359811322d97991E03f863a0C30C2cF029C', + decimals: 18, + }; + } else { + return { + chainId: 42, + name: 'DAI', + symbol: 'DAI', + address: '0x4f96fe3b7a6cf9725f59d353f723c1bdb64ca6aa', + decimals: 18, + }; + } + }); +}; + +const patchGetTokenByAddress = () => { + patch(uniswap, 'getTokenByAddress', () => { + return { + chainId: 42, + name: 'WETH', + symbol: 'WETH', + address: '0xd0A1E359811322d97991E03f863a0C30C2cF029C', + decimals: 18, + }; + }); +}; + +const patchGasPrice = () => { + patch(ethereum, 'gasPrice', () => 100); +}; + +const patchEstimateBuyTrade = () => { + patch(uniswap, 'estimateBuyTrade', () => { + return { + expectedAmount: { + toSignificant: () => 100, + }, + trade: { + executionPrice: { + invert: jest.fn().mockReturnValue({ + toSignificant: () => 100, + toFixed: () => '100', + }), + }, + }, + }; + }); +}; + +const patchEstimateSellTrade = () => { + patch(uniswap, 'estimateSellTrade', () => { + return { + expectedAmount: { + toSignificant: () => 100, + }, + trade: { + executionPrice: { + toSignificant: () => 100, + toFixed: () => '100', + }, + }, + }; + }); +}; + +const patchGetNonce = () => { + patch(ethereum.nonceManager, 'getNonce', () => 21); +}; + +const patchExecuteTrade = () => { + patch(uniswap, 'executeTrade', () => { + return { nonce: 21, hash: '000000000000000' }; + }); +}; + +describe('POST /amm/price', () => { + it('should return 200 for BUY', async () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patchGasPrice(); + patchEstimateBuyTrade(); + patchGetNonce(); + patchExecuteTrade(); + + await request(app) + .post(`/amm/price`) + .send({ + chain: 'ethereum', + network: 'kovan', + connector: 'uniswap', + quote: 'DAI', + base: 'WETH', + amount: '10000', + side: 'BUY', + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body.amount).toEqual('10000.000000000000000000'); + expect(res.body.rawAmount).toEqual('10000000000000000000000'); + }); + }); + + it('should return 200 for SELL', async () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patchGasPrice(); + patchEstimateSellTrade(); + patchGetNonce(); + patchExecuteTrade(); + + await request(app) + .post(`/amm/price`) + .send({ + chain: 'ethereum', + network: 'kovan', + connector: 'uniswap', + quote: 'DAI', + base: 'WETH', + amount: '10000', + side: 'SELL', + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body.amount).toEqual('10000.000000000000000000'); + expect(res.body.rawAmount).toEqual('10000000000000000000000'); + }); + }); + + it('should return 500 for unrecognized quote symbol', async () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + + await request(app) + .post(`/amm/price`) + .send({ + chain: 'ethereum', + network: 'kovan', + connector: 'uniswap', + quote: 'DOGE', + base: 'WETH', + amount: '10000', + side: 'SELL', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 500 for unrecognized base symbol', async () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + + await request(app) + .post(`/amm/price`) + .send({ + chain: 'ethereum', + network: 'kovan', + connector: 'uniswap', + quote: 'DAI', + base: 'SHIBA', + amount: '10000', + side: 'SELL', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 500 for unrecognized base symbol with decimals in the amount and SELL', async () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + + await request(app) + .post(`/amm/price`) + .send({ + chain: 'ethereum', + network: 'kovan', + connector: 'uniswap', + quote: 'DAI', + base: 'SHIBA', + amount: '10.000', + side: 'SELL', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 500 for unrecognized base symbol with decimals in the amount and BUY', async () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + + await request(app) + .post(`/amm/price`) + .send({ + chain: 'ethereum', + network: 'kovan', + connector: 'uniswap', + quote: 'DAI', + base: 'SHIBA', + amount: '10.000', + side: 'BUY', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 500 when the priceSwapIn operation fails', async () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patch(uniswap, 'priceSwapIn', () => { + return 'error'; + }); + + await request(app) + .post(`/amm/price`) + .send({ + chain: 'ethereum', + network: 'kovan', + connector: 'uniswap', + quote: 'DOGE', + base: 'WETH', + amount: '10000', + side: 'SELL', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 500 when the priceSwapOut operation fails', async () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patch(uniswap, 'priceSwapOut', () => { + return 'error'; + }); + + await request(app) + .post(`/amm/price`) + .send({ + chain: 'ethereum', + network: 'kovan', + connector: 'uniswap', + quote: 'DOGE', + base: 'WETH', + amount: '10000', + side: 'BUY', + }) + .set('Accept', 'application/json') + .expect(500); + }); +}); + +describe('POST /amm/trade', () => { + const patchForBuy = () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patchGasPrice(); + patchEstimateBuyTrade(); + patchGetNonce(); + patchExecuteTrade(); + }; + it('should return 200 for BUY', async () => { + patchForBuy(); + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'ethereum', + network: 'kovan', + connector: 'uniswap', + quote: 'DAI', + base: 'WETH', + amount: '10000', + address, + side: 'BUY', + nonce: 21, + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body.nonce).toEqual(21); + }); + }); + + it('should return 200 for BUY without nonce parameter', async () => { + patchForBuy(); + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'ethereum', + network: 'kovan', + connector: 'uniswap', + quote: 'DAI', + base: 'WETH', + amount: '10000', + address, + side: 'BUY', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + it('should return 200 for BUY with maxFeePerGas and maxPriorityFeePerGas', async () => { + patchForBuy(); + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'ethereum', + network: 'kovan', + connector: 'uniswap', + quote: 'DAI', + base: 'WETH', + amount: '10000', + address, + side: 'BUY', + nonce: 21, + maxFeePerGas: '5000000000', + maxPriorityFeePerGas: '5000000000', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + const patchForSell = () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patchGasPrice(); + patchEstimateSellTrade(); + patchGetNonce(); + patchExecuteTrade(); + }; + it('should return 200 for SELL', async () => { + patchForSell(); + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'ethereum', + network: 'kovan', + connector: 'uniswap', + quote: 'DAI', + base: 'WETH', + amount: '10000', + address, + side: 'SELL', + nonce: 21, + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body.nonce).toEqual(21); + }); + }); + + it('should return 200 for SELL with maxFeePerGas and maxPriorityFeePerGas', async () => { + patchForSell(); + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'ethereum', + network: 'kovan', + connector: 'uniswap', + quote: 'DAI', + base: 'WETH', + amount: '10000', + address, + side: 'SELL', + nonce: 21, + maxFeePerGas: '5000000000', + maxPriorityFeePerGas: '5000000000', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + it('should return 200 for SELL with limitPrice', async () => { + patchForSell(); + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'ethereum', + network: 'kovan', + connector: 'uniswap', + quote: 'DAI', + base: 'WETH', + amount: '10000', + address, + side: 'SELL', + nonce: 21, + limitPrice: '9', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + it('should return 200 for BUY with limitPrice', async () => { + patchForBuy(); + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'ethereum', + network: 'kovan', + connector: 'uniswap', + quote: 'DAI', + base: 'WETH', + amount: '10000', + address, + side: 'BUY', + nonce: 21, + limitPrice: '999999999999999999999', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + it('should return 500 for BUY with price smaller than limitPrice', async () => { + patchForBuy(); + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'ethereum', + network: 'kovan', + connector: 'uniswap', + quote: 'DAI', + base: 'WETH', + amount: '10000', + address, + side: 'BUY', + nonce: 21, + limitPrice: '9', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 500 for SELL with price higher than limitPrice', async () => { + patchForSell(); + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'ethereum', + network: 'kovan', + connector: 'uniswap', + quote: 'DAI', + base: 'WETH', + amount: '10000', + address, + side: 'SELL', + nonce: 21, + limitPrice: '99999999999', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 404 when parameters are incorrect', async () => { + patchInit(); + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'ethereum', + network: 'kovan', + connector: 'uniswap', + quote: 'DAI', + base: 'WETH', + amount: 10000, + address: 'da8', + side: 'comprar', + }) + .set('Accept', 'application/json') + .expect(404); + }); + it('should return 500 when the priceSwapIn operation fails', async () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patch(uniswap, 'priceSwapIn', () => { + return 'error'; + }); + + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'ethereum', + network: 'kovan', + connector: 'uniswap', + quote: 'DAI', + base: 'WETH', + amount: '10000', + address, + side: 'SELL', + nonce: 21, + maxFeePerGas: '5000000000', + maxPriorityFeePerGas: '5000000000', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 500 when the priceSwapOut operation fails', async () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patch(uniswap, 'priceSwapOut', () => { + return 'error'; + }); + + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'ethereum', + network: 'kovan', + connector: 'uniswap', + quote: 'DAI', + base: 'WETH', + amount: '10000', + address, + side: 'BUY', + nonce: 21, + maxFeePerGas: '5000000000', + maxPriorityFeePerGas: '5000000000', + }) + .set('Accept', 'application/json') + .expect(500); + }); +}); + +describe('POST /amm/estimateGas', () => { + it('should return 200 for valid connector', async () => { + patchInit(); + patchGasPrice(); + + await request(app) + .post('/amm/estimateGas') + .send({ + chain: 'ethereum', + network: 'kovan', + connector: 'uniswap', + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body.network).toEqual('kovan'); + expect(res.body.gasPrice).toEqual(100); + expect(res.body.gasCost).toEqual( + gasCostInEthString(100, uniswap.gasLimitEstimate) + ); + }); + }); + + it('should return 500 for invalid connector', async () => { + patchInit(); + patchGasPrice(); + + await request(app) + .post('/amm/estimateGas') + .send({ + chain: 'ethereum', + network: 'kovan', + connector: 'pangolin', + }) + .set('Accept', 'application/json') + .expect(500); + }); +}); diff --git a/test/chains/ethereum/uniswap/uniswap.test.ts b/test/chains/ethereum/uniswap/uniswap.test.ts new file mode 100644 index 0000000000..d34f3fae22 --- /dev/null +++ b/test/chains/ethereum/uniswap/uniswap.test.ts @@ -0,0 +1,156 @@ +jest.useFakeTimers(); +import { Uniswap } from '../../../../src/connectors/uniswap/uniswap'; +import { patch, unpatch } from '../../../services/patch'; +import { UniswapishPriceError } from '../../../../src/services/error-handler'; +import { CurrencyAmount, Percent, TradeType, Token } from '@uniswap/sdk-core'; +import { Pair, Route } from '@uniswap/v2-sdk'; +import { Trade } from '@uniswap/router-sdk'; +import { BigNumber, utils } from 'ethers'; +import { Ethereum } from '../../../../src/chains/ethereum/ethereum'; +import { patchEVMNonceManager } from '../../../evm.nonce.mock'; + +let ethereum: Ethereum; +let uniswap: Uniswap; + +const WETH = new Token( + 3, + '0xd0A1E359811322d97991E03f863a0C30C2cF029C', + 18, + 'WETH' +); + +const DAI = new Token( + 3, + '0x4f96fe3b7a6cf9725f59d353f723c1bdb64ca6aa', + 18, + 'DAI' +); + +beforeAll(async () => { + ethereum = Ethereum.getInstance('kovan'); + patchEVMNonceManager(ethereum.nonceManager); + await ethereum.init(); + + uniswap = Uniswap.getInstance('ethereum', 'kovan'); + await uniswap.init(); +}); + +beforeEach(() => { + patchEVMNonceManager(ethereum.nonceManager); +}); + +afterEach(() => { + unpatch(); +}); + +afterAll(async () => { + await ethereum.close(); +}); + +const patchTrade = (_key: string, error?: Error) => { + patch(uniswap.alphaRouter, 'route', () => { + if (error) return false; + const WETH_DAI = new Pair( + CurrencyAmount.fromRawAmount(WETH, '2000000000000000000'), + CurrencyAmount.fromRawAmount(DAI, '1000000000000000000') + ); + const DAI_TO_WETH = new Route([WETH_DAI], DAI, WETH); + return { + quote: CurrencyAmount.fromRawAmount(DAI, '1000000000000000000'), + quoteGasAdjusted: CurrencyAmount.fromRawAmount( + DAI, + '1000000000000000000' + ), + estimatedGasUsed: utils.parseEther('100'), + estimatedGasUsedQuoteToken: CurrencyAmount.fromRawAmount( + DAI, + '1000000000000000000' + ), + estimatedGasUsedUSD: CurrencyAmount.fromRawAmount( + DAI, + '1000000000000000000' + ), + gasPriceWei: utils.parseEther('100'), + trade: new Trade({ + v2Routes: [ + { + routev2: DAI_TO_WETH, + inputAmount: CurrencyAmount.fromRawAmount( + DAI, + '1000000000000000000' + ), + outputAmount: CurrencyAmount.fromRawAmount( + WETH, + '2000000000000000000' + ), + }, + ], + v3Routes: [], + tradeType: TradeType.EXACT_INPUT, + }), + route: [], + blockNumber: BigNumber.from(5000), + }; + }); +}; + +describe('verify Uniswap estimateSellTrade', () => { + it('Should return an ExpectedTrade when available', async () => { + patchTrade('bestTradeExactIn'); + + const expectedTrade = await uniswap.estimateSellTrade( + WETH, + DAI, + BigNumber.from(1) + ); + expect(expectedTrade).toHaveProperty('trade'); + expect(expectedTrade).toHaveProperty('expectedAmount'); + }); + + it('Should throw an error if no pair is available', async () => { + patchTrade('bestTradeExactIn', new Error('error getting trade')); + + await expect(async () => { + await uniswap.estimateSellTrade(WETH, DAI, BigNumber.from(1)); + }).rejects.toThrow(UniswapishPriceError); + }); +}); + +describe('verify Uniswap estimateBuyTrade', () => { + it('Should return an ExpectedTrade when available', async () => { + patchTrade('bestTradeExactOut'); + + const expectedTrade = await uniswap.estimateBuyTrade( + WETH, + DAI, + BigNumber.from(1) + ); + expect(expectedTrade).toHaveProperty('trade'); + expect(expectedTrade).toHaveProperty('expectedAmount'); + }); + + it('Should return an error if no pair is available', async () => { + patchTrade('bestTradeExactOut', new Error('error getting trade')); + + await expect(async () => { + await uniswap.estimateBuyTrade(WETH, DAI, BigNumber.from(1)); + }).rejects.toThrow(UniswapishPriceError); + }); +}); + +describe('getAllowedSlippage', () => { + it('return value of string when not null', () => { + const allowedSlippage = uniswap.getAllowedSlippage('1/100'); + expect(allowedSlippage).toEqual(new Percent('1', '100')); + }); + + it('return value from config when string is null', () => { + const allowedSlippage = uniswap.getAllowedSlippage(); + expect(allowedSlippage).toEqual(new Percent('2', '100')); + }); + + it('return value from config when string is malformed', () => { + const allowedSlippage = uniswap.getAllowedSlippage('yo'); + expect(allowedSlippage).toEqual(new Percent('2', '100')); + }); +}); diff --git a/test/chains/harmony/defikingdoms/defikingdoms.routes.test.ts b/test/chains/harmony/defikingdoms/defikingdoms.routes.test.ts new file mode 100644 index 0000000000..a1328d7826 --- /dev/null +++ b/test/chains/harmony/defikingdoms/defikingdoms.routes.test.ts @@ -0,0 +1,669 @@ +import express from 'express'; +import { Express } from 'express-serve-static-core'; +import request from 'supertest'; +import { Harmony } from '../../../../src/chains/harmony/harmony'; +import { Defikingdoms } from '../../../../src/connectors/defikingdoms/defikingdoms'; +import { AmmRoutes } from '../../../../src/amm/amm.routes'; +import { patch, unpatch } from '../../../services/patch'; +import { gasCostInEthString } from '../../../../src/services/base'; +let app: Express; +let harmony: Harmony; +let defikingdoms: Defikingdoms; + +beforeAll(async () => { + app = express(); + app.use(express.json()); + harmony = Harmony.getInstance('mainnet'); + await harmony.init(); + defikingdoms = Defikingdoms.getInstance('harmony', 'mainnet'); + await defikingdoms.init(); + app.use('/amm', AmmRoutes.router); +}); + +afterEach(() => { + unpatch(); +}); + +afterAll(async () => { + await harmony.close(); +}); + +const address: string = '0xFaA12FD102FE8623C9299c72B03E45107F2772B5'; + +const patchGetWallet = () => { + patch(harmony, 'getWallet', () => { + return { + address: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + }; + }); +}; + +const patchInit = () => { + patch(defikingdoms, 'init', async () => { + return; + }); +}; + +const patchStoredTokenList = () => { + patch(harmony, 'tokenList', () => { + return [ + { + chainId: 1666700000, + name: 'WONE74', + symbol: 'WONE74', + address: '0x4f96fe3b7a6cf9725f59d353f723c1bdb64ca6aa', + decimals: 18, + }, + { + chainId: 1666700000, + name: 'OneETH', + symbol: '1ETH', + address: '0x1E120B3b4aF96e7F394ECAF84375b1C661830013', + decimals: 18, + }, + ]; + }); +}; + +const patchGetTokenBySymbol = () => { + patch(harmony, 'getTokenBySymbol', (symbol: string) => { + if (symbol === 'WONE74') { + return { + chainId: 1666700000, + name: 'WONE74', + symbol: 'WONE74', + address: '0x4f96fe3b7a6cf9725f59d353f723c1bdb64ca6aa', + decimals: 18, + }; + } else { + return { + chainId: 1666700000, + name: 'OneETH', + symbol: '1ETH', + address: '0x1E120B3b4aF96e7F394ECAF84375b1C661830013', + decimals: 18, + }; + } + }); +}; + +const patchGetTokenByAddress = () => { + patch(defikingdoms, 'getTokenByAddress', () => { + return { + chainId: 1666700000, + name: 'WONE74', + symbol: 'WONE74', + address: '0x4f96fe3b7a6cf9725f59d353f723c1bdb64ca6aa', + decimals: 18, + }; + }); +}; + +const patchGasPrice = () => { + patch(harmony, 'gasPrice', () => 100); +}; + +const patchEstimateBuyTrade = () => { + patch(defikingdoms, 'estimateBuyTrade', () => { + return { + expectedAmount: { + toSignificant: () => 100, + }, + trade: { + executionPrice: { + invert: jest.fn().mockReturnValue({ + toSignificant: () => 100, + toFixed: () => '100', + }), + }, + }, + }; + }); +}; + +const patchEstimateSellTrade = () => { + patch(defikingdoms, 'estimateSellTrade', () => { + return { + expectedAmount: { + toSignificant: () => 100, + }, + trade: { + executionPrice: { + toSignificant: () => 100, + toFixed: () => '100', + }, + }, + }; + }); +}; + +const patchGetNonce = () => { + patch(harmony.nonceManager, 'getNonce', () => 21); +}; + +const patchExecuteTrade = () => { + patch(defikingdoms, 'executeTrade', () => { + return { nonce: 21, hash: '000000000000000' }; + }); +}; + +describe('POST /amm/price', () => { + it('should return 200 for BUY', async () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patchGasPrice(); + patchEstimateBuyTrade(); + patchGetNonce(); + patchExecuteTrade(); + + await request(app) + .post(`/amm/price`) + .send({ + chain: 'harmony', + network: 'mainnet', + connector: 'defikingdoms', + quote: '1ETH', + base: 'WONE74', + amount: '10000', + side: 'BUY', + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body.amount).toEqual('10000.000000000000000000'); + expect(res.body.rawAmount).toEqual('10000000000000000000000'); + }); + }); + + it('should return 200 for SELL', async () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patchGasPrice(); + patchEstimateSellTrade(); + patchGetNonce(); + patchExecuteTrade(); + + await request(app) + .post(`/amm/price`) + .send({ + chain: 'harmony', + network: 'mainnet', + connector: 'defikingdoms', + quote: '1ETH', + base: 'WONE74', + amount: '10000', + side: 'SELL', + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body.amount).toEqual('10000.000000000000000000'); + expect(res.body.rawAmount).toEqual('10000000000000000000000'); + }); + }); + + it('should return 500 for unrecognized quote symbol', async () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + + await request(app) + .post(`/amm/price`) + .send({ + chain: 'harmony', + network: 'mainnet', + connector: 'defikingdoms', + quote: 'DOGE', + base: 'WONE74', + amount: '10000', + side: 'SELL', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 500 for unrecognized base symbol', async () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + + await request(app) + .post(`/amm/price`) + .send({ + chain: 'harmony', + network: 'mainnet', + connector: 'defikingdoms', + quote: '1ETH', + base: 'SHIBA', + amount: '10000', + side: 'SELL', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 500 for unrecognized base symbol with decimals in the amount and SELL', async () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + + await request(app) + .post(`/amm/price`) + .send({ + chain: 'harmony', + network: 'mainnet', + connector: 'defikingdoms', + quote: '1ETH', + base: 'SHIBA', + amount: '10.000', + side: 'SELL', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 500 for unrecognized base symbol with decimals in the amount and BUY', async () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + + await request(app) + .post(`/amm/price`) + .send({ + chain: 'harmony', + network: 'mainnet', + connector: 'defikingdoms', + quote: '1ETH', + base: 'SHIBA', + amount: '10.000', + side: 'BUY', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 500 when the priceSwapIn operation fails', async () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patch(defikingdoms, 'priceSwapIn', () => { + return 'error'; + }); + + await request(app) + .post(`/amm/price`) + .send({ + chain: 'harmony', + network: 'mainnet', + connector: 'defikingdoms', + quote: 'DOGE', + base: 'WONE74', + amount: '10000', + side: 'SELL', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 500 when the priceSwapOut operation fails', async () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patch(defikingdoms, 'priceSwapOut', () => { + return 'error'; + }); + + await request(app) + .post(`/amm/price`) + .send({ + chain: 'harmony', + network: 'mainnet', + connector: 'defikingdoms', + quote: 'DOGE', + base: 'WONE74', + amount: '10000', + side: 'BUY', + }) + .set('Accept', 'application/json') + .expect(500); + }); +}); + +describe('POST /amm/trade', () => { + const patchForBuy = () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patchGasPrice(); + patchEstimateBuyTrade(); + patchGetNonce(); + patchExecuteTrade(); + }; + it('should return 200 for BUY', async () => { + patchForBuy(); + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'harmony', + network: 'mainnet', + connector: 'defikingdoms', + quote: '1ETH', + base: 'WONE74', + amount: '10000', + address, + side: 'BUY', + nonce: 21, + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body.nonce).toEqual(21); + }); + }); + + it('should return 200 for BUY without nonce parameter', async () => { + patchForBuy(); + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'harmony', + network: 'mainnet', + connector: 'defikingdoms', + quote: '1ETH', + base: 'WONE74', + amount: '10000', + address, + side: 'BUY', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + it('should return 200 for BUY with maxFeePerGas and maxPriorityFeePerGas', async () => { + patchForBuy(); + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'harmony', + network: 'mainnet', + connector: 'defikingdoms', + quote: '1ETH', + base: 'WONE74', + amount: '10000', + address, + side: 'BUY', + nonce: 21, + maxFeePerGas: '5000000000', + maxPriorityFeePerGas: '5000000000', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + const patchForSell = () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patchGasPrice(); + patchEstimateSellTrade(); + patchGetNonce(); + patchExecuteTrade(); + }; + it('should return 200 for SELL', async () => { + patchForSell(); + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'harmony', + network: 'mainnet', + connector: 'defikingdoms', + quote: '1ETH', + base: 'WONE74', + amount: '10000', + address, + side: 'SELL', + nonce: 21, + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body.nonce).toEqual(21); + }); + }); + + it('should return 200 for SELL with maxFeePerGas and maxPriorityFeePerGas', async () => { + patchForSell(); + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'harmony', + network: 'mainnet', + connector: 'defikingdoms', + quote: '1ETH', + base: 'WONE74', + amount: '10000', + address, + side: 'SELL', + nonce: 21, + maxFeePerGas: '5000000000', + maxPriorityFeePerGas: '5000000000', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + it('should return 200 for SELL with limitPrice', async () => { + patchForSell(); + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'harmony', + network: 'mainnet', + connector: 'defikingdoms', + quote: '1ETH', + base: 'WONE74', + amount: '10000', + address, + side: 'SELL', + nonce: 21, + limitPrice: '9', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + it('should return 200 for BUY with limitPrice', async () => { + patchForBuy(); + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'harmony', + network: 'mainnet', + connector: 'defikingdoms', + quote: '1ETH', + base: 'WONE74', + amount: '10000', + address, + side: 'BUY', + nonce: 21, + limitPrice: '999999999999999999999', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + it('should return 500 for BUY with price smaller than limitPrice', async () => { + patchForBuy(); + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'harmony', + network: 'mainnet', + connector: 'defikingdoms', + quote: '1ETH', + base: 'WONE74', + amount: '10000', + address, + side: 'BUY', + nonce: 21, + limitPrice: '9', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 500 for SELL with price higher than limitPrice', async () => { + patchForSell(); + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'harmony', + network: 'mainnet', + connector: 'defikingdoms', + quote: '1ETH', + base: 'WONE74', + amount: '10000', + address, + side: 'SELL', + nonce: 21, + limitPrice: '99999999999', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 404 when parameters are incorrect', async () => { + patchInit(); + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'harmony', + network: 'mainnet', + connector: 'defikingdoms', + quote: '1ETH', + base: 'WONE74', + amount: 10000, + address: 'da8', + side: 'comprar', + }) + .set('Accept', 'application/json') + .expect(404); + }); + it('should return 500 when the priceSwapIn operation fails', async () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patch(defikingdoms, 'priceSwapIn', () => { + return 'error'; + }); + + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'harmony', + network: 'mainnet', + connector: 'defikingdoms', + quote: '1ETH', + base: 'WONE74', + amount: '10000', + address, + side: 'SELL', + nonce: 21, + maxFeePerGas: '5000000000', + maxPriorityFeePerGas: '5000000000', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 500 when the priceSwapOut operation fails', async () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patch(defikingdoms, 'priceSwapOut', () => { + return 'error'; + }); + + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'harmony', + network: 'mainnet', + connector: 'defikingdoms', + quote: '1ETH', + base: 'WONE74', + amount: '10000', + address, + side: 'BUY', + nonce: 21, + maxFeePerGas: '5000000000', + maxPriorityFeePerGas: '5000000000', + }) + .set('Accept', 'application/json') + .expect(500); + }); +}); + +describe('POST /amm/estimateGas', () => { + it('should return 200 for valid connector', async () => { + patchInit(); + patchGasPrice(); + + await request(app) + .post('/amm/estimateGas') + .send({ + chain: 'harmony', + network: 'mainnet', + connector: 'defikingdoms', + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body.network).toEqual('mainnet'); + expect(res.body.gasPrice).toEqual(100); + expect(res.body.gasCost).toEqual( + gasCostInEthString(100, defikingdoms.gasLimitEstimate) + ); + }); + }); + + it('should return 500 for invalid connector', async () => { + patchInit(); + patchGasPrice(); + + await request(app) + .post('/amm/estimateGas') + .send({ + chain: 'harmony', + network: 'mainnet', + connector: 'pangolin', + }) + .set('Accept', 'application/json') + .expect(500); + }); +}); diff --git a/test/chains/harmony/defikingdoms/defikingdoms.test.ts b/test/chains/harmony/defikingdoms/defikingdoms.test.ts new file mode 100644 index 0000000000..679e001f05 --- /dev/null +++ b/test/chains/harmony/defikingdoms/defikingdoms.test.ts @@ -0,0 +1,151 @@ +jest.useFakeTimers(); +import { Defikingdoms } from '../../../../src/connectors/defikingdoms/defikingdoms'; +import { patch, unpatch } from '../../../services/patch'; +import { UniswapishPriceError } from '../../../../src/services/error-handler'; +import { + Token, + TokenAmount, + TradeType, + Trade, + Pair, + Route, + Percent, +} from '@switchboard-xyz/defikingdoms-sdk'; +import { BigNumber } from 'ethers'; +import { Harmony } from '../../../../src/chains/harmony/harmony'; +import { patchEVMNonceManager } from '../../../evm.nonce.mock'; +import { DefikingdomsConfig } from '../../../../src/connectors/defikingdoms/defikingdoms.config'; + +let harmony: Harmony; +let defikingdoms: Defikingdoms; + +const WONE = new Token( + 1666600000, + '0xcF664087a5bB0237a0BAd6742852ec6c8d69A27a', + 18, + 'WONE' +); +const ETH = new Token( + 1666600000, + '0x6983D1E6DEf3690C4d616b13597A09e6193EA013', + 18, + 'ETH' +); + +beforeAll(async () => { + harmony = Harmony.getInstance('mainnet'); + patchEVMNonceManager(harmony.nonceManager); + + defikingdoms = Defikingdoms.getInstance('harmony', 'mainnet'); + await defikingdoms.init(); +}); + +beforeEach(() => { + patchEVMNonceManager(harmony.nonceManager); +}); + +afterEach(() => { + unpatch(); +}); + +afterAll(async () => { + await harmony.close(); +}); + +const patchFetchData = () => { + patch(defikingdoms, 'fetchPairData', () => { + return new Pair( + new TokenAmount(WONE, '2000000000000000000'), + new TokenAmount(ETH, '1000000000000000000') + ); + }); +}; + +const patchTrade = (key: string, error?: Error) => { + patch(Trade, key, () => { + if (error) return []; + const WONE_ETH = new Pair( + new TokenAmount(WONE, '2000000000000000000'), + new TokenAmount(ETH, '1000000000000000000') + ); + const ETH_TO_WONE = new Route([WONE_ETH], ETH, WONE); + return [ + new Trade( + ETH_TO_WONE, + new TokenAmount(ETH, '1000000000000000'), + TradeType.EXACT_INPUT + ), + ]; + }); +}; + +describe('verify defikingdoms gasLimit', () => { + it('Should initially match the config for mainnet', () => { + expect(defikingdoms.gasLimitEstimate).toEqual( + DefikingdomsConfig.config.gasLimit + ); + }); +}); + +describe('verify defikingdoms getAllowedSlippage', () => { + it('Should parse simple fractions', () => { + expect(defikingdoms.getAllowedSlippage('3/100')).toEqual( + new Percent('3', '100') + ); + }); +}); + +describe('verify defikingdoms estimateSellTrade', () => { + it('Should return an ExpectedTrade when available', async () => { + patchFetchData(); + patchTrade('bestTradeExactIn'); + + const expectedTrade = await defikingdoms.estimateSellTrade( + WONE, + ETH, + BigNumber.from(1) + ); + expect(expectedTrade).toHaveProperty('trade'); + expect(expectedTrade).toHaveProperty('expectedAmount'); + }); + + it('Should throw an error if no pair is available', async () => { + patchFetchData(); + patchTrade('bestTradeExactIn', new Error('error getting trade')); + + await expect(async () => { + await defikingdoms.estimateSellTrade(WONE, ETH, BigNumber.from(1)); + }).rejects.toThrow(UniswapishPriceError); + }); +}); + +describe('verify defikingdoms estimateBuyTrade', () => { + it('Should return an ExpectedTrade when available', async () => { + patchFetchData(); + patchTrade('bestTradeExactOut'); + + const expectedTrade = await defikingdoms.estimateBuyTrade( + WONE, + ETH, + BigNumber.from(1) + ); + expect(expectedTrade).toHaveProperty('trade'); + expect(expectedTrade).toHaveProperty('expectedAmount'); + }); + + it('Should return an error if no pair is available', async () => { + patchFetchData(); + patchTrade('bestTradeExactOut', new Error('error getting trade')); + + await expect(async () => { + await defikingdoms.estimateBuyTrade(WONE, ETH, BigNumber.from(1)); + }).rejects.toThrow(UniswapishPriceError); + }); +}); + +describe('verify defikingdoms Token List', () => { + it('Should return a token by address', async () => { + const token = defikingdoms.getTokenByAddress(ETH.address); + expect(token).toBeInstanceOf(Token); + }); +}); diff --git a/test/chains/harmony/defira/defira.routes.test.ts b/test/chains/harmony/defira/defira.routes.test.ts new file mode 100644 index 0000000000..e77df3350b --- /dev/null +++ b/test/chains/harmony/defira/defira.routes.test.ts @@ -0,0 +1,669 @@ +import express from 'express'; +import { Express } from 'express-serve-static-core'; +import request from 'supertest'; +import { Harmony } from '../../../../src/chains/harmony/harmony'; +import { Defira } from '../../../../src/connectors/defira/defira'; +import { AmmRoutes } from '../../../../src/amm/amm.routes'; +import { patch, unpatch } from '../../../services/patch'; +import { gasCostInEthString } from '../../../../src/services/base'; +let app: Express; +let harmony: Harmony; +let defira: Defira; + +beforeAll(async () => { + app = express(); + app.use(express.json()); + harmony = Harmony.getInstance('testnet'); + await harmony.init(); + defira = Defira.getInstance('harmony', 'testnet'); + await defira.init(); + app.use('/amm', AmmRoutes.router); +}); + +afterEach(() => { + unpatch(); +}); + +afterAll(async () => { + await harmony.close(); +}); + +const address: string = '0xFaA12FD102FE8623C9299c72B03E45107F2772B5'; + +const patchGetWallet = () => { + patch(harmony, 'getWallet', () => { + return { + address: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + }; + }); +}; + +const patchInit = () => { + patch(defira, 'init', async () => { + return; + }); +}; + +const patchStoredTokenList = () => { + patch(harmony, 'tokenList', () => { + return [ + { + chainId: 1666700000, + name: 'WONE74', + symbol: 'WONE74', + address: '0x4f96fe3b7a6cf9725f59d353f723c1bdb64ca6aa', + decimals: 18, + }, + { + chainId: 1666700000, + name: 'OneETH', + symbol: '1ETH', + address: '0x1E120B3b4aF96e7F394ECAF84375b1C661830013', + decimals: 18, + }, + ]; + }); +}; + +const patchGetTokenBySymbol = () => { + patch(harmony, 'getTokenBySymbol', (symbol: string) => { + if (symbol === 'WONE74') { + return { + chainId: 1666700000, + name: 'WONE74', + symbol: 'WONE74', + address: '0x4f96fe3b7a6cf9725f59d353f723c1bdb64ca6aa', + decimals: 18, + }; + } else { + return { + chainId: 1666700000, + name: 'OneETH', + symbol: '1ETH', + address: '0x1E120B3b4aF96e7F394ECAF84375b1C661830013', + decimals: 18, + }; + } + }); +}; + +const patchGetTokenByAddress = () => { + patch(defira, 'getTokenByAddress', () => { + return { + chainId: 1666700000, + name: 'WONE74', + symbol: 'WONE74', + address: '0x4f96fe3b7a6cf9725f59d353f723c1bdb64ca6aa', + decimals: 18, + }; + }); +}; + +const patchGasPrice = () => { + patch(harmony, 'gasPrice', () => 100); +}; + +const patchEstimateBuyTrade = () => { + patch(defira, 'estimateBuyTrade', () => { + return { + expectedAmount: { + toSignificant: () => 100, + }, + trade: { + executionPrice: { + invert: jest.fn().mockReturnValue({ + toSignificant: () => 100, + toFixed: () => '100', + }), + }, + }, + }; + }); +}; + +const patchEstimateSellTrade = () => { + patch(defira, 'estimateSellTrade', () => { + return { + expectedAmount: { + toSignificant: () => 100, + }, + trade: { + executionPrice: { + toSignificant: () => 100, + toFixed: () => '100', + }, + }, + }; + }); +}; + +const patchGetNonce = () => { + patch(harmony.nonceManager, 'getNonce', () => 21); +}; + +const patchExecuteTrade = () => { + patch(defira, 'executeTrade', () => { + return { nonce: 21, hash: '000000000000000' }; + }); +}; + +describe('POST /amm/price', () => { + it('should return 200 for BUY', async () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patchGasPrice(); + patchEstimateBuyTrade(); + patchGetNonce(); + patchExecuteTrade(); + + await request(app) + .post(`/amm/price`) + .send({ + chain: 'harmony', + network: 'testnet', + connector: 'defira', + quote: '1ETH', + base: 'WONE74', + amount: '10000', + side: 'BUY', + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body.amount).toEqual('10000.000000000000000000'); + expect(res.body.rawAmount).toEqual('10000000000000000000000'); + }); + }); + + it('should return 200 for SELL', async () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patchGasPrice(); + patchEstimateSellTrade(); + patchGetNonce(); + patchExecuteTrade(); + + await request(app) + .post(`/amm/price`) + .send({ + chain: 'harmony', + network: 'testnet', + connector: 'defira', + quote: '1ETH', + base: 'WONE74', + amount: '10000', + side: 'SELL', + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body.amount).toEqual('10000.000000000000000000'); + expect(res.body.rawAmount).toEqual('10000000000000000000000'); + }); + }); + + it('should return 500 for unrecognized quote symbol', async () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + + await request(app) + .post(`/amm/price`) + .send({ + chain: 'harmony', + network: 'testnet', + connector: 'defira', + quote: 'DOGE', + base: 'WONE74', + amount: '10000', + side: 'SELL', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 500 for unrecognized base symbol', async () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + + await request(app) + .post(`/amm/price`) + .send({ + chain: 'harmony', + network: 'testnet', + connector: 'defira', + quote: '1ETH', + base: 'SHIBA', + amount: '10000', + side: 'SELL', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 500 for unrecognized base symbol with decimals in the amount and SELL', async () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + + await request(app) + .post(`/amm/price`) + .send({ + chain: 'harmony', + network: 'testnet', + connector: 'defira', + quote: '1ETH', + base: 'SHIBA', + amount: '10.000', + side: 'SELL', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 500 for unrecognized base symbol with decimals in the amount and BUY', async () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + + await request(app) + .post(`/amm/price`) + .send({ + chain: 'harmony', + network: 'testnet', + connector: 'defira', + quote: '1ETH', + base: 'SHIBA', + amount: '10.000', + side: 'BUY', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 500 when the priceSwapIn operation fails', async () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patch(defira, 'priceSwapIn', () => { + return 'error'; + }); + + await request(app) + .post(`/amm/price`) + .send({ + chain: 'harmony', + network: 'testnet', + connector: 'defira', + quote: 'DOGE', + base: 'WONE74', + amount: '10000', + side: 'SELL', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 500 when the priceSwapOut operation fails', async () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patch(defira, 'priceSwapOut', () => { + return 'error'; + }); + + await request(app) + .post(`/amm/price`) + .send({ + chain: 'harmony', + network: 'testnet', + connector: 'defira', + quote: 'DOGE', + base: 'WONE74', + amount: '10000', + side: 'BUY', + }) + .set('Accept', 'application/json') + .expect(500); + }); +}); + +describe('POST /amm/trade', () => { + const patchForBuy = () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patchGasPrice(); + patchEstimateBuyTrade(); + patchGetNonce(); + patchExecuteTrade(); + }; + it('should return 200 for BUY', async () => { + patchForBuy(); + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'harmony', + network: 'testnet', + connector: 'defira', + quote: '1ETH', + base: 'WONE74', + amount: '10000', + address, + side: 'BUY', + nonce: 21, + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body.nonce).toEqual(21); + }); + }); + + it('should return 200 for BUY without nonce parameter', async () => { + patchForBuy(); + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'harmony', + network: 'testnet', + connector: 'defira', + quote: '1ETH', + base: 'WONE74', + amount: '10000', + address, + side: 'BUY', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + it('should return 200 for BUY with maxFeePerGas and maxPriorityFeePerGas', async () => { + patchForBuy(); + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'harmony', + network: 'testnet', + connector: 'defira', + quote: '1ETH', + base: 'WONE74', + amount: '10000', + address, + side: 'BUY', + nonce: 21, + maxFeePerGas: '5000000000', + maxPriorityFeePerGas: '5000000000', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + const patchForSell = () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patchGasPrice(); + patchEstimateSellTrade(); + patchGetNonce(); + patchExecuteTrade(); + }; + it('should return 200 for SELL', async () => { + patchForSell(); + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'harmony', + network: 'testnet', + connector: 'defira', + quote: '1ETH', + base: 'WONE74', + amount: '10000', + address, + side: 'SELL', + nonce: 21, + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body.nonce).toEqual(21); + }); + }); + + it('should return 200 for SELL with maxFeePerGas and maxPriorityFeePerGas', async () => { + patchForSell(); + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'harmony', + network: 'testnet', + connector: 'defira', + quote: '1ETH', + base: 'WONE74', + amount: '10000', + address, + side: 'SELL', + nonce: 21, + maxFeePerGas: '5000000000', + maxPriorityFeePerGas: '5000000000', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + it('should return 200 for SELL with limitPrice', async () => { + patchForSell(); + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'harmony', + network: 'testnet', + connector: 'defira', + quote: '1ETH', + base: 'WONE74', + amount: '10000', + address, + side: 'SELL', + nonce: 21, + limitPrice: '9', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + it('should return 200 for BUY with limitPrice', async () => { + patchForBuy(); + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'harmony', + network: 'testnet', + connector: 'defira', + quote: '1ETH', + base: 'WONE74', + amount: '10000', + address, + side: 'BUY', + nonce: 21, + limitPrice: '999999999999999999999', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + it('should return 500 for BUY with price smaller than limitPrice', async () => { + patchForBuy(); + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'harmony', + network: 'testnet', + connector: 'defira', + quote: '1ETH', + base: 'WONE74', + amount: '10000', + address, + side: 'BUY', + nonce: 21, + limitPrice: '9', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 500 for SELL with price higher than limitPrice', async () => { + patchForSell(); + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'harmony', + network: 'testnet', + connector: 'defira', + quote: '1ETH', + base: 'WONE74', + amount: '10000', + address, + side: 'SELL', + nonce: 21, + limitPrice: '99999999999', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 404 when parameters are incorrect', async () => { + patchInit(); + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'harmony', + network: 'testnet', + connector: 'defira', + quote: '1ETH', + base: 'WONE74', + amount: 10000, + address: 'da8', + side: 'comprar', + }) + .set('Accept', 'application/json') + .expect(404); + }); + it('should return 500 when the priceSwapIn operation fails', async () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patch(defira, 'priceSwapIn', () => { + return 'error'; + }); + + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'harmony', + network: 'testnet', + connector: 'defira', + quote: '1ETH', + base: 'WONE74', + amount: '10000', + address, + side: 'SELL', + nonce: 21, + maxFeePerGas: '5000000000', + maxPriorityFeePerGas: '5000000000', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 500 when the priceSwapOut operation fails', async () => { + patchGetWallet(); + patchInit(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patch(defira, 'priceSwapOut', () => { + return 'error'; + }); + + await request(app) + .post(`/amm/trade`) + .send({ + chain: 'harmony', + network: 'testnet', + connector: 'defira', + quote: '1ETH', + base: 'WONE74', + amount: '10000', + address, + side: 'BUY', + nonce: 21, + maxFeePerGas: '5000000000', + maxPriorityFeePerGas: '5000000000', + }) + .set('Accept', 'application/json') + .expect(500); + }); +}); + +describe('POST /amm/estimateGas', () => { + it('should return 200 for valid connector', async () => { + patchInit(); + patchGasPrice(); + + await request(app) + .post('/amm/estimateGas') + .send({ + chain: 'harmony', + network: 'testnet', + connector: 'defira', + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body.network).toEqual('testnet'); + expect(res.body.gasPrice).toEqual(100); + expect(res.body.gasCost).toEqual( + gasCostInEthString(100, defira.gasLimitEstimate) + ); + }); + }); + + it('should return 500 for invalid connector', async () => { + patchInit(); + patchGasPrice(); + + await request(app) + .post('/amm/estimateGas') + .send({ + chain: 'harmony', + network: 'testnet', + connector: 'pangolin', + }) + .set('Accept', 'application/json') + .expect(500); + }); +}); diff --git a/test/chains/harmony/defira/defira.test.ts b/test/chains/harmony/defira/defira.test.ts new file mode 100644 index 0000000000..72335e3088 --- /dev/null +++ b/test/chains/harmony/defira/defira.test.ts @@ -0,0 +1,182 @@ +jest.useFakeTimers(); +const { MockProvider } = require('mock-ethers-provider'); +import { FACTORY_ADDRESS } from '@zuzu-cat/defira-sdk'; +import { Defira } from '../../../../src/connectors/defira/defira'; +import { patch, unpatch } from '../../../services/patch'; +import { UniswapishPriceError } from '../../../../src/services/error-handler'; +import { Token, CurrencyAmount, TradeType, Percent } from '@uniswap/sdk-core'; +import { Trade, Pair, Route } from '@zuzu-cat/defira-sdk'; +import { BigNumber } from 'ethers'; +import { Harmony } from '../../../../src/chains/harmony/harmony'; +import { patchEVMNonceManager } from '../../../evm.nonce.mock'; +import { DefiraConfig } from '../../../../src/connectors/defira/defira.config'; +import { abi as routerAbi } from '../../../../src/connectors/defira/defira_v2_router_abi.json'; + +let harmony: Harmony; +let defira: Defira; + +const WONE = new Token( + 3, + '0x1E120B3b4aF96e7F394ECAF84375b1C661830013', + 18, + 'WONE' +); +const ETH = new Token( + 3, + '0x7466d7d0C21Fa05F32F5a0Fa27e12bdC06348Ce2', + 18, + 'ETH' +); + +let mockProvider: typeof MockProvider; + +beforeAll(async () => { + harmony = Harmony.getInstance('testnet'); + patchEVMNonceManager(harmony.nonceManager); + + defira = Defira.getInstance('harmony', 'testnet'); + await defira.init(); +}); + +beforeEach(() => { + mockProvider = new MockProvider(); + patchEVMNonceManager(harmony.nonceManager); +}); + +afterEach(() => { + unpatch(); +}); + +afterAll(async () => { + await harmony.close(); +}); + +const patchMockProvider = () => { + mockProvider.setMockContract( + DefiraConfig.config.routerAddress('testnet'), + routerAbi + ); + patch(defira, 'provider', () => { + return mockProvider; + }); +}; + +const patchFetchData = () => { + patch(defira, 'fetchPairData', () => { + return new Pair( + CurrencyAmount.fromRawAmount(WONE, '2000000000000000000'), + CurrencyAmount.fromRawAmount(ETH, '1000000000000000000') + ); + }); +}; + +const patchTrade = (key: string, error?: Error) => { + patch(Trade, key, () => { + if (error) return []; + const WONE_ETH = new Pair( + CurrencyAmount.fromRawAmount(WONE, '2000000000000000000'), + CurrencyAmount.fromRawAmount(ETH, '1000000000000000000') + ); + const ETH_TO_WONE = new Route([WONE_ETH], ETH, WONE); + return [ + new Trade( + ETH_TO_WONE, + CurrencyAmount.fromRawAmount(ETH, '1000000000000000'), + TradeType.EXACT_INPUT + ), + ]; + }); +}; + +describe('verify defira gasLimitEstimate', () => { + it('Should initially match the config for mainnet', () => { + expect(defira.gasLimitEstimate).toEqual( + DefiraConfig.config.gasLimitEstimate() + ); + }); +}); + +describe('verify defira getAllowedSlippage', () => { + it('Should parse simple fractions', () => { + expect(defira.getAllowedSlippage('3/100')).toEqual(new Percent('3', '100')); + }); +}); + +describe('verify defira factory', () => { + const expectedFactoryAddress = FACTORY_ADDRESS; + beforeEach(() => { + patchMockProvider(); + mockProvider.stub( + DefiraConfig.config.routerAddress('testnet'), + 'factory', + expectedFactoryAddress + ); + }); + it('Returns the factory address via the provider', async () => { + const factoryAddress = await defira.factory; + expect(factoryAddress).toEqual(expectedFactoryAddress); + }); +}); + +describe('verify defira initCodeHash', () => { + it('Should return the testnet factory initCodeHash', () => { + expect(defira.initCodeHash).toEqual( + DefiraConfig.config.initCodeHash('testnet') + ); + }); +}); + +describe('verify defira estimateSellTrade', () => { + it('Should return an ExpectedTrade when available', async () => { + patchFetchData(); + patchTrade('bestTradeExactIn'); + + const expectedTrade = await defira.estimateSellTrade( + WONE, + ETH, + BigNumber.from(1) + ); + expect(expectedTrade).toHaveProperty('trade'); + expect(expectedTrade).toHaveProperty('expectedAmount'); + }); + + it('Should throw an error if no pair is available', async () => { + patchFetchData(); + patchTrade('bestTradeExactIn', new Error('error getting trade')); + + await expect(async () => { + await defira.estimateSellTrade(WONE, ETH, BigNumber.from(1)); + }).rejects.toThrow(UniswapishPriceError); + }); +}); + +describe('verify defira estimateBuyTrade', () => { + it('Should return an ExpectedTrade when available', async () => { + patchFetchData(); + patchTrade('bestTradeExactOut'); + + const expectedTrade = await defira.estimateBuyTrade( + WONE, + ETH, + BigNumber.from(1) + ); + expect(expectedTrade).toHaveProperty('trade'); + expect(expectedTrade).toHaveProperty('expectedAmount'); + }); + + it('Should return an error if no pair is available', async () => { + patchFetchData(); + patchTrade('bestTradeExactOut', new Error('error getting trade')); + + await expect(async () => { + await defira.estimateBuyTrade(WONE, ETH, BigNumber.from(1)); + }).rejects.toThrow(UniswapishPriceError); + }); +}); + +describe('verify defira Token List', () => { + it('Should return a token by address', async () => { + const token = defira.getTokenByAddress(ETH.address); + expect(token).toBeInstanceOf(Token); + }); +}); diff --git a/test/chains/harmony/harmony.controllers.test.ts b/test/chains/harmony/harmony.controllers.test.ts new file mode 100644 index 0000000000..94c767f0aa --- /dev/null +++ b/test/chains/harmony/harmony.controllers.test.ts @@ -0,0 +1,276 @@ +import { BigNumber } from 'ethers'; +import { Harmony } from '../../../src/chains/harmony/harmony'; +import { patch, unpatch } from '../../services/patch'; +import { TokenInfo } from '../../../src/services/ethereum-base'; +import { + nonce, + getTokenSymbolsToTokens, + allowances, + approve, + balances, + cancel, + willTxSucceed, +} from '../../../src/chains/ethereum/ethereum.controllers'; +import { + HttpException, + LOAD_WALLET_ERROR_CODE, + LOAD_WALLET_ERROR_MESSAGE, + TOKEN_NOT_SUPPORTED_ERROR_MESSAGE, + TOKEN_NOT_SUPPORTED_ERROR_CODE, +} from '../../../src/services/error-handler'; +import { patchEVMNonceManager } from '../../evm.nonce.mock'; + +jest.useFakeTimers(); +let harmony: Harmony; + +beforeAll(async () => { + harmony = Harmony.getInstance('testnet'); + patchEVMNonceManager(harmony.nonceManager); + await harmony.init(); +}); + +beforeEach(() => { + patchEVMNonceManager(harmony.nonceManager); +}); + +afterEach(() => { + unpatch(); +}); + +afterAll(async () => { + await harmony.close(); +}); + +const zeroAddress = + '0000000000000000000000000000000000000000000000000000000000000000'; // noqa: mock + +describe('nonce', () => { + it('return a nonce for a wallet', async () => { + patch(harmony, 'getWallet', () => { + return { + address: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + }; + }); + patch(harmony.nonceManager, 'getNonce', () => 2); + const n = await nonce(harmony, { + chain: 'harmony', + network: 'testnet', + address: zeroAddress, + }); + expect(n).toEqual({ nonce: 2 }); + }); +}); + +const wone: TokenInfo = { + chainId: 1666700000, + name: '"Wrapped ONE', + symbol: 'WONE', + address: '0x7a2afac38517d512E55C0bCe3b6805c10a04D60F', + decimals: 18, +}; +describe('getTokenSymbolsToTokens', () => { + it('return tokens for strings', () => { + patch(harmony, 'getTokenBySymbol', () => { + return wone; + }); + expect(getTokenSymbolsToTokens(harmony, ['WONE'])).toEqual({ WONE: wone }); + }); +}); + +const sushiswap = '0x1b02da8cb0d097eb8d57a175b88c7d8b47997506'; + +describe('allowances', () => { + it('return allowances for an owner, spender and tokens', async () => { + patch(harmony, 'getWallet', () => { + return { + address: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + }; + }); + + patch(harmony, 'getTokenBySymbol', () => { + return wone; + }); + + patch(harmony, 'getSpender', () => { + return sushiswap; + }); + + patch(harmony, 'getERC20Allowance', () => { + return { + value: BigNumber.from('999999999999999999999999'), + decimals: 2, + }; + }); + + const result = await allowances(harmony, { + chain: 'harmony', + network: 'testnet', + address: zeroAddress, + spender: sushiswap, + tokenSymbols: ['WONE'], + }); + expect((result as any).approvals).toEqual({ + WONE: '9999999999999999999999.99', + }); + }); +}); + +describe('approve', () => { + it('approve a spender for an owner, token and amount', async () => { + patch(harmony, 'getSpender', () => { + return sushiswap; + }); + harmony.getContract = jest.fn().mockReturnValue({ + address: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + }); + + patch(harmony, 'ready', () => true); + + patch(harmony, 'getWallet', () => { + return { + address: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + }; + }); + + patch(harmony, 'getTokenBySymbol', () => { + return wone; + }); + + patch(harmony, 'approveERC20', () => { + return { + spender: sushiswap, + value: { toString: () => '9999999' }, + }; + }); + + const result = await approve(harmony, { + chain: 'harmony', + network: 'testnet', + address: zeroAddress, + spender: sushiswap, + token: 'WONE', + }); + expect((result as any).spender).toEqual(sushiswap); + }); + + it('fail if wallet not found', async () => { + patch(harmony, 'getSpender', () => { + return sushiswap; + }); + + const err = 'wallet does not exist'; + patch(harmony, 'getWallet', () => { + throw new Error(err); + }); + + await expect( + approve(harmony, { + chain: 'harmony', + network: 'testnet', + address: zeroAddress, + spender: sushiswap, + token: 'WONE', + }) + ).rejects.toThrow( + new HttpException( + 500, + LOAD_WALLET_ERROR_MESSAGE + 'Error: ' + err, + LOAD_WALLET_ERROR_CODE + ) + ); + }); + + it('fail if token not found', async () => { + patch(harmony, 'getSpender', () => { + return sushiswap; + }); + + patch(harmony, 'getWallet', () => { + return { + address: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + }; + }); + + patch(harmony, 'getTokenBySymbol', () => { + return null; + }); + + await expect( + approve(harmony, { + chain: 'harmony', + network: 'testnet', + address: zeroAddress, + spender: sushiswap, + token: 'WONE', + }) + ).rejects.toThrow( + new HttpException( + 500, + TOKEN_NOT_SUPPORTED_ERROR_MESSAGE + 'WONE', + TOKEN_NOT_SUPPORTED_ERROR_CODE + ) + ); + }); +}); + +describe('balances', () => { + it('fail if wallet not found', async () => { + const err = 'wallet does not exist'; + patch(harmony, 'getWallet', () => { + throw new Error(err); + }); + + await expect( + balances(harmony, { + chain: 'harmony', + network: 'testnet', + address: zeroAddress, + tokenSymbols: ['WONE', 'WBTC'], + }) + ).rejects.toThrow( + new HttpException( + 500, + LOAD_WALLET_ERROR_MESSAGE + 'Error: ' + err, + LOAD_WALLET_ERROR_CODE + ) + ); + }); +}); + +describe('cancel', () => { + it('fail if wallet not found', async () => { + const err = 'wallet does not exist'; + patch(harmony, 'getWallet', () => { + throw new Error(err); + }); + + await expect( + cancel(harmony, { + chain: 'harmony', + network: 'testnet', + nonce: 123, + address: zeroAddress, + }) + ).rejects.toThrow( + new HttpException( + 500, + LOAD_WALLET_ERROR_MESSAGE + 'Error: ' + err, + LOAD_WALLET_ERROR_CODE + ) + ); + }); +}); + +describe('willTxSucceed', () => { + it('time limit met and gas price higher than that of the tx', () => { + expect(willTxSucceed(100, 10, 10, 100)).toEqual(false); + }); + + it('time limit met but gas price has not exceeded that of the tx', () => { + expect(willTxSucceed(100, 10, 100, 90)).toEqual(true); + }); + + it('time limit not met', () => { + expect(willTxSucceed(10, 100, 100, 90)).toEqual(true); + }); +}); diff --git a/test/chains/harmony/harmony.routes.test.ts b/test/chains/harmony/harmony.routes.test.ts new file mode 100644 index 0000000000..5b553965f1 --- /dev/null +++ b/test/chains/harmony/harmony.routes.test.ts @@ -0,0 +1,389 @@ +import request from 'supertest'; +import { patch, unpatch } from '../../services/patch'; +import { gatewayApp } from '../../../src/app'; +import { + NETWORK_ERROR_CODE, + OUT_OF_GAS_ERROR_CODE, + UNKNOWN_ERROR_ERROR_CODE, + NETWORK_ERROR_MESSAGE, + OUT_OF_GAS_ERROR_MESSAGE, + UNKNOWN_ERROR_MESSAGE, +} from '../../../src/services/error-handler'; +import * as transactionSuccesful from '../ethereum/fixtures/transaction-succesful.json'; +import * as transactionSuccesfulReceipt from '../ethereum/fixtures/transaction-succesful-receipt.json'; +import * as transactionOutOfGas from '../ethereum/fixtures/transaction-out-of-gas.json'; +import * as transactionOutOfGasReceipt from '../ethereum/fixtures/transaction-out-of-gas-receipt.json'; +import { Harmony } from '../../../src/chains/harmony/harmony'; +import { patchEVMNonceManager } from '../../evm.nonce.mock'; +let harmony: Harmony; + +beforeAll(async () => { + harmony = Harmony.getInstance('testnet'); + patchEVMNonceManager(harmony.nonceManager); + await harmony.init(); +}); + +beforeEach(() => { + patchEVMNonceManager(harmony.nonceManager); +}); + +afterEach(() => { + unpatch(); +}); + +afterAll(async () => { + await harmony.close(); +}); + +const address: string = '0xFaA12FD102FE8623C9299c72B03E45107F2772B5'; + +const patchGetWallet = () => { + patch(harmony, 'getWallet', () => { + return { + address, + }; + }); +}; + +const patchGetNonce = () => { + patch(harmony.nonceManager, 'getNonce', () => 2); +}; + +const patchGetTokenBySymbol = () => { + patch(harmony, 'getTokenBySymbol', () => { + return { + chainId: 1666600000, + address: '0xcF664087a5bB0237a0BAd6742852ec6c8d69A27a', + decimals: 18, + name: 'Wrapped ONE', + symbol: 'WONE', + logoURI: + 'https://raw.githubusercontent.com/sushiswap/icons/master/token/one.jpg', + }; + }); +}; + +const patchApproveERC20 = (tx_type?: string) => { + const default_tx = { + type: 2, + chainId: 1666600000, + nonce: 115, + maxPriorityFeePerGas: { toString: () => '106000000000' }, + maxFeePerGas: { toString: () => '106000000000' }, + gasPrice: { toString: () => null }, + gasLimit: { toString: () => '100000' }, + to: '0x4F96Fe3b7A6Cf9725f59d353F723c1bDb64CA6Aa', + value: { toString: () => '0' }, + data: '0x095ea7b30000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', // noqa: mock + accessList: [], + hash: '0x75f98675a8f64dcf14927ccde9a1d59b67fa09b72cc2642ad055dae4074853d9', // noqa: mock + v: 0, + r: '0xbeb9aa40028d79b9fdab108fcef5de635457a05f3a254410414c095b02c64643', // noqa: mock + s: '0x5a1506fa4b7f8b4f3826d8648f27ebaa9c0ee4bd67f569414b8cd8884c073100', // noqa: mock + from: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + confirmations: 0, + }; + if (tx_type === 'overwritten_tx') { + default_tx.hash = + '0x5a1ed682d0d7a58fbd7828bbf5994cd024feb8895d4da82c741ec4a191b9e849'; // noqa: mock + } + patch(harmony, 'approveERC20', () => { + return default_tx; + }); +}; + +const patchGetERC20Allowance = () => { + patch(harmony, 'getERC20Allowance', () => ({ value: 1, decimals: 3 })); +}; + +const patchGetNativeBalance = () => { + patch(harmony, 'getNativeBalance', () => ({ value: 1, decimals: 3 })); +}; + +const patchGetERC20Balance = () => { + patch(harmony, 'getERC20Balance', () => ({ value: 1, decimals: 3 })); +}; + +describe('POST /evm/nonce', () => { + it('should return 200', async () => { + patchGetWallet(); + patchGetNonce(); + + await request(gatewayApp) + .post(`/evm/nonce`) + .send({ + chain: 'harmony', + network: 'testnet', + address, + }) + .set('Accept', 'application/json') + .expect('Content-Type', /json/) + .expect(200) + .expect((res) => expect(res.body.nonce).toBe(2)); + }); + + it('should return 404 when parameters are invalid', async () => { + await request(gatewayApp) + .post(`/evm/nonce`) + .send({ + chain: 'harmony', + network: 'testnet', + address: 'da857cbda0ba96757fed842617a4', + }) + .expect(404); + }); +}); + +describe('POST /evm/approve', () => { + it('should return 200', async () => { + patchGetWallet(); + harmony.getContract = jest.fn().mockReturnValue({ + address, + }); + patch(harmony.nonceManager, 'getNonce', () => 115); + patchGetTokenBySymbol(); + patchApproveERC20(); + + await request(gatewayApp) + .post(`/evm/approve`) + .send({ + chain: 'harmony', + network: 'testnet', + address, + spender: 'sushiswap', + token: 'SUSHI', + }) + .set('Accept', 'application/json') + .expect('Content-Type', /json/) + .expect(200) + .then((res: any) => { + expect(res.body.nonce).toEqual(115); + }); + }); + + it('should return 404 when parameters are invalid', async () => { + await request(gatewayApp) + .post(`/evm/approve`) + .send({ + chain: 'harmony', + network: 'testnet', + address, + spender: 'sushiswap', + token: 123, + nonce: '23', + }) + .expect(404); + }); +}); + +describe('POST /evm/allowances', () => { + it('should return 200 asking for allowances', async () => { + patchGetWallet(); + patchGetTokenBySymbol(); + const spender = '0xFaA12FD102FE8623C9299c72B03E45107F2772B5'; + harmony.getSpender = jest.fn().mockReturnValue(spender); + harmony.getContract = jest.fn().mockReturnValue({ + address: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + }); + patchGetERC20Allowance(); + + await request(gatewayApp) + .post(`/evm/allowances`) + .send({ + chain: 'harmony', + network: 'testnet', + address: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + spender: spender, + tokenSymbols: ['WETH', 'DAI'], + }) + .set('Accept', 'application/json') + .expect('Content-Type', /json/) + .expect(200) + .expect((res) => expect(res.body.spender).toEqual(spender)) + .expect((res) => expect(res.body.approvals.WETH).toEqual('0.001')) + .expect((res) => expect(res.body.approvals.DAI).toEqual('0.001')); + }); +}); + +describe('POST /network/balances', () => { + it('should return 200 asking for supported tokens', async () => { + patchGetWallet(); + patchGetTokenBySymbol(); + patchGetNativeBalance(); + patchGetERC20Balance(); + harmony.getContract = jest.fn().mockReturnValue({ + address: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + }); + + await request(gatewayApp) + .post(`/network/balances`) + .send({ + chain: 'harmony', + network: 'testnet', + address: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + tokenSymbols: ['WETH', 'DAI'], + }) + .set('Accept', 'application/json') + .expect('Content-Type', /json/) + .expect(200) + .expect((res) => expect(res.body.balances.WETH).toBeDefined()) + .expect((res) => expect(res.body.balances.DAI).toBeDefined()); + }); +}); + +describe('POST /evm/cancel', () => { + it('should return 200', async () => { + // override getWallet (network call) + harmony.getWallet = jest.fn().mockReturnValue({ + address, + }); + + harmony.cancelTx = jest.fn().mockReturnValue({ + hash: '0xf6b9e7cec507cb3763a1179ff7e2a88c6008372e3a6f297d9027a0b39b0fff77', // noqa: mock + }); + + await request(gatewayApp) + .post(`/evm/cancel`) + .send({ + chain: 'harmony', + network: 'testnet', + address, + nonce: 23, + }) + .set('Accept', 'application/json') + .expect('Content-Type', /json/) + .expect(200) + .then((res: any) => { + expect(res.body.txHash).toEqual( + '0xf6b9e7cec507cb3763a1179ff7e2a88c6008372e3a6f297d9027a0b39b0fff77' // noqa: mock + ); + }); + }); + + it('should return 404 when parameters are invalid', async () => { + await request(gatewayApp) + .post(`/evm/cancel`) + .send({ + chain: 'harmony', + network: 'testnet', + address: '', + nonce: '23', + }) + .expect(404); + }); +}); + +describe('POST /network/poll', () => { + it('should get a NETWORK_ERROR_CODE when the network is unavailable', async () => { + patch(harmony, 'getCurrentBlockNumber', () => { + const error: any = new Error('something went wrong'); + error.code = 'NETWORK_ERROR'; + throw error; + }); + + const res = await request(gatewayApp).post('/network/poll').send({ + chain: 'harmony', + network: 'testnet', + txHash: + '0x2faeb1aa55f96c1db55f643a8cf19b0f76bf091d0b7d1b068d2e829414576362', // noqa: mock + }); + + expect(res.statusCode).toEqual(503); + expect(res.body.errorCode).toEqual(NETWORK_ERROR_CODE); + expect(res.body.message).toEqual(NETWORK_ERROR_MESSAGE); + }); + + it('should get a UNKNOWN_ERROR_ERROR_CODE when an unknown error is thrown', async () => { + patch(harmony, 'getCurrentBlockNumber', () => { + throw new Error(); + }); + + const res = await request(gatewayApp).post('/network/poll').send({ + chain: 'harmony', + network: 'testnet', + txHash: + '0x2faeb1aa55f96c1db55f643a8cf19b0f76bf091d0b7d1b068d2e829414576362', // noqa: mock + }); + + expect(res.statusCode).toEqual(503); + expect(res.body.errorCode).toEqual(UNKNOWN_ERROR_ERROR_CODE); + }); + + it('should get an OUT of GAS error for failed out of gas transactions', async () => { + patch(harmony, 'getCurrentBlockNumber', () => 1); + patch(harmony, 'getTransaction', () => transactionOutOfGas); + patch(harmony, 'getTransactionReceipt', () => transactionOutOfGasReceipt); + const res = await request(gatewayApp).post('/network/poll').send({ + chain: 'harmony', + network: 'testnet', + txHash: + '0x2faeb1aa55f96c1db55f643a8cf19b0f76bf091d0b7d1b068d2e829414576362', // noqa: mock + }); + + expect(res.statusCode).toEqual(503); + expect(res.body.errorCode).toEqual(OUT_OF_GAS_ERROR_CODE); + expect(res.body.message).toEqual(OUT_OF_GAS_ERROR_MESSAGE); + }); + + it('should get a null in txReceipt for Tx in the mempool', async () => { + patch(harmony, 'getCurrentBlockNumber', () => 1); + patch(harmony, 'getTransaction', () => transactionOutOfGas); + patch(harmony, 'getTransactionReceipt', () => null); + const res = await request(gatewayApp).post('/network/poll').send({ + chain: 'harmony', + network: 'testnet', + txHash: + '0x2faeb1aa55f96c1db55f643a8cf19b0f76bf091d0b7d1b068d2e829414576362', // noqa: mock + }); + expect(res.statusCode).toEqual(200); + expect(res.body.txReceipt).toEqual(null); + expect(res.body.txData).toBeDefined(); + }); + + it('should get a null in txReceipt and txData for Tx that didnt reach the mempool and TxReceipt is null', async () => { + patch(harmony, 'getCurrentBlockNumber', () => 1); + patch(harmony, 'getTransaction', () => null); + patch(harmony, 'getTransactionReceipt', () => null); + const res = await request(gatewayApp).post('/network/poll').send({ + chain: 'harmony', + network: 'testnet', + txHash: + '0x2faeb1aa55f96c1db55f643a8cf19b0f76bf091d0b7d1b068d2e829414576362', // noqa: mock + }); + expect(res.statusCode).toEqual(200); + expect(res.body.txReceipt).toEqual(null); + expect(res.body.txData).toEqual(null); + }); + + it('should get txStatus = 1 for a succesful query', async () => { + patch(harmony, 'getCurrentBlockNumber', () => 1); + patch(harmony, 'getTransaction', () => transactionSuccesful); + patch(harmony, 'getTransactionReceipt', () => transactionSuccesfulReceipt); + const res = await request(gatewayApp).post('/network/poll').send({ + chain: 'harmony', + network: 'testnet', + txHash: + '0x6d068067a5e5a0f08c6395b31938893d1cdad81f54a54456221ecd8c1941294d', // noqa: mock + }); + expect(res.statusCode).toEqual(200); + expect(res.body.txReceipt).toBeDefined(); + expect(res.body.txData).toBeDefined(); + }); + + it('should get unknown error', async () => { + patch(harmony, 'getCurrentBlockNumber', () => { + const error: any = new Error('something went wrong'); + error.code = -32006; + throw error; + }); + const res = await request(gatewayApp).post('/network/poll').send({ + chain: 'harmony', + network: 'testnet', + txHash: + '0x2faeb1aa55f96c1db55f643a8cf19b0f76bf091d0b7d1b068d2e829414576362', // noqa: mock + }); + expect(res.statusCode).toEqual(503); + expect(res.body.errorCode).toEqual(UNKNOWN_ERROR_ERROR_CODE); + expect(res.body.message).toEqual(UNKNOWN_ERROR_MESSAGE); + }); +}); diff --git a/test/chains/harmony/harmony.test.ts b/test/chains/harmony/harmony.test.ts new file mode 100644 index 0000000000..6eddfe0318 --- /dev/null +++ b/test/chains/harmony/harmony.test.ts @@ -0,0 +1,62 @@ +import { Harmony } from '../../../src/chains/harmony/harmony'; +import { patchEVMNonceManager } from '../../evm.nonce.mock'; +import { SushiswapConfig } from '../../../src/connectors/sushiswap/sushiswap.config'; +import { DefikingdomsConfig } from '../../../src/connectors/defikingdoms/defikingdoms.config'; +import { DefiraConfig } from '../../../src/connectors/defira/defira.config'; + +let harmony: Harmony; + +beforeAll(async () => { + harmony = Harmony.getInstance('mainnet'); + patchEVMNonceManager(harmony.nonceManager); + await harmony.init(); +}); + +afterAll(async () => { + await harmony.close(); +}); + +describe('getSpender', () => { + describe('get defira', () => { + it('returns defira mainnet router address', () => { + const dfkAddress = harmony.getSpender('defira'); + expect(dfkAddress.toLowerCase()).toEqual( + DefiraConfig.config.routerAddress('mainnet').toLowerCase() + ); + }); + }); + describe('get viperswap', () => { + it('returns viperswap mainnet address', () => { + const viperswapAddress = harmony.getSpender('viperswap'); + expect(viperswapAddress.toLowerCase()).toEqual( + '0xf012702a5f0e54015362cbca26a26fc90aa832a3' + ); + }); + }); + describe('get sushiswap', () => { + it('returns sushiswap kovan address', () => { + const sushiswapAddress = harmony.getSpender('sushiswap'); + expect(sushiswapAddress.toLowerCase()).toEqual( + SushiswapConfig.config + .sushiswapRouterAddress('ethereum', 'kovan') + .toLowerCase() + ); + }); + }); + describe('get defikingdoms', () => { + it('returns defikingdoms mainnet router address', () => { + const dfkAddress = harmony.getSpender('defikingdoms'); + expect(dfkAddress.toLowerCase()).toEqual( + DefikingdomsConfig.config.routerAddress('mainnet').toLowerCase() + ); + }); + }); + describe('get defira', () => { + it('returns defira mainnet router address', () => { + const dfkAddress = harmony.getSpender('defira'); + expect(dfkAddress.toLowerCase()).toEqual( + DefiraConfig.config.routerAddress('mainnet').toLowerCase() + ); + }); + }); +}); diff --git a/test/chains/harmony/harmony.validators.test.ts b/test/chains/harmony/harmony.validators.test.ts new file mode 100644 index 0000000000..6c1889e675 --- /dev/null +++ b/test/chains/harmony/harmony.validators.test.ts @@ -0,0 +1,203 @@ +import { + validateAddress, + invalidAddressError, + validateSpender, + invalidSpenderError, + validateNonce, + invalidNonceError, + invalidMaxFeePerGasError, + validateMaxFeePerGas, + invalidMaxPriorityFeePerGasError, + validateMaxPriorityFeePerGas, +} from '../../../src/chains/harmony/harmony.validators'; + +import { missingParameter } from '../../../src/services/validators'; + +import 'jest-extended'; + +describe('validateAddress', () => { + it('valid when req.address is a address', () => { + expect( + validateAddress({ + address: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + }) + ).toEqual([]); + }); + + it('valid when req.address is a bech32 address', () => { + expect( + validateAddress({ + address: 'one1l2sjl5gzl6rz8jffn3etq0j9zpljwu44u9889l', + }) + ).toEqual([]); + }); + + it('return error when req.address does not exist', () => { + expect( + validateAddress({ + hello: 'world', + }) + ).toEqual([missingParameter('address')]); + }); + + it('return error when req.address is invalid', () => { + expect( + validateAddress({ + address: 'world', + }) + ).toEqual([invalidAddressError]); + }); +}); + +describe('validateSpender', () => { + it('valid when req.spender is a publicKey', () => { + expect( + validateSpender({ + spender: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + }) + ).toEqual([]); + }); + + it("valid when req.spender is a 'sushiswap'", () => { + expect( + validateSpender({ + spender: 'sushiswap', + }) + ).toEqual([]); + }); + + it("valid when req.spender is 'viperswap'", () => { + expect( + validateSpender({ + spender: 'viperswap', + }) + ).toEqual([]); + }); + + it("valid when req.spender is 'defikingdoms'", () => { + expect( + validateSpender({ + spender: 'defikingdoms', + }) + ).toEqual([]); + }); + + it("valid when req.spender is 'defira'", () => { + expect( + validateSpender({ + spender: 'defira', + }) + ).toEqual([]); + }); + + it('return error when req.spender does not exist', () => { + expect( + validateSpender({ + hello: 'world', + }) + ).toEqual([missingParameter('spender')]); + }); + + it('return error when req.spender is invalid', () => { + expect( + validateSpender({ + spender: 'world', + }) + ).toEqual([invalidSpenderError]); + }); +}); + +describe('validateNonce', () => { + it('valid when req.nonce is a number', () => { + expect( + validateNonce({ + nonce: 0, + }) + ).toEqual([]); + expect( + validateNonce({ + nonce: 999, + }) + ).toEqual([]); + }); + + it('valid when req.nonce does not exist', () => { + expect( + validateNonce({ + hello: 'world', + }) + ).toEqual([]); + }); + + it('return error when req.nonce is invalid', () => { + expect( + validateNonce({ + nonce: '123', + }) + ).toEqual([invalidNonceError]); + }); +}); + +describe('validateMaxFeePerGas', () => { + it('valid when req.quote is a string', () => { + expect( + validateMaxFeePerGas({ + maxFeePerGas: '5000000000', + }) + ).toEqual([]); + + expect( + validateMaxFeePerGas({ + maxFeePerGas: '1', + }) + ).toEqual([]); + }); + + it('return no error when req.maxFeePerGas does not exist', () => { + expect( + validateMaxFeePerGas({ + hello: 'world', + }) + ).toEqual([]); + }); + + it('return error when req.maxFeePerGas is invalid', () => { + expect( + validateMaxFeePerGas({ + maxFeePerGas: 123, + }) + ).toEqual([invalidMaxFeePerGasError]); + }); +}); + +describe('validateMaxPriorityFeePerGas', () => { + it('valid when req.quote is a string', () => { + expect( + validateMaxPriorityFeePerGas({ + maxPriorityFeePerGasError: '5000000000', + }) + ).toEqual([]); + + expect( + validateMaxPriorityFeePerGas({ + maxPriorityFeePerGasError: '1', + }) + ).toEqual([]); + }); + + it('return no error when req.maxPriorityFeePerGas does not exist', () => { + expect( + validateMaxPriorityFeePerGas({ + hello: 'world', + }) + ).toEqual([]); + }); + + it('return error when req.maxPriorityFeePerGas is invalid', () => { + expect( + validateMaxPriorityFeePerGas({ + maxPriorityFeePerGas: 123, + }) + ).toEqual([invalidMaxPriorityFeePerGasError]); + }); +}); diff --git a/test/chains/near/fixtures/getTokenList.json b/test/chains/near/fixtures/getTokenList.json new file mode 100644 index 0000000000..22345e5bae --- /dev/null +++ b/test/chains/near/fixtures/getTokenList.json @@ -0,0 +1,47 @@ +{ + "dai.near": { + "symbol": "DAI", + "name": "Dark Assassins Inc. Coin", + "decimals": 2 + }, + "ageur.near": { + "symbol": "agEUR", + "name": "agEUR (Wormhole)", + "decimals": 8 + }, + "angle.near": { + "symbol": "ANGLE", + "name": "ANGLE (Wormhole)", + "decimals": 8 + }, + "mbs.near": { + "symbol": "MBS", + "name": "MonkeyBucks", + "decimals": 6 + }, + "edb.near": { + "symbol": "EDB", + "name": "Emerald Block", + "decimals": 9 + }, + "cwar.near": { + "symbol": "CWAR", + "name": "Cryowar Token", + "decimals": 9 + }, + "echo.near": { + "symbol": "ECHO", + "name": "EchoDao", + "decimals": 9 + }, + "monke.near": { + "symbol": "MONKE", + "name": "MONKE TOKEN", + "decimals": 9 + }, + "dibu.near": { + "symbol": "DIBU", + "name": "DickButt", + "decimals": 3 + } +} diff --git a/test/chains/near/fixtures/getTransaction.json b/test/chains/near/fixtures/getTransaction.json new file mode 100644 index 0000000000..9df153f8be --- /dev/null +++ b/test/chains/near/fixtures/getTransaction.json @@ -0,0 +1,86 @@ +{ + "status": { + "SuccessValue": "" + }, + "transaction": { + "signer_id": "sender.testnet", + "public_key": "ed25519:Gowpa4kXNyTMRKgt5W7147pmcc2PxiFic8UHW9rsNvJ6", + "nonce": 15, + "receiver_id": "receiver.testnet", + "actions": [ + { + "Transfer": { + "deposit": "1000000000000000000000000" + } + } + ], + "signature": "ed25519:3168QMdTpcwHvM1dmMYBc8hg9J3Wn8n7MWBSE9WrEpns6P5CaY87RM6k4uzyBkQuML38CZhU18HzmQEevPG1zCvk", + "hash": "6zgh2u9DqHHiXzdy9ouTP7oGky2T4nugqzqt9wJZwNFm" + }, + "transaction_outcome": { + "proof": [ + { + "hash": "F7mL76CMdfbdZ3xCehVGNh1fCyaR37gr3MeGX3EZkiVf", + "direction": "Right" + } + ], + "block_hash": "ADTMLVtkhsvzUxuf6m87Pt1dnF5vi1yY7ftxmNpFx7y", + "id": "6zgh2u9DqHHiXzdy9ouTP7oGky2T4nugqzqt9wJZwNFm", + "outcome": { + "logs": [], + "receipt_ids": ["3dMfwczW5GQqXbD9GMTnmf8jy5uACxG6FC5dWxm3KcXT"], + "gas_burnt": 223182562500, + "tokens_burnt": "22318256250000000000", + "executor_id": "sender.testnet", + "status": { + "SuccessReceiptId": "3dMfwczW5GQqXbD9GMTnmf8jy5uACxG6FC5dWxm3KcXT" + } + } + }, + "receipts_outcome": [ + { + "proof": [ + { + "hash": "6h95oEd7ih62KXfyPT4zsZYont4qy9sWEXc5VQVDhqtG", + "direction": "Right" + }, + { + "hash": "6DnibgZk1T669ZprcehUy1GpCSPw1kjzXRGu69nSaUNn", + "direction": "Right" + } + ], + "block_hash": "GgFTVr33r4MrpAiHc9mr8TZqLnpZAX1BaZTNvhBnciy2", + "id": "3dMfwczW5GQqXbD9GMTnmf8jy5uACxG6FC5dWxm3KcXT", + "outcome": { + "logs": [], + "receipt_ids": ["46KYgN8ddxs4Qy8C7BDQH49XUfcYZsaQmAvdU1nfcL9V"], + "gas_burnt": 223182562500, + "tokens_burnt": "22318256250000000000", + "executor_id": "receiver.testnet", + "status": { + "SuccessValue": "" + } + } + }, + { + "proof": [ + { + "hash": "CD9Y7Bw3MSFgaPZzpc1yP51ajhGDCAsR61qXcMNcRoHf", + "direction": "Left" + } + ], + "block_hash": "EGAgKuW6Bd6QKYSaxAkx2pPGmnjrjAcq4UpoUiqMXvPH", + "id": "46KYgN8ddxs4Qy8C7BDQH49XUfcYZsaQmAvdU1nfcL9V", + "outcome": { + "logs": [], + "receipt_ids": [], + "gas_burnt": 0, + "tokens_burnt": "0", + "executor_id": "sender.testnet", + "status": { + "SuccessValue": "" + } + } + } + ] +} diff --git a/test/chains/near/near.controllers.test.ts b/test/chains/near/near.controllers.test.ts new file mode 100644 index 0000000000..6caec96273 --- /dev/null +++ b/test/chains/near/near.controllers.test.ts @@ -0,0 +1,124 @@ +import { Near } from '../../../src/chains/near/near'; +import { TokenInfo } from '../../../src/chains/near/near.base'; +import { + balances, + cancel, + getTokenSymbolsToTokens, + poll, +} from '../../../src/chains/near/near.controllers'; +import { PollResponse } from '../../../src/chains/near/near.requests'; +import { Nearish } from '../../../src/services/common-interfaces'; +import { + HttpException, + LOAD_WALLET_ERROR_CODE, + LOAD_WALLET_ERROR_MESSAGE, +} from '../../../src/services/error-handler'; +import { patch, unpatch } from '../../services/patch'; +import * as getTokenListData from './fixtures/getTokenList.json'; +import * as getTransactionData from './fixtures/getTransaction.json'; +import { publicKey } from './near.validators.test'; + +let near: Nearish; +const txHash = 'JCVEmLB2EQUR5hijgJkLLKjW5aGxdcdAndTQZBZ85Fm8'; +const zeroAddress = + '0000000000000000000000000000000000000000000000000000000000000000'; // noqa: mock + +beforeAll(async () => { + near = Near.getInstance('testnet'); + near.getTokenList = jest.fn().mockReturnValue(getTokenListData); + await near.init(); +}); + +afterEach(() => { + unpatch(); +}); + +afterAll(async () => { + await near.close(); +}); + +const CurrentBlockNumber = 112646487; +const patchGetCurrentBlockNumber = () => { + patch(near, 'getCurrentBlockNumber', () => CurrentBlockNumber); +}; + +const patchGetTransaction = () => { + patch(near, 'getTransaction', () => getTransactionData); +}; + +describe('poll', () => { + it('return transaction data for given signature', async () => { + patchGetCurrentBlockNumber(); + patchGetTransaction(); + const n: PollResponse = await poll(near, publicKey, txHash); + expect(n.network).toBe(near.network); + expect(n.timestamp).toBeNumber(); + expect(n.currentBlock).toBe(CurrentBlockNumber); + expect(n.txHash).toBe(txHash); + expect(n.txStatus).toBe(1); + }); +}); + +describe('balances', () => { + it('fail if wallet not found', async () => { + const err = 'wallet does not exist'; + patch(near, 'getWallet', () => { + throw new Error(err); + }); + + await expect( + balances(near, { + chain: 'near', + network: 'testnet', + address: publicKey, + tokenSymbols: ['ETHH', 'NEAR'], + }) + ).rejects.toThrow( + new HttpException( + 500, + LOAD_WALLET_ERROR_MESSAGE + 'Error: ' + err, + LOAD_WALLET_ERROR_CODE + ) + ); + }); +}); + +describe('cancel', () => { + it('fail if wallet not found', async () => { + const err = 'wallet does not exist'; + patch(near, 'getWallet', () => { + throw new Error(err); + }); + + await expect( + cancel(near, { + chain: 'near', + network: 'testnet', + nonce: 123, + address: zeroAddress, + }) + ).rejects.toThrow( + new HttpException( + 500, + LOAD_WALLET_ERROR_MESSAGE + 'Error: ' + err, + LOAD_WALLET_ERROR_CODE + ) + ); + }); +}); + +const eth: TokenInfo = { + chainId: 0, + name: 'ETH', + symbol: 'ETH', + address: 'eth.near', + decimals: 18, +}; +describe('getTokenSymbolsToTokens', () => { + it('return tokens for strings', () => { + patch(near, 'getTokenBySymbol', () => { + return eth; + }); + expect(getTokenSymbolsToTokens(near, ['ETH'])).toEqual({ ETH: eth }); + }); +}); diff --git a/test/chains/near/near.routes.test.ts b/test/chains/near/near.routes.test.ts new file mode 100644 index 0000000000..55128de12f --- /dev/null +++ b/test/chains/near/near.routes.test.ts @@ -0,0 +1,196 @@ +import request from 'supertest'; +import { Near } from '../../../src/chains/near/near'; +import { patch, unpatch } from '../../services/patch'; +import { gatewayApp } from '../../../src/app'; +import { + NETWORK_ERROR_CODE, + RATE_LIMIT_ERROR_CODE, + UNKNOWN_ERROR_ERROR_CODE, + NETWORK_ERROR_MESSAGE, + RATE_LIMIT_ERROR_MESSAGE, + UNKNOWN_ERROR_MESSAGE, +} from '../../../src/services/error-handler'; +import * as transactionSuccesful from './fixtures/getTransaction.json'; +let near: Near; + +beforeAll(async () => { + near = Near.getInstance('testnet'); +}); + +afterEach(() => { + unpatch(); +}); + +afterAll(async () => { + await near.close(); +}); + +const patchGetWallet = () => { + patch(near, 'getWallet', () => { + return { + address: 'test.near', + }; + }); +}; + +const patchGetFTBalance = () => { + patch(near, 'getFungibleTokenBalance', () => '0.01'); +}; + +const patchGetNativeBalance = () => { + patch(near, 'getNativeBalance', () => '0.01'); +}; + +const patchGetTokenBySymbol = () => { + patch(near, 'getTokenBySymbol', (symbol: string) => { + let result; + switch (symbol) { + case 'WETH': + result = { + chainId: 42, + name: 'WETH', + symbol: 'WETH', + address: 'weth.near', + decimals: 18, + }; + break; + case 'DAI': + result = { + chainId: 42, + name: 'DAI', + symbol: 'DAI', + address: 'dai.near', + decimals: 18, + }; + break; + } + return result; + }); +}; + +describe('POST /near/balances', () => { + it('should return 500 for unsupported tokens', async () => { + patchGetWallet(); + patchGetTokenBySymbol(); + patchGetNativeBalance(); + patchGetFTBalance(); + near.getContract = jest.fn().mockReturnValue({ + address: 'test.near', + }); + + await request(gatewayApp) + .post(`/near/balances`) + .send({ + chain: 'near', + network: 'testnet', + address: 'test.near', + tokenSymbols: ['XXX', 'YYY'], + }) + .set('Accept', 'application/json') + .expect('Content-Type', /json/) + .expect(500); + }); + + it('should return 404 when parameters are invalid', async () => { + await request(gatewayApp) + .post(`/near/balances`) + .send({ + chain: 'near', + network: 'testnet', + address: 'da857cbda0ba96757fed842617a4', + }) + .expect(404); + }); +}); + +describe('POST /near/poll', () => { + it('should get a NETWORK_ERROR_CODE when the network is unavailable', async () => { + patch(near, 'getCurrentBlockNumber', () => { + const error: any = new Error('somnearing went wrong'); + error.code = 'NETWORK_ERROR'; + throw error; + }); + + const res = await request(gatewayApp).post('/near/poll').send({ + address: 'test.near', + network: 'testnet', + txHash: + '2faeb1aa55f96c1db55f643a8cf19b0f76bf091d0b7d1b068d2e829414576362', // noqa: mock + }); + + expect(res.statusCode).toEqual(503); + expect(res.body.errorCode).toEqual(NETWORK_ERROR_CODE); + expect(res.body.message).toEqual(NETWORK_ERROR_MESSAGE); + }); + + it('should get a UNKNOWN_ERROR_ERROR_CODE when an unknown error is thrown', async () => { + patch(near, 'getCurrentBlockNumber', () => { + throw new Error(); + }); + + const res = await request(gatewayApp).post('/near/poll').send({ + address: 'test.near', + network: 'testnet', + txHash: + '2faeb1aa55f96c1db55f643a8cf19b0f76bf091d0b7d1b068d2e829414576362', // noqa: mock + }); + + expect(res.statusCode).toEqual(503); + expect(res.body.errorCode).toEqual(UNKNOWN_ERROR_ERROR_CODE); + }); + + it('should get txStatus = 1 for a succesful query', async () => { + patch(near, 'getCurrentBlockNumber', () => 1); + patch(near, 'getTransaction', () => transactionSuccesful); + const res = await request(gatewayApp).post('/near/poll').send({ + address: 'test.near', + network: 'testnet', + txHash: + '0x6d068067a5e5a0f08c6395b31938893d1cdad81f54a54456221ecd8c1941294d', // noqa: mock + }); + expect(res.statusCode).toEqual(200); + expect(res.body.txReceipt).toBeDefined(); + }); + + it('should get an RATE_LIMIT_ERROR_CODE when the blockchain API is rate limited', async () => { + patch(near, 'getCurrentBlockNumber', () => { + const error: any = new Error( + 'daily request count exceeded, request rate limited' + ); + error.code = -32005; + error.data = { + see: 'https://infura.io/docs/near/jsonrpc/ratelimits', + current_rps: 13.333, + allowed_rps: 10.0, + backoff_seconds: 30.0, + }; + throw error; + }); + const res = await request(gatewayApp).post('/near/poll').send({ + address: 'test.near', + network: 'testnet', + txHash: + '2faeb1aa55f96c1db55f643a8cf19b0f76bf091d0b7d1b068d2e829414576362', // noqa: mock + }); + expect(res.statusCode).toEqual(503); + expect(res.body.errorCode).toEqual(RATE_LIMIT_ERROR_CODE); + expect(res.body.message).toEqual(RATE_LIMIT_ERROR_MESSAGE); + }); + + it('should get unknown error', async () => { + patch(near, 'getCurrentBlockNumber', () => { + const error: any = new Error('somnearing went wrong'); + error.code = -32006; + throw error; + }); + const res = await request(gatewayApp).post('/near/poll').send({ + address: 'test.near', + network: 'testnet', + txHash: + '2faeb1aa55f96c1db55f643a8cf19b0f76bf091d0b7d1b068d2e829414576362', // noqa: mock + }); + expect(res.statusCode).toEqual(503); + expect(res.body.errorCode).toEqual(UNKNOWN_ERROR_ERROR_CODE); + expect(res.body.message).toEqual(UNKNOWN_ERROR_MESSAGE); + }); +}); diff --git a/test/chains/near/near.validators.test.ts b/test/chains/near/near.validators.test.ts new file mode 100644 index 0000000000..9fe96153d9 --- /dev/null +++ b/test/chains/near/near.validators.test.ts @@ -0,0 +1,159 @@ +import 'jest-extended'; +import { + invalidAddressError, + invalidChainError, + invalidNetworkError, + invalidNonceError, + invalidSpenderError, + validateAddress, + validateBalanceRequest, + validateChain, + validateNetwork, + validateNonce, + validateSpender, +} from '../../../src/chains/near/near.validators'; +import { missingParameter } from '../../../src/services/validators'; + +export const publicKey = 'test.near'; +export const privateKey = + '5K23ZvkHuNoakyMKGNoaCvky6a2Yu5yfeoRz2wQLKYAczMKzACN5ZZb9ixu6QcsQvrvh91CNfqu8U1LqC1nvnyfp'; + +describe('validatePublicKey', () => { + it('valid when req.publicKey is a publicKey', () => { + expect( + validateAddress({ + address: publicKey, + }) + ).toEqual([]); + }); + + it('return error when req.publicKey does not exist', () => { + expect( + validateAddress({ + hello: 'world', + }) + ).toEqual([missingParameter('address')]); + }); + + it('return error when req.publicKey is invalid', () => { + expect( + validateAddress({ + address: 1, + }) + ).toEqual([invalidAddressError]); + }); +}); + +describe('validateSpender', () => { + it('valid when req.spender is a publicKey', () => { + expect( + validateSpender({ + spender: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + }) + ).toEqual([]); + }); + + it("valid when req.spender is a 'uniswap'", () => { + expect( + validateSpender({ + spender: 'uniswap', + }) + ).toEqual([]); + }); + + it('return error when req.spender is invalid', () => { + expect( + validateSpender({ + spender: 123, + }) + ).toEqual([invalidSpenderError]); + }); +}); + +describe('validateNonce', () => { + it('valid when req.nonce is a number', () => { + expect( + validateNonce({ + nonce: 0, + }) + ).toEqual([]); + expect( + validateNonce({ + nonce: 999, + }) + ).toEqual([]); + }); + + it('valid when req.nonce does not exist', () => { + expect( + validateNonce({ + hello: 'world', + }) + ).toEqual([]); + }); + + it('return error when req.nonce is invalid', () => { + expect( + validateNonce({ + nonce: '123', + }) + ).toEqual([invalidNonceError]); + }); +}); + +describe('validateChain', () => { + it('invalid when req.chain is a number', () => { + expect( + validateChain({ + chain: 2, + }) + ).toEqual([invalidChainError]); + expect( + validateChain({ + chain: 999, + }) + ).toEqual([invalidChainError]); + }); + + it('valid when req.chain is a string', () => { + expect( + validateChain({ + chain: 'world', + }) + ).toEqual([]); + }); +}); + +describe('validateNetwork', () => { + it('invalid when req.network is a number', () => { + expect( + validateNetwork({ + network: 2, + }) + ).toEqual([invalidNetworkError]); + expect( + validateNetwork({ + network: 999, + }) + ).toEqual([invalidNetworkError]); + }); + + it('valid when req.network is a string', () => { + expect( + validateNetwork({ + network: 'world', + }) + ).toEqual([]); + }); +}); + +describe('validateBalanceRequest', () => { + it('valid when requests are correct', () => { + expect( + validateBalanceRequest({ + address: 'world', + tokenSymbols: ['token'], + }) + ).toEqual(undefined); + }); +}); diff --git a/test/chains/near/ref/ref.route.test.ts b/test/chains/near/ref/ref.route.test.ts new file mode 100644 index 0000000000..4e45410cf6 --- /dev/null +++ b/test/chains/near/ref/ref.route.test.ts @@ -0,0 +1,708 @@ +import request from 'supertest'; +import { patch, unpatch } from '../../../services/patch'; +import { gatewayApp } from '../../../../src/app'; +import { Near } from '../../../../src/chains/near/near'; +import { Ref } from '../../../../src/connectors/ref/ref'; +let near: Near; +let ref: Ref; + +beforeAll(async () => { + near = Near.getInstance('testnet'); + await near.init(); + + ref = Ref.getInstance('near', 'testnet'); + await ref.init(); +}); + +afterEach(() => { + unpatch(); +}); + +afterAll(async () => { + await near.close(); +}); + +const address: string = 'test.near'; + +const patchGetWallet = () => { + patch(near, 'getWallet', () => { + return { + accountId: address, + connection: { + networkId: 'testnet', + signer: { + getPublicKey: { + toString: '0xa1242434', + }, + }, + provider: {}, + }, + }; + }); +}; + +const DAI = { + spec: 'ft-1.0.0', + name: 'Dai Stablecoin', + symbol: 'DAI', + icon: '', + reference: '', + reference_hash: '', + decimals: 18, + id: '6b175474e89094c44da98b954eedeac495271d0f.factory.bridge.near', +}; + +const ETH = { + decimals: 18, + icon: '', + name: 'Ether', + reference: null, + reference_hash: null, + spec: 'ft-1.0.0', + symbol: 'ETH', + id: 'aurora', +}; + +const tradePath = [ + { + estimate: '438.7318928061755133021873247954861357077652', + pool: { + fee: 30, + gamma_bps: [], + id: 1207, + partialAmountIn: '988562670855139614', + supplies: [Object], + token0_ref_price: '0', + tokenIds: [Array], + Dex: undefined, + x: '1124497821208300092576', + y: '501001402176405567560845153269', + }, + status: 'stableSmart', + token: { + decimals: 18, + icon: 'data:image/png;base64,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', + name: 'Ether', + reference: null, + reference_hash: null, + spec: 'ft-1.0.0', + symbol: 'ETH', + id: 'aurora', + }, + outputToken: 'wrap.near', + inputToken: 'aurora', + nodeRoute: [ + 'aurora', + 'wrap.near', + '6b175474e89094c44da98b954eedeac495271d0f.factory.bridge.near', + ], + route: [[Object], [Object]], + allRoutes: [[Array], [Array]], + allNodeRoutes: [[Array], [Array]], + totalInputAmount: '1000000000000000000', + allAllocations: [[], []], + tokens: [ETH, DAI], + routeInputToken: 'aurora', + routeOutputToken: + '6b175474e89094c44da98b954eedeac495271d0f.factory.bridge.near', + overallPriceImpact: '3.53957150694661537802481235958281919791', + }, + { + estimate: '1227.5907741995622146029347396525450563115171', + pool: { + fee: 30, + gamma_bps: [], + id: 2, + partialAmountIn: '0', + supplies: [Object], + token0_ref_price: '0', + tokenIds: [Array], + Dex: undefined, + x: '15490663264513922879112087736', + y: '44701557151302991680091', + }, + status: 'stableSmart', + token: { + spec: 'ft-1.0.0', + name: 'Wrapped NEAR fungible token', + symbol: 'wNEAR', + icon: null, + reference: null, + reference_hash: null, + decimals: 24, + id: 'wrap.near', + }, + outputToken: '6b175474e89094c44da98b954eedeac495271d0f.factory.bridge.near', + inputToken: 'wrap.near', + nodeRoute: [ + 'aurora', + 'wrap.near', + '6b175474e89094c44da98b954eedeac495271d0f.factory.bridge.near', + ], + route: [[Object], [Object]], + allRoutes: [[Array], [Array]], + allNodeRoutes: [[Array], [Array]], + totalInputAmount: '1000000000000000000', + allAllocations: [[], []], + tokens: [ETH, DAI], + routeInputToken: 'aurora', + routeOutputToken: + '6b175474e89094c44da98b954eedeac495271d0f.factory.bridge.near', + overallPriceImpact: '3.53957150694661537802481235958281919791', + }, + { + estimate: '3.8379037803866734449637949018757616354149', + pool: { + fee: 19, + gamma_bps: [], + id: 3023, + partialAmountIn: '11437329144860386', + supplies: [Object], + token0_ref_price: '0', + tokenIds: [Array], + Dex: undefined, + x: '2282104348405543143', + y: '771077319322598388824', + }, + status: 'stableSmart', + token: { + decimals: 18, + icon: 'data:image/png;base64,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', + name: 'Ether', + reference: null, + reference_hash: null, + spec: 'ft-1.0.0', + symbol: 'ETH', + id: 'aurora', + }, + outputToken: 'marmaj.tkn.near', + inputToken: 'aurora', + nodeRoute: [ + 'aurora', + 'marmaj.tkn.near', + '6b175474e89094c44da98b954eedeac495271d0f.factory.bridge.near', + ], + route: [[Object], [Object]], + allRoutes: [[Array], [Array]], + allNodeRoutes: [[Array], [Array]], + totalInputAmount: '1000000000000000000', + allAllocations: [[], []], + tokens: [ETH, DAI], + routeInputToken: 'aurora', + routeOutputToken: + '6b175474e89094c44da98b954eedeac495271d0f.factory.bridge.near', + overallPriceImpact: '3.53957150694661537802481235958281919791', + }, + { + estimate: '14.299093444897422181731877348671464832746', + pool: { + fee: 19, + gamma_bps: [], + id: 10, + partialAmountIn: '0', + supplies: [Object], + token0_ref_price: '0', + tokenIds: [Array], + Dex: undefined, + x: '123732450606489839390', + y: '476173588371142658007', + }, + status: 'stableSmart', + token: { + spec: 'ft-1.0.0', + name: 'marma j token', + symbol: 'marmaj', + icon: 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAARCABgAGADASIAAhEBAxEB/8QAGwAAAwADAQEAAAAAAAAAAAAABQYHAgQIAAP/xAAwEAACAgIBAwQCAgIBBAMBAAABAgMEBRESBhMhAAciMQgUFUEyQlIkUWFyFhcjcf/EABoBAAMBAQEBAAAAAAAAAAAAAAMEBQAGAgH/xAAzEQABAwIFAgQEBgIDAAAAAAABAgMEESEABQYxURJBYXGBsRMikaEjM8HR8PEU4TJCUv/aAAwDAQACEQMRAD8A589vPx06I6g9vsD1jlopMobSxWMhahsHnAG0WVgQdgK33rYOt6AJ9NT/AIt+2NXKZafI4mxFjaQWGBjMQ0kjIp8H+yNgKP7LHf16+347xnLdEYjGdJfuxZKeisc7QzKsCHtKO7KrDXjY/okgDXj0z+1eD6y6HgmrZXqbH5K9kP8ArMMt6Sa9XMIXg0sMjlTHI6mNmHEniV0fLAc48/J1LIKGqsoasSO/Jr6ffHfSHoGlojbrzQdW4AQKVoaWFKX3qfLCEn41dF0uoaFirgq2Qx4hlazBJDamVJWbUY5RnXELy34OyAdefU3656L9sekcvcizXT5ihhkavGwjmiikfmpT5aPBwj8G58QdBgAfvqmbOddZHJVsZarrVNmVkknrRKqxRhSe5uRmDDYUaHkchsaO/SN/9adPX+sHnz+Re1lZMpJF+njbEYSzEjIknfbWlnCuCU+OwRr/AC5BefqOAwn4EdRJTue559t8Ro2VT33FS56UpCtk9hxb9MT1fxz6Ow2Akms4xcvJZjjNaWoxVa0UhCrIWYnmfmCq/ItxJ8jyDnUf41e0axQ3cPXZqn8c9szCdkDM4+HykUAEBWGgrEnfga2Lp+rhrvHHSQQxyfyk/wAZKaxNBBWn4xcZipQeEgQDkn+Q0fPpPs2RH/JyQd5Wetc5yzI8Qj5N3wiyyKdKVmJPDmxZSOXx36mQJk1785Cwd6moBGFs/lxm4jpiFBTQBNNwa3vie9OfjT7PyCfI5yBhVbGra7pnZlV1X5kNGNEnkoClVIIXw29kLJ+OfQ2a6ahlgxww81NJWtT2uTi1ChYNJtW0hHEll0rLyB8D7rlayJP4x5+8zLWp8JYUeUScW75RpY1G1CwgjmEYMwHL5b9OH6uGpc8dHBDJJ/KQfGOmsrTwWZ+MvKYKEPh50I5P/idnx6+T5k1n8lKyd6ipAHtjafmRlxGjLKAmhCq7k1tfeuOOOh+iOgevMzWjwPRVyON5o4mWaRVQHkxbfcdSSyR8VH9A8iG34pEX4jdLnM2rFzFZCvV7Cfq1hqRFlVtuXkTl8GU6GypGmJ/rbzJ0BhYOp44sTkTFkYsnFAlTKzp/0UDPIsQrSgb7pCswiBKgb5DxsuFW77hY7KW8bDKthKsyJDbZ0dJUKAlnIQdttkjiOR0N/R9VMv1JBfT8GSSkq25HH94YlZPOacTKgBKwNwe/c/1iTVfxZ9rruSxVmrjLbVnmevdhawNxScCw2QNjXE/+DsH69KPu1+OHRPS/t5mOucbjZqorvypd2Ys00Rk0CQBpQUXeyN7J+h92j3c6Xy3ubjRSHVNZMpgI3yGSnFLjW/WEbDtsqEPJKAHKAtrw3hSR6S/yMxLYL2/yeM6hFyXIQVEWtkDellitRjQLBS2k3oFlAIBI8nwfTLT0jTkgNvEvIdsK36b2Na+P2xXjuwtURHXWWg0psEntU0valtqjtfDh7J5HEdA/jvjjUiVszmajS2rESGWeOMDgfiuyeIAUAD7O9Hzs3MkWV6MoSRbf+DkEDBfEixryVRoeQSFU/wBf9/69QPo/O5fBdKYTJxZv9ZchQi5Gacr3IlXRTRRkQqWZlddA6Ct5Hl3xGbvQSS15sxmDl8paXF4Jo5mihyojCd+xG6oR3gF5gsCOJUab5aVz2alEQxIvyqJqTzzf34A4BxOgMuvSxmM0ghIokdhwac+588UTF+5+SzXSEWIfpyaTGN3a2ay6PCbWCbgwR2RWYNIGKMW0OKhiQfBKji87TzPUuf6cg68a9msRbr3KANNYEkUxDnE7cV5zsY9kNsa0672QpzG8zR6sxVXK5LGZDIRIlen+rAjIFiCu8RKqJpG1z02h54n736VcNhsXZxcEMNWSxTsPHbjjtwmvYgsREKfKhT3OSP8A7H7Pliyr6NlOTw8sYD626uLPUaja3r+m3qROPTc+klHXRpNhQ70/njv9C3W/uHhcJnITdWxbbNXJKt+OrF8qjJEPFgRqXCfEllA1sk6OvArpzLZrNYe7VtWKurxa3iX/AGnmn0iLEwBePlxTlxMgGySCNgj0ThxkUmdpZjCYilYtZi6Z57YgNexznHbijZWX+lcKS2j8R4Oz6IW/bSx0XNPj7rV6FC4v8lEqtw4Scg03J96+/BGvpx5+9gmalZChHauo2A8t6De2KKtPxctQXJQHTx5ix4v784XOpMtmsLh6VWtYq6o8beWf9p4Z9OjRKCUj5cX48RIRsEEnQB9FeiPcPC5vOTGktio2FuR1aEdqL5W2eI+K4kUOU+QKqRrYB0N+d6p7aWOtJoMfSavfoU1/kpVZufOTkWh4vvX34A19IfP1ofNjIo87dzGbxFKvaw90TwWzAbFjnAO3LGqqv9qhUFdn5HwND1oepWSox3LKFAR57VG98ZOn4uZIDkYDp48hc8W9+Ma+YzKYXqTp/AWOsLlLI5q1as35oaKzpE6wkxwI5Vgk69wt414HJtHjtty3uLmsV0PJgYen5a+NrwpUweSknrrZzZWIcmUlwqyM6s3IAhlbkDv0jZnDYuti54ZqslenXeS3JHUhNixPYlJUeWDHucnT/YfQG1KsvpsvPNFT6Sxs2YyeQyWPidJ6q1oGdw0RVXlYKwhkXly0ux44j636Pm2Tw8yYMhtujiD1Cg3t32/Xf1E5t2ZkUkI6/wAJVjU7VP8AONvqUpR/xHR2QM0bV3zbNViRk1Lp1CeV87I5ltAkefBO9+k33+zmM6r/ABuu08nCkGQx3alqTWk7c7xK3HXE6II8r/5Gj/foXn8vkpbccC5PMplsbZXG5t5JmmhxayRkQWZHZADOeXMlRrirDS/Hc29zMxlequjMzdt5iO4tGLuRlbBYRKQVAAVVRnIBJdt65sq7LeA5DOS5FEWT8ygag8cX9vC+xGCZgw4zLOYQjRKk9Kh2PNvfx8sO3svD0zgejsPYNtbkubx9etPVMffhqABmbmqhv8hx4oQOTOdnydWxaFHMYulbgoZWaxjxBZqu881OGnKiKJuMY1xPakmACRnwjjR+vUs9i+rUm9osVhchBhDVSisU37EvdYqjCRtodaYL2wNH7dfI4tprs2e2Ow+cpMyyrNK/8m0nbCOkkqoJ+4rKNhNnTFpW1x8+pT8Auy0Pf9guprsR/WFcw1DCDBi/FBSUAdIBBB735rgV7idb5zCYUXTWyGaa3NHVjv1ZoomqN8YxZHgbQOwAYknQXZG/GOMhzskVDCZjF5LMWrFaMW552Fp/2IijK0cUfJV/5FlA8qvg736GZbpzD5rNS2quUN4frz88TbdIh35HicqGiU9teQAcr5J8EEHXpj9tLc3RdhruPtrcoUISqxZLl3E48ubd5hseANEch4Pj+zU1LMUGfhRxVR2ANPIV7XxX0+pGWxRJcPy0tsfqO9vX640Y47kVywiXJ6+TrygBQOyZjH5UlTwZCrxKfIcIJf8AYt8ad1tLj+uugUyt+vFP2ULSQsAyEEGOeNwfseWBB8bUE/Xr0vW3QPXWPiv5WKOHvoGhkZgwKEbDxzxk+CNkEEHXkgeoD7o+6UnRE2R6V6Yz1e5ishGY2kEiPIJnQAqCAUIKsuzoa1s/7MC6X0uhSBNmChH258645POc5k6kkrYYXRAuSe/gMX7omXH9C9AvlaFeKDvIGjhUBUAAEcEaAfQ8KAB42xI+/UxkjuS3K6PcnsZOxKQQR3jCZPLEKObOWeVj4CBxF/qV+Sf7Xe6MnW82O6V6nz1elisegjVzIiSmZEICkkBAAqto6O97H+rG/RdbdA9C4+W/ioo5uwhaaRWCgIBsvJPIR4Hgkkk68gH1tT6YQlBmwhUn7+vamNk2cydOSUMPrqg3BHbwOJfk4c7HFfwmHxeSw9qvWkFSeBhVf9iUuzNJFJxVv+QZgfLN4Gt+svbzrfOZvCm6K2QwrVJpKsl+1NFK1tvlGbJ8HSF1ILAg6LaJ153vcu3N1pYW7kLa06F+EK0WN5dx+XHg3eUbPgnZPEeR4/sLmJ6cw+FzUVq1lDRH68HDE1HSUd+N5XClpVHcXkSELeQfAAA16FpqYos/DkCihuDe/cE9746zP1IzKKZTZ+Wl9h6gdrev0xVZatbF4q1atU8tHPcWeedksTXIbbujdgNGd8j20iBDxjxIo0Pr1z37+npnLdK5Ccy/rvjIWpV6scXZhn2Oasqso8KFIZADxZRo6A3Wa1nuDsR5ymrNK00T/wAm0fcDu8kSuIO2qqdFNjbBol3y8ekL8i+oI39pbOKoR4hKqInZFRwjFWLOo4DkCeLSbJYEGNvJ5LymxIBamLeO5XUU2AP+sRYWoIaowiB0dIRTpINSe1+cb/sN0nFF7P4rN3beEaq9ISz/ALEXbZQ79tgXOwW49sgAeDGvg8m23Wa3cHffB0lZpVhlT+MaPuB3SOVkM/bVVOg+jtg0Ta5efUz9jYsLk+kcZWtQQ02xFCvbeYOIIbCtzDmR0I2VHHTkni0Z2PB9XeK1WxeJq1qtzLRT3FgrwK9ea5DbkdF73GQb5HtpKQUkB07nY+/XmTPLUxDI/wCRXQ12AJ/bHqfp+GqOZZZASEVqCSSe9vPEqy3UeHwualq1cWaI/Xn55a2iSjvxvEhYLEw7i8iC4XyD5JAG/TH7aVJutLDUsfUWnQvwlllyXLuPy5c17LHZ8EaA4jyfP9DR9xOiM5m8KKRs5DCtUmjtR0KsMUrW2+MgrDydIXUEKQDorsHXnHGTZ2OKhm8xlMlh7VetGbcE6iq/7EpRVVJY+Kt/xKqT5ZfI1r1U1LDUWfixzRQ2Iv5Gne+LGn0ozKKIzg+Wlth9T2t6/TFQl6J6B6Fx8VDKyxzdhAsMbKFAQDQSOCMDwBsAAE68En1Bfcr21s9XWsj1f0hhYMfjcdEzlVjjSXvKgJdR4ReKKvjZOz/7KWyOS5LcsOlOexk7EoIIPeMJk8KCx5s5Z5VHkoHEX+pX5U7raLH9C9Apir9iKDvIVkmYhUAAMk8jk/Q8MST42wB+/RdManQlAhTT1FX35t2pjk85yaTpuSt9hFUGxBrbxGIL7a+2tnpG1jur+r8LBkMdkY1cBo43lMzISHYeUbkrN42Dsf8AqovUXRPQPXWPloYqWOHvoVmjVQwKEaKSQSA+CNAggHXgEevdExY/rroF8VQsRT9lAscykMhBAkgkQj7HlSCPG1IH16mMklyK5Xd6c9fJ15SSSeyZjH4YBhwZCrxMPBcIJf8AYt8dqfU6FI/woXylP24t3rjZNk0nUklD76KIFgB38Tje9y6k3RdhaWQqLcoUIQzS43l3E48eC9lTseAdg8h4Hn+iuYnqTD5rNRVrWLN4frwcMtURIh35HlQMVlY9teQJQN5J8gkHfonk5s7JFfzeHymSzFqxWkNSCBRaf9iIurLJLJyVf+IViPKt5O9esvbzojOYTCmkLOQzTW5pLUlC1DFE1RvlIax8jaB2JKgE6DaA34FpqGoM/EkGqjuTa/ckdr46zUCUZbFMVsfLS+x9Ae9vX64K1q3bHfjwdNmWVoYk/jGk7YR3jiZzB3FZRsvoaYtKu+Pj1PvyT6VVvaVs3jr2HSqpEkS1UV2lVQ8Srz8eQvcYjW9sTocRq2S2quUxVqrauZaSems8E6pXmpw1HRG7HKQ64ntvESXkPiNTs/frnb8jf/juJ6OmrRETS5bndisLJ34YlVOKojMx/wAtks4I5MR4IPidDnl2atk7hdBTYgf6xFh5BDRGEsNApKK9RJBB7W88Dug+ms1m+j8HRhxn70dajHJwlqk/rxOORJJdUctohUXYAZWbyTqgYjE5KXuNJicyuUxltMthEigaWLF90J3q6IrgGYh+ChtDiAdrttm/YbF1utvx1pT1544sli67QyxV5GjsSwDbH5DRB/2Ug62CP736Z7Eq4noyn2pHhOclEzSK2pWRuTIeWj5ClQNgj6Gj9eqOfQUuRTLjfMoGhHHNvsfDwJw9l77rMsZdNHSlSapPY8XP28fLAzHrLHS6sydfEZPI5HHxI8Fs2YGdw0QZkiBZhDIu+O22PHI/WvSphszi62LgmhtSV6dd46kcluY2LE9iUhj4Use5yd/9R9HwpVW9PGJ9t8vh+i1z8nUU8OMiWW5m8WkNdbOcIRiiNxQKsjMFXiSeSsVPnXpUxGFhwvUnUGfr9GWqWTzNurVoRy3lnjiZYQJJ3QMwSde4F22vACro8tnynOIeZMBhblHEHpNTvbtt+u/oAuNTMiklfR+Eq4oNq+v7bfX7w5OKPO0sPhMvSr2sPdME9QTmxY5wDuRSMzN/aoGIbZ+Q8jR9ELfuXY60mnyF1a9+hTX+NiZV585OQWbkmtffknf0g8fetHrf27wubzkIutYqNhbklq/JVl+VtniHmwY2DlPkQzA62CNjfkV03ic1hcPdtWa9XVHlUxKfqvDPp0WViA8nLi/HkYwdggAaAHoEzTTJUJDVlC4PnvQ73xSVqCLmSC3KI6efIWHFvfjDHU9y7HRc0GQpLXoULi/xsrMvDhJyKw8U1r78g7+nPj62PmycUmdu4fN5elYtZi6IIKhnNexznHclkVlb+lcsAuj8T5Ox6GdR4nNZrD0rVWvV1eK1Msn6rzT6RGlUkJJy4py5CMnZJIOwT6K9Ee3eFwmcmFJrFts1cjtUJLUvyqMkR81zIxcJ8QFYnWyBs68aHplkKMhy6jQk97bVO9sZOoIuWoDcYjp58xccX9+cCczmcXZxc801qSxTsPJUkkqTGvYgsREsPDFT3OSJ/qfseGLM3psvpNLT6SyU2IyePyWQikee0tmBXQLEWVJVDKJpG48droeeQ+9el/MYZM11J0/n7HR9y7ksLatVr8UN5YEldoSI50Qsoedu2V2N+CVbZ46bct7dZnK9DyZ6HqCWxjZ4kt4PGyQV2s4QtEOSqChVpFdmXiCAqrxUb9HzbOIeWsGO25VxZ6RQ7W77/pt6Ga21Mz2SF9FGk3NRvQ/znf6IHUGIyMVqOdcZmHy2Ssrks2skLQw5RY4yYK0iM5AnHHgQp1xZjtvjqS+8GNzHSfR96jYwZrJel7QMVYqCgikcMSrsqEf4FG+yCyga366gpSDL9HZASyPYfCM1qJ2fcukUP5bxongV8ADx4A1r1MPyVwcHS34+x2bF1hcyeRSFYpn7s7VTVlkALHz5fi5/oAKP69C0/BDcUSpPyqJoBzxb28LbAY95nJcckqy+GKpSKqPYc39/HGX415ObHdE4m90y96XJ1qhaWtHWaSGdfJ4O2uK71oHkCD/3+i4e0/UnUnuLWmns9KUKeQww/TwyTzvBT/XI5MIyyl5ZY1EavpRocP8AAk7lvs5759F4foTEdA5HqeljY6yolvi2hPFzPP5a8bAOx9nQ/o+XK3+RvtZNl8tTyPVkElCdknquoJMcoQDa+PH0CD9eCDsHXph9qRpmQXGgXkO3IF+m9xT1+2LDsaHqqG0066GltgAEkCppa5NtqHz2xQ7GL6/x2SqZGyy2P1ZmkmrQlGjlQow4IHI4nZB5a38df/xLX3EwNTqx1zVAwZSLJzTNaxcMZ/UhZ42lNiMnZl4qqmQ8gBrR+PEqU35PdGyZiolLqmKvTjgk/YkDzACZW1Hxj2FZWGyx1sfHwdHcy62609v+u8tPP1B1ZLKkszzosbKiRsHAUkJwDMyIGYnegQqknel5+nIEhPx46Skq3Hcc/wBHEWNm09hxUSeUrA2UDUHsL3+uOw/2sNS45GSeGST+Un+UlxZTPBZn5RcYSwQ+HgcHi/8AiNDx6T7NYSfyaQd5mWtc5xTO8ok4t2A6xSMNqFhIPAowZiePy16k7fkL0blsA9ae/Fipa0cX60dKdZEniTTLEVbXAjgArAgryI8D0Y6i/Iz2olWPH4a9DHUGLav2uIdQy+EHGRyC3zYkhlPhiC29GXl8Oazd5aydqG4AwtqCHGXEdEQICaAim5Nb2xQK1YR/xiT95WatT4RQu8Qj5N2C7RRsdKVmAHMuxZQePx16cP2sNd5ZGOeGOT+Ug+UdxYjBBWn5S8oQxQeEncnin+R2PPqHdO/kZ7UJHLRy1+GWscalUVwoQMX8OeKOFBAVW2XZj48jXEA2/IrovD4OGlVvx5qa7HILEdqwkSVopOTNDoeGJ5kMxJJ0Ad/Q0+HNe/JWsHagsKY2n4cZuI0JYQUkEmu4NbW3rijSe4GFn6njlxOOMuRlycU6W8rAg/dgV5GiNaIHfdAZlEoAUjfI+dBxrUfcLI5O3kYYlrpamV4arLGiRIEAKuFc9w7BPL4nR19D1yL0b7hdE+3mUrWMLn8lKsdiOR1klqON8nDE9xm0VV9qd7P+JK69VSP8tulxl7Fe/evvCa0ZrzG1Aq95m+ayJG6qFVdH/YnbA/0RUy/TcFhPxpIKinbx4wxJzic84mLAKUA7k9uxp++KP7u9T5f2zxYvDparJlM7G+PyUIucq36xRv8A9HKAvHKQXCErryw+RA9S38ssrLmuhY8pnv24L9meOSGi1OSGKnGa0nxViupCDxViDonXgaAG+35R+3mPyWOr43IZBq0VhprksbVAZn4FQ3yk/vZ+9aAUa16nXv3774nrjoN+iMHZntQwZAzo1gw8oYVjm4IOL7YadDvzryP+wDbKJGfSA86C0lq4H/rgUpikhiFpuE6wy6HVOCh70Pe9b704tj//2Q==', + reference: null, + reference_hash: null, + decimals: 18, + id: 'marmaj.tkn.near', + }, + outputToken: '6b175474e89094c44da98b954eedeac495271d0f.factory.bridge.near', + inputToken: 'marmaj.tkn.near', + nodeRoute: [ + 'aurora', + 'marmaj.tkn.near', + '6b175474e89094c44da98b954eedeac495271d0f.factory.bridge.near', + ], + route: [[Object], [Object]], + allRoutes: [[Array], [Array]], + allNodeRoutes: [[Array], [Array]], + totalInputAmount: '1000000000000000000', + allAllocations: [[], []], + tokens: [ETH, DAI], + routeInputToken: 'aurora', + routeOutputToken: + '6b175474e89094c44da98b954eedeac495271d0f.factory.bridge.near', + overallPriceImpact: '3.53957150694661537802481235958281919791', + }, +]; + +const patchStoredTokenList = () => { + patch(near, 'tokenList', () => { + return [ + { + chainId: 0, + decimals: 18, + icon: '', + name: 'Ether', + reference: null, + reference_hash: null, + spec: 'ft-1.0.0', + symbol: 'ETH', + id: 'aurora', + address: 'aurora', + }, + { + chainId: 0, + spec: 'ft-1.0.0', + name: 'Dai Stablecoin', + symbol: 'DAI', + icon: '', + reference: '', + reference_hash: '', + decimals: 18, + id: '6b175474e89094c44da98b954eedeac495271d0f.factory.bridge.near', + address: '6b175474e89094c44da98b954eedeac495271d0f.factory.bridge.near', + }, + ]; + }); +}; + +const patchGetTokenBySymbol = () => { + patch(near, 'getTokenBySymbol', (symbol: string) => { + if (symbol === 'ETH') { + return { + chainId: 0, + decimals: 18, + icon: '', + name: 'Ether', + reference: null, + reference_hash: null, + spec: 'ft-1.0.0', + symbol: 'ETH', + id: 'aurora', + address: 'aurora', + }; + } else { + return { + chainId: 0, + spec: 'ft-1.0.0', + name: 'Dai Stablecoin', + symbol: 'DAI', + icon: '', + reference: '', + reference_hash: '', + decimals: 18, + id: '6b175474e89094c44da98b954eedeac495271d0f.factory.bridge.near', + address: '6b175474e89094c44da98b954eedeac495271d0f.factory.bridge.near', + }; + } + }); +}; + +const patchGetTokenByAddress = () => { + patch(ref, 'getTokenByAddress', () => { + return { + chainId: 0, + spec: 'ft-1.0.0', + name: 'Dai Stablecoin', + symbol: 'DAI', + icon: '', + reference: '', + reference_hash: '', + decimals: 18, + id: '6b175474e89094c44da98b954eedeac495271d0f.factory.bridge.near', + address: '6b175474e89094c44da98b954eedeac495271d0f.factory.bridge.near', + }; + }); +}; + +const patchGasPrice = () => { + patch(near, 'gasPrice', () => 100); +}; + +const patchEstimateBuyTrade = () => { + patch(ref, 'estimateBuyTrade', () => { + return { + expectedAmount: '100', + trade: tradePath, + }; + }); +}; + +const patchEstimateSellTrade = () => { + patch(ref, 'estimateSellTrade', () => { + return { + expectedAmount: '100', + trade: tradePath, + }; + }); +}; + +const patchExecuteTrade = () => { + patch(ref, 'executeTrade', () => { + return { hash: '000000000000000' }; + }); +}; + +describe('POST /amm/price', () => { + it('should return 200 for BUY', async () => { + patchGetWallet(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patchGasPrice(); + patchEstimateBuyTrade(); + patchExecuteTrade(); + + await request(gatewayApp) + .post(`/amm/price`) + .send({ + chain: 'near', + network: 'testnet', + connector: 'ref', + quote: 'DAI', + base: 'ETH', + amount: '10000', + side: 'BUY', + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body.amount).toEqual('10000.000000000000000000'); + expect(res.body.rawAmount).toEqual('10000'); + }); + }); + + it('should return 200 for SELL', async () => { + patchGetWallet(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patchGasPrice(); + patchEstimateSellTrade(); + patchExecuteTrade(); + + await request(gatewayApp) + .post(`/amm/price`) + .send({ + chain: 'near', + network: 'testnet', + connector: 'ref', + quote: 'DAI', + base: 'ETH', + amount: '10000', + side: 'SELL', + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body.amount).toEqual('10000.000000000000000000'); + expect(res.body.rawAmount).toEqual('10000'); + }); + }); + + it('should return 500 for unrecognized quote symbol', async () => { + patchGetWallet(); + patchStoredTokenList(); + patch(near, 'getTokenBySymbol', (symbol: string) => { + if (symbol === 'ETH') { + return { + chainId: 43114, + name: 'ETH', + symbol: 'ETH', + address: '0xd0A1E359811322d97991E03f863a0C30C2cF029C', + decimals: 18, + }; + } else { + return null; + } + }); + patchGetTokenByAddress(); + + await request(gatewayApp) + .post(`/amm/price`) + .send({ + chain: 'near', + network: 'testnet', + connector: 'ref', + quote: 'DOGE', + base: 'ETH', + amount: '10000', + side: 'SELL', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 500 for unrecognized base symbol', async () => { + patchGetWallet(); + patchStoredTokenList(); + patch(near, 'getTokenBySymbol', (symbol: string) => { + if (symbol === 'ETH') { + return { + chainId: 43114, + name: 'ETH', + symbol: 'ETH', + address: '0xd0A1E359811322d97991E03f863a0C30C2cF029C', + decimals: 18, + }; + } else { + return null; + } + }); + patchGetTokenByAddress(); + + await request(gatewayApp) + .post(`/amm/price`) + .send({ + chain: 'near', + network: 'testnet', + connector: 'ref', + quote: 'DAI', + base: 'SHIBA', + amount: '10000', + side: 'SELL', + }) + .set('Accept', 'application/json') + .expect(500); + }); +}); + +describe('POST /amm/trade', () => { + const patchForBuy = () => { + patchGetWallet(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patchGasPrice(); + patchEstimateBuyTrade(); + patchExecuteTrade(); + }; + + it('should return 200 for BUY', async () => { + patchForBuy(); + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'near', + network: 'testnet', + connector: 'ref', + quote: 'DAI', + base: 'ETH', + amount: '10000', + address, + side: 'BUY', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + const patchForSell = () => { + patchGetWallet(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patchGasPrice(); + patchEstimateSellTrade(); + patchExecuteTrade(); + }; + it('should return 200 for SELL', async () => { + patchForSell(); + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'near', + network: 'testnet', + connector: 'ref', + quote: 'DAI', + base: 'ETH', + amount: '10000', + address, + side: 'SELL', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + it('should return 404 when parameters are incorrect', async () => { + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'near', + network: 'testnet', + connector: 'ref', + quote: 'DAI', + base: 'ETH', + amount: 10000, + address: 'da8', + side: 'comprar', + }) + .set('Accept', 'application/json') + .expect(404); + }); + + it('should return 500 when base token is unknown', async () => { + patchForSell(); + patch(near, 'getTokenBySymbol', (symbol: string) => { + if (symbol === 'ETH') { + return { + chainId: 43114, + name: 'ETH', + symbol: 'ETH', + address: '0xd0A1E359811322d97991E03f863a0C30C2cF029C', + decimals: 18, + }; + } else { + return null; + } + }); + + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'near', + network: 'testnet', + connector: 'ref', + quote: 'ETH', + base: 'BITCOIN', + amount: '10000', + address, + side: 'BUY', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 500 when quote token is unknown', async () => { + patchForSell(); + patch(near, 'getTokenBySymbol', (symbol: string) => { + if (symbol === 'ETH') { + return { + chainId: 43114, + name: 'ETH', + symbol: 'ETH', + address: '0xd0A1E359811322d97991E03f863a0C30C2cF029C', + decimals: 18, + }; + } else { + return null; + } + }); + + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'near', + network: 'testnet', + connector: 'ref', + quote: 'BITCOIN', + base: 'ETH', + amount: '10000', + address, + side: 'BUY', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 200 for SELL with limitPrice', async () => { + patchForSell(); + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'near', + network: 'testnet', + connector: 'ref', + quote: 'DAI', + base: 'ETH', + amount: '10000', + address, + side: 'SELL', + limitPrice: '9', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + it('should return 200 for BUY with limitPrice', async () => { + patchForBuy(); + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'near', + network: 'testnet', + connector: 'ref', + quote: 'DAI', + base: 'ETH', + amount: '10000', + address, + side: 'BUY', + limitPrice: '999999999999999999999', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + it('should return 500 for SELL with price lower than limitPrice', async () => { + patchForSell(); + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'near', + network: 'testnet', + connector: 'ref', + quote: 'DAI', + base: 'ETH', + amount: '10000', + address, + side: 'SELL', + limitPrice: '99999999999', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 500 for BUY with price higher than limitPrice', async () => { + patchForBuy(); + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'near', + network: 'testnet', + connector: 'ref', + quote: 'DAI', + base: 'ETH', + amount: '10000', + address, + side: 'BUY', + limitPrice: '0', + }) + .set('Accept', 'application/json') + .expect(500); + }); +}); + +describe('POST /amm/estimateGas', () => { + it('should return 200 for valid connector', async () => { + patchGasPrice(); + + await request(gatewayApp) + .post('/amm/estimateGas') + .send({ + chain: 'near', + network: 'testnet', + connector: 'ref', + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body.network).toEqual('testnet'); + expect(res.body.gasPrice).toEqual(100); + expect(res.body.gasCost).toEqual( + String((100 * ref.gasLimitEstimate) / 1e24) + ); + }); + }); +}); diff --git a/test/chains/near/ref/ref.test.ts b/test/chains/near/ref/ref.test.ts new file mode 100644 index 0000000000..2faf079461 --- /dev/null +++ b/test/chains/near/ref/ref.test.ts @@ -0,0 +1,339 @@ +jest.useFakeTimers(); +import { Ref } from '../../../../src/connectors/ref/ref'; +import { patch, unpatch } from '../../../services/patch'; +import { UniswapishPriceError } from '../../../../src/services/error-handler'; +import { Near } from '../../../../src/chains/near/near'; +import * as RefSDK from 'coinalpha-ref-sdk'; + +let near: Near; +let ref: Ref; + +const DAI = { + spec: 'ft-1.0.0', + name: 'Dai Stablecoin', + symbol: 'DAI', + icon: '', + reference: '', + reference_hash: '', + decimals: 18, + id: '6b175474e89094c44da98b954eedeac495271d0f.factory.bridge.near', +}; +const ETH = { + decimals: 18, + icon: '', + name: 'Ether', + reference: null, + reference_hash: null, + spec: 'ft-1.0.0', + symbol: 'ETH', + id: 'aurora', +}; + +beforeAll(async () => { + near = Near.getInstance('testnet'); + await near.init(); + + ref = Ref.getInstance('near', 'testnet'); + await ref.init(); +}); + +afterEach(() => { + unpatch(); +}); + +afterAll(async () => { + await near.close(); +}); + +const patchInstantSwap = () => { + patch(RefSDK, 'instantSwap', () => { + return []; + }); +}; + +const patchSignHelper = () => { + patch(Ref, 'getSignedTransactions', () => { + return []; + }); +}; + +const patchSendHelper = (result: string[]) => { + patch(Ref, 'sendTransactions', () => { + return result; + }); +}; + +const patchFetcher = () => { + patch(RefSDK, 'fetchAllPools', () => { + return { + simplePools: [], + unRatedPools: [], + ratedPools: [], + }; + }); +}; + +const patchEstimateSwap = () => { + patch(RefSDK, 'estimateSwap', () => { + return [ + { + estimate: '438.7318928061755133021873247954861357077652', + pool: { + fee: 30, + gamma_bps: [], + id: 1207, + partialAmountIn: '0.988562670855139614', + supplies: [Object], + token0_ref_price: '0', + tokenIds: [Array], + Dex: undefined, + x: '1124497821208300092576', + y: '501001402176405567560845153269', + }, + status: 'stableSmart', + token: { + decimals: 18, + icon: 'data:image/png;base64,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', + name: 'Ether', + reference: null, + reference_hash: null, + spec: 'ft-1.0.0', + symbol: 'ETH', + id: 'aurora', + }, + outputToken: 'wrap.near', + inputToken: 'aurora', + nodeRoute: [ + 'aurora', + 'wrap.near', + '6b175474e89094c44da98b954eedeac495271d0f.factory.bridge.near', + ], + route: [[Object], [Object]], + allRoutes: [[Array], [Array]], + allNodeRoutes: [[Array], [Array]], + totalInputAmount: '1000000000000000000', + allAllocations: [[], []], + tokens: [ETH, DAI], + routeInputToken: 'aurora', + routeOutputToken: + '6b175474e89094c44da98b954eedeac495271d0f.factory.bridge.near', + overallPriceImpact: '3.53957150694661537802481235958281919791', + }, + { + estimate: '1227.5907741995622146029347396525450563115171', + pool: { + fee: 30, + gamma_bps: [], + id: 2, + partialAmountIn: '0', + supplies: [Object], + token0_ref_price: '0', + tokenIds: [Array], + Dex: undefined, + x: '15490663264513922879112087736', + y: '44701557151302991680091', + }, + status: 'stableSmart', + token: { + spec: 'ft-1.0.0', + name: 'Wrapped NEAR fungible token', + symbol: 'wNEAR', + icon: null, + reference: null, + reference_hash: null, + decimals: 24, + id: 'wrap.near', + }, + outputToken: + '6b175474e89094c44da98b954eedeac495271d0f.factory.bridge.near', + inputToken: 'wrap.near', + nodeRoute: [ + 'aurora', + 'wrap.near', + '6b175474e89094c44da98b954eedeac495271d0f.factory.bridge.near', + ], + route: [[Object], [Object]], + allRoutes: [[Array], [Array]], + allNodeRoutes: [[Array], [Array]], + totalInputAmount: '1000000000000000000', + allAllocations: [[], []], + tokens: [ETH, DAI], + routeInputToken: 'aurora', + routeOutputToken: + '6b175474e89094c44da98b954eedeac495271d0f.factory.bridge.near', + overallPriceImpact: '3.53957150694661537802481235958281919791', + }, + { + estimate: '3.8379037803866734449637949018757616354149', + pool: { + fee: 19, + gamma_bps: [], + id: 3023, + partialAmountIn: '11437329144860386', + supplies: [Object], + token0_ref_price: '0', + tokenIds: [Array], + Dex: undefined, + x: '2282104348405543143', + y: '771077319322598388824', + }, + status: 'stableSmart', + token: { + decimals: 18, + icon: 'data:image/png;base64,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', + name: 'Ether', + reference: null, + reference_hash: null, + spec: 'ft-1.0.0', + symbol: 'ETH', + id: 'aurora', + }, + outputToken: 'marmaj.tkn.near', + inputToken: 'aurora', + nodeRoute: [ + 'aurora', + 'marmaj.tkn.near', + '6b175474e89094c44da98b954eedeac495271d0f.factory.bridge.near', + ], + route: [[Object], [Object]], + allRoutes: [[Array], [Array]], + allNodeRoutes: [[Array], [Array]], + totalInputAmount: '1000000000000000000', + allAllocations: [[], []], + tokens: [ETH, DAI], + routeInputToken: 'aurora', + routeOutputToken: + '6b175474e89094c44da98b954eedeac495271d0f.factory.bridge.near', + overallPriceImpact: '3.53957150694661537802481235958281919791', + }, + { + estimate: '14.299093444897422181731877348671464832746', + pool: { + fee: 19, + gamma_bps: [], + id: 10, + partialAmountIn: '0', + supplies: [Object], + token0_ref_price: '0', + tokenIds: [Array], + Dex: undefined, + x: '123732450606489839390', + y: '476173588371142658007', + }, + status: 'stableSmart', + token: { + spec: 'ft-1.0.0', + name: 'marma j token', + symbol: 'marmaj', + icon: 'data:image/jpeg;base64,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', + reference: null, + reference_hash: null, + decimals: 18, + id: 'marmaj.tkn.near', + }, + outputToken: + '6b175474e89094c44da98b954eedeac495271d0f.factory.bridge.near', + inputToken: 'marmaj.tkn.near', + nodeRoute: [ + 'aurora', + 'marmaj.tkn.near', + '6b175474e89094c44da98b954eedeac495271d0f.factory.bridge.near', + ], + route: [[Object], [Object]], + allRoutes: [[Array], [Array]], + allNodeRoutes: [[Array], [Array]], + totalInputAmount: '1000000000000000000', + allAllocations: [[], []], + tokens: [ETH, DAI], + routeInputToken: 'aurora', + routeOutputToken: + '6b175474e89094c44da98b954eedeac495271d0f.factory.bridge.near', + overallPriceImpact: '3.53957150694661537802481235958281919791', + }, + ]; + }); +}; + +const patchEstimateSwapWithError = () => { + patch(RefSDK, 'estimateSwap', () => { + return []; + }); +}; + +describe('verify Ref estimateSellTrade', () => { + it('Should return an ExpectedTrade when available', async () => { + patchFetcher(); + patchEstimateSwap(); + + const expectedTrade = await ref.estimateSellTrade(ETH, DAI, '1'); + expect(expectedTrade).toHaveProperty('trade'); + expect(expectedTrade).toHaveProperty('expectedAmount'); + }); + + it('Should throw an error if no pair is available', async () => { + patchFetcher(); + patchEstimateSwapWithError(); + + await expect(async () => { + await ref.estimateSellTrade(ETH, DAI, '1'); + }).rejects.toThrow(UniswapishPriceError); + }); +}); + +describe('verify Ref estimateBuyTrade', () => { + it('Should return an ExpectedTrade when available', async () => { + patchFetcher(); + patchEstimateSwap(); + + const expectedTrade = await ref.estimateBuyTrade(ETH, DAI, '1'); + expect(expectedTrade).toHaveProperty('trade'); + expect(expectedTrade).toHaveProperty('expectedAmount'); + }); + + it('Should return an error if no pair is available', async () => { + patchFetcher(); + patchEstimateSwapWithError(); + + await expect(async () => { + await ref.estimateBuyTrade(ETH, DAI, '1'); + }).rejects.toThrow(UniswapishPriceError); + }); +}); + +describe('getAllowedSlippage', () => { + it('return value of string when not null', () => { + const allowedSlippage = ref.getAllowedSlippage('3/100'); + expect(allowedSlippage).toEqual(0.03); + }); + + it('return value from config when string is null', () => { + const allowedSlippage = ref.getAllowedSlippage(); + expect(allowedSlippage).toEqual(0.02); + }); + + it('return value from config when string is malformed', () => { + const allowedSlippage = ref.getAllowedSlippage('yo'); + expect(allowedSlippage).toEqual(0.02); + }); +}); + +describe('verify Ref executeTrade', () => { + it('Should return an error if no pair is available', async () => { + patchInstantSwap(); + patchSignHelper(); + patchSendHelper([]); + + await expect(async () => { + await ref.executeTrade( + await near.getWalletFromPrivateKey( + 'ed25519:2wyRcSwSuHtRVmkMCGjPwnzZmQLeXLzLLyED1NDMt4BjnKgQL6tF85yBx6Jr26D2dUNeC716RBoTxntVHsegogYw', + 'test' + ), + [], + '0.1', + ETH, + DAI + ); + }).rejects.toThrow(); + }); +}); diff --git a/test/chains/polygon/polygon.test.ts b/test/chains/polygon/polygon.test.ts new file mode 100644 index 0000000000..309e7e6d3b --- /dev/null +++ b/test/chains/polygon/polygon.test.ts @@ -0,0 +1,44 @@ +import { Polygon } from '../../../src/chains/polygon/polygon'; +import { unpatch } from '../../services/patch'; +import { patchEVMNonceManager } from '../../evm.nonce.mock'; +let polygon: Polygon; + +beforeAll(async () => { + polygon = Polygon.getInstance('mumbai'); + + patchEVMNonceManager(polygon.nonceManager); + + await polygon.init(); +}); + +beforeEach(() => { + patchEVMNonceManager(polygon.nonceManager); +}); + +afterEach(() => { + unpatch(); +}); + +afterAll(async () => { + await polygon.close(); +}); + +describe('public get', () => { + it('gasPrice', async () => { + expect(polygon.gasPrice).toEqual(100); + }); + + it('native token', async () => { + expect(polygon.nativeTokenSymbol).toEqual('MATIC'); + }); + + it('chain', async () => { + expect(polygon.chain).toEqual('mumbai'); + }); + + it('getSpender', async () => { + expect( + polygon.getSpender('0xd0A1E359811322d97991E03f863a0C30C2cF029C') + ).toEqual('0xd0A1E359811322d97991E03f863a0C30C2cF029C'); + }); +}); diff --git a/test/chains/polygon/polygon.validators.test.ts b/test/chains/polygon/polygon.validators.test.ts new file mode 100644 index 0000000000..92c8f324b4 --- /dev/null +++ b/test/chains/polygon/polygon.validators.test.ts @@ -0,0 +1,57 @@ +import { + validateSpender, + invalidSpenderError, + validatePolygonApproveRequest, +} from '../../../src/chains/polygon/polygon.validators'; + +import { missingParameter } from '../../../src/services/validators'; + +import 'jest-extended'; + +describe('validateSpender', () => { + it('valid when req.spender is a publicKey', () => { + expect( + validateSpender({ + spender: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + }) + ).toEqual([]); + }); + + it("valid when req.spender is a 'uniswap'", () => { + expect( + validateSpender({ + spender: 'uniswap', + }) + ).toEqual([]); + }); + + it('return error when req.spender does not exist', () => { + expect( + validateSpender({ + hello: 'world', + }) + ).toEqual([missingParameter('spender')]); + }); + + it('return error when req.spender is invalid', () => { + expect( + validateSpender({ + spender: 'world', + }) + ).toEqual([invalidSpenderError]); + }); +}); + +describe('validatePolygonApproveRequest', () => { + it('valid when req.spender is a publicKey', () => { + expect( + validatePolygonApproveRequest({ + address: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + spender: 'uniswap', + token: 'DAI', + amount: '1000000', + nonce: 0, + }) + ).toEqual(undefined); + }); +}); diff --git a/test/chains/polygon/quickswap/quickswap.route.test.ts b/test/chains/polygon/quickswap/quickswap.route.test.ts new file mode 100644 index 0000000000..a6b4d69654 --- /dev/null +++ b/test/chains/polygon/quickswap/quickswap.route.test.ts @@ -0,0 +1,561 @@ +import request from 'supertest'; +import { patch, unpatch } from '../../../services/patch'; +import { gatewayApp } from '../../../../src/app'; +import { Polygon } from '../../../../src/chains/polygon/polygon'; +import { Quickswap } from '../../../../src/connectors/quickswap/quickswap'; +import { patchEVMNonceManager } from '../../../evm.nonce.mock'; +let polygon: Polygon; +let quickswap: Quickswap; + +beforeAll(async () => { + polygon = Polygon.getInstance('mumbai'); + patchEVMNonceManager(polygon.nonceManager); + await polygon.init(); + + quickswap = Quickswap.getInstance('polygon', 'mumbai'); + await quickswap.init(); +}); + +beforeEach(() => { + patchEVMNonceManager(polygon.nonceManager); +}); + +afterEach(() => { + unpatch(); +}); + +afterAll(async () => { + await polygon.close(); +}); + +const address: string = '0xFaA12FD102FE8623C9299c72B03E45107F2772B5'; + +const patchGetWallet = () => { + patch(polygon, 'getWallet', () => { + return { + address: '0xFaA12FD102FE8623C9299c72B03E45107F2772B5', + }; + }); +}; + +const patchStoredTokenList = () => { + patch(polygon, 'tokenList', () => { + return [ + { + chainId: 43114, + name: 'WETH', + symbol: 'WETH', + address: '0xd0A1E359811322d97991E03f863a0C30C2cF029C', + decimals: 18, + }, + { + chainId: 43114, + name: 'Wrapped AVAX', + symbol: 'WAVAX', + address: '0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7', + decimals: 18, + }, + ]; + }); +}; + +const patchGetTokenBySymbol = () => { + patch(polygon, 'getTokenBySymbol', (symbol: string) => { + if (symbol === 'WETH') { + return { + chainId: 43114, + name: 'WETH', + symbol: 'WETH', + address: '0xd0A1E359811322d97991E03f863a0C30C2cF029C', + decimals: 18, + }; + } else { + return { + chainId: 42, + name: 'WAVAX', + symbol: 'WAVAX', + address: '0x4f96fe3b7a6cf9725f59d353f723c1bdb64ca6aa', + decimals: 18, + }; + } + }); +}; + +const patchGetTokenByAddress = () => { + patch(quickswap, 'getTokenByAddress', () => { + return { + chainId: 43114, + name: 'WETH', + symbol: 'WETH', + address: '0xd0A1E359811322d97991E03f863a0C30C2cF029C', + decimals: 18, + }; + }); +}; + +const patchGasPrice = () => { + patch(polygon, 'gasPrice', () => 100); +}; + +const patchEstimateBuyTrade = () => { + patch(quickswap, 'estimateBuyTrade', () => { + return { + expectedAmount: { + toSignificant: () => 100, + }, + trade: { + executionPrice: { + invert: jest.fn().mockReturnValue({ + toSignificant: () => 100, + toFixed: () => '100', + }), + }, + }, + }; + }); +}; + +const patchEstimateSellTrade = () => { + patch(quickswap, 'estimateSellTrade', () => { + return { + expectedAmount: { + toSignificant: () => 100, + }, + trade: { + executionPrice: { + toSignificant: () => 100, + toFixed: () => '100', + }, + }, + }; + }); +}; + +const patchGetNonce = () => { + patch(polygon.nonceManager, 'getNonce', () => 21); +}; + +const patchExecuteTrade = () => { + patch(quickswap, 'executeTrade', () => { + return { nonce: 21, hash: '000000000000000' }; + }); +}; + +describe('POST /amm/price', () => { + it('should return 200 for BUY', async () => { + patchGetWallet(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patchGasPrice(); + patchEstimateBuyTrade(); + patchGetNonce(); + patchExecuteTrade(); + + await request(gatewayApp) + .post(`/amm/price`) + .send({ + chain: 'polygon', + network: 'mumbai', + connector: 'quickswap', + quote: 'WAVAX', + base: 'WETH', + amount: '10000', + side: 'BUY', + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body.amount).toEqual('10000.000000000000000000'); + expect(res.body.rawAmount).toEqual('10000000000000000000000'); + }); + }); + + it('should return 200 for SELL', async () => { + patchGetWallet(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patchGasPrice(); + patchEstimateSellTrade(); + patchGetNonce(); + patchExecuteTrade(); + + await request(gatewayApp) + .post(`/amm/price`) + .send({ + chain: 'polygon', + network: 'mumbai', + connector: 'quickswap', + quote: 'WAVAX', + base: 'WETH', + amount: '10000', + side: 'SELL', + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body.amount).toEqual('10000.000000000000000000'); + expect(res.body.rawAmount).toEqual('10000000000000000000000'); + }); + }); + + it('should return 500 for unrecognized quote symbol', async () => { + patchGetWallet(); + patchStoredTokenList(); + patch(polygon, 'getTokenBySymbol', (symbol: string) => { + if (symbol === 'WETH') { + return { + chainId: 43114, + name: 'WETH', + symbol: 'WETH', + address: '0xd0A1E359811322d97991E03f863a0C30C2cF029C', + decimals: 18, + }; + } else { + return null; + } + }); + patchGetTokenByAddress(); + + await request(gatewayApp) + .post(`/amm/price`) + .send({ + chain: 'polygon', + network: 'mumbai', + connector: 'quickswap', + quote: 'DOGE', + base: 'WETH', + amount: '10000', + side: 'SELL', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 500 for unrecognized base symbol', async () => { + patchGetWallet(); + patchStoredTokenList(); + patch(polygon, 'getTokenBySymbol', (symbol: string) => { + if (symbol === 'WETH') { + return { + chainId: 43114, + name: 'WETH', + symbol: 'WETH', + address: '0xd0A1E359811322d97991E03f863a0C30C2cF029C', + decimals: 18, + }; + } else { + return null; + } + }); + patchGetTokenByAddress(); + + await request(gatewayApp) + .post(`/amm/price`) + .send({ + chain: 'polygon', + network: 'mumbai', + connector: 'quickswap', + quote: 'WAVAX', + base: 'SHIBA', + amount: '10000', + side: 'SELL', + }) + .set('Accept', 'application/json') + .expect(500); + }); +}); + +describe('POST /amm/trade', () => { + const patchForBuy = () => { + patchGetWallet(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patchGasPrice(); + patchEstimateBuyTrade(); + patchGetNonce(); + patchExecuteTrade(); + }; + it('should return 200 for BUY', async () => { + patchForBuy(); + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'polygon', + network: 'mumbai', + connector: 'quickswap', + quote: 'WAVAX', + base: 'WETH', + amount: '10000', + address, + side: 'BUY', + nonce: 21, + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body.nonce).toEqual(21); + }); + }); + + it('should return 200 for BUY without nonce parameter', async () => { + patchForBuy(); + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'polygon', + network: 'mumbai', + connector: 'quickswap', + quote: 'WAVAX', + base: 'WETH', + amount: '10000', + address, + side: 'BUY', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + it('should return 200 for BUY with maxFeePerGas and maxPriorityFeePerGas', async () => { + patchForBuy(); + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'polygon', + network: 'mumbai', + connector: 'quickswap', + quote: 'WAVAX', + base: 'WETH', + amount: '10000', + address, + side: 'BUY', + nonce: 21, + maxFeePerGas: '5000000000', + maxPriorityFeePerGas: '5000000000', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + const patchForSell = () => { + patchGetWallet(); + patchStoredTokenList(); + patchGetTokenBySymbol(); + patchGetTokenByAddress(); + patchGasPrice(); + patchEstimateSellTrade(); + patchGetNonce(); + patchExecuteTrade(); + }; + it('should return 200 for SELL', async () => { + patchForSell(); + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'polygon', + network: 'mumbai', + connector: 'quickswap', + quote: 'WAVAX', + base: 'WETH', + amount: '10000', + address, + side: 'SELL', + nonce: 21, + }) + .set('Accept', 'application/json') + .expect(200) + .then((res: any) => { + expect(res.body.nonce).toEqual(21); + }); + }); + + it('should return 200 for SELL with maxFeePerGas and maxPriorityFeePerGas', async () => { + patchForSell(); + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'polygon', + network: 'mumbai', + connector: 'quickswap', + quote: 'WAVAX', + base: 'WETH', + amount: '10000', + address, + side: 'SELL', + nonce: 21, + maxFeePerGas: '5000000000', + maxPriorityFeePerGas: '5000000000', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + it('should return 404 when parameters are incorrect', async () => { + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'polygon', + network: 'mumbai', + connector: 'quickswap', + quote: 'WAVAX', + base: 'WETH', + amount: 10000, + address: 'da8', + side: 'comprar', + }) + .set('Accept', 'application/json') + .expect(404); + }); + + it('should return 500 when base token is unknown', async () => { + patchForSell(); + patch(polygon, 'getTokenBySymbol', (symbol: string) => { + if (symbol === 'WETH') { + return { + chainId: 43114, + name: 'WETH', + symbol: 'WETH', + address: '0xd0A1E359811322d97991E03f863a0C30C2cF029C', + decimals: 18, + }; + } else { + return null; + } + }); + + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'polygon', + network: 'mumbai', + connector: 'quickswap', + quote: 'WETH', + base: 'BITCOIN', + amount: '10000', + address, + side: 'BUY', + nonce: 21, + maxFeePerGas: '5000000000', + maxPriorityFeePerGas: '5000000000', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 500 when quote token is unknown', async () => { + patchForSell(); + patch(polygon, 'getTokenBySymbol', (symbol: string) => { + if (symbol === 'WETH') { + return { + chainId: 43114, + name: 'WETH', + symbol: 'WETH', + address: '0xd0A1E359811322d97991E03f863a0C30C2cF029C', + decimals: 18, + }; + } else { + return null; + } + }); + + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'polygon', + network: 'mumbai', + connector: 'quickswap', + quote: 'BITCOIN', + base: 'WETH', + amount: '10000', + address, + side: 'BUY', + nonce: 21, + maxFeePerGas: '5000000000', + maxPriorityFeePerGas: '5000000000', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 200 for SELL with limitPrice', async () => { + patchForSell(); + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'polygon', + network: 'mumbai', + connector: 'quickswap', + quote: 'WAVAX', + base: 'WETH', + amount: '10000', + address, + side: 'SELL', + nonce: 21, + limitPrice: '9', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + it('should return 200 for BUY with limitPrice', async () => { + patchForBuy(); + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'polygon', + network: 'mumbai', + connector: 'quickswap', + quote: 'WAVAX', + base: 'WETH', + amount: '10000', + address, + side: 'BUY', + nonce: 21, + limitPrice: '999999999999999999999', + }) + .set('Accept', 'application/json') + .expect(200); + }); + + it('should return 200 for SELL with price higher than limitPrice', async () => { + patchForSell(); + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'polygon', + network: 'mumbai', + connector: 'quickswap', + quote: 'WAVAX', + base: 'WETH', + amount: '10000', + address, + side: 'SELL', + nonce: 21, + limitPrice: '99999999999', + }) + .set('Accept', 'application/json') + .expect(500); + }); + + it('should return 200 for BUY with price less than limitPrice', async () => { + patchForBuy(); + await request(gatewayApp) + .post(`/amm/trade`) + .send({ + chain: 'polygon', + network: 'mumbai', + connector: 'quickswap', + quote: 'WAVAX', + base: 'WETH', + amount: '10000', + address, + side: 'BUY', + nonce: 21, + limitPrice: '9', + }) + .set('Accept', 'application/json') + .expect(500); + }); +}); diff --git a/test/chains/polygon/quickswap/quickswap.test.ts b/test/chains/polygon/quickswap/quickswap.test.ts new file mode 100644 index 0000000000..81bbd55c75 --- /dev/null +++ b/test/chains/polygon/quickswap/quickswap.test.ts @@ -0,0 +1,146 @@ +jest.useFakeTimers(); +import { Quickswap } from '../../../../src/connectors/quickswap/quickswap'; +import { patch, unpatch } from '../../../services/patch'; +import { UniswapishPriceError } from '../../../../src/services/error-handler'; +import { + Fetcher, + Percent, + Token, + TokenAmount, + Trade, + Pair, + TradeType, + Route, +} from 'quickswap-sdk'; +import { BigNumber } from 'ethers'; +import { Polygon } from '../../../../src/chains/polygon/polygon'; +import { patchEVMNonceManager } from '../../../evm.nonce.mock'; + +let polygon: Polygon; +let quickswap: Quickswap; + +const WMATIC = new Token( + 80001, + '0x9c3c9283d3e44854697cd22d3faa240cfb032889', + 18, + 'WMATIC' +); +const WETH = new Token( + 80001, + '0xa6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa', + 18, + 'WETH' +); + +beforeAll(async () => { + polygon = Polygon.getInstance('mumbai'); + patchEVMNonceManager(polygon.nonceManager); + await polygon.init(); + + quickswap = Quickswap.getInstance('polygon', 'mumbai'); + await quickswap.init(); +}); + +beforeEach(() => { + patchEVMNonceManager(polygon.nonceManager); +}); + +afterEach(() => { + unpatch(); +}); + +afterAll(async () => { + await polygon.close(); +}); + +const patchFetchPairData = () => { + patch(Fetcher, 'fetchPairData', () => { + return new Pair( + new TokenAmount(WMATIC, '2000000000000000000'), + new TokenAmount(WETH, '1000000000000000000') + ); + }); +}; + +const patchTrade = (key: string, error?: Error) => { + patch(Trade, key, () => { + if (error) return []; + const WMATIC_WETH = new Pair( + new TokenAmount(WMATIC, '2000000000000000000'), + new TokenAmount(WETH, '1000000000000000000') + ); + const WETH_TO_WMATIC = new Route([WMATIC_WETH], WETH, WMATIC); + return [ + new Trade( + WETH_TO_WMATIC, + new TokenAmount(WETH, '1000000000000000'), + TradeType.EXACT_INPUT + ), + ]; + }); +}; + +describe('verify Quickswap estimateSellTrade', () => { + it('Should return an ExpectedTrade when available', async () => { + patchFetchPairData(); + patchTrade('bestTradeExactIn'); + + const expectedTrade = await quickswap.estimateSellTrade( + WMATIC, + WETH, + BigNumber.from(1) + ); + expect(expectedTrade).toHaveProperty('trade'); + expect(expectedTrade).toHaveProperty('expectedAmount'); + }); + + it('Should throw an error if no pair is available', async () => { + patchFetchPairData(); + patchTrade('bestTradeExactIn', new Error('error getting trade')); + + await expect(async () => { + await quickswap.estimateSellTrade(WMATIC, WETH, BigNumber.from(1)); + }).rejects.toThrow(UniswapishPriceError); + }); +}); + +describe('verify Quickswap estimateBuyTrade', () => { + it('Should return an ExpectedTrade when available', async () => { + patchFetchPairData(); + patchTrade('bestTradeExactOut'); + + const expectedTrade = await quickswap.estimateBuyTrade( + WMATIC, + WETH, + BigNumber.from(1) + ); + expect(expectedTrade).toHaveProperty('trade'); + expect(expectedTrade).toHaveProperty('expectedAmount'); + }); + + it('Should return an error if no pair is available', async () => { + patchFetchPairData(); + patchTrade('bestTradeExactOut', new Error('error getting trade')); + + await expect(async () => { + await quickswap.estimateBuyTrade(WMATIC, WETH, BigNumber.from(1)); + }).rejects.toThrow(UniswapishPriceError); + }); +}); + +describe('getAllowedSlippage', () => { + it('return value of string when not null', () => { + const allowedSlippage = quickswap.getAllowedSlippage('3/100'); + expect(allowedSlippage).toEqual(new Percent('3', '100')); + }); + + it('return value from config when string is null', () => { + const allowedSlippage = quickswap.getAllowedSlippage(); + expect(allowedSlippage).toEqual(new Percent('1', '100')); + }); + + it('return value from config when string is malformed', () => { + const allowedSlippage = quickswap.getAllowedSlippage('yo'); + expect(allowedSlippage).toEqual(new Percent('1', '100')); + }); +}); diff --git a/test/config.util.ts b/test/config.util.ts new file mode 100644 index 0000000000..333c1e1d27 --- /dev/null +++ b/test/config.util.ts @@ -0,0 +1,47 @@ +import { ConfigManagerV2 } from '../src/services/config-manager-v2'; + +export class OverrideConfigs { + public nonceDbPath: string; + public transactionDbPath: string; + #testNonceDbPath: string = ''; + #testTransactionDbPath: string = ''; + #initialized: boolean = false; + + public constructor() { + this.nonceDbPath = ConfigManagerV2.getInstance().get( + 'database.nonceDbPath' + ); + this.transactionDbPath = ConfigManagerV2.getInstance().get( + 'database.transactionDbPath' + ); + } + + init(): void { + if (!this.#initialized) { + this.#testNonceDbPath = this.nonceDbPath + '.test'; + this.#testTransactionDbPath = this.transactionDbPath + '.test'; + this.#initialized = true; + } + } + + updateConfigs(): void { + ConfigManagerV2.getInstance().set( + 'database.nonceDbPath', + this.#testNonceDbPath + ); + ConfigManagerV2.getInstance().set( + 'database.transactionDbPath', + this.#testTransactionDbPath + ); + } + + resetConfigs(): void { + ConfigManagerV2.getInstance().set('database.nonceDbPath', this.nonceDbPath); + ConfigManagerV2.getInstance().set( + 'database.transactionDbPath', + this.transactionDbPath + ); + } +} + +export const DBPathOverride = new OverrideConfigs(); diff --git a/test/connectors/connectors.routes.test.ts b/test/connectors/connectors.routes.test.ts new file mode 100644 index 0000000000..7fca9edf1d --- /dev/null +++ b/test/connectors/connectors.routes.test.ts @@ -0,0 +1,13 @@ +import request from 'supertest'; +import { gatewayApp } from '../../src/app'; + +describe('GET /connectors', () => { + it('should return 200 with a list of connectors', async () => { + await request(gatewayApp) + .get(`/connectors`) + .set('Accept', 'application/json') + .expect('Content-Type', /json/) + .expect(200) + .expect((res) => expect(res.body.connectors).toBeDefined()); + }); +}); diff --git a/test/evm.nonce.mock.ts b/test/evm.nonce.mock.ts new file mode 100644 index 0000000000..676c4ecd5d --- /dev/null +++ b/test/evm.nonce.mock.ts @@ -0,0 +1,22 @@ +import { patch } from './services/patch'; +import { EVMNonceManager } from '../src/services/evm.nonce'; + +// override values so that nonceManager doesn't crash due to lack of provider +// connection +export const patchEVMNonceManager = (nonceManager: EVMNonceManager): void => { + patch(nonceManager, 'init', () => { + return; + }); + + patch(nonceManager, 'mergeNonceFromEVMNode', () => { + return; + }); + + patch(nonceManager, 'getNonceFromNode', (_ethAddress: string) => { + return Promise.resolve(12); + }); + + patch(nonceManager, 'getNextNonce', (_ethAddress: string) => { + return Promise.resolve(13); + }); +}; diff --git a/test/network/network.routes.test.ts b/test/network/network.routes.test.ts new file mode 100644 index 0000000000..c406942e8a --- /dev/null +++ b/test/network/network.routes.test.ts @@ -0,0 +1,347 @@ +import request from 'supertest'; +import { gatewayApp } from '../../src/app'; +import { Avalanche } from '../../src/chains/avalanche/avalanche'; +import { Cronos } from '../../src/chains/cronos/cronos'; +import { Ethereum } from '../../src/chains/ethereum/ethereum'; +import { Harmony } from '../../src/chains/harmony/harmony'; +import { Polygon } from '../../src/chains/polygon/polygon'; +import { patchEVMNonceManager } from '../evm.nonce.mock'; +import { patch, unpatch } from '../services/patch'; +let eth: Ethereum; +let goerli: Ethereum; +let avalanche: Avalanche; +let harmony: Harmony; +let polygon: Polygon; +let cronos: Cronos; + +beforeAll(async () => { + eth = Ethereum.getInstance('kovan'); + patchEVMNonceManager(eth.nonceManager); + await eth.init(); + + goerli = Ethereum.getInstance('goerli'); + patchEVMNonceManager(goerli.nonceManager); + await goerli.init(); + + avalanche = Avalanche.getInstance('fuji'); + patchEVMNonceManager(avalanche.nonceManager); + await avalanche.init(); + + harmony = Harmony.getInstance('testnet'); + await harmony.init(); + + polygon = Polygon.getInstance('mumbai'); + await polygon.init(); + + cronos = Cronos.getInstance('testnet'); + await cronos.init(); +}); + +beforeEach(() => { + patchEVMNonceManager(eth.nonceManager); + patchEVMNonceManager(goerli.nonceManager); + patchEVMNonceManager(avalanche.nonceManager); + patchEVMNonceManager(harmony.nonceManager); + patchEVMNonceManager(polygon.nonceManager); + patchEVMNonceManager(cronos.nonceManager); +}); + +afterEach(async () => { + unpatch(); +}); + +afterAll(async () => { + await eth.close(); + await goerli.close(); + await avalanche.close(); + await harmony.close(); + await polygon.close(); + await cronos.close(); +}); + +describe('GET /network/status', () => { + it('should return 200 when asking for harmony network status', async () => { + patch(harmony, 'chain', () => { + return 'testnet'; + }); + patch(harmony, 'rpcUrl', 'http://...'); + patch(harmony, 'chainId', 88); + patch(harmony, 'getCurrentBlockNumber', () => { + return 3; + }); + + await request(gatewayApp) + .get(`/network/status`) + .query({ + chain: 'harmony', + network: 'testnet', + }) + .expect('Content-Type', /json/) + .expect(200) + .expect((res) => expect(res.body.chain).toBe('testnet')) + .expect((res) => expect(res.body.chainId).toBeDefined()) + .expect((res) => expect(res.body.rpcUrl).toBeDefined()) + .expect((res) => expect(res.body.currentBlockNumber).toBeDefined()); + }); + + it('should return 200 when asking for ethereum network status', async () => { + patch(eth, 'chain', () => { + return 'kovan'; + }); + patch(eth, 'rpcUrl', 'http://...'); + patch(eth, 'chainId', 34); + patch(eth, 'getCurrentBlockNumber', () => { + return 1; + }); + + await request(gatewayApp) + .get(`/network/status`) + .query({ + chain: 'ethereum', + network: 'kovan', + }) + .expect('Content-Type', /json/) + .expect(200) + .expect((res) => expect(res.body.chain).toBe('kovan')) + .expect((res) => expect(res.body.chainId).toBeDefined()) + .expect((res) => expect(res.body.rpcUrl).toBeDefined()) + .expect((res) => expect(res.body.currentBlockNumber).toBeDefined()); + }); + + it('should return 200 when asking for goerli network status', async () => { + patch(goerli, 'chain', () => { + return 'goerli'; + }); + patch(goerli, 'rpcUrl', 'http://...'); + patch(goerli, 'chainId', 5); + patch(goerli, 'getCurrentBlockNumber', () => { + return 1; + }); + + await request(gatewayApp) + .get(`/network/status`) + .query({ + chain: 'ethereum', + network: 'goerli', + }) + .expect('Content-Type', /json/) + .expect(200) + .expect((res) => expect(res.body.chain).toBe('goerli')) + .expect((res) => expect(res.body.chainId).toBeDefined()) + .expect((res) => expect(res.body.rpcUrl).toBeDefined()) + .expect((res) => expect(res.body.currentBlockNumber).toBeDefined()); + }); + + it('should return 200 when asking for avalance network status', async () => { + patch(avalanche, 'chain', () => { + return 'fuji'; + }); + patch(avalanche, 'rpcUrl', 'http://...'); + patch(avalanche, 'chainId', 20); + patch(avalanche, 'getCurrentBlockNumber', () => { + return 2; + }); + + await request(gatewayApp) + .get(`/network/status`) + .query({ + chain: 'avalanche', + network: 'fuji', + }) + .expect('Content-Type', /json/) + .expect(200) + .expect((res) => expect(res.body.chain).toBe('fuji')) + .expect((res) => expect(res.body.chainId).toBeDefined()) + .expect((res) => expect(res.body.rpcUrl).toBeDefined()) + .expect((res) => expect(res.body.currentBlockNumber).toBeDefined()); + }); + + it('should return 200 when asking for polygon network status', async () => { + patch(polygon, 'chain', () => { + return 'mumbai'; + }); + patch(polygon, 'rpcUrl', 'http://...'); + patch(polygon, 'chainId', 80001); + patch(polygon, 'getCurrentBlockNumber', () => { + return 2; + }); + + await request(gatewayApp) + .get(`/network/status`) + .query({ + chain: 'polygon', + network: 'mumbai', + }) + .expect('Content-Type', /json/) + .expect(200) + .expect((res) => expect(res.body.chain).toBe('mumbai')) + .expect((res) => expect(res.body.chainId).toBeDefined()) + .expect((res) => expect(res.body.rpcUrl).toBeDefined()) + .expect((res) => expect(res.body.currentBlockNumber).toBeDefined()); + }); + + it('should return 200 when asking for cronos network status', async () => { + patch(cronos, 'chain', () => { + return 'testnet'; + }); + patch(cronos, 'rpcUrl', 'http://...'); + patch(cronos, 'chainId', 338); + patch(cronos, 'getCurrentBlockNumber', () => { + return 2; + }); + + await request(gatewayApp) + .get(`/network/status`) + .query({ + chain: 'cronos', + network: 'testnet', + }) + .expect('Content-Type', /json/) + .expect(200) + .expect((res) => expect(res.body.chain).toBe('testnet')) + .expect((res) => expect(res.body.chainId).toBeDefined()) + .expect((res) => expect(res.body.rpcUrl).toBeDefined()) + .expect((res) => expect(res.body.currentBlockNumber).toBeDefined()); + }); + + it('should return 200 when requesting network status without specifying', async () => { + patch(eth, 'getCurrentBlockNumber', () => { + return 212; + }); + + patch(avalanche, 'getCurrentBlockNumber', () => { + return 204; + }); + patch(harmony, 'getCurrentBlockNumber', () => { + return 100; + }); + + await request(gatewayApp) + .get(`/network/status`) + .expect('Content-Type', /json/) + .expect(200) + .expect((res) => expect(Array.isArray(res.body)).toEqual(true)); + }); + + it('should return 500 when asking for invalid network', async () => { + await request(gatewayApp) + .get(`/network/status`) + .query({ + chain: 'hello', + }) + .expect(500); + }); +}); + +describe('GET /network/config', () => { + it('should return 200 when asking for config', async () => { + request(gatewayApp) + .get(`/network/config`) + .expect('Content-Type', /json/) + .expect(200); + }); +}); + +describe('GET /network/tokens', () => { + it('should return 200 when retrieving ethereum-kovan tokens, tokenSymbols parameter not provided', async () => { + await request(gatewayApp) + .get(`/network/tokens`) + .query({ + chain: 'ethereum', + network: 'kovan', + }) + .expect('Content-Type', /json/) + .expect(200); + }); + + it('should return 200 when retrieving ethereum-kovan tokens, s parameter provided', async () => { + await request(gatewayApp) + .get(`/network/tokens`) + .query({ + chain: 'ethereum', + network: 'kovan', + tokenSymbols: ['COIN3', 'COIN1'], + }) + .expect('Content-Type', /json/) + .expect(200); + }); + + it('should return 200 when retrieving ethereum-goerli tokens, tokenSymbols parameter not provided', async () => { + await request(gatewayApp) + .get(`/network/tokens`) + .query({ + chain: 'ethereum', + network: 'goerli', + }) + .expect('Content-Type', /json/) + .expect(200); + }); + + it('should return 200 when retrieving ethereum-goerli tokens, tokenSymbols parameter provided', async () => { + await request(gatewayApp) + .get(`/network/tokens`) + .query({ + chain: 'ethereum', + network: 'goerli', + tokenSymbols: ['WETH', 'DAI'], + }) + .expect('Content-Type', /json/) + .expect(200); + }); + + it('should return 200 when retrieving polygon-mumbai tokens, tokenSymbols parameter not provided', async () => { + await request(gatewayApp) + .get(`/network/tokens`) + .query({ + chain: 'polygon', + network: 'mumbai', + }) + .expect('Content-Type', /json/) + .expect(200); + }); + + it('should return 200 when retrieving polygon-mumbai tokens, tokenSymbols parameter provided', async () => { + await request(gatewayApp) + .get(`/network/tokens`) + .query({ + chain: 'polygon', + network: 'mumbai', + tokenSymbols: ['WMATIC', 'WETH'], + }) + .expect('Content-Type', /json/) + .expect(200); + }); + + it('should return 200 when retrieving cronos-testnet tokens, tokenSymbols parameter not provided', async () => { + await request(gatewayApp) + .get(`/network/tokens`) + .query({ + chain: 'cronos', + network: 'testnet', + }) + .expect('Content-Type', /json/) + .expect(200); + }); + + it('should return 200 when retrieving cronos-testnet tokens, tokenSymbols parameter provided', async () => { + await request(gatewayApp) + .get(`/network/tokens`) + .query({ + chain: 'cronos', + network: 'testnet', + tokenSymbols: ['WCRO', 'WETH'], + }) + .expect('Content-Type', /json/) + .expect(200); + }); + + it('should return 500 when retrieving tokens for invalid chain', async () => { + await request(gatewayApp) + .get(`/network/tokens`) + .query({ + chain: 'unknown', + network: 'kovan', + }) + .expect(500); + }); +}); diff --git a/test/postman/collections/EthereumV2.postman_collection.json b/test/postman/collections/EthereumV2.postman_collection.json new file mode 100644 index 0000000000..1708994c21 --- /dev/null +++ b/test/postman/collections/EthereumV2.postman_collection.json @@ -0,0 +1,105 @@ +{ + "info": { + "_postman_id": "f2655c53-5a2d-4030-9cf3-a56001413ca6", + "name": "EthereumV2", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" + }, + "item": [ + { + "name": "eth/balances", + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\r\n \"privateKey\":\"{{privateKey}}\",\r\n \"tokenSymbols\":[\"ETH\",\"WETH\",\"USDC\", \"DAI\"]\r\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "https://localhost:{{port}}/eth/balances", + "protocol": "https", + "host": ["localhost"], + "port": "{{port}}", + "path": ["eth", "balances"] + } + }, + "response": [] + }, + { + "name": "eth/poll", + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\r\n \"txHash\":\"0x6d068067a5e5a0f08c6395b31938893d1cdad81f54a54456221ecd8c1941294d\"\r\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "https://localhost:{{port}}/eth/poll", + "protocol": "https", + "host": ["localhost"], + "port": "{{port}}", + "path": ["eth", "poll"] + } + }, + "response": [] + }, + { + "name": "eth/approve", + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\r\n \"privateKey\":\"{{privateKey}}\",\r\n \"spender\":\"uniswap\",\r\n \"token\":\"DAI\",\r\n \"amount\":\"\"\r\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "https://localhost:{{port}}/eth/approve", + "protocol": "https", + "host": ["localhost"], + "port": "{{port}}", + "path": ["eth", "approve"] + } + }, + "response": [] + }, + { + "name": "eth/allowances", + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\r\n \"privateKey\":\"{{privateKey}}\",\r\n \"spender\":\"uniswap\",\r\n \"tokenSymbols\":[\"DAI\",\"WETH\"]\r\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "https://localhost:{{port}}/eth/allowances", + "protocol": "https", + "host": ["localhost"], + "port": "{{port}}", + "path": ["eth", "allowances"] + } + }, + "response": [] + } + ] +} diff --git a/test/postman/collections/Openocean-GatewayV2.postman_collection.json b/test/postman/collections/Openocean-GatewayV2.postman_collection.json new file mode 100644 index 0000000000..7fdc53be33 --- /dev/null +++ b/test/postman/collections/Openocean-GatewayV2.postman_collection.json @@ -0,0 +1,57 @@ +{ + "info": { + "_postman_id": "b3877e64-9eb4-4f67-94bc-536b8979477a", + "name": "Openocean-GatewayV2", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" + }, + "item": [ + { + "name": "amm/trade", + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\r\n \"base\": \"WETH\",\r\n \"quote\": \"DAI\",\r\n \"amount\": \"0.01\",\r\n \"side\": \"buy\",\r\n \"privateKey\": \"{{privateKey}}\",\r\n \"nonce\": 51\r\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "https://localhost:{{port}}/amm/trade", + "protocol": "https", + "host": ["localhost"], + "port": "{{port}}", + "path": ["amm", "trade"] + } + }, + "response": [] + }, + { + "name": "amm/price", + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\r\n \"base\": \"WETH\",\r\n \"quote\": \"DAI\",\r\n \"amount\": \"0.01\",\r\n \"side\": \"buy\"\r\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "https://localhost:{{port}}/amm/price", + "protocol": "https", + "host": ["localhost"], + "port": "{{port}}", + "path": ["amm", "price"] + } + }, + "response": [] + } + ] +} diff --git a/test/postman/collections/Uniswap-GatewayV2.postman_collection.json b/test/postman/collections/Uniswap-GatewayV2.postman_collection.json new file mode 100644 index 0000000000..9fb7cf2671 --- /dev/null +++ b/test/postman/collections/Uniswap-GatewayV2.postman_collection.json @@ -0,0 +1,72 @@ +{ + "info": { + "_postman_id": "b3877e64-9eb4-4f67-94bc-536b8979477a", + "name": "Uniswap-GatewayV2", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" + }, + "item": [ + { + "name": "eth/uniswap", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "https://localhost:{{port}}/eth/uniswap", + "protocol": "https", + "host": ["localhost"], + "port": "{{port}}", + "path": ["eth", "uniswap"] + } + }, + "response": [] + }, + { + "name": "eth/uniswap/trade", + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\r\n \"base\": \"WETH\",\r\n \"quote\": \"DAI\",\r\n \"amount\": \"0.01\",\r\n \"side\": \"buy\",\r\n \"privateKey\": \"{{privateKey}}\",\r\n \"nonce\": 51\r\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "https://localhost:{{port}}/eth/uniswap/trade", + "protocol": "https", + "host": ["localhost"], + "port": "{{port}}", + "path": ["eth", "uniswap", "trade"] + } + }, + "response": [] + }, + { + "name": "eth/uniswap/price", + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\r\n \"base\": \"WETH\",\r\n \"quote\": \"DAI\",\r\n \"amount\": \"0.01\",\r\n \"side\": \"buy\"\r\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "https://localhost:{{port}}/eth/uniswap/price", + "protocol": "https", + "host": ["localhost"], + "port": "{{port}}", + "path": ["eth", "uniswap", "price"] + } + }, + "response": [] + } + ] +} diff --git a/test/postman/enviroments/GatewayV2.postman_environment.json b/test/postman/enviroments/GatewayV2.postman_environment.json new file mode 100644 index 0000000000..f34c4e39d9 --- /dev/null +++ b/test/postman/enviroments/GatewayV2.postman_environment.json @@ -0,0 +1,24 @@ +{ + "id": "89deac56-cdda-47a7-9046-62dd044b59d4", + "name": "GatewayV2", + "values": [ + { + "key": "port", + "value": "15888", + "enabled": true + }, + { + "key": "privateKey", + "value": "myprivateKey", + "enabled": true + }, + { + "key": "txHash", + "value": "transactionhash", + "enabled": true + } + ], + "_postman_variable_scope": "environment", + "_postman_exported_at": "2021-09-20T19:28:24.957Z", + "_postman_exported_using": "Postman/9.0.0" +} diff --git a/test/services/base.test.ts b/test/services/base.test.ts new file mode 100644 index 0000000000..1ba1ded5a3 --- /dev/null +++ b/test/services/base.test.ts @@ -0,0 +1,70 @@ +import { BigNumber } from 'ethers'; +import { + bigNumberWithDecimalToStr, + gasCostInEthString, + countDecimals, + fromFractionString, + toFractionString, +} from '../../src/services/base'; +import 'jest-extended'; + +test('countDecimals', () => { + const rangeError = 'countDecimals() is only valid for values between (0, 1).'; + expect(() => countDecimals(0)).toThrow(rangeError); + expect(() => countDecimals(1)).toThrow(rangeError); + expect(() => countDecimals(-1)).toThrow(rangeError); + expect(() => countDecimals(100)).toThrow(rangeError); + expect(() => countDecimals(1.0000123)).toThrow(rangeError); + expect(() => countDecimals(100.0000123)).toThrow(rangeError); + expect(() => countDecimals(1e9)).toThrow(rangeError); + expect(countDecimals(0.0000123)).toEqual(5); + expect(countDecimals(1e-9)).toEqual(9); +}); + +test('bigNumberWithDecimalToStr', () => { + expect(bigNumberWithDecimalToStr(BigNumber.from(10), 1)).toEqual('1.0'); + + expect(bigNumberWithDecimalToStr(BigNumber.from(1), 1)).toEqual('0.1'); + + expect(bigNumberWithDecimalToStr(BigNumber.from(12345), 8)).toEqual( + '0.00012345' + ); + + expect( + bigNumberWithDecimalToStr(BigNumber.from('8447700000000000000'), 18) + ).toEqual('8.447700000000000000'); + + expect( + bigNumberWithDecimalToStr(BigNumber.from('1200304050607080001'), 18) + ).toEqual('1.200304050607080001'); + + expect( + bigNumberWithDecimalToStr(BigNumber.from('1345000000000000000000'), 18) + ).toEqual('1345.000000000000000000'); +}); + +test('gasCostInEthString', () => { + expect(gasCostInEthString(200, 21000)).toEqual('0.004200000000000000'); +}); + +test('fromFractionString', () => { + expect(fromFractionString('1/1')).toEqual(1); + expect(fromFractionString('1/2')).toEqual(0.5); + expect(fromFractionString('3/4')).toEqual(0.75); + expect(fromFractionString('1/100')).toEqual(0.01); + expect(fromFractionString('hello')).toEqual(null); +}); + +test('toFractionString', () => { + expect(toFractionString(1)).toEqual('1/1'); + expect(toFractionString(0.2)).toEqual('1/5'); + expect(toFractionString(0.1)).toEqual('1/10'); + expect(toFractionString(0.3)).toEqual('3/10'); + expect(toFractionString(0.01)).toEqual('1/100'); + expect(toFractionString('1/100')).toEqual('1/100'); + expect(toFractionString('2/100')).toEqual('1/50'); + expect(toFractionString('3/100')).toEqual('3/100'); + expect(toFractionString('0.2')).toEqual('1/5'); + expect(toFractionString('hello')).toEqual(null); + expect(toFractionString('0abc')).toEqual(null); +}); diff --git a/test/services/config-manager-cert-passphrase.test.ts b/test/services/config-manager-cert-passphrase.test.ts new file mode 100644 index 0000000000..7818e3a609 --- /dev/null +++ b/test/services/config-manager-cert-passphrase.test.ts @@ -0,0 +1,39 @@ +import { patch, unpatch } from './patch'; +import { ConfigManagerCertPassphrase } from '../../src/services/config-manager-cert-passphrase'; +import 'jest-extended'; + +describe('ConfigManagerCertPassphrase.readPassphrase', () => { + let witnessFailure = false; + + afterEach(() => { + unpatch(); + witnessFailure = false; + }); + + beforeEach(() => { + patch(ConfigManagerCertPassphrase.bindings, '_exit', () => { + witnessFailure = true; + }); + }); + + it('should get an error if there is no cert phrase', async () => { + ConfigManagerCertPassphrase.readPassphrase(); + expect(witnessFailure).toEqual(true); + }); + + it('should get the cert phrase from the process args', async () => { + const passphrase = 'args_passphrase'; + process.argv.push(`--passphrase=${passphrase}`); + const certPhrase = ConfigManagerCertPassphrase.readPassphrase(); + expect(certPhrase).toEqual(passphrase); + process.argv.pop(); + }); + + it('should get the cert phrase from an env variable', async () => { + const passphrase = 'env_var_passphrase'; + process.env['GATEWAY_PASSPHRASE'] = passphrase; + const certPhrase = ConfigManagerCertPassphrase.readPassphrase(); + expect(certPhrase).toEqual(passphrase); + delete process.env['GATEWAY_PASSPHRASE']; + }); +}); diff --git a/test/services/config-manager-v2.test.ts b/test/services/config-manager-v2.test.ts new file mode 100644 index 0000000000..4155fc4abf --- /dev/null +++ b/test/services/config-manager-v2.test.ts @@ -0,0 +1,238 @@ +import fs from 'fs'; +import fsp from 'fs/promises'; +import fse from 'fs-extra'; +import os from 'os'; +import path from 'path'; +import { + deepCopy, + ConfigManagerV2, + ConfigurationNamespace, + ConfigRootSchemaPath, +} from '../../src/services/config-manager-v2'; + +describe('Configuration manager v2 tests', () => { + const testDataSourcePath: string = fse.realpathSync( + path.join(__dirname, 'data/config-manager-v2') + ); + let tempDirPath: string = ''; + let configManager: ConfigManagerV2; + + beforeEach(async () => { + // Create a temp dir in project + tempDirPath = await fsp.mkdtemp( + path.join(os.tmpdir(), 'config-manager-v2-unit-test') + ); + tempDirPath = fse.realpathSync(tempDirPath); + + // Copy the test data into a temp dir. + await fse.copy(testDataSourcePath, tempDirPath); + + // Create a valid configuration manager from the temp dir. + configManager = new ConfigManagerV2( + path.join(tempDirPath, 'test1/root.yml') + ); + }); + + afterEach(async () => { + // Delete the temp dir. + fs.rmSync(tempDirPath, { force: true, recursive: true }); + tempDirPath = ''; + + // Delete any default configs. + ConfigManagerV2.setDefaults('ethereum', {}); + }); + + it('loading a valid configuration root', (done) => { + expect(configManager.get('ssl.caCertificatePath')).toBeDefined(); + expect(configManager.get('ethereum.networks')).toBeDefined(); + expect(configManager.get('defira.contractAddresses')).toBeDefined(); + done(); + }); + + it('loading an invalid configuration root', (done) => { + expect(() => { + new ConfigManagerV2(path.join(tempDirPath, 'test1/invalid-root.yml')); + }).toThrow(); + expect(() => { + new ConfigManagerV2(path.join(tempDirPath, 'test1/invalid-root-3.yml')); + }).toThrow(); + expect(() => { + new ConfigManagerV2(path.join(tempDirPath, 'test1/invalid-root-4.yml')); + }).toThrow(); + done(); + }); + + it('loading an invalid config file', (done) => { + expect(() => { + new ConfigManagerV2(path.join(tempDirPath, 'test1/invalid-root-2.yml')); + }).toThrow(); + expect(() => { + new ConfigManagerV2( + path.join(tempDirPath, 'test1/invalid-root-defira.yml') + ); + }).toThrow(); + done(); + }); + + it('reading from config file', (done) => { + expect(configManager.get('ssl.keyPath')).toEqual('gateway.key'); + expect(configManager.get('ethereum.networks.kovan.chainID')).toEqual(42); + expect( + configManager.get('ethereum.networks.kovan.nativeCurrencySymbol') + ).toEqual('ETH'); + expect( + configManager.get('defira.contractAddresses.testnet.initCodeHash') + ).toEqual( + '0x7224a10f5f94e12d3973f5ef0f63a558539a93e1eef47935934ffc4d741b4b9f' // noqa: mock + ); + done(); + }); + + it('reading a non-existent config entry', (done) => { + expect(configManager.get('ethereum.kovan.chainID')).toBeUndefined(); + expect(configManager.get('ssl.keyPath.keyPath')).toBeUndefined(); + done(); + }); + + it('reading invalid config keys', (done) => { + expect(() => { + configManager.get('ssl'); + }).toThrow(); + done(); + expect(() => { + configManager.get('noSuchNamespace.networks'); + }).toThrow(); + }); + + it('writing a valid configuration', (done) => { + const newKeyPath: string = 'new-gateway.key'; + configManager.set('ssl.keyPath', newKeyPath); + configManager.set('ethereum.networks.kovan.chainID', 970); + configManager.set('ethereum.networks.mainnet', { + chainID: 61, + nodeURL: 'http://localhost:8561', + tokenListType: 'URL', + tokenListSource: + 'https://wispy-bird-88a7.uniswap.workers.dev/?url=http://tokens.1inch.eth.link', + nativeCurrencySymbol: 'ETH', + }); + expect(configManager.get('ssl.keyPath')).toEqual(newKeyPath); + + const verifyConfigManager: ConfigManagerV2 = new ConfigManagerV2( + path.join(tempDirPath, 'test1/root.yml') + ); + expect(verifyConfigManager.get('ssl.keyPath')).toEqual(newKeyPath); + expect(verifyConfigManager.get('ethereum.networks.kovan.chainID')).toEqual( + 970 + ); + expect( + verifyConfigManager.get('ethereum.networks.mainnet.chainID') + ).toEqual(61); + done(); + }); + + it('writing an invalid configuration', (done) => { + expect(() => { + configManager.set('ssl.nonKeyPath', 'noSuchFile.txt'); + }).toThrow(); + expect(() => { + configManager.set('ethereum', {}); + }).toThrow(); + done(); + }); + + it('using default configurations', (done) => { + ConfigManagerV2.setDefaults('ethereum', { + networks: { + rinkeby: { + chainID: 4, + nodeURL: 'http://localhost:8504', + }, + }, + }); + expect(configManager.get('ethereum.networks.rinkeby.chainID')).toEqual(4); + done(); + }); + + it('getting namespace objects', (done) => { + const sslNamespace: ConfigurationNamespace = configManager.getNamespace( + 'ssl' + ) as ConfigurationNamespace; + expect(path.basename(sslNamespace.schemaPath)).toEqual('ssl-schema.json'); + expect(path.dirname(sslNamespace.schemaPath)).toEqual( + path.dirname(ConfigRootSchemaPath) + ); + expect(sslNamespace.configurationPath).toEqual( + path.join(tempDirPath, 'test1/ssl.yml') + ); + done(); + }); + + it('Test upgradability', () => { + expect(configManager.get('logging.logPath')).toEqual('./logs'); + expect(configManager.get('telemetry.allowed')).toEqual(false); + expect(configManager.get('telemetry.enabled')).toEqual(false); + }); + + it('Dummy test to attempt migration', () => { + const configManager2 = new ConfigManagerV2( + path.join(tempDirPath, 'test1/root2.yml') + ); + expect(configManager2.get('ssl.caCertificatePath')).toBeDefined(); + }); + + it('Test deep copy', (done) => { + const templateObj: any = { + a: 1, + b: { c: { f: 5, g: 6 }, d: 3 }, + e: 4, + j: [{ i: '0' }, { k: '1' }], + l: { m: [1, 2, 3], n: [9, 7, 8] }, + }; + const configObj: any = { + a: 9, + b: { c: 8, d: 7 }, + e: 6, + f: '5', + g: { h: 4 }, + h: ['1', '2'], + j: [{ i: '3' }, { k: '4' }], + l: { m: [9, 7, 8], n: [1, 2, 3] }, + }; + deepCopy(configObj, templateObj); + expect(templateObj.a).toEqual(9); + expect(templateObj.b.d).toEqual(7); + expect(templateObj.b.c).toEqual({ f: 5, g: 6 }); + expect(templateObj.e).toEqual(6); + expect(templateObj.f).toEqual('5'); + expect(templateObj.g).toEqual({ h: 4 }); + expect(templateObj.h).toEqual(['1', '2']); + expect(templateObj.j).toEqual([{ i: '3' }, { k: '4' }]); + expect(templateObj.l.m).toEqual([9, 7, 8]); + expect(templateObj.l.n).toEqual([1, 2, 3]); + done(); + }); + + it('Get all configuration', (done) => { + const allConfigs = configManager.allConfigurations; + expect(allConfigs.ssl.keyPath).toEqual('gateway.key'); + expect(allConfigs.ethereum.networks.kovan.chainID).toEqual(42); + done(); + }); + + it('Get instance', (done) => { + let configManager = ConfigManagerV2.getInstance(); + expect(configManager.allConfigurations.telemetry.enabled).toEqual(false); + configManager = ConfigManagerV2.getInstance(); + expect(configManager.allConfigurations.telemetry.enabled).toEqual(false); + done(); + }); +}); + +describe('Sample configurations', () => { + it('Read sample schemas', (done) => { + const sampleConfigManager = new ConfigManagerV2('./src/templates/root.yml'); + expect(sampleConfigManager.get('ssl.caCertificatePath')).toBeDefined(); + done(); + }); +}); diff --git a/test/services/config-validators.test.ts b/test/services/config-validators.test.ts new file mode 100644 index 0000000000..98061e0968 --- /dev/null +++ b/test/services/config-validators.test.ts @@ -0,0 +1,142 @@ +import { + invalidAllowedSlippage, + validateAllowedSlippage, + updateAllowedSlippageToFraction, +} from '../../src/services/config/config.validators'; +import 'jest-extended'; + +describe('validateAllowedSlippage', () => { + it('valid when req.uniswap.versions.v2.allowedSlippage is a fraction string', () => { + expect( + validateAllowedSlippage({ + configPath: 'req.uniswap.versions.v2.allowedSlippage', + configValue: '1/100', + }) + ).toEqual([]); + }); + + it('valid when req.uniswap.versions.v2.allowedSlippage is a number', () => { + expect( + validateAllowedSlippage({ + configPath: 'avalanche.allowedSlippage', + configValue: 0.1, + }) + ).toEqual([]); + }); + + it('valid when req.avalanche.allowedSlippage is a fraction string', () => { + expect( + validateAllowedSlippage({ + configPath: 'req.avalanche.allowedSlippage', + configValue: '3/10', + }) + ).toEqual([]); + }); + + it('valid when req.avalanche.allowedSlippage is a float string', () => { + expect( + validateAllowedSlippage({ + configPath: 'req.avalanche.allowedSlippage', + configValue: '0.005', + }) + ).toEqual([]); + }); + + it('valid when req.avalanche.allowedSlippage is a float string', () => { + expect( + validateAllowedSlippage({ + configPath: 'req.avalanche.allowedSlippage', + configValue: '0.005', + }) + ).toEqual([]); + }); + + it('valid when req.avalanche.allowedSlippage is a number', () => { + expect( + validateAllowedSlippage({ + configPath: 'avalanche.allowedSlippage', + configValue: 0.005, + }) + ).toEqual([]); + }); + + it('invalid when req.avalanche.allowedSlippage is too large (number)', () => { + expect( + validateAllowedSlippage({ + configPath: 'avalanche.allowedSlippage', + configValue: 1.005, + }) + ).toEqual([invalidAllowedSlippage]); + }); + + it('invalid when req.avalanche.allowedSlippage is too large (fraction)', () => { + expect( + validateAllowedSlippage({ + configPath: 'avalanche.allowedSlippage', + configValue: '3/2', + }) + ).toEqual([invalidAllowedSlippage]); + }); + + it('invalid when req.avalanche.allowedSlippage is too small (number)', () => { + expect( + validateAllowedSlippage({ + configPath: 'avalanche.allowedSlippage', + configValue: -1.005, + }) + ).toEqual([invalidAllowedSlippage]); + }); + + it('invalid when req.avalanche.allowedSlippage is too small (fraction)', () => { + expect( + validateAllowedSlippage({ + configPath: 'avalanche.allowedSlippage', + configValue: '-1/5', + }) + ).toEqual([invalidAllowedSlippage]); + }); + + it('valid when configPath is not allowedSlippage does not exist', () => { + expect( + validateAllowedSlippage({ configPath: 'hello', configValue: 'world' }) + ).toEqual([]); + }); + + it('invalid when req.avalanche.allowedSlippage is a non-numerical string', () => { + expect( + validateAllowedSlippage({ + configPath: 'avalanche.allowedSlippage', + configValue: 'hello', + }) + ).toEqual([invalidAllowedSlippage]); + }); +}); + +describe('updateAllowedSlippageToFraction', () => { + it('update when req.uniswap.versions.v2.allowedSlippage is a number', () => { + const body = { configPath: 'avalanche.allowedSlippage', configValue: 0.1 }; + updateAllowedSlippageToFraction(body); + expect(body.configValue).toEqual('1/10'); + }); + + it('update when req.uniswap.versions.v2.allowedSlippage is a number string', () => { + const body = { configPath: 'avalanche.allowedSlippage', configValue: 0.25 }; + updateAllowedSlippageToFraction(body); + expect(body.configValue).toEqual('1/4'); + }); + + it('do nothing when req.uniswap.versions.v2.allowedSlippage is a fraction', () => { + const body = { + configPath: 'avalanche.allowedSlippage', + configValue: '1/5', + }; + updateAllowedSlippageToFraction(body); + expect(body.configValue).toEqual('1/5'); + }); + + it('do nothing when the configPath is not allowedSlippage', () => { + const body = { configPath: 'hellow', configValue: 'goodbye' }; + updateAllowedSlippageToFraction(body); + expect(body.configValue).toEqual('goodbye'); + }); +}); diff --git a/test/services/data/config-manager-v2/test1/defira.yaml b/test/services/data/config-manager-v2/test1/defira.yaml new file mode 100644 index 0000000000..0d0ab84deb --- /dev/null +++ b/test/services/data/config-manager-v2/test1/defira.yaml @@ -0,0 +1,15 @@ +# how much the execution price is allowed to move unfavorably from the trade +# execution price. It uses a rational number for precision. +allowedSlippage: '2/100' + +# the maximum gas allowed for a defira trade. +gasLimit: 150688 + +# how long a trade is valid in seconds. After time passes defira will not +# perform the trade, but the gas will still be sent. +ttl: 600 + +contractAddresses: + testnet: + routerAddress: '0xA5C5D1fd1Fd07F95359E2bde419CB5B2cdC622A9' + initCodeHash: '0x7224a10f5f94e12d3973f5ef0f63a558539a93e1eef47935934ffc4d741b4b9f' diff --git a/test/services/data/config-manager-v2/test1/ethereum.yml b/test/services/data/config-manager-v2/test1/ethereum.yml new file mode 100644 index 0000000000..64af0deeb5 --- /dev/null +++ b/test/services/data/config-manager-v2/test1/ethereum.yml @@ -0,0 +1,15 @@ +networks: + mainnet: + chainID: 1 + nodeURL: https://mainnet.infura.io/v3/ + tokenListType: URL + tokenListSource: https://wispy-bird-88a7.uniswap.workers.dev/?url=http://tokens.1inch.eth.link + nativeCurrencySymbol: ETH + kovan: + chainID: 42 + nodeURL: https://kovan.infura.io/v3/ + tokenListType: FILE + tokenListSource: src/chains/ethereum/erc20_tokens_kovan.json + nativeCurrencySymbol: ETH + +manualGasPrice: 110 diff --git a/test/services/data/config-manager-v2/test1/invalid-defira.yml b/test/services/data/config-manager-v2/test1/invalid-defira.yml new file mode 100644 index 0000000000..438a883f69 --- /dev/null +++ b/test/services/data/config-manager-v2/test1/invalid-defira.yml @@ -0,0 +1,18 @@ +# how much the execution price is allowed to move unfavorably from the trade +# execution price. It uses a rational number for precision. +allowedSlippage: '2/100' + +# the maximum gas allowed for a defira trade. +gasLimit: 150688 + +# how long a trade is valid in seconds. After time passes defira will not +# perform the trade, but the gas will still be sent. +ttl: 600 + +contractAddresses: + mainnet: + routerAddress: '0x3C8BF7e25EbfAaFb863256A4380A8a93490d8065' + # missing initCodeHash + testnet: + routerAddress: '0xA5C5D1fd1Fd07F95359E2bde419CB5B2cdC622A9' + initCodeHash: '0x7224a10f5f94e12d3973f5ef0f63a558539a93e1eef47935934ffc4d741b4b9f' \ No newline at end of file diff --git a/test/services/data/config-manager-v2/test1/invalid-root-2.yml b/test/services/data/config-manager-v2/test1/invalid-root-2.yml new file mode 100644 index 0000000000..a1f2098fc5 --- /dev/null +++ b/test/services/data/config-manager-v2/test1/invalid-root-2.yml @@ -0,0 +1,8 @@ +version: 1 +configurations: + $namespace ssl: + configurationPath: invalid-ssl.yml + schemaPath: ssl-schema.json + $namespace ethereum: + configurationPath: ethereum.yml + schemaPath: ethereum-schema.json diff --git a/test/services/data/config-manager-v2/test1/invalid-root-3.yml b/test/services/data/config-manager-v2/test1/invalid-root-3.yml new file mode 100644 index 0000000000..0df3ba42fe --- /dev/null +++ b/test/services/data/config-manager-v2/test1/invalid-root-3.yml @@ -0,0 +1,8 @@ +version: 1 +configurations: + $namespace ssl: + configurationPath: ssl.yml + schemaPath: ssl-schema.json + $namespace ethereum: + configurationPath: ethereum.yml + schemaPath: schema-nonexist.json diff --git a/test/services/data/config-manager-v2/test1/invalid-root-4.yml b/test/services/data/config-manager-v2/test1/invalid-root-4.yml new file mode 100644 index 0000000000..0df3ba42fe --- /dev/null +++ b/test/services/data/config-manager-v2/test1/invalid-root-4.yml @@ -0,0 +1,8 @@ +version: 1 +configurations: + $namespace ssl: + configurationPath: ssl.yml + schemaPath: ssl-schema.json + $namespace ethereum: + configurationPath: ethereum.yml + schemaPath: schema-nonexist.json diff --git a/test/services/data/config-manager-v2/test1/invalid-root-defira.yml b/test/services/data/config-manager-v2/test1/invalid-root-defira.yml new file mode 100644 index 0000000000..7cdac26a71 --- /dev/null +++ b/test/services/data/config-manager-v2/test1/invalid-root-defira.yml @@ -0,0 +1,5 @@ +version: 1 +configurations: + $namespace defira: + configurationPath: invalid-defira.yml + schemaPath: defira-schema.json \ No newline at end of file diff --git a/test/services/data/config-manager-v2/test1/invalid-root.yml b/test/services/data/config-manager-v2/test1/invalid-root.yml new file mode 100644 index 0000000000..a7039d5da7 --- /dev/null +++ b/test/services/data/config-manager-v2/test1/invalid-root.yml @@ -0,0 +1,11 @@ +version: 1 +configurations: + $namespace ssl: + configurationPath: ssl.yml + schemaPath: ssl-schema.json + $namespace ethereum: + configurationPath: ethereum.yml + schemaPath: ethereum-schema.json + not a namespace: + configurationPath: no.yml + schemaPath: no.json diff --git a/test/services/data/config-manager-v2/test1/invalid-ssl.yml b/test/services/data/config-manager-v2/test1/invalid-ssl.yml new file mode 100644 index 0000000000..6a983227e5 --- /dev/null +++ b/test/services/data/config-manager-v2/test1/invalid-ssl.yml @@ -0,0 +1,4 @@ +caCertificatePath: ca.crt +certificatePath: gateway.crt +keyPath: gateway.key +funnyKeyPath: funny.key \ No newline at end of file diff --git a/test/services/data/config-manager-v2/test1/root.yml b/test/services/data/config-manager-v2/test1/root.yml new file mode 100644 index 0000000000..fbdd34f595 --- /dev/null +++ b/test/services/data/config-manager-v2/test1/root.yml @@ -0,0 +1,61 @@ +version: 1 +configurations: + $namespace harmony: + configurationPath: harmony.yml + schemaPath: harmony-schema.json + + $namespace avalanche: + configurationPath: avalanche.yml + schemaPath: ethereum-schema.json + + $namespace database: + configurationPath: database.yml + schemaPath: database-schema.json + + $namespace ethereum: + configurationPath: ethereum.yml + schemaPath: ethereum-schema.json + + $namespace polygon: + configurationPath: polygon.yml + schemaPath: ethereum-schema.json + + $namespace ethereumGasStation: + configurationPath: ethereum-gas-station.yml + schemaPath: ethereum-gas-station-schema.json + + $namespace defira: + configurationPath: defira.yml + schemaPath: defira-schema.json + + $namespace logging: + configurationPath: logging.yml + schemaPath: logging-schema.json + + $namespace ssl: + configurationPath: ssl.yml + schemaPath: ssl-schema.json + + $namespace pangolin: + configurationPath: pangolin.yml + schemaPath: pangolin-schema.json + + $namespace sushiswap: + configurationPath: sushiswap.yml + schemaPath: sushiswap-schema.json + + $namespace traderjoe: + configurationPath: traderjoe.yml + schemaPath: traderjoe-schema.json + + $namespace server: + configurationPath: server.yml + schemaPath: server-schema.json + + $namespace telemetry: + configurationPath: telemetry.yml + schemaPath: telemetry-schema.json + + $namespace uniswap: + configurationPath: uniswap.yml + schemaPath: uniswap-schema.json diff --git a/test/services/data/config-manager-v2/test1/root2.yml b/test/services/data/config-manager-v2/test1/root2.yml new file mode 100644 index 0000000000..bf92142ed6 --- /dev/null +++ b/test/services/data/config-manager-v2/test1/root2.yml @@ -0,0 +1,14 @@ +version: 0 +configurations: + $namespace ssl: + configurationPath: ssl.yml + schemaPath: ssl-schema.json + $namespace ethereum: + configurationPath: ethereum.yml + schemaPath: ethereum-schema.json + $namespace logging: + configurationPath: logging.yml + schemaPath: logging-schema.json + $namespace telemetry: + configurationPath: telemetry.yml + schemaPath: telemetry-schema.json diff --git a/test/services/data/config-manager-v2/test1/ssl.yml b/test/services/data/config-manager-v2/test1/ssl.yml new file mode 100644 index 0000000000..7ab539b6eb --- /dev/null +++ b/test/services/data/config-manager-v2/test1/ssl.yml @@ -0,0 +1,3 @@ +caCertificatePath: ca.crt +certificatePath: gateway.crt +keyPath: gateway.key diff --git a/test/services/data/config-manager-v2/test1/telemetry.yml b/test/services/data/config-manager-v2/test1/telemetry.yml new file mode 100644 index 0000000000..353450877c --- /dev/null +++ b/test/services/data/config-manager-v2/test1/telemetry.yml @@ -0,0 +1,2 @@ +# If true it will collect data about API usage. +allowed: false diff --git a/test/services/error-handler.test.ts b/test/services/error-handler.test.ts new file mode 100644 index 0000000000..f467755daa --- /dev/null +++ b/test/services/error-handler.test.ts @@ -0,0 +1,154 @@ +import { + parseTransactionGasError, + TRANSACTION_GAS_PRICE_TOO_LOW, + UNKNOWN_ERROR_MESSAGE, + UNKNOWN_ERROR_ERROR_CODE, + NETWORK_ERROR_CODE, + NETWORK_ERROR_MESSAGE, + RATE_LIMIT_ERROR_MESSAGE, + RATE_LIMIT_ERROR_CODE, + HttpException, + gatewayErrorMiddleware, + InitializationError, +} from '../../src/services/error-handler'; +import 'jest-extended'; + +describe('parseTransactionGasError', () => { + test('return null for a normal Error', () => { + expect(parseTransactionGasError(new Error())).toEqual(null); + }); + + test('return errorCode and message for gas price error', () => { + expect( + parseTransactionGasError({ + code: 'SERVER_ERROR', + body: '{"error":{"message":"ERROR","code":-32010}}', + }) + ).toEqual({ errorCode: TRANSACTION_GAS_PRICE_TOO_LOW, message: 'ERROR' }); + }); +}); + +class NetworkError extends Error { + code: string; + constructor(message: string) { + super(message); + this.code = 'NETWORK_ERROR'; + } +} + +class ServerError extends Error { + code: string; + constructor(message: string) { + super(message); + this.code = 'SERVER_ERROR'; + } +} + +class TransactionGasError extends Error { + code: string; + body: string; + constructor(message: string) { + super(message); + this.code = 'SERVER_ERROR'; + this.body = '{"error":{"code":-32010,"message":"need more gas"}}'; + } +} + +class GasPriceTooLowError extends Error { + code: number; + constructor(message: string) { + super(message); + this.code = -32010; + } +} + +class RateLimit extends Error { + code: number; + constructor(message: string) { + super(message); + this.code = -32005; + } +} + +describe('gatewayErrorMiddleware', () => { + test('return 503 and UNKNOWN message and code for a normal error', () => { + expect(gatewayErrorMiddleware(new Error('there was an error'))).toEqual( + expect.objectContaining({ + message: UNKNOWN_ERROR_MESSAGE, + httpErrorCode: 503, + errorCode: UNKNOWN_ERROR_ERROR_CODE, + }) + ); + }); + + test('pass values from HttpException to response error', () => { + expect( + gatewayErrorMiddleware(new HttpException(403, 'error', 100)) + ).toEqual( + expect.objectContaining({ + message: 'error', + httpErrorCode: 403, + errorCode: 100, + }) + ); + }); + + test('return NETWORK_ERROR_CODE and NETWORK_ERROR_MESSAGE for network error', () => { + expect(gatewayErrorMiddleware(new NetworkError('error2'))).toEqual( + expect.objectContaining({ + message: NETWORK_ERROR_MESSAGE, + httpErrorCode: 503, + errorCode: NETWORK_ERROR_CODE, + }) + ); + }); + + test('return Infura RateLimit error', () => { + expect(gatewayErrorMiddleware(new RateLimit('error3'))).toEqual( + expect.objectContaining({ + message: RATE_LIMIT_ERROR_MESSAGE, + httpErrorCode: 503, + errorCode: RATE_LIMIT_ERROR_CODE, + }) + ); + }); + + test('return NETWORK_ERROR_CODE and NETWORK_ERROR_MESSAGE for network error', () => { + expect( + gatewayErrorMiddleware(new InitializationError('error4', 123)) + ).toEqual( + expect.objectContaining({ + message: 'error4', + errorCode: 123, + }) + ); + }); + + test('return NETWORK_ERROR_CODE and NETWORK_ERROR_MESSAGE for server error if not a transaction gas error', () => { + expect(gatewayErrorMiddleware(new ServerError('error5'))).toEqual( + expect.objectContaining({ + message: NETWORK_ERROR_MESSAGE, + httpErrorCode: 503, + errorCode: NETWORK_ERROR_CODE, + }) + ); + }); + + test('return transaction errorCode and message if it is a transaction gas error', () => { + expect(gatewayErrorMiddleware(new TransactionGasError('error6'))).toEqual( + expect.objectContaining({ + message: 'need more gas', + httpErrorCode: 503, + errorCode: TRANSACTION_GAS_PRICE_TOO_LOW, + }) + ); + }); + + test('return transaction errorCode and message if it is a transaction gas error', () => { + expect(gatewayErrorMiddleware(new GasPriceTooLowError('error7'))).toEqual( + expect.objectContaining({ + errorCode: TRANSACTION_GAS_PRICE_TOO_LOW, + }) + ); + }); +}); diff --git a/test/services/evm.nonce.test.ts b/test/services/evm.nonce.test.ts new file mode 100644 index 0000000000..b80a735712 --- /dev/null +++ b/test/services/evm.nonce.test.ts @@ -0,0 +1,182 @@ +import { providers } from 'ethers'; +import fs from 'fs'; +import fse from 'fs-extra'; +import fsp from 'fs/promises'; +import 'jest-extended'; +import os from 'os'; +import path from 'path'; +import { + EVMNonceManager, + NonceInfo, + NonceLocalStorage, +} from '../../src/services/evm.nonce'; +import { ReferenceCountingCloseable } from '../../src/services/refcounting-closeable'; +import { patch } from './patch'; + +describe('Test NonceLocalStorage', () => { + let dbPath: string = ''; + let db: NonceLocalStorage; + const handle: string = ReferenceCountingCloseable.createHandle(); + + beforeAll(async () => { + dbPath = await fsp.mkdtemp( + path.join(os.tmpdir(), '/NonceLocalStorage.test.level') + ); + }); + + beforeEach(() => { + db = NonceLocalStorage.getInstance(dbPath, handle); + }); + + afterAll(async () => { + await fse.emptyDir(dbPath); + fs.rmSync(dbPath, { force: true, recursive: true }); + }); + + afterEach(async () => { + await db.close(handle); + }); + + it('save, get and delete nonces', async () => { + const testChain1 = 'ethereum'; + const testChain1Id = 1; + const address1 = 'A'; + const address2 = 'B'; + + const now: number = new Date().getTime(); + + // saves a key with a NonceInfo value + db.saveLeadingNonce( + testChain1, + testChain1Id, + address1, + new NonceInfo(15, now + 1000) + ); + db.saveLeadingNonce( + testChain1, + testChain1Id, + address2, + new NonceInfo(23, now + 1000) + ); + + const results = await db.getLeadingNonces(testChain1, testChain1Id); + + // returns with an address as key with the corresponding NonceInfo value + expect(results).toStrictEqual({ + [address1]: new NonceInfo(15, now + 1000), + [address2]: new NonceInfo(23, now + 1000), + }); + }); +}); + +describe('Test EVMNonceManager', () => { + let dbPath: string = ''; + + beforeAll(async () => { + dbPath = await fsp.mkdtemp( + path.join(__dirname, '/EVMNonceManager.test.level') + ); + }); + + afterAll(async () => { + await fse.emptyDir(dbPath); + await fs.rmSync(dbPath, { force: true, recursive: true }); + }); + + const testChain1 = 'ethereum'; + const testChain1Id = 1; + + const testChain2 = 'avalanche'; + const testChain2Id = 1; + const address1 = 'ABC'; + + it('getNonce reads nonce from node, commits, then reads nonce from memory', async () => { + const evmNonceManager = new EVMNonceManager( + testChain1, + testChain1Id, + dbPath, + 300 + ); + + patch(evmNonceManager, 'mergeNonceFromEVMNode', (_ethAddress: string) => { + return; + }); + + patch(evmNonceManager, 'getNonceFromNode', (_ethAddress: string) => { + return Promise.resolve(12); + }); + + await evmNonceManager.init( + new providers.StaticJsonRpcProvider('https://kovan.infura.io/v3/') + ); + + const nonce = await evmNonceManager.getNonce(address1); + + expect(nonce).toEqual(12); + + await evmNonceManager.commitNonce(address1, nonce); + + const nonce2 = await evmNonceManager.getNextNonce(address1); + + expect(nonce2).toEqual(13); + }); + + it('commits to the same address on different chains should have separate nonce values', async () => { + const ethereumNonceManager = new EVMNonceManager( + testChain1, + testChain1Id, + dbPath, + 300 + ); + + const avalancheNonceManager = new EVMNonceManager( + testChain2, + testChain2Id, + dbPath, + 300 + ); + + patch( + ethereumNonceManager, + 'mergeNonceFromEVMNode', + (_ethAddress: string) => { + return; + } + ); + + patch(ethereumNonceManager, 'getNonceFromNode', (_ethAddress: string) => { + return Promise.resolve(30); + }); + + patch( + avalancheNonceManager, + 'mergeNonceFromEVMNode', + (_ethAddress: string) => { + return; + } + ); + + patch(avalancheNonceManager, 'getNonceFromNode', (_ethAddress: string) => { + return Promise.resolve(51); + }); + + await ethereumNonceManager.init(new providers.StaticJsonRpcProvider('')); + + await avalancheNonceManager.init(new providers.StaticJsonRpcProvider('')); + + const ethereumNonce1 = await ethereumNonceManager.getNextNonce(address1); + const avalancheNonce1 = await avalancheNonceManager.getNextNonce(address1); + + expect(ethereumNonce1).toEqual(14); // exists from previous test + expect(avalancheNonce1).toEqual(52); + + await ethereumNonceManager.commitNonce(address1, ethereumNonce1); + await avalancheNonceManager.commitNonce(address1, avalancheNonce1); + + const ethereumNonce2 = await ethereumNonceManager.getNextNonce(address1); + const avalancheNonce2 = await avalancheNonceManager.getNextNonce(address1); + + expect(ethereumNonce2).toEqual(15); + expect(avalancheNonce2).toEqual(53); + }); +}); diff --git a/test/services/evm.tx-storage.test.ts b/test/services/evm.tx-storage.test.ts new file mode 100644 index 0000000000..4984df1de9 --- /dev/null +++ b/test/services/evm.tx-storage.test.ts @@ -0,0 +1,121 @@ +import fs from 'fs'; +import fsp from 'fs/promises'; +import fse from 'fs-extra'; +import os from 'os'; +import path from 'path'; +import { EvmTxStorage } from '../../src/services/evm.tx-storage'; +import 'jest-extended'; +import { ReferenceCountingCloseable } from '../../src/services/refcounting-closeable'; + +describe('Test local-storage', () => { + let dbPath: string = ''; + let db: EvmTxStorage; + let handle: string; + + beforeAll(async () => { + dbPath = await fsp.mkdtemp( + path.join(os.tmpdir(), '/evm.tx-storage.test.level') + ); + }); + + afterAll(async () => { + await fse.emptyDir(dbPath); + fs.rmSync(dbPath, { force: true, recursive: true }); + }); + + beforeEach(() => { + handle = ReferenceCountingCloseable.createHandle(); + db = EvmTxStorage.getInstance(dbPath, handle); + }); + + afterEach(async () => { + await db.close(handle); + }); + + it('save, get and delete a key value pair in the local db', async () => { + const testChain1 = 'ethereum'; + const testChain1Id = 423; + const testChain1Tx1 = + '0xadaef9c4540192e45c991ffe6f12cc86be9c07b80b43487e5778d95c964405c7'; // noqa: mock + const testChain1GasPrice1 = 200000; + const testChain1Tx2 = + '0xadaef9c4540192e45c991ffe6f12cc86be9c07b80b43487edddddddddddddddd'; // noqa: mock + const testChain1GasPrice2 = 200300; + + // clean up any previous db runs + await db.deleteTx(testChain1, testChain1Id, testChain1Tx1); + await db.deleteTx(testChain1, testChain1Id, testChain1Tx2); + + // saves a key with a value + const testTime1 = new Date(); + await db.saveTx( + testChain1, + testChain1Id, + testChain1Tx1, + testTime1, + testChain1GasPrice1 + ); + + const results = await db.getTxs(testChain1, testChain1Id); + + // returns with an address as key, the chain/id is known by the parameters you provide + expect(results).toStrictEqual({ + [testChain1Tx1]: [testTime1, testChain1GasPrice1], + }); + + // store and retrieve a second value for the same chain/chainId + const testTime2 = new Date(); + await db.saveTx( + testChain1, + testChain1Id, + testChain1Tx2, + testTime2, + testChain1GasPrice2 + ); + const results2 = await db.getTxs(testChain1, testChain1Id); + + // returns with an address as key, the chain/id is known by the parameters you provide + expect(results2).toStrictEqual({ + [testChain1Tx1]: [testTime1, testChain1GasPrice1], + [testChain1Tx2]: [testTime2, testChain1GasPrice2], + }); + + // store and retrieve a third value for the a different chain/chainId + const testChain2 = 'avalanche'; + const testChain2Id = 10; + const testChain2Tx1 = + '0xadaef9c4540192e45c991ffe6f12cc86be9c07b80b43487fffffffffffffffff'; // noqa: mock + const testChain2GasPrice1 = 4000000; + const testTime3 = new Date(); + + // cleanup from previous test runs + await db.deleteTx(testChain2, testChain2Id, testChain2Tx1); + + // store data + await db.saveTx( + testChain2, + testChain2Id, + testChain2Tx1, + testTime3, + testChain2GasPrice1 + ); + + // retrieve and test + const results3 = await db.getTxs(testChain2, testChain2Id); + expect(results3).toStrictEqual({ + [testChain2Tx1]: [testTime3, testChain2GasPrice1], + }); + + // test db path is as exected place + expect(db.localStorage.dbPath).toStrictEqual(dbPath); + + // delete the recently added key/value pair + await db.deleteTx(testChain1, testChain1Id, testChain1Tx1); + await db.deleteTx(testChain1, testChain1Id, testChain1Tx2); + + const results4 = await db.getTxs(testChain1, testChain1Id); + + // the key has been deleted, expect an empty object + expect(results4).toStrictEqual({}); + }); +}); diff --git a/test/services/local-storage.test.ts b/test/services/local-storage.test.ts new file mode 100644 index 0000000000..2969627e2b --- /dev/null +++ b/test/services/local-storage.test.ts @@ -0,0 +1,92 @@ +import fs from 'fs'; +import fsp from 'fs/promises'; +import fse from 'fs-extra'; +import os from 'os'; +import path from 'path'; +import { LocalStorage } from '../../src/services/local-storage'; +import 'jest-extended'; +import { ReferenceCountingCloseable } from '../../src/services/refcounting-closeable'; + +let dbPath: string = ''; +const handle: string = ReferenceCountingCloseable.createHandle(); + +beforeAll(async () => { + dbPath = await fsp.mkdtemp( + path.join(os.tmpdir(), '/local-storage.test.level') + ); +}); + +afterAll(async () => { + await fse.emptyDir(dbPath); + fs.rmSync(dbPath, { force: true, recursive: true }); + + const db: LocalStorage = LocalStorage.getInstance(dbPath, handle); + await db.close(handle); +}); + +describe('Test local-storage', () => { + it('save, get and delete a key value pair in the local db', async () => { + const testKey = 'abc'; + const testValue = 123; + + const db: LocalStorage = LocalStorage.getInstance(dbPath, handle); + + // clean up any previous db runs + await db.del(testKey); + + // saves a key with a value + await db.save(testKey, testValue); + + const results: Record = await db.get((k: string, v: any) => { + return [k, parseInt(v)]; + }); + + // returns with an address as key, the chain/id is known by the parameters you provide + expect(results).toStrictEqual({ + [testKey]: testValue, + }); + + expect(db.dbPath).toStrictEqual(dbPath); + + // delete the recently added key/value pair + await db.del(testKey); + + const results2: Record = await db.get((k: string, v: any) => { + return [k, parseInt(v)]; + }); + + // the key has been deleted, expect an empty object + expect(results2).toStrictEqual({}); + }); + + it('Put and retrieve a objects', async () => { + const db: LocalStorage = LocalStorage.getInstance(dbPath, handle); + + const firstKey: string = 'camel'; + const firstValue = { kingdom: 'animalia', family: 'camelidae' }; + + const secondKey: string = 'elephant'; + const secondValue = { kingdom: 'animalia', family: 'elephantidae' }; + + const thirdKey: string = 'trex'; + const thirdValue = { kingdom: 'animalia', family: 'tyrannosauridae' }; + + const fourthKey: string = 'shiitake'; + const fourthValue = { kingdom: 'animalia', family: 'omphalotaceae' }; + + // saves a key with a value + await db.save(firstKey, firstValue); + await db.save(secondKey, secondValue); + await db.save(thirdKey, thirdValue); + await db.save(fourthKey, fourthValue); + + const results: Record = await db.get((k: string, v: any) => { + return [k, v]; + }); + + expect(results[firstKey]).toStrictEqual(firstValue); + expect(results[secondKey]).toStrictEqual(secondValue); + expect(results[thirdKey]).toStrictEqual(thirdValue); + expect(results[fourthKey]).toStrictEqual(fourthValue); + }); +}); diff --git a/test/services/logger.test.ts b/test/services/logger.test.ts new file mode 100644 index 0000000000..30228ebe01 --- /dev/null +++ b/test/services/logger.test.ts @@ -0,0 +1,32 @@ +import winston from 'winston'; +import { ConfigManagerV2 } from '../../src/services/config-manager-v2'; +import { + logger, + updateLoggerToStdout, + telemetry, +} from '../../src/services/logger'; + +describe('Test logger', () => { + it('updateLoggerToStdout works', (done) => { + ConfigManagerV2.getInstance().set('logging.logToStdOut', true); + updateLoggerToStdout(); + const ofTypeConsole = (element: any) => + element instanceof winston.transports.Console; + expect(logger.transports.some(ofTypeConsole)).toEqual(true); + ConfigManagerV2.getInstance().set('logging.logToStdOut', false); + updateLoggerToStdout(); + // Not sure why the below test doesn't on Github but passes on local + // expect(logger.transports.some(ofTypeConsole)).toEqual(false); + done(); + }); + + it('test telemetry transport can be added', () => { + const initTransports = logger.transports.length; + if (!ConfigManagerV2.getInstance().get('telemetry.enabled')) { + ConfigManagerV2.getInstance().set('telemetry.enabled', true); + telemetry(); + ConfigManagerV2.getInstance().set('telemetry.enabled', false); + expect(logger.transports.length).toEqual(initTransports + 1); + } + }); +}); diff --git a/test/services/patch.test.ts b/test/services/patch.test.ts new file mode 100644 index 0000000000..e40262da64 --- /dev/null +++ b/test/services/patch.test.ts @@ -0,0 +1,141 @@ +import { patch, unpatch } from './patch'; +import 'jest-extended'; + +class A { + private _x: number = 0; + + public get x() { + return this._x; + } + + private _y: boolean = false; + + public get y() { + return this._y; + } + + private _z: string = 'Guten Tag'; + + public get z() { + return this._z; + } +} + +class B { + private _alter: (x: string) => string = (x) => x.toLowerCase(); + + public get alter() { + return this._alter; + } +} + +class Singleton { + private static _instance: Singleton; + + private _x: number = -1; + + // eslint-disable-next-line @typescript-eslint/no-empty-function + private constructor() {} + + public static getInstance(): Singleton { + if (!Singleton._instance) { + Singleton._instance = new Singleton(); + } + return Singleton._instance; + } + + public get x() { + return this._x; + } +} + +describe('internal patch system', () => { + it('It can patch and unpatch private variables', () => { + const a = new A(); + // _x is private + patch(a, '_x', 1); + expect(a.x).toEqual(1); + + patch(a, 'x', () => 3); + expect(a.x).toEqual(3); + + unpatch(); + expect(a.x).toEqual(0); + }); + + it('It can patch a value multiple times and then retrieve the original value', () => { + const a = new A(); + patch(a, '_x', 1); + expect(a.x).toEqual(1); + + patch(a, '_x', 3); + expect(a.x).toEqual(3); + + patch(a, '_x', 10); + expect(a.x).toEqual(10); + + unpatch(); + expect(a.x).toEqual(0); + }); + + it('It can patch multiple values on an object and then retrieve all the original values', () => { + const a = new A(); + patch(a, '_x', 178); + patch(a, '_y', true); + patch(a, '_z', 'Guten Nacht'); + expect(a.x).toEqual(178); + expect(a.y).toEqual(true); + expect(a.z).toEqual('Guten Nacht'); + + patch(a, '_x', 999); + patch(a, '_z', 'Hummingbot'); + expect(a.x).toEqual(999); + expect(a.z).toEqual('Hummingbot'); + + unpatch(); + expect(a.x).toEqual(0); + expect(a.y).toEqual(false); + expect(a.z).toEqual('Guten Tag'); + }); + + it('It can patch and unpatch methods', () => { + const b = new B(); + // '_alter' is private + patch(b, '_alter', (x: string) => x.toUpperCase()); + expect(b.alter('HeLlO')).toEqual('HELLO'); + + // ignore param + patch(b, '_alter', () => 'Hummingbot'); + expect(b.alter('HeLlO')).toEqual('Hummingbot'); + + unpatch(); + expect(b.alter('HeLlO')).toEqual('hello'); + }); + + it('It can patch getter methods', () => { + const b = new B(); + + patch(b, 'alter', (_x: any) => (_y: any) => 'Hummingbot'); + expect(b.alter('HeLlO')).toEqual('Hummingbot'); + + unpatch(); + expect(b.alter('HeLlO')).toEqual('hello'); + }); + + it('It can patch and unpatch a singleton correctly', () => { + const a = Singleton.getInstance(); + const b = Singleton.getInstance(); + + patch(a, '_x', 1); + expect(a.x).toEqual(1); + expect(b.x).toEqual(1); + + patch(b, '_x', 1122); + expect(a.x).toEqual(1122); + expect(b.x).toEqual(1122); + + unpatch(); + expect(a.x).toEqual(-1); + expect(b.x).toEqual(-1); + }); +}); diff --git a/test/services/patch.ts b/test/services/patch.ts new file mode 100644 index 0000000000..c338779f2f --- /dev/null +++ b/test/services/patch.ts @@ -0,0 +1,80 @@ +let patchedObjects: Set = new Set(); + +export const classHasGetter = (obj: any, prop: string): boolean => { + const description = Object.getOwnPropertyDescriptor( + Object.getPrototypeOf(obj), + prop + ); + if (description) { + return !!description.get; + } + return false; +}; + +// override an existing property value, but make the old one recoverable. +export const patch = (target: any, propertyName: string, mock: any): void => { + // clean up a target if it has already been patched, this avoids issues in unpatch + if (patchedObjects.has(target)) patchedObjects.delete(target); + + // only store the previous property if it has not been mocked yet, this way we preserve + // the original non mocked value + if (!('__original__' + propertyName in target)) { + if (Object.getOwnPropertyDescriptor(target, propertyName)) { + // general case + target['__original__' + propertyName] = target[propertyName]; + } else { + // special case for getters and setters + target['__original__' + propertyName] = Object.getOwnPropertyDescriptor( + Object.getPrototypeOf(target), + propertyName + ); + } + } + + if (classHasGetter(target, propertyName)) { + // special case for getter without setter + const targetPrototype = Object.getPrototypeOf(target); + + Object.defineProperty(targetPrototype, propertyName, { + get: mock, + // this is a dummy setter, there needs to be a setter in order to change the getter + // the idea is that the mock overrides the getter and ignores the setter + set: (_value: any) => { + return; + }, + }); + + Object.setPrototypeOf(target, targetPrototype); + } else { + // general case + target[propertyName] = mock; + } + + patchedObjects.add(target); +}; + +// recover all old property values from before the patch. +export const unpatch = (): void => { + patchedObjects.forEach((target: any) => { + const keys = Object.keys(target); + keys.forEach((key: string) => { + if (key.startsWith('__original__')) { + const propertyName = key.slice(12); + + if (Object.getOwnPropertyDescriptor(target, propertyName)) { + // the property exists directly on the object + target[propertyName] = target[key]; + } else { + // the property is at a lower level in the object, it is likely a getter or setter + const targetPrototype = Object.getPrototypeOf(target); + + Object.defineProperty(targetPrototype, propertyName, target[key]); + Object.setPrototypeOf(target, targetPrototype); + } + + delete target[key]; + } + }); + }); + patchedObjects = new Set(); +}; diff --git a/test/services/refcounting-closeable.test.ts b/test/services/refcounting-closeable.test.ts new file mode 100644 index 0000000000..307e4ec83a --- /dev/null +++ b/test/services/refcounting-closeable.test.ts @@ -0,0 +1,180 @@ +import 'jest-extended'; +import { ReferenceCountingCloseable } from '../../src/services/refcounting-closeable'; + +class RefCountFixture extends ReferenceCountingCloseable { + private _finalized: boolean; + private readonly _members: { [key: string]: RefCountFixture }; + + constructor(retrievalKey: string) { + super(retrievalKey); + this._finalized = false; + this._members = {}; + } + + get finalized(): boolean { + return this._finalized; + } + + get members(): { [key: string]: RefCountFixture } { + return this._members; + } + + public async add(memberKey: string) { + const member: RefCountFixture = RefCountFixture.getInstance( + memberKey, + this.handle + ); + this._members[memberKey] = member; + } + + public async remove(memberKey: string) { + if (!(memberKey in this._members)) { + return; + } + + const member: RefCountFixture = this._members[memberKey]; + delete this._members[memberKey]; + await member.close(this.handle); + } + + public async close(ownersHandler: string): Promise { + await super.close(ownersHandler); + if (this.refCount < 1) { + for (const memberKey of Object.keys(this._members)) { + await this.remove(memberKey); + } + this._finalized = true; + } + } +} + +describe('Reference counting closeable tests', () => { + const rootHandle: string = ReferenceCountingCloseable.createHandle(); + + it('Finalize after being released by owner', async () => { + const fixture: RefCountFixture = RefCountFixture.getInstance( + 'instance1', + rootHandle + ); + + try { + expect(fixture.refCount).toEqual(1); + expect(fixture.finalized).toBeFalse(); + await fixture.close(rootHandle); + expect(fixture.refCount).toEqual(0); + expect(fixture.finalized).toBeTrue(); + } finally { + await fixture.close(rootHandle); + } + }); + + it('Do not finalize if more than zero owner left', async () => { + const owner1: RefCountFixture = RefCountFixture.getInstance( + 'instance1', + rootHandle + ); + const owner2: RefCountFixture = RefCountFixture.getInstance( + 'instance2', + rootHandle + ); + const sharedObject: RefCountFixture = RefCountFixture.getInstance( + 'shared', + rootHandle + ); + + try { + await owner1.add('shared'); + await owner2.add('shared'); + expect(sharedObject.refCount).toEqual(3); + await sharedObject.close(rootHandle); + expect(sharedObject.refCount).toEqual(2); + expect(sharedObject.finalized).toBeFalse(); + + await owner1.remove('shared'); + expect(sharedObject.refCount).toEqual(1); + expect(sharedObject.finalized).toBeFalse(); + + await owner2.remove('shared'); + expect(sharedObject.refCount).toEqual(0); + expect(sharedObject.finalized).toBeTrue(); + } finally { + await owner1.close(rootHandle); + await owner2.close(rootHandle); + await sharedObject.close(rootHandle); + } + }); + + it('Cascading finalization given an ownership graph', async () => { + const node1_1: RefCountFixture = RefCountFixture.getInstance( + 'node1_1', + rootHandle + ); + const node1_2: RefCountFixture = RefCountFixture.getInstance( + 'node1_2', + rootHandle + ); + const node1_3: RefCountFixture = RefCountFixture.getInstance( + 'node1_3', + rootHandle + ); + const node2_1: RefCountFixture = RefCountFixture.getInstance( + 'node2_1', + rootHandle + ); + const node3_1: RefCountFixture = RefCountFixture.getInstance( + 'node3_1', + rootHandle + ); + const node4_1: RefCountFixture = RefCountFixture.getInstance( + 'node4_1', + rootHandle + ); + const allNodes: RefCountFixture[] = [ + node1_1, + node1_2, + node1_3, + node2_1, + node3_1, + node4_1, + ]; + + try { + // Connect the nodes together as a dependency tree. + await node1_1.add('node2_1'); + await node1_2.add('node2_1'); + await node1_3.add('node2_1'); + await node2_1.add('node3_1'); + await node3_1.add('node4_1'); + + // Remove the non-top nodes from root ownership. + await node2_1.close(rootHandle); + await node3_1.close(rootHandle); + await node4_1.close(rootHandle); + + // Ensure all nodes are still not finalized. + expect(node1_1.refCount).toEqual(1); + expect(node1_2.refCount).toEqual(1); + expect(node1_3.refCount).toEqual(1); + expect(node2_1.refCount).toEqual(3); + expect(node3_1.refCount).toEqual(1); + expect(node4_1.refCount).toEqual(1); + for (const n of allNodes) { + expect(n.finalized).toBeFalse(); + } + + // Close the top nodes. + await node1_1.close(rootHandle); + await node1_2.close(rootHandle); + await node1_3.close(rootHandle); + + // All nodes should be finalized by now. + for (const n of allNodes) { + expect(n.finalized).toBeTrue(); + } + } finally { + for (const n of allNodes) { + await n.close(rootHandle); + } + } + }); +}); diff --git a/test/services/swagger-manager.test.ts b/test/services/swagger-manager.test.ts new file mode 100644 index 0000000000..ff66c86058 --- /dev/null +++ b/test/services/swagger-manager.test.ts @@ -0,0 +1,134 @@ +import { SwaggerManager } from '../../src/services/swagger-manager'; +import { patch, unpatch } from './patch'; +import fs from 'fs'; + +import 'jest-extended'; + +describe('validateMainFile', () => { + it('true with all expected keys', () => { + expect( + SwaggerManager.validateMainFile({ + swagger: '', + info: '', + host: '', + tags: '', + schemes: '', + externalDocs: '', + }) + ).toEqual(true); + }); + it('false with a key missing', () => { + expect( + SwaggerManager.validateMainFile({ + info: '', + host: '', + tags: '', + schemes: '', + externalDocs: '', + }) + ).toEqual(false); + }); +}); + +describe('validateRoutesFile', () => { + it('true with all expected keys', () => { + expect( + SwaggerManager.validateRoutesFile({ + paths: '', + }) + ).toEqual(true); + }); + it('false with a key missing', () => { + expect( + SwaggerManager.validateRoutesFile({ + info: '', + }) + ).toEqual(false); + }); +}); + +describe('validateDefinitionsFile', () => { + it('true with all expected keys', () => { + expect( + SwaggerManager.validateDefinitionsFile({ + definitions: '', + }) + ).toEqual(true); + }); + it('false with a key missing', () => { + expect( + SwaggerManager.validateDefinitionsFile({ + info: '', + }) + ).toEqual(false); + }); +}); + +describe('validate', () => { + afterEach(() => { + unpatch(); + }); + + it('return object if validation function returns true', () => { + patch(fs, 'readFileSync', () => 'definitions: abc'); + expect( + SwaggerManager.validate( + 'dummy-file-name', + SwaggerManager.validateDefinitionsFile + ) + ).toEqual({ definitions: 'abc' }); + }); + + it('throws an error if validation function returns false', () => { + patch(fs, 'readFileSync', () => 'definitions: abc'); + expect(() => + SwaggerManager.validate( + 'dummy-file-name', + SwaggerManager.validateMainFile + ) + ).toThrow(); + }); +}); + +describe('generateSwaggerJson', () => { + afterEach(() => { + unpatch(); + }); + + it('return object if validation function returns true', () => { + patch(fs, 'readFileSync', (fp: string) => { + if (fp === 'main') { + return "swagger: two\ninfo: 'nothing'\nhost: 'localhost'\ntags: []\nschemes: []\nexternalDocs: ''"; + } else if (fp === 'definitions') { + return 'definitions: []'; + } + return 'paths:\n /eth:\n get'; + }); + expect( + SwaggerManager.generateSwaggerJson('main', 'definitions', ['path']) + ).toEqual({ + swagger: 'two', + info: 'nothing', + host: 'localhost', + tags: [], + schemes: [], + externalDocs: '', + definitions: [], + paths: { '/eth': 'get' }, + }); + }); + + it('throw an error if something does not conform to the structure', () => { + patch(fs, 'readFileSync', (fp: string) => { + if (fp === 'main') { + return 'swagger: two\n'; + } else if (fp === 'definitions') { + return 'definitions: []'; + } + return 'paths:\n /eth:\n get'; + }); + expect(() => + SwaggerManager.generateSwaggerJson('main', 'definitions', ['path']) + ).toThrow(); + }); +}); diff --git a/test/services/validators.test.ts b/test/services/validators.test.ts new file mode 100644 index 0000000000..bfb027a595 --- /dev/null +++ b/test/services/validators.test.ts @@ -0,0 +1,199 @@ +import { + isNaturalNumberString, + isIntegerString, + isFloatString, + missingParameter, + validateTokenSymbols, + isBase58, + validateToken, + validateAmount, + validateTxHash, + invalidTokenSymbolsError, + invalidTokenError, + invalidAmountError, + invalidTxHashError, +} from '../../src/services/validators'; +import 'jest-extended'; + +export const tokenSymbols = ['DAI', 'WETH']; +export const txHash = + '0x6d068067a5e5a0f08c6395b31938893d1cdad81f54a54456221ecd8c1941294d'; // noqa: mock + +describe('isNaturalNumberString', () => { + it('pass against a well formed natural number in a string', () => { + expect(isNaturalNumberString('12345')).toEqual(true); + }); + + it('fail against a negative number in a string', () => { + expect(isNaturalNumberString('-12')).toEqual(false); + }); + + it('fail against a non number string', () => { + expect(isNaturalNumberString('Hello world')).toEqual(false); + }); +}); + +describe('isIntegerString', () => { + it('pass against a positive number in a string', () => { + expect(isIntegerString('12345')).toEqual(true); + }); + + it('pass against a negative number in a string', () => { + expect(isIntegerString('-12')).toEqual(true); + }); + + it('fail against a non number string', () => { + expect(isIntegerString('Hello world')).toEqual(false); + }); +}); + +describe('isFloatString', () => { + it('pass against a positive number in a string', () => { + expect(isFloatString('12345')).toEqual(true); + + expect(isFloatString('12.345')).toEqual(true); + + expect(isFloatString('0.45')).toEqual(true); + + expect(isFloatString('0')).toEqual(true); + + expect(isFloatString('0.00001')).toEqual(true); + }); + + it('pass against a negative number in a string', () => { + expect(isFloatString('-12')).toEqual(true); + + expect(isFloatString('-12.3123')).toEqual(true); + + expect(isFloatString('-0.123')).toEqual(true); + }); + + it('fail against a non number string', () => { + expect(isFloatString('Hello world')).toEqual(false); + }); +}); + +describe('validateTokenSymbols', () => { + it('valid when req.tokenSymbols is an array of strings', () => { + expect( + validateTokenSymbols({ + tokenSymbols, + }) + ).toEqual([]); + }); + + it('return error when req.tokenSymbols does not exist', () => { + expect( + validateTokenSymbols({ + hello: 'world', + }) + ).toEqual([missingParameter('tokenSymbols')]); + }); + + it('return error when req.tokenSymbols is invalid', () => { + expect( + validateTokenSymbols({ + tokenSymbols: tokenSymbols[0], + }) + ).toEqual([invalidTokenSymbolsError]); + }); +}); + +describe('isBase58', () => { + it('pass against a well formed Base58', () => { + expect(isBase58('HAE1oNnc3XBmPudphRcHhyCvGShtgDYtZVzx2MocKEr1')).toEqual( + true + ); + }); + + it('fail against a string that has non-Base58 characters', () => { + expect(isBase58('HAE1oNnc3XBmPudphRcHhyCvGShtgDYtZVzx2MocKErI')).toEqual( + false + ); + }); +}); + +describe('validateToken', () => { + it('valid when req.token is a string', () => { + expect( + validateToken({ + token: 'DAI', + }) + ).toEqual([]); + + expect( + validateToken({ + token: 'WETH', + }) + ).toEqual([]); + }); + + it('return error when req.token does not exist', () => { + expect( + validateToken({ + hello: 'world', + }) + ).toEqual([missingParameter('token')]); + }); + + it('return error when req.token is invalid', () => { + expect( + validateToken({ + token: 123, + }) + ).toEqual([invalidTokenError]); + }); +}); + +describe('validateAmount', () => { + it('valid when req.amount is a string of an integer', () => { + expect( + validateAmount({ + amount: '0', + }) + ).toEqual([]); + expect( + validateAmount({ + amount: '9999999999999999999999', + }) + ).toEqual([]); + }); + + it('valid when req.amount does not exist', () => { + expect( + validateAmount({ + hello: 'world', + }) + ).toEqual([]); + }); + + it('return error when req.amount is invalid', () => { + expect( + validateAmount({ + amount: 'WETH', + }) + ).toEqual([invalidAmountError]); + }); +}); + +describe('validateTxHash', () => { + it('valid when req.txHash is a string', () => { + expect(validateTxHash({ txHash })).toEqual([]); + }); + + it('invalid when req.txHash does not exist', () => { + expect( + validateTxHash({ + hello: 'world', + }) + ).toEqual([missingParameter('txHash')]); + }); + + it('return error when req.txHash is invalid', () => { + expect( + validateTxHash({ + txHash: 123, + }) + ).toEqual([invalidTxHashError]); + }); +}); diff --git a/test/services/wallet/wallet.controllers.test.ts b/test/services/wallet/wallet.controllers.test.ts new file mode 100644 index 0000000000..63faf11fb4 --- /dev/null +++ b/test/services/wallet/wallet.controllers.test.ts @@ -0,0 +1,385 @@ +import { patch, unpatch } from '../patch'; +import { Ethereum } from '../../../src/chains/ethereum/ethereum'; +import { Avalanche } from '../../../src/chains/avalanche/avalanche'; +import { Harmony } from '../../../src/chains/harmony/harmony'; + +import { + addWallet, + getWallets, + removeWallet, +} from '../../../src/services/wallet/wallet.controllers'; +import { + ACCOUNT_NOT_SPECIFIED_CODE, + ACCOUNT_NOT_SPECIFIED_ERROR_MESSAGE, + HttpException, + UNKNOWN_CHAIN_ERROR_CODE, + UNKNOWN_KNOWN_CHAIN_ERROR_MESSAGE, +} from '../../../src/services/error-handler'; + +import { ConfigManagerCertPassphrase } from '../../../src/services/config-manager-cert-passphrase'; +import { BinanceSmartChain } from '../../../src/chains/binance-smart-chain/binance-smart-chain'; +import { Cronos } from '../../../src/chains/cronos/cronos'; +import { Near } from '../../../src/chains/near/near'; +import { Cosmos } from '../../../src/chains/cosmos/cosmos'; + +let avalanche: Avalanche; +let cronos: Cronos; +let eth: Ethereum; +let harmony: Harmony; +let bsc: BinanceSmartChain; +let near: Near; +let cosmos: Cosmos; + +beforeAll(async () => { + patch(ConfigManagerCertPassphrase, 'readPassphrase', () => 'a'); + + avalanche = Avalanche.getInstance('fuji'); + eth = Ethereum.getInstance('kovan'); + harmony = Harmony.getInstance('testnet'); + bsc = BinanceSmartChain.getInstance('testnet'); + cronos = Cronos.getInstance('testnet'); + near = Near.getInstance('testnet'); + cosmos = Cosmos.getInstance('testnet'); +}); + +beforeEach(() => + patch(ConfigManagerCertPassphrase, 'readPassphrase', () => 'a') +); + +afterAll(async () => { + await avalanche.close(); + await eth.close(); + await harmony.close(); + await bsc.close(); + await cronos.close(); + await near.close(); + await cosmos.close(); +}); + +afterEach(() => unpatch()); + +const oneAddress = '0x7E5F4552091A69125d5DfCb7b8C2659029395Bdf'; + +const onePrivateKey = + '0000000000000000000000000000000000000000000000000000000000000001'; // noqa: mock + +// encoding of onePrivateKey with the password 'a' +const encodedPrivateKey = { + address: '7e5f4552091a69125d5dfcb7b8c2659029395bdf', + id: '7bb58a6c-06d3-4ede-af06-5f4a5cb87f0b', + version: 3, + Crypto: { + cipher: 'aes-128-ctr', + cipherparams: { iv: '60276d7bf5fa57ce0ae8e65fc578c3ac' }, + ciphertext: + 'be98ee3d44744e1417531b15a7b1e47b945cfc100d3ff2680f757a824840fb67', // noqa: mock + kdf: 'scrypt', + kdfparams: { + salt: '90b7e0017b4f9df67aa5f2de73495c14de086b8abb5b68ce3329596eb14f991c', // noqa: mock + n: 131072, + dklen: 32, + p: 1, + r: 8, + }, + mac: '0cea1492f67ed43234b69100d873e17b4a289dd508cf5e866a3b18599ff0a5fc', // noqa: mock + }, +}; + +const cosmosAddress = 'cosmos18nadm9qd4pz8pgffhvehc0dthuhpgevp4l3nar'; +const cosmosPrivateKey = + '218507defde7d91a9eba858437115b8aea68e3cbc7a4b68b3edac53d5ec89516'; // noqa: mock +const encodedCosmosPrivateKey = { + keyAlgorithm: { + name: 'PBKDF2', + salt: 'PkkhCEpSae+dYup0Q2ZKpA==', + iterations: 500000, + hash: 'SHA-256', + }, + cipherAlgorithm: { name: 'AES-GCM', iv: '1mBtuYgYHJ/xkkA7xdU1QQ==' }, + ciphertext: + 'F7M1ic/dSNHbD1MrU3gQlv9RCiHaSeyk1Rb63NkKSuOuIE1WeCvVLGha5LujsAJAkQ++Mts+h2Ub2OGCdoFkHRO1BMYF0djNDFmwJlKzd68=', +}; + +describe('addWallet and getWallets', () => { + it('add an Ethereum wallet', async () => { + patch(eth, 'getWallet', () => { + return { + address: oneAddress, + }; + }); + + patch(eth, 'encrypt', () => { + return JSON.stringify(encodedPrivateKey); + }); + + await addWallet({ + privateKey: onePrivateKey, + chain: 'ethereum', + network: 'kovan', + }); + + const wallets = await getWallets(); + + const addresses: string[][] = wallets + .filter((wallet) => wallet.chain === 'ethereum') + .map((wallet) => wallet.walletAddresses); + + expect(addresses[0]).toContain(oneAddress); + }); + + it('add an Avalanche wallet', async () => { + patch(avalanche, 'getWallet', () => { + return { + address: oneAddress, + }; + }); + + patch(avalanche, 'encrypt', () => { + return JSON.stringify(encodedPrivateKey); + }); + + await addWallet({ + privateKey: onePrivateKey, + chain: 'avalanche', + network: 'fuji', + }); + + const wallets = await getWallets(); + + const addresses: string[][] = wallets + .filter((wallet) => wallet.chain === 'avalanche') + .map((wallet) => wallet.walletAddresses); + + expect(addresses[0]).toContain(oneAddress); + }); + + it('add an Harmony wallet', async () => { + patch(harmony, 'getWallet', () => { + return { + address: oneAddress, + }; + }); + + patch(harmony, 'encrypt', () => { + return JSON.stringify(encodedPrivateKey); + }); + + await addWallet({ + privateKey: onePrivateKey, + chain: 'harmony', + network: 'testnet', + }); + + const wallets = await getWallets(); + + const addresses: string[][] = wallets + .filter((wallet) => wallet.chain === 'harmony') + .map((wallet) => wallet.walletAddresses); + + expect(addresses[0]).toContain(oneAddress); + }); + + it('add a Binance Smart Chain wallet', async () => { + patch(bsc, 'getWallet', () => { + return { + address: oneAddress, + }; + }); + + patch(bsc, 'encrypt', () => { + return JSON.stringify(encodedPrivateKey); + }); + + await addWallet({ + privateKey: onePrivateKey, + chain: 'binance-smart-chain', + network: 'testnet', + }); + + const wallets = await getWallets(); + + const addresses: string[][] = wallets + .filter((wallet) => wallet.chain === 'binance-smart-chain') + .map((wallet) => wallet.walletAddresses); + + expect(addresses[0]).toContain(oneAddress); + }); + + it('add a Cronos wallet', async () => { + patch(cronos, 'getWallet', () => { + return { + address: oneAddress, + }; + }); + + patch(cronos, 'encrypt', () => { + return JSON.stringify(encodedPrivateKey); + }); + + await addWallet({ + privateKey: onePrivateKey, + chain: 'cronos', + network: 'testnet', + }); + + const wallets = await getWallets(); + + const addresses: string[][] = wallets + .filter((wallet) => wallet.chain === 'cronos') + .map((wallet) => wallet.walletAddresses); + + expect(addresses[0]).toContain(oneAddress); + }); + + it('add a Cosmos wallet', async () => { + patch(cosmos, 'getWallet', () => { + return { + address: cosmosAddress, + prefix: 'cosmos', + }; + }); + + patch(cosmos, 'encrypt', () => { + return JSON.stringify(encodedCosmosPrivateKey); + }); + + await addWallet({ + privateKey: cosmosPrivateKey, + chain: 'cosmos', + network: 'testnet', + }); + + const wallets = await getWallets(); + + const addresses: string[][] = wallets + .filter((wallet) => wallet.chain === 'cosmos') + .map((wallet) => wallet.walletAddresses); + + expect(addresses[0]).toContain(cosmosAddress); + }); + + it('fail to add a wallet to unknown chain', async () => { + await expect( + addWallet({ + privateKey: onePrivateKey, + chain: 'shibainu', + network: 'doge', + }) + ).rejects.toThrow( + new HttpException( + 500, + UNKNOWN_KNOWN_CHAIN_ERROR_MESSAGE('shibainu'), + UNKNOWN_CHAIN_ERROR_CODE + ) + ); + }); + + it('fail to add a wallet if account is not specified when adding near wallet', async () => { + await expect( + addWallet({ + privateKey: onePrivateKey, + chain: 'near', + network: 'testnet', + }) + ).rejects.toThrow( + new HttpException( + 500, + ACCOUNT_NOT_SPECIFIED_ERROR_MESSAGE(), + ACCOUNT_NOT_SPECIFIED_CODE + ) + ); + }); +}); + +describe('addWallet and removeWallets', () => { + it('remove an Ethereum wallet', async () => { + patch(eth, 'getWallet', () => { + return { + address: oneAddress, + }; + }); + + patch(eth, 'encrypt', () => { + return JSON.stringify(encodedPrivateKey); + }); + + patch(eth, 'getWalletFromPrivateKey', () => { + return { + address: oneAddress, + }; + }); + + await addWallet({ + privateKey: onePrivateKey, + chain: 'ethereum', + network: 'kovan', + }); + + await removeWallet({ chain: 'ethereum', address: oneAddress }); + + const wallets = await getWallets(); + + const addresses: string[][] = wallets + .filter((wallet) => wallet.chain === 'ethereum') + .map((wallet) => wallet.walletAddresses); + + expect(addresses[0]).not.toContain(oneAddress); + }); + + it('remove an Harmony wallet', async () => { + patch(harmony, 'getWallet', () => { + return { + address: oneAddress, + }; + }); + + patch(harmony, 'encrypt', () => { + return JSON.stringify(encodedPrivateKey); + }); + + await addWallet({ + privateKey: onePrivateKey, + chain: 'harmony', + network: 'testnet', + }); + + await removeWallet({ chain: 'harmony', address: oneAddress }); + + const wallets = await getWallets(); + + const addresses: string[][] = wallets + .filter((wallet) => wallet.chain === 'harmony') + .map((wallet) => wallet.walletAddresses); + + expect(addresses[0]).not.toContain(oneAddress); + }); + + it('remove a Cosmos wallet', async () => { + patch(cosmos, 'getWallet', () => { + return { + address: cosmosAddress, + prefix: 'cosmos', + }; + }); + + patch(cosmos, 'encrypt', () => { + return JSON.stringify(encodedCosmosPrivateKey); + }); + + await addWallet({ + privateKey: cosmosPrivateKey, + chain: 'cosmos', + network: 'testnet', + }); + + await removeWallet({ chain: 'cosmos', address: cosmosAddress }); + + const wallets = await getWallets(); + + const addresses: string[][] = wallets + .filter((wallet) => wallet.chain === 'cosmos') + .map((wallet) => wallet.walletAddresses); + + expect(addresses[0]).not.toContain(cosmosAddress); + }); +}); diff --git a/test/services/wallet/wallet.routes.test.ts b/test/services/wallet/wallet.routes.test.ts new file mode 100644 index 0000000000..e7256881d3 --- /dev/null +++ b/test/services/wallet/wallet.routes.test.ts @@ -0,0 +1,308 @@ +import request from 'supertest'; +import { gatewayApp } from '../../../src/app'; +import { patch, unpatch } from '../patch'; +import { Ethereum } from '../../../src/chains/ethereum/ethereum'; +import { Avalanche } from '../../../src/chains/avalanche/avalanche'; +import { Harmony } from '../../../src/chains/harmony/harmony'; +import { ConfigManagerCertPassphrase } from '../../../src/services/config-manager-cert-passphrase'; +import { GetWalletResponse } from '../../../src/services/wallet/wallet.requests'; +let avalanche: Avalanche; +let eth: Ethereum; +let harmony: Harmony; + +beforeAll(async () => { + patch(ConfigManagerCertPassphrase, 'readPassphrase', () => 'a'); + + avalanche = Avalanche.getInstance('fuji'); + eth = Ethereum.getInstance('kovan'); + harmony = Harmony.getInstance('testnet'); +}); + +beforeEach(() => + patch(ConfigManagerCertPassphrase, 'readPassphrase', () => 'a') +); + +afterAll(async () => { + await avalanche.close(); + await eth.close(); + await harmony.close(); +}); + +afterEach(() => unpatch()); + +const twoAddress = '0x2b5ad5c4795c026514f8317c7a215e218dccd6cf'; + +const twoPrivateKey = + '0000000000000000000000000000000000000000000000000000000000000002'; // noqa: mock + +// encoding of twoPrivateKey with the password 'a' +const encodedPrivateKey = { + address: '2b5ad5c4795c026514f8317c7a215e218dccd6cf', + id: '116e3405-ea6c-40ba-93c0-6a835ad2ea99', + version: 3, + Crypto: { + cipher: 'aes-128-ctr', + cipherparams: { iv: 'dccf7a5f7d66bc6a61cf4fda422dcd55' }, + ciphertext: + 'ce561ad92c6a507a9399f51d64951b763f01b4956f15fd298ceb7a1174d0394a', // noqa: mock + kdf: 'scrypt', + kdfparams: { + salt: 'a88d99c6d01150af02861ebb1ace3b633a33b2a20561fe188a0c260a84d1ba99', // noqa: mock + n: 131072, + dklen: 32, + p: 1, + r: 8, + }, + mac: '684b0111ed08611ad993c76b4524d5dcda18b26cb930251983c36f40160eba8f', // noqa: mock + }, +}; + +describe('POST /wallet/add', () => { + it('return 200 for well formed ethereum request', async () => { + patch(eth, 'getWalletFromPrivateKey', () => { + return { + address: twoAddress, + }; + }); + + patch(eth, 'encrypt', () => { + return JSON.stringify(encodedPrivateKey); + }); + + await request(gatewayApp) + .post(`/wallet/add`) + .send({ + privateKey: twoPrivateKey, + chain: 'ethereum', + network: 'kovan', + }) + .expect('Content-Type', /json/) + .expect(200); + }); + + it('return 200 for well formed avalanche request', async () => { + patch(avalanche, 'getWalletFromPrivateKey', () => { + return { + address: twoAddress, + }; + }); + + patch(avalanche, 'encrypt', () => { + return JSON.stringify(encodedPrivateKey); + }); + + await request(gatewayApp) + .post(`/wallet/add`) + .send({ + privateKey: twoPrivateKey, + chain: 'avalanche', + network: 'fuji', + }) + + .expect('Content-Type', /json/) + .expect(200); + }); + + it('return 200 for well formed harmony request', async () => { + patch(harmony, 'getWalletFromPrivateKey', () => { + return { + address: twoAddress, + }; + }); + + patch(harmony, 'encrypt', () => { + return JSON.stringify(encodedPrivateKey); + }); + + await request(gatewayApp) + .post(`/wallet/add`) + .send({ + privateKey: twoPrivateKey, + chain: 'harmony', + network: 'testnet', + }) + + .expect('Content-Type', /json/) + .expect(200); + }); + + it('return 404 for ill-formed avalanche request', async () => { + patch(avalanche, 'getWalletFromPrivateKey', () => { + return { + address: twoAddress, + }; + }); + + patch(avalanche, 'encrypt', () => { + return JSON.stringify(encodedPrivateKey); + }); + + await request(gatewayApp) + .post(`/wallet/add`) + .send({}) + .expect('Content-Type', /json/) + .expect(404); + }); + + it('return 404 for ill-formed harmony request', async () => { + patch(harmony, 'getWalletFromPrivateKey', () => { + return { + address: twoAddress, + }; + }); + + patch(harmony, 'encrypt', () => { + return JSON.stringify(encodedPrivateKey); + }); + + await request(gatewayApp) + .post(`/wallet/add`) + .send({}) + .expect('Content-Type', /json/) + .expect(404); + }); +}); + +describe('DELETE /wallet/remove', () => { + it('return 200 for well formed ethereum request', async () => { + patch(eth, 'getWalletFromPrivateKey', () => { + return { + address: twoAddress, + }; + }); + + patch(eth, 'encrypt', () => { + return JSON.stringify(encodedPrivateKey); + }); + + await request(gatewayApp) + .post(`/wallet/add`) + .send({ + privateKey: twoPrivateKey, + chain: 'ethereum', + network: 'kovan', + }) + + .expect('Content-Type', /json/) + .expect(200); + + await request(gatewayApp) + .delete(`/wallet/remove`) + .send({ + address: twoAddress, + chain: 'ethereum', + }) + + .expect('Content-Type', /json/) + .expect(200); + }); + + it('return 200 for well formed harmony request', async () => { + patch(harmony, 'getWalletFromPrivateKey', () => { + return { + address: twoAddress, + }; + }); + + patch(harmony, 'encrypt', () => { + return JSON.stringify(encodedPrivateKey); + }); + + await request(gatewayApp) + .post(`/wallet/add`) + .send({ + privateKey: twoPrivateKey, + chain: 'harmony', + network: 'testnet', + }) + + .expect('Content-Type', /json/) + .expect(200); + + await request(gatewayApp) + .delete(`/wallet/remove`) + .send({ + address: twoAddress, + chain: 'harmony', + }) + + .expect('Content-Type', /json/) + .expect(200); + }); + + it('return 404 for ill-formed request', async () => { + await request(gatewayApp).delete(`/wallet/delete`).send({}).expect(404); + }); +}); + +describe('GET /wallet', () => { + it('return 200 for well formed ethereum request', async () => { + patch(eth, 'getWalletFromPrivateKey', () => { + return { + address: twoAddress, + }; + }); + + patch(eth, 'encrypt', () => { + return JSON.stringify(encodedPrivateKey); + }); + + await request(gatewayApp) + .post(`/wallet/add`) + .send({ + privateKey: twoPrivateKey, + chain: 'ethereum', + network: 'kovan', + }) + .expect('Content-Type', /json/) + .expect(200); + + await request(gatewayApp) + .get(`/wallet`) + .expect('Content-Type', /json/) + .expect(200) + .expect((res) => { + const wallets: GetWalletResponse[] = res.body; + const addresses: string[][] = wallets + .filter((wallet) => wallet.chain === 'ethereum') + .map((wallet) => wallet.walletAddresses); + + expect(addresses[0]).toContain(twoAddress); + }); + }); + + it('return 200 for well formed harmony request', async () => { + patch(harmony, 'getWalletFromPrivateKey', () => { + return { + address: twoAddress, + }; + }); + + patch(harmony, 'encrypt', () => { + return JSON.stringify(encodedPrivateKey); + }); + + await request(gatewayApp) + .post(`/wallet/add`) + .send({ + privateKey: twoPrivateKey, + chain: 'harmony', + network: 'testnet', + }) + .expect('Content-Type', /json/) + .expect(200); + + await request(gatewayApp) + .get(`/wallet`) + .expect('Content-Type', /json/) + .expect(200) + .expect((res) => { + const wallets: GetWalletResponse[] = res.body; + const addresses: string[][] = wallets + .filter((wallet) => wallet.chain === 'harmony') + .map((wallet) => wallet.walletAddresses); + + expect(addresses[0]).toContain(twoAddress); + }); + }); +}); diff --git a/test/services/wallet/wallet.validators.test.ts b/test/services/wallet/wallet.validators.test.ts new file mode 100644 index 0000000000..f9ef4169d6 --- /dev/null +++ b/test/services/wallet/wallet.validators.test.ts @@ -0,0 +1,299 @@ +import { + invalidEthPrivateKeyError, + isEthPrivateKey, + validatePrivateKey, + invalidChainError, + invalidAddressError, + validateChain, + validateAddress, + isNearPrivateKey, + isCosmosPrivateKey, + invalidCosmosPrivateKeyError, +} from '../../../src/services/wallet/wallet.validators'; + +import { missingParameter } from '../../../src/services/validators'; + +import 'jest-extended'; + +describe('isEthPrivateKey', () => { + it('pass against a well formed private key', () => { + expect( + isEthPrivateKey( + 'da857cbda0ba96757fed842617a40693d06d00001e55aa972955039ae747bac4' // noqa: mock + ) + ).toEqual(true); + }); + + it('fail against a string that is too short', () => { + expect(isEthPrivateKey('da857cbda0ba96757fed842617a40693d0')).toEqual( + false + ); + }); + + it('fail against a string that has non-hexadecimal characters', () => { + expect( + isEthPrivateKey( + 'da857cbda0ba96757fed842617a40693d06d00001e55aa972955039ae747qwer' + ) + ).toEqual(false); + }); +}); + +describe('isCosmosPrivateKey', () => { + it('pass against a well formed private key', () => { + expect( + isCosmosPrivateKey( + '218507defde7d91a9eba858437115b8aea68e3cbc7a4b68b3edac53d5ec89515' // noqa: mock + ) + ).toEqual(true); + }); + + it('fail against a string that is invalid', () => { + expect( + isCosmosPrivateKey( + '218507defde7d91a9eba858437115b8aea68e3cbc7a4b68b3edac53d5ec8951' // noqa: mock + ) + ).toEqual(false); + }); +}); + +describe('isNearPrivateKey', () => { + it('pass against a well formed private key', () => { + expect( + isNearPrivateKey( + 'ed25519:5r1MuqBa3L9gpXHqULS3u2B142c5jA8szrEiL8cprvhjJDe6S2xz9Q4uppgaLegmuPpq4ftBpcMw7NNoJHJefiTt' + ) + ).toEqual(true); + }); + + it('fail against a string that is invalid', () => { + expect(isEthPrivateKey('ed25519')).toEqual(false); + }); +}); + +describe('validatePrivateKey', () => { + it('valid when req.privateKey is an ethereum key', () => { + expect( + validatePrivateKey({ + chain: 'ethereum', + privateKey: + 'da857cbda0ba96757fed842617a40693d06d00001e55aa972955039ae747bac4', // noqa: mock + }) + ).toEqual([]); + }); + + it('valid when req.privateKey is a near key', () => { + expect( + validatePrivateKey({ + chain: 'near', + privateKey: + 'ed25519:5r1MuqBa3L9gpXHqULS3u2B142c5jA8szrEiL8cprvhjJDe6S2xz9Q4uppgaLegmuPpq4ftBpcMw7NNoJHJefiTt', + }) + ).toEqual([]); + }); + + it('valid when req.privateKey is a harmony key', () => { + expect( + validatePrivateKey({ + chain: 'harmony', + privateKey: + 'da857cbda0ba96757fed842617a40693d06d00001e55aa972955039ae747bac4', // noqa: mock + }) + ).toEqual([]); + }); + + it('valid when req.privateKey is a cronos key', () => { + expect( + validatePrivateKey({ + chain: 'cronos', + privateKey: + 'da857cbda0ba96757fed842617a40693d06d00001e55aa972955039ae747bac4', // noqa: mock + }) + ).toEqual([]); + }); + + it('valid when req.privateKey is a polygon key', () => { + expect( + validatePrivateKey({ + chain: 'polygon', + privateKey: + 'da857cbda0ba96757fed842617a40693d06d00001e55aa972955039ae747bac4', // noqa: mock + }) + ).toEqual([]); + }); + + it('valid when req.privateKey is a avalanche key', () => { + expect( + validatePrivateKey({ + chain: 'avalanche', + privateKey: + 'da857cbda0ba96757fed842617a40693d06d00001e55aa972955039ae747bac4', // noqa: mock + }) + ).toEqual([]); + }); + + it('valid when req.privateKey is an binance-smart-chain key', () => { + expect( + validatePrivateKey({ + chain: 'binance-smart-chain', + privateKey: + 'da857cbda0ba96757fed842617a40693d06d00001e55aa972955039ae747bac4', // noqa: mock + }) + ).toEqual([]); + }); + + it('valid when req.privateKey is a cosmos key', () => { + expect( + validatePrivateKey({ + chain: 'cosmos', + privateKey: + '218507defde7d91a9eba858437115b8aea68e3cbc7a4b68b3edac53d5ec89516', // noqa: mock + }) + ).toEqual([]); + }); + + it('return error when req.privateKey does not exist', () => { + expect( + validatePrivateKey({ + chain: 'ethereum', + hello: 'world', + }) + ).toEqual([missingParameter('privateKey')]); + }); + + it('return error when req.chain does not exist', () => { + expect( + validatePrivateKey({ + privateKey: + '5r1MuqBa3L9gpXHqULS3u2B142c5jA8szrEiL8cprvhjJDe6S2xz9Q4uppgaLegmuPpq4ftBpcMw7NNoJHJefiTt', + }) + ).toEqual([missingParameter('chain')]); + }); + + it('return error when req.privateKey is invalid ethereum key', () => { + expect( + validatePrivateKey({ + chain: 'ethereum', + privateKey: 'world', + }) + ).toEqual([invalidEthPrivateKeyError]); + }); + + it('return error when req.privateKey is invalid binance-smart-chain key', () => { + expect( + validatePrivateKey({ + chain: 'binance-smart-chain', + privateKey: 'someErroneousPrivateKey', + }) + ).toEqual([invalidEthPrivateKeyError]); + }); + + it('return error when req.privateKey is invalid cosmos key', () => { + expect( + validatePrivateKey({ + chain: 'cosmos', + privateKey: 'someErroneousPrivateKey', + }) + ).toEqual([invalidCosmosPrivateKeyError]); + }); +}); + +describe('validateChain', () => { + it('valid when chain is ethereum', () => { + expect( + validateChain({ + chain: 'ethereum', + }) + ).toEqual([]); + }); + + it('valid when chain is avalanche', () => { + expect( + validateChain({ + chain: 'avalanche', + }) + ).toEqual([]); + }); + + it('valid when chain is harmony', () => { + expect( + validateChain({ + chain: 'harmony', + }) + ).toEqual([]); + }); + + it('valid when chain is binance-smart-chain', () => { + expect( + validateChain({ + chain: 'binance-smart-chain', + }) + ).toEqual([]); + }); + + it('valid when chain is cronos', () => { + expect( + validateChain({ + chain: 'cronos', + }) + ).toEqual([]); + }); + + it('valid when chain is binance-smart-chain', () => { + expect( + validateChain({ + chain: 'binance-smart-chain', + }) + ).toEqual([]); + }); + + it('valid when chain is cosmos', () => { + expect( + validateChain({ + chain: 'cosmos', + }) + ).toEqual([]); + }); + + it('return error when req.chain does not exist', () => { + expect( + validateChain({ + hello: 'world', + }) + ).toEqual([missingParameter('chain')]); + }); + + it('return error when req.chain is invalid', () => { + expect( + validateChain({ + chain: 'shibainu', + }) + ).toEqual([invalidChainError]); + }); +}); + +describe('validateAddress', () => { + it('valid when address is a string', () => { + expect( + validateAddress({ + address: '0x000000000000000000000000000000000000000', + }) + ).toEqual([]); + }); + + it('return error when req.address does not exist', () => { + expect( + validateAddress({ + hello: 'world', + }) + ).toEqual([missingParameter('address')]); + }); + + it('return error when req.address is not a string', () => { + expect( + validateAddress({ + address: 1, + }) + ).toEqual([invalidAddressError]); + }); +}); diff --git a/test/setup.ts b/test/setup.ts new file mode 100644 index 0000000000..1404f2cffd --- /dev/null +++ b/test/setup.ts @@ -0,0 +1,7 @@ +import { DBPathOverride } from './config.util'; + +module.exports = (_globalConfig: any, _projectConfig: any) => { + // override db paths + DBPathOverride.init(); + DBPathOverride.updateConfigs(); +}; diff --git a/test/setupTests.js b/test/setupTests.js new file mode 100644 index 0000000000..c3752dce0d --- /dev/null +++ b/test/setupTests.js @@ -0,0 +1,2 @@ +/* eslint-disable no-undef */ +jest.setTimeout(10000); diff --git a/test/teardown.ts b/test/teardown.ts new file mode 100644 index 0000000000..e789d4b55d --- /dev/null +++ b/test/teardown.ts @@ -0,0 +1,6 @@ +import { DBPathOverride } from './config.util'; + +export default (_globalConfig: any, _projectConfig: any) => { + // revert change to db paths + DBPathOverride.resetConfigs(); +}; diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000000..90aed87e2a --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,36 @@ +{ + "compilerOptions": { + "strict": true, + "types": ["@types/jest", "jest", "node"], + "target": "es6", + "module": "commonjs", + "allowJs": true, + "lib": ["es6", "es2020", "esnext.asynciterable", "dom"], + "sourceMap": true, + "outDir": "./dist", + "moduleResolution": "node", + "removeComments": true, + "noImplicitAny": true, + "strictNullChecks": true, + "strictFunctionTypes": true, + "noImplicitThis": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true, + "allowSyntheticDefaultImports": true, + "esModuleInterop": true, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "resolveJsonModule": true, + "typeRoots": ["node_modules/@types", "src/@types"], + "downlevelIteration": true + }, + "exclude": ["node_modules"], + "include": [ + "src/**/*.ts", + "src/**/*.js", + "test/**/*.ts", + "integration-test/**/*.ts" + ] +} diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000000..ff990075e1 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,15149 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@ampproject/remapping@^2.1.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" + integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== + dependencies: + "@jridgewell/gen-mapping" "^0.1.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@apollo/protobufjs@1.2.6": + version "1.2.6" + resolved "https://registry.yarnpkg.com/@apollo/protobufjs/-/protobufjs-1.2.6.tgz#d601e65211e06ae1432bf5993a1a0105f2862f27" + integrity sha512-Wqo1oSHNUj/jxmsVp4iR3I480p6qdqHikn38lKrFhfzcDJ7lwd7Ck7cHRl4JE81tWNArl77xhnG/OkZhxKBYOw== + dependencies: + "@protobufjs/aspromise" "^1.1.2" + "@protobufjs/base64" "^1.1.2" + "@protobufjs/codegen" "^2.0.4" + "@protobufjs/eventemitter" "^1.1.0" + "@protobufjs/fetch" "^1.1.0" + "@protobufjs/float" "^1.0.2" + "@protobufjs/inquire" "^1.1.0" + "@protobufjs/path" "^1.1.2" + "@protobufjs/pool" "^1.1.0" + "@protobufjs/utf8" "^1.1.0" + "@types/long" "^4.0.0" + "@types/node" "^10.1.0" + long "^4.0.0" + +"@apollo/utils.dropunuseddefinitions@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@apollo/utils.dropunuseddefinitions/-/utils.dropunuseddefinitions-1.1.0.tgz#02b04006442eaf037f4c4624146b12775d70d929" + integrity sha512-jU1XjMr6ec9pPoL+BFWzEPW7VHHulVdGKMkPAMiCigpVIT11VmCbnij0bWob8uS3ODJ65tZLYKAh/55vLw2rbg== + +"@apollo/utils.keyvaluecache@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@apollo/utils.keyvaluecache/-/utils.keyvaluecache-1.0.1.tgz#46f310f859067efe9fa126156c6954f8381080d2" + integrity sha512-nLgYLomqjVimEzQ4cdvVQkcryi970NDvcRVPfd0OPeXhBfda38WjBq+WhQFk+czSHrmrSp34YHBxpat0EtiowA== + dependencies: + "@apollo/utils.logger" "^1.0.0" + lru-cache "^7.10.1" + +"@apollo/utils.logger@^1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@apollo/utils.logger/-/utils.logger-1.0.1.tgz#aea0d1bb7ceb237f506c6bbf38f10a555b99a695" + integrity sha512-XdlzoY7fYNK4OIcvMD2G94RoFZbzTQaNP0jozmqqMudmaGo2I/2Jx71xlDJ801mWA/mbYRihyaw6KJii7k5RVA== + +"@apollo/utils.printwithreducedwhitespace@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@apollo/utils.printwithreducedwhitespace/-/utils.printwithreducedwhitespace-1.1.0.tgz#c466299a4766eef8577a2a64c8f27712e8bd7e30" + integrity sha512-GfFSkAv3n1toDZ4V6u2d7L4xMwLA+lv+6hqXicMN9KELSJ9yy9RzuEXaX73c/Ry+GzRsBy/fdSUGayGqdHfT2Q== + +"@apollo/utils.removealiases@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@apollo/utils.removealiases/-/utils.removealiases-1.0.0.tgz#75f6d83098af1fcae2d3beb4f515ad4a8452a8c1" + integrity sha512-6cM8sEOJW2LaGjL/0vHV0GtRaSekrPQR4DiywaApQlL9EdROASZU5PsQibe2MWeZCOhNrPRuHh4wDMwPsWTn8A== + +"@apollo/utils.sortast@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@apollo/utils.sortast/-/utils.sortast-1.1.0.tgz#93218c7008daf3e2a0725196085a33f5aab5ad07" + integrity sha512-VPlTsmUnOwzPK5yGZENN069y6uUHgeiSlpEhRnLFYwYNoJHsuJq2vXVwIaSmts015WTPa2fpz1inkLYByeuRQA== + dependencies: + lodash.sortby "^4.7.0" + +"@apollo/utils.stripsensitiveliterals@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@apollo/utils.stripsensitiveliterals/-/utils.stripsensitiveliterals-1.2.0.tgz#4920651f36beee8e260e12031a0c5863ad0c7b28" + integrity sha512-E41rDUzkz/cdikM5147d8nfCFVKovXxKBcjvLEQ7bjZm/cg9zEcXvS6vFY8ugTubI3fn6zoqo0CyU8zT+BGP9w== + +"@apollo/utils.usagereporting@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@apollo/utils.usagereporting/-/utils.usagereporting-1.0.0.tgz#b81df180f4ca78b91a22cb49105174a7f070db1e" + integrity sha512-5PL7hJMkTPmdo3oxPtigRrIyPxDk/ddrUryHPDaezL1lSFExpNzsDd2f1j0XJoHOg350GRd3LyD64caLA2PU1w== + dependencies: + "@apollo/utils.dropunuseddefinitions" "^1.1.0" + "@apollo/utils.printwithreducedwhitespace" "^1.1.0" + "@apollo/utils.removealiases" "1.0.0" + "@apollo/utils.sortast" "^1.1.0" + "@apollo/utils.stripsensitiveliterals" "^1.2.0" + apollo-reporting-protobuf "^3.3.1" + +"@apollographql/apollo-tools@^0.5.3": + version "0.5.4" + resolved "https://registry.yarnpkg.com/@apollographql/apollo-tools/-/apollo-tools-0.5.4.tgz#cb3998c6cf12e494b90c733f44dd9935e2d8196c" + integrity sha512-shM3q7rUbNyXVVRkQJQseXv6bnYM3BUma/eZhwXR4xsuM+bqWnJKvW7SAfRjP7LuSCocrexa5AXhjjawNHrIlw== + +"@apollographql/graphql-playground-html@1.6.29": + version "1.6.29" + resolved "https://registry.yarnpkg.com/@apollographql/graphql-playground-html/-/graphql-playground-html-1.6.29.tgz#a7a646614a255f62e10dcf64a7f68ead41dec453" + integrity sha512-xCcXpoz52rI4ksJSdOCxeOCn2DLocxwHf9dVT/Q90Pte1LX+LY+91SFtJF3KXVHH8kEin+g1KKCQPKBjZJfWNA== + dependencies: + xss "^1.0.8" + +"@babel/code-frame@7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" + integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== + dependencies: + "@babel/highlight" "^7.10.4" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" + integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== + dependencies: + "@babel/highlight" "^7.18.6" + +"@babel/compat-data@^7.18.8": + version "7.18.8" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.8.tgz#2483f565faca607b8535590e84e7de323f27764d" + integrity sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ== + +"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.7.2", "@babel/core@^7.8.0": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.10.tgz#39ad504991d77f1f3da91be0b8b949a5bc466fb8" + integrity sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw== + dependencies: + "@ampproject/remapping" "^2.1.0" + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.18.10" + "@babel/helper-compilation-targets" "^7.18.9" + "@babel/helper-module-transforms" "^7.18.9" + "@babel/helpers" "^7.18.9" + "@babel/parser" "^7.18.10" + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.18.10" + "@babel/types" "^7.18.10" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.1" + semver "^6.3.0" + +"@babel/generator@^7.18.10", "@babel/generator@^7.7.2": + version "7.18.12" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.12.tgz#fa58daa303757bd6f5e4bbca91b342040463d9f4" + integrity sha512-dfQ8ebCN98SvyL7IxNMCUtZQSq5R7kxgN+r8qYTGDmmSion1hX2C0zq2yo1bsCDhXixokv1SAWTZUMYbO/V5zg== + dependencies: + "@babel/types" "^7.18.10" + "@jridgewell/gen-mapping" "^0.3.2" + jsesc "^2.5.1" + +"@babel/helper-compilation-targets@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz#69e64f57b524cde3e5ff6cc5a9f4a387ee5563bf" + integrity sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg== + dependencies: + "@babel/compat-data" "^7.18.8" + "@babel/helper-validator-option" "^7.18.6" + browserslist "^4.20.2" + semver "^6.3.0" + +"@babel/helper-environment-visitor@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" + integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== + +"@babel/helper-function-name@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz#940e6084a55dee867d33b4e487da2676365e86b0" + integrity sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A== + dependencies: + "@babel/template" "^7.18.6" + "@babel/types" "^7.18.9" + +"@babel/helper-hoist-variables@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" + integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-module-imports@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" + integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-module-transforms@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz#5a1079c005135ed627442df31a42887e80fcb712" + integrity sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-simple-access" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/helper-validator-identifier" "^7.18.6" + "@babel/template" "^7.18.6" + "@babel/traverse" "^7.18.9" + "@babel/types" "^7.18.9" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.8.0": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz#4b8aea3b069d8cb8a72cdfe28ddf5ceca695ef2f" + integrity sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w== + +"@babel/helper-simple-access@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz#d6d8f51f4ac2978068df934b569f08f29788c7ea" + integrity sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-split-export-declaration@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" + integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-string-parser@^7.18.10": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz#181f22d28ebe1b3857fa575f5c290b1aaf659b56" + integrity sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw== + +"@babel/helper-validator-identifier@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz#9c97e30d31b2b8c72a1d08984f2ca9b574d7a076" + integrity sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g== + +"@babel/helper-validator-option@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" + integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== + +"@babel/helpers@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.9.tgz#4bef3b893f253a1eced04516824ede94dcfe7ff9" + integrity sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ== + dependencies: + "@babel/template" "^7.18.6" + "@babel/traverse" "^7.18.9" + "@babel/types" "^7.18.9" + +"@babel/highlight@^7.10.4", "@babel/highlight@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" + integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== + dependencies: + "@babel/helper-validator-identifier" "^7.18.6" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.10", "@babel/parser@^7.18.11": + version "7.18.11" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.11.tgz#68bb07ab3d380affa9a3f96728df07969645d2d9" + integrity sha512-9JKn5vN+hDt0Hdqn1PiJ2guflwP+B6Ga8qbDuoF0PzzVhrzsKIJo8yGqVk6CmMHiMei9w1C1Bp9IMJSIK+HPIQ== + +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.8.3": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-import-meta@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-typescript@^7.7.2": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.18.6.tgz#1c09cd25795c7c2b8a4ba9ae49394576d4133285" + integrity sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/runtime@^7.10.5", "@babel/runtime@^7.12.5", "@babel/runtime@^7.17.2", "@babel/runtime@^7.18.6", "@babel/runtime@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.9.tgz#b4fcfce55db3d2e5e080d2490f608a3b9f407f4a" + integrity sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.15.4": + version "7.20.1" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.1.tgz#1148bb33ab252b165a06698fde7576092a78b4a9" + integrity sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg== + dependencies: + regenerator-runtime "^0.13.10" + +"@babel/runtime@^7.18.3": + version "7.20.6" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.6.tgz#facf4879bfed9b5326326273a64220f099b0fce3" + integrity sha512-Q+8MqP7TiHMWzSfwiJwXCjyf4GYA4Dgw3emg/7xmwsdLJOZUp+nMqcOwOzzYheuM1rhDu8FSj2l0aoMygEuXuA== + dependencies: + regenerator-runtime "^0.13.11" + +"@babel/runtime@^7.6.3", "@babel/runtime@^7.9.2": + version "7.19.4" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.19.4.tgz#a42f814502ee467d55b38dd1c256f53a7b885c78" + integrity sha512-EXpLCrk55f+cYqmHsSR+yD/0gAIMxxA9QK9lnQWzhMCvt+YmoBN7Zx94s++Kv0+unHk39vxNO8t+CMA2WSS3wA== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/template@^7.18.10", "@babel/template@^7.18.6", "@babel/template@^7.3.3": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71" + integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/parser" "^7.18.10" + "@babel/types" "^7.18.10" + +"@babel/traverse@^7.18.10", "@babel/traverse@^7.18.9", "@babel/traverse@^7.7.2": + version "7.18.11" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.11.tgz#3d51f2afbd83ecf9912bcbb5c4d94e3d2ddaa16f" + integrity sha512-TG9PiM2R/cWCAy6BPJKeHzNbu4lPzOSZpeMfeNErskGpTJx6trEvFaVCbDvpcxwy49BKWmEPwiW8mrysNiDvIQ== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.18.10" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.18.9" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.18.11" + "@babel/types" "^7.18.10" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/types@^7.0.0", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.3.0", "@babel/types@^7.3.3": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.10.tgz#4908e81b6b339ca7c6b7a555a5fc29446f26dde6" + integrity sha512-MJvnbEiiNkpjo+LknnmRrqbY1GPUUggjv+wQVjetM/AONoupqRALB7I6jGqNUAZsKcRIEu2J6FRFvsczljjsaQ== + dependencies: + "@babel/helper-string-parser" "^7.18.10" + "@babel/helper-validator-identifier" "^7.18.6" + to-fast-properties "^2.0.0" + +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + +"@blockworks-foundation/mango-client@^3.2.14": + version "3.6.10" + resolved "https://registry.yarnpkg.com/@blockworks-foundation/mango-client/-/mango-client-3.6.10.tgz#32b099e7bb0e04161f851e93799025135c508ae7" + integrity sha512-ch2LhT0i5ILfAIPHvwlPKuc6DfYaV1/PYHX+L/xxH0867LOTNDYXWS+neznRQcQUVVbCAcbrZCENDekBW+/NzQ== + dependencies: + "@project-serum/anchor" "^0.21.0" + "@project-serum/serum" "^0.13.65" + "@project-serum/sol-wallet-adapter" "^0.2.0" + "@solana/spl-token" "^0.1.6" + "@solana/web3.js" "^1.43.5" + big.js "^6.1.1" + bn.js "^5.1.0" + buffer-layout "^1.2.1" + cross-fetch "^3.1.5" + dotenv "^10.0.0" + toformat "^2.0.0" + yargs "^17.0.1" + +"@colors/colors@1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" + integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== + +"@confio/ics23@^0.6.8": + version "0.6.8" + resolved "https://registry.yarnpkg.com/@confio/ics23/-/ics23-0.6.8.tgz#2a6b4f1f2b7b20a35d9a0745bb5a446e72930b3d" + integrity sha512-wB6uo+3A50m0sW/EWcU64xpV/8wShZ6bMTa7pF8eYsTrSkQA7oLUIJcs/wb8g4y2Oyq701BaGiO6n/ak5WXO1w== + dependencies: + "@noble/hashes" "^1.0.0" + protobufjs "^6.8.8" + +"@connectis/coverage-merger@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@connectis/coverage-merger/-/coverage-merger-1.1.0.tgz#3aea911a381c04f3d544e95b093b564e420bd3d9" + integrity sha512-H/t4AIXW4/0cFybMqgZouZMZw8lawaaH0n5q8QgLfP26amAJCqyZk/JLlFrdAJtt/VWdklfXWPSOoXja6/UTsw== + dependencies: + lodash "^4.17.11" + +"@connectis/coverage-parser@^1.0.7": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@connectis/coverage-parser/-/coverage-parser-1.0.8.tgz#87a8ed74dac8539b5f33c5dae32fd0f6ec3395a4" + integrity sha512-uQmq4flTwRMRP6GZQDpsy48L0NeBNWGcjLgOqmI0wLwSSt87x8sjfJb+uVIcoCbRCG4K6JnAJZEzILnExjOsAQ== + dependencies: + "@cvrg-report/clover-json" "^0.1.0" + bluebird "^3.5.2" + cobertura-parse "^1.0.5" + fast-glob "^2.2.3" + golang-cover-parse "^2.0.0" + jacoco-parse "^2.0.1" + lcov-parse "^1.0.0" + lodash "^4.17.11" + +"@connectis/diff-test-coverage@^1.5.1": + version "1.5.3" + resolved "https://registry.yarnpkg.com/@connectis/diff-test-coverage/-/diff-test-coverage-1.5.3.tgz#cf2109027931794aeafe554f3d79cbea1422c140" + integrity sha512-YXDVxcWQeN3BA2fWLu/3O8gLyYjJO2KL+MwqmD52CJHNehjvjq/U4RzYe5IUg6UsIs/evcKP3h7pt659HSSwHQ== + dependencies: + "@connectis/coverage-merger" "^1.1.0" + "@connectis/coverage-parser" "^1.0.7" + bluebird "^3.5.2" + chalk "^2.4.1" + diffparser "^2.0.1" + get-stdin "^6.0.0" + lodash "^4.17.11" + micromatch "^3.1.10" + strip-ansi "^5.0.0" + yargs "^12.0.2" + +"@cosmjs/amino@0.28.13": + version "0.28.13" + resolved "https://registry.yarnpkg.com/@cosmjs/amino/-/amino-0.28.13.tgz#b51417a23c1ff8ef8b85a6862eba8492c6c44f38" + integrity sha512-IHnH2zGwaY69qT4mVAavr/pfzx6YE+ud1NHJbvVePlbGiz68CXTi5LHR+K0lrKB5mQ7E+ZErWz2mw5U/x+V1wQ== + dependencies: + "@cosmjs/crypto" "0.28.13" + "@cosmjs/encoding" "0.28.13" + "@cosmjs/math" "0.28.13" + "@cosmjs/utils" "0.28.13" + +"@cosmjs/crypto@0.28.13": + version "0.28.13" + resolved "https://registry.yarnpkg.com/@cosmjs/crypto/-/crypto-0.28.13.tgz#541b6a36f616b2da5a568ead46d4e83841ceb412" + integrity sha512-ynKfM0q/tMBQMHJby6ad8lR3gkgBKaelQhIsCZTjClsnuC7oYT9y3ThSZCUWr7Pa9h0J8ahU2YV2oFWFVWJQzQ== + dependencies: + "@cosmjs/encoding" "0.28.13" + "@cosmjs/math" "0.28.13" + "@cosmjs/utils" "0.28.13" + "@noble/hashes" "^1" + bn.js "^5.2.0" + elliptic "^6.5.3" + libsodium-wrappers "^0.7.6" + +"@cosmjs/encoding@0.28.13": + version "0.28.13" + resolved "https://registry.yarnpkg.com/@cosmjs/encoding/-/encoding-0.28.13.tgz#7994e8e2c435beaf0690296ffb0f7f3eaec8150b" + integrity sha512-jtXbAYtV77rLHxoIrjGFsvgGjeTKttuHRv6cvuy3toCZzY7JzTclKH5O2g36IIE4lXwD9xwuhGJ2aa6A3dhNkA== + dependencies: + base64-js "^1.3.0" + bech32 "^1.1.4" + readonly-date "^1.0.0" + +"@cosmjs/json-rpc@0.28.13": + version "0.28.13" + resolved "https://registry.yarnpkg.com/@cosmjs/json-rpc/-/json-rpc-0.28.13.tgz#ff3f0c4a2f363b1a2c6779f8624a897e217fe297" + integrity sha512-fInSvg7x9P6p+GWqet+TMhrMTM3OWWdLJOGS5w2ryubMjgpR1rLiAx77MdTNkArW+/6sUwku0sN4veM4ENQu6A== + dependencies: + "@cosmjs/stream" "0.28.13" + xstream "^11.14.0" + +"@cosmjs/math@0.28.13": + version "0.28.13" + resolved "https://registry.yarnpkg.com/@cosmjs/math/-/math-0.28.13.tgz#50c05bc67007a04216f7f5e0c93f57270f8cc077" + integrity sha512-PDpL8W/kbyeWi0mQ2OruyqE8ZUAdxPs1xCbDX3WXJwy2oU+X2UTbkuweJHVpS9CIqmZulBoWQAmlf6t6zr1N/g== + dependencies: + bn.js "^5.2.0" + +"@cosmjs/proto-signing@0.28.13", "@cosmjs/proto-signing@^0.28.10": + version "0.28.13" + resolved "https://registry.yarnpkg.com/@cosmjs/proto-signing/-/proto-signing-0.28.13.tgz#95ac12f0da0f0814f348f5ae996c3e96d015df61" + integrity sha512-nSl/2ZLsUJYz3Ad0RY3ihZUgRHIow2OnYqKsESMu+3RA/jTi9bDYhiBu8mNMHI0xrEJry918B2CyI56pOUHdPQ== + dependencies: + "@cosmjs/amino" "0.28.13" + "@cosmjs/crypto" "0.28.13" + "@cosmjs/encoding" "0.28.13" + "@cosmjs/math" "0.28.13" + "@cosmjs/utils" "0.28.13" + cosmjs-types "^0.4.0" + long "^4.0.0" + +"@cosmjs/socket@0.28.13": + version "0.28.13" + resolved "https://registry.yarnpkg.com/@cosmjs/socket/-/socket-0.28.13.tgz#d8443ad6e91d080fc6b80a7e9cf297a56b1f6833" + integrity sha512-lavwGxQ5VdeltyhpFtwCRVfxeWjH5D5mmN7jgx9nuCf3XSFbTcOYxrk2pQ4usenu1Q1KZdL4Yl5RCNrJuHD9Ug== + dependencies: + "@cosmjs/stream" "0.28.13" + isomorphic-ws "^4.0.1" + ws "^7" + xstream "^11.14.0" + +"@cosmjs/stargate@^0.28.13": + version "0.28.13" + resolved "https://registry.yarnpkg.com/@cosmjs/stargate/-/stargate-0.28.13.tgz#a73d837a46ee8944e6eafe162f2ff6943c14350e" + integrity sha512-dVBMazDz8/eActHsRcZjDHHptOBMqvibj5CFgEtZBp22gP6ASzoAUXTlkSVk5FBf4sfuUHoff6st134/+PGMAg== + dependencies: + "@confio/ics23" "^0.6.8" + "@cosmjs/amino" "0.28.13" + "@cosmjs/encoding" "0.28.13" + "@cosmjs/math" "0.28.13" + "@cosmjs/proto-signing" "0.28.13" + "@cosmjs/stream" "0.28.13" + "@cosmjs/tendermint-rpc" "0.28.13" + "@cosmjs/utils" "0.28.13" + cosmjs-types "^0.4.0" + long "^4.0.0" + protobufjs "~6.11.3" + xstream "^11.14.0" + +"@cosmjs/stream@0.28.13": + version "0.28.13" + resolved "https://registry.yarnpkg.com/@cosmjs/stream/-/stream-0.28.13.tgz#1e79d1116fda1e63e5ecddbd9d803d403942b1fa" + integrity sha512-AnjtfwT8NwPPkd3lhZhjOlOzT0Kn9bgEu2IPOZjQ1nmG2bplsr6TJmnwn0dJxHT7UGtex17h6whKB5N4wU37Wg== + dependencies: + xstream "^11.14.0" + +"@cosmjs/tendermint-rpc@0.28.13": + version "0.28.13" + resolved "https://registry.yarnpkg.com/@cosmjs/tendermint-rpc/-/tendermint-rpc-0.28.13.tgz#0bf587ae66fa3f88319edbd258492d28e73f9f29" + integrity sha512-GB+ZmfuJIGQm0hsRtLYjeR3lOxF7Z6XyCBR0cX5AAYOZzSEBJjevPgUHD6tLn8zIhvzxaW3/VKnMB+WmlxdH4w== + dependencies: + "@cosmjs/crypto" "0.28.13" + "@cosmjs/encoding" "0.28.13" + "@cosmjs/json-rpc" "0.28.13" + "@cosmjs/math" "0.28.13" + "@cosmjs/socket" "0.28.13" + "@cosmjs/stream" "0.28.13" + "@cosmjs/utils" "0.28.13" + axios "^0.21.2" + readonly-date "^1.0.0" + xstream "^11.14.0" + +"@cosmjs/utils@0.28.13": + version "0.28.13" + resolved "https://registry.yarnpkg.com/@cosmjs/utils/-/utils-0.28.13.tgz#2fd2844ec832d7833811e2ae1691305d09791a08" + integrity sha512-dVeMBiyg+46x7XBZEfJK8yTihphbCFpjVYmLJVqmTsHfJwymQ65cpyW/C+V/LgWARGK8hWQ/aX9HM5Ao8QmMSg== + +"@crocswap/sdk@^2.4.5": + version "2.4.5" + resolved "https://registry.yarnpkg.com/@crocswap/sdk/-/sdk-2.4.5.tgz#4a4765af4a16c1af42fcbcc5e540e9dd8793a6c1" + integrity sha512-nIErmtZg3xNT97L7t0Xj6xJWA6WETETOBmvZwUNmYqQN33xo7iegVPxIx7XRo5taRVH2deN/qbr6IRxSeEvmJQ== + dependencies: + big.js "^5.2.2" + decimal.js-light "^2.5.0" + jsbi "^3.1.4" + tiny-invariant "^1.1.0" + tiny-warning "^1.0.3" + toformat "^2.0.0" + +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + +"@cvrg-report/clover-json@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@cvrg-report/clover-json/-/clover-json-0.1.1.tgz#7e4ab3498b195c390bed9c5507c4226739ccc188" + integrity sha512-oq6hdyVVbJ0gqXydCxlAMrc4HbilQYyq4HPlTuXg+JXDU/N2XawyblhLXvE25SCcBUvgfFRvXdWI4UuEbEeJTg== + dependencies: + xml2js "^0.4.19" + +"@dabh/diagnostics@^2.0.2": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@dabh/diagnostics/-/diagnostics-2.0.3.tgz#7f7e97ee9a725dffc7808d93668cc984e1dc477a" + integrity sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA== + dependencies: + colorspace "1.1.x" + enabled "2.0.x" + kuler "^2.0.0" + +"@eslint/eslintrc@^0.4.3": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" + integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== + dependencies: + ajv "^6.12.4" + debug "^4.1.1" + espree "^7.3.0" + globals "^13.9.0" + ignore "^4.0.6" + import-fresh "^3.2.1" + js-yaml "^3.13.1" + minimatch "^3.0.4" + strip-json-comments "^3.1.1" + +"@ethereumjs/block@^3.5.0", "@ethereumjs/block@^3.6.2", "@ethereumjs/block@^3.6.3": + version "3.6.3" + resolved "https://registry.yarnpkg.com/@ethereumjs/block/-/block-3.6.3.tgz#d96cbd7af38b92ebb3424223dbf773f5ccd27f84" + integrity sha512-CegDeryc2DVKnDkg5COQrE0bJfw/p0v3GBk2W5/Dj5dOVfEmb50Ux0GLnSPypooLnfqjwFaorGuT9FokWB3GRg== + dependencies: + "@ethereumjs/common" "^2.6.5" + "@ethereumjs/tx" "^3.5.2" + ethereumjs-util "^7.1.5" + merkle-patricia-tree "^4.2.4" + +"@ethereumjs/blockchain@^5.5.2", "@ethereumjs/blockchain@^5.5.3": + version "5.5.3" + resolved "https://registry.yarnpkg.com/@ethereumjs/blockchain/-/blockchain-5.5.3.tgz#aa49a6a04789da6b66b5bcbb0d0b98efc369f640" + integrity sha512-bi0wuNJ1gw4ByNCV56H0Z4Q7D+SxUbwyG12Wxzbvqc89PXLRNR20LBcSUZRKpN0+YCPo6m0XZL/JLio3B52LTw== + dependencies: + "@ethereumjs/block" "^3.6.2" + "@ethereumjs/common" "^2.6.4" + "@ethereumjs/ethash" "^1.1.0" + debug "^4.3.3" + ethereumjs-util "^7.1.5" + level-mem "^5.0.1" + lru-cache "^5.1.1" + semaphore-async-await "^1.5.1" + +"@ethereumjs/common@^2.5.0", "@ethereumjs/common@^2.6.4", "@ethereumjs/common@^2.6.5": + version "2.6.5" + resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.6.5.tgz#0a75a22a046272579d91919cb12d84f2756e8d30" + integrity sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA== + dependencies: + crc-32 "^1.2.0" + ethereumjs-util "^7.1.5" + +"@ethereumjs/ethash@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@ethereumjs/ethash/-/ethash-1.1.0.tgz#7c5918ffcaa9cb9c1dc7d12f77ef038c11fb83fb" + integrity sha512-/U7UOKW6BzpA+Vt+kISAoeDie1vAvY4Zy2KF5JJb+So7+1yKmJeJEHOGSnQIj330e9Zyl3L5Nae6VZyh2TJnAA== + dependencies: + "@ethereumjs/block" "^3.5.0" + "@types/levelup" "^4.3.0" + buffer-xor "^2.0.1" + ethereumjs-util "^7.1.1" + miller-rabin "^4.0.0" + +"@ethereumjs/tx@^3.3.2", "@ethereumjs/tx@^3.5.1", "@ethereumjs/tx@^3.5.2": + version "3.5.2" + resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.5.2.tgz#197b9b6299582ad84f9527ca961466fce2296c1c" + integrity sha512-gQDNJWKrSDGu2w7w0PzVXVBNMzb7wwdDOmOqczmhNjqFxFuIbhVJDwiGEnxFNC2/b8ifcZzY7MLcluizohRzNw== + dependencies: + "@ethereumjs/common" "^2.6.4" + ethereumjs-util "^7.1.5" + +"@ethereumjs/vm@^5.9.0": + version "5.9.3" + resolved "https://registry.yarnpkg.com/@ethereumjs/vm/-/vm-5.9.3.tgz#6d69202e4c132a4a1e1628ac246e92062e230823" + integrity sha512-Ha04TeF8goEglr8eL7hkkYyjhzdZS0PsoRURzYlTF6I0VVId5KjKb0N7MrA8GMgheN+UeTncfTgYx52D/WhEmg== + dependencies: + "@ethereumjs/block" "^3.6.3" + "@ethereumjs/blockchain" "^5.5.3" + "@ethereumjs/common" "^2.6.5" + "@ethereumjs/tx" "^3.5.2" + async-eventemitter "^0.2.4" + core-js-pure "^3.0.1" + debug "^4.3.3" + ethereumjs-util "^7.1.5" + functional-red-black-tree "^1.0.1" + mcl-wasm "^0.7.1" + merkle-patricia-tree "^4.2.4" + rustbn.js "~0.2.0" + +"@ethersproject/abi@5.6.4", "@ethersproject/abi@^5.0.12", "@ethersproject/abi@^5.1.2", "@ethersproject/abi@^5.4.0", "@ethersproject/abi@^5.5.0", "@ethersproject/abi@^5.6.3": + version "5.6.4" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.6.4.tgz#f6e01b6ed391a505932698ecc0d9e7a99ee60362" + integrity sha512-TTeZUlCeIHG6527/2goZA6gW5F8Emoc7MrZDC7hhP84aRGvW3TEdTnZR08Ls88YXM1m2SuK42Osw/jSi3uO8gg== + dependencies: + "@ethersproject/address" "^5.6.1" + "@ethersproject/bignumber" "^5.6.2" + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/constants" "^5.6.1" + "@ethersproject/hash" "^5.6.1" + "@ethersproject/keccak256" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/strings" "^5.6.1" + +"@ethersproject/abstract-provider@5.6.1", "@ethersproject/abstract-provider@^5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.6.1.tgz#02ddce150785caf0c77fe036a0ebfcee61878c59" + integrity sha512-BxlIgogYJtp1FS8Muvj8YfdClk3unZH0vRMVX791Z9INBNT/kuACZ9GzaY1Y4yFq+YSy6/w4gzj3HCRKrK9hsQ== + dependencies: + "@ethersproject/bignumber" "^5.6.2" + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/networks" "^5.6.3" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/transactions" "^5.6.2" + "@ethersproject/web" "^5.6.1" + +"@ethersproject/abstract-signer@5.6.2", "@ethersproject/abstract-signer@^5.4.0", "@ethersproject/abstract-signer@^5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.6.2.tgz#491f07fc2cbd5da258f46ec539664713950b0b33" + integrity sha512-n1r6lttFBG0t2vNiI3HoWaS/KdOt8xyDjzlP2cuevlWLG6EX0OwcKLyG/Kp/cuwNxdy/ous+R/DEMdTUwWQIjQ== + dependencies: + "@ethersproject/abstract-provider" "^5.6.1" + "@ethersproject/bignumber" "^5.6.2" + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/properties" "^5.6.0" + +"@ethersproject/address@5.6.1", "@ethersproject/address@^5.0.0", "@ethersproject/address@^5.0.0-beta", "@ethersproject/address@^5.0.1", "@ethersproject/address@^5.0.2", "@ethersproject/address@^5.4.0", "@ethersproject/address@^5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.6.1.tgz#ab57818d9aefee919c5721d28cd31fd95eff413d" + integrity sha512-uOgF0kS5MJv9ZvCz7x6T2EXJSzotiybApn4XlOgoTX0xdtyVIJ7pF+6cGPxiEq/dpBiTfMiw7Yc81JcwhSYA0Q== + dependencies: + "@ethersproject/bignumber" "^5.6.2" + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/keccak256" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/rlp" "^5.6.1" + +"@ethersproject/base64@5.6.1", "@ethersproject/base64@^5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.6.1.tgz#2c40d8a0310c9d1606c2c37ae3092634b41d87cb" + integrity sha512-qB76rjop6a0RIYYMiB4Eh/8n+Hxu2NIZm8S/Q7kNo5pmZfXhHGHmS4MinUainiBC54SCyRnwzL+KZjj8zbsSsw== + dependencies: + "@ethersproject/bytes" "^5.6.1" + +"@ethersproject/basex@5.6.1", "@ethersproject/basex@^5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.6.1.tgz#badbb2f1d4a6f52ce41c9064f01eab19cc4c5305" + integrity sha512-a52MkVz4vuBXR06nvflPMotld1FJWSj2QT0985v7P/emPZO00PucFAkbcmq2vpVU7Ts7umKiSI6SppiLykVWsA== + dependencies: + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/properties" "^5.6.0" + +"@ethersproject/bignumber@5.6.2", "@ethersproject/bignumber@^5.4.0", "@ethersproject/bignumber@^5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.6.2.tgz#72a0717d6163fab44c47bcc82e0c550ac0315d66" + integrity sha512-v7+EEUbhGqT3XJ9LMPsKvXYHFc8eHxTowFCG/HgJErmq4XHJ2WR7aeyICg3uTOAQ7Icn0GFHAohXEhxQHq4Ubw== + dependencies: + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + bn.js "^5.2.1" + +"@ethersproject/bignumber@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.6.0.tgz#116c81b075c57fa765a8f3822648cf718a8a0e26" + integrity sha512-VziMaXIUHQlHJmkv1dlcd6GY2PmT0khtAqaMctCIDogxkrarMzA9L94KN1NeXqqOfFD6r0sJT3vCTOFSmZ07DA== + dependencies: + "@ethersproject/bytes" "^5.6.0" + "@ethersproject/logger" "^5.6.0" + bn.js "^4.11.9" + +"@ethersproject/bytes@5.6.1", "@ethersproject/bytes@^5.4.0", "@ethersproject/bytes@^5.6.0", "@ethersproject/bytes@^5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.6.1.tgz#24f916e411f82a8a60412344bf4a813b917eefe7" + integrity sha512-NwQt7cKn5+ZE4uDn+X5RAXLp46E1chXoaMmrxAyA0rblpxz8t58lVkrHXoRIn0lz1joQElQ8410GqhTqMOwc6g== + dependencies: + "@ethersproject/logger" "^5.6.0" + +"@ethersproject/constants@5.6.1", "@ethersproject/constants@^5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.6.1.tgz#e2e974cac160dd101cf79fdf879d7d18e8cb1370" + integrity sha512-QSq9WVnZbxXYFftrjSjZDUshp6/eKp6qrtdBtUCm0QxCV5z1fG/w3kdlcsjMCQuQHUnAclKoK7XpXMezhRDOLg== + dependencies: + "@ethersproject/bignumber" "^5.6.2" + +"@ethersproject/constants@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.6.0.tgz#55e3eb0918584d3acc0688e9958b0cedef297088" + integrity sha512-SrdaJx2bK0WQl23nSpV/b1aq293Lh0sUaZT/yYKPDKn4tlAbkH96SPJwIhwSwTsoQQZxuh1jnqsKwyymoiBdWA== + dependencies: + "@ethersproject/bignumber" "^5.6.0" + +"@ethersproject/contracts@5.6.2", "@ethersproject/contracts@^5.0.0-beta", "@ethersproject/contracts@^5.0.1", "@ethersproject/contracts@^5.4.0", "@ethersproject/contracts@^5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.6.2.tgz#20b52e69ebc1b74274ff8e3d4e508de971c287bc" + integrity sha512-hguUA57BIKi6WY0kHvZp6PwPlWF87MCeB4B7Z7AbUpTxfFXFdn/3b0GmjZPagIHS+3yhcBJDnuEfU4Xz+Ks/8g== + dependencies: + "@ethersproject/abi" "^5.6.3" + "@ethersproject/abstract-provider" "^5.6.1" + "@ethersproject/abstract-signer" "^5.6.2" + "@ethersproject/address" "^5.6.1" + "@ethersproject/bignumber" "^5.6.2" + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/constants" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/transactions" "^5.6.2" + +"@ethersproject/experimental@^5.3.0", "@ethersproject/experimental@^5.4.0": + version "5.6.3" + resolved "https://registry.yarnpkg.com/@ethersproject/experimental/-/experimental-5.6.3.tgz#d1cd8f3b886cbab86430fb2954eb65ddb7c75ffd" + integrity sha512-yMymv32XMr9sXvHc3S1On2wD0JMT6n4X9uKpfZ8jFFw5rEcI99yfovcCZ0tpUedh1b3IvReSain+RobeNQmmEg== + dependencies: + "@ethersproject/web" "^5.6.1" + ethers "^5.6.8" + scrypt-js "3.0.1" + +"@ethersproject/hash@5.6.1", "@ethersproject/hash@^5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.6.1.tgz#224572ea4de257f05b4abf8ae58b03a67e99b0f4" + integrity sha512-L1xAHurbaxG8VVul4ankNX5HgQ8PNCTrnVXEiFnE9xoRnaUcgfD12tZINtDinSllxPLCtGwguQxJ5E6keE84pA== + dependencies: + "@ethersproject/abstract-signer" "^5.6.2" + "@ethersproject/address" "^5.6.1" + "@ethersproject/bignumber" "^5.6.2" + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/keccak256" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/strings" "^5.6.1" + +"@ethersproject/hdnode@5.6.2", "@ethersproject/hdnode@^5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.6.2.tgz#26f3c83a3e8f1b7985c15d1db50dc2903418b2d2" + integrity sha512-tERxW8Ccf9CxW2db3WsN01Qao3wFeRsfYY9TCuhmG0xNpl2IO8wgXU3HtWIZ49gUWPggRy4Yg5axU0ACaEKf1Q== + dependencies: + "@ethersproject/abstract-signer" "^5.6.2" + "@ethersproject/basex" "^5.6.1" + "@ethersproject/bignumber" "^5.6.2" + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/pbkdf2" "^5.6.1" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/sha2" "^5.6.1" + "@ethersproject/signing-key" "^5.6.2" + "@ethersproject/strings" "^5.6.1" + "@ethersproject/transactions" "^5.6.2" + "@ethersproject/wordlists" "^5.6.1" + +"@ethersproject/json-wallets@5.6.1", "@ethersproject/json-wallets@^5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.6.1.tgz#3f06ba555c9c0d7da46756a12ac53483fe18dd91" + integrity sha512-KfyJ6Zwz3kGeX25nLihPwZYlDqamO6pfGKNnVMWWfEVVp42lTfCZVXXy5Ie8IZTN0HKwAngpIPi7gk4IJzgmqQ== + dependencies: + "@ethersproject/abstract-signer" "^5.6.2" + "@ethersproject/address" "^5.6.1" + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/hdnode" "^5.6.2" + "@ethersproject/keccak256" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/pbkdf2" "^5.6.1" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/random" "^5.6.1" + "@ethersproject/strings" "^5.6.1" + "@ethersproject/transactions" "^5.6.2" + aes-js "3.0.0" + scrypt-js "3.0.1" + +"@ethersproject/keccak256@5.6.1", "@ethersproject/keccak256@^5.6.0", "@ethersproject/keccak256@^5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.6.1.tgz#b867167c9b50ba1b1a92bccdd4f2d6bd168a91cc" + integrity sha512-bB7DQHCTRDooZZdL3lk9wpL0+XuG3XLGHLh3cePnybsO3V0rdCAOQGpn/0R3aODmnTOOkCATJiD2hnL+5bwthA== + dependencies: + "@ethersproject/bytes" "^5.6.1" + js-sha3 "0.8.0" + +"@ethersproject/logger@5.6.0", "@ethersproject/logger@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.6.0.tgz#d7db1bfcc22fd2e4ab574cba0bb6ad779a9a3e7a" + integrity sha512-BiBWllUROH9w+P21RzoxJKzqoqpkyM1pRnEKG69bulE9TSQD8SAIvTQqIMZmmCO8pUNkgLP1wndX1gKghSpBmg== + +"@ethersproject/networks@5.6.4", "@ethersproject/networks@^5.0.0-beta", "@ethersproject/networks@^5.0.1", "@ethersproject/networks@^5.4.0", "@ethersproject/networks@^5.6.3": + version "5.6.4" + resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.6.4.tgz#51296d8fec59e9627554f5a8a9c7791248c8dc07" + integrity sha512-KShHeHPahHI2UlWdtDMn2lJETcbtaJge4k7XSjDR9h79QTd6yQJmv6Cp2ZA4JdqWnhszAOLSuJEd9C0PRw7hSQ== + dependencies: + "@ethersproject/logger" "^5.6.0" + +"@ethersproject/pbkdf2@5.6.1", "@ethersproject/pbkdf2@^5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.6.1.tgz#f462fe320b22c0d6b1d72a9920a3963b09eb82d1" + integrity sha512-k4gRQ+D93zDRPNUfmduNKq065uadC2YjMP/CqwwX5qG6R05f47boq6pLZtV/RnC4NZAYOPH1Cyo54q0c9sshRQ== + dependencies: + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/sha2" "^5.6.1" + +"@ethersproject/properties@5.6.0", "@ethersproject/properties@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.6.0.tgz#38904651713bc6bdd5bdd1b0a4287ecda920fa04" + integrity sha512-szoOkHskajKePTJSZ46uHUWWkbv7TzP2ypdEK6jGMqJaEt2sb0jCgfBo0gH0m2HBpRixMuJ6TBRaQCF7a9DoCg== + dependencies: + "@ethersproject/logger" "^5.6.0" + +"@ethersproject/providers@5.6.8", "@ethersproject/providers@^5.0.0-beta", "@ethersproject/providers@^5.0.4", "@ethersproject/providers@^5.4.0", "@ethersproject/providers@^5.6.8": + version "5.6.8" + resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.6.8.tgz#22e6c57be215ba5545d3a46cf759d265bb4e879d" + integrity sha512-Wf+CseT/iOJjrGtAOf3ck9zS7AgPmr2fZ3N97r4+YXN3mBePTG2/bJ8DApl9mVwYL+RpYbNxMEkEp4mPGdwG/w== + dependencies: + "@ethersproject/abstract-provider" "^5.6.1" + "@ethersproject/abstract-signer" "^5.6.2" + "@ethersproject/address" "^5.6.1" + "@ethersproject/base64" "^5.6.1" + "@ethersproject/basex" "^5.6.1" + "@ethersproject/bignumber" "^5.6.2" + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/constants" "^5.6.1" + "@ethersproject/hash" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/networks" "^5.6.3" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/random" "^5.6.1" + "@ethersproject/rlp" "^5.6.1" + "@ethersproject/sha2" "^5.6.1" + "@ethersproject/strings" "^5.6.1" + "@ethersproject/transactions" "^5.6.2" + "@ethersproject/web" "^5.6.1" + bech32 "1.1.4" + ws "7.4.6" + +"@ethersproject/random@5.6.1", "@ethersproject/random@^5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.6.1.tgz#66915943981bcd3e11bbd43733f5c3ba5a790255" + integrity sha512-/wtPNHwbmng+5yi3fkipA8YBT59DdkGRoC2vWk09Dci/q5DlgnMkhIycjHlavrvrjJBkFjO/ueLyT+aUDfc4lA== + dependencies: + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + +"@ethersproject/rlp@5.6.1", "@ethersproject/rlp@^5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.6.1.tgz#df8311e6f9f24dcb03d59a2bac457a28a4fe2bd8" + integrity sha512-uYjmcZx+DKlFUk7a5/W9aQVaoEC7+1MOBgNtvNg13+RnuUwT4F0zTovC0tmay5SmRslb29V1B7Y5KCri46WhuQ== + dependencies: + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + +"@ethersproject/sha2@5.6.1", "@ethersproject/sha2@^5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.6.1.tgz#211f14d3f5da5301c8972a8827770b6fd3e51656" + integrity sha512-5K2GyqcW7G4Yo3uenHegbXRPDgARpWUiXc6RiF7b6i/HXUoWlb7uCARh7BAHg7/qT/Q5ydofNwiZcim9qpjB6g== + dependencies: + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + hash.js "1.1.7" + +"@ethersproject/sha2@^5.5.0", "@ethersproject/sha2@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.6.0.tgz#364c4c11cc753bda36f31f001628706ebadb64d9" + integrity sha512-1tNWCPFLu1n3JM9t4/kytz35DkuF9MxqkGGEHNauEbaARdm2fafnOyw1s0tIQDPKF/7bkP1u3dbrmjpn5CelyA== + dependencies: + "@ethersproject/bytes" "^5.6.0" + "@ethersproject/logger" "^5.6.0" + hash.js "1.1.7" + +"@ethersproject/signing-key@5.6.2", "@ethersproject/signing-key@^5.4.0", "@ethersproject/signing-key@^5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.6.2.tgz#8a51b111e4d62e5a62aee1da1e088d12de0614a3" + integrity sha512-jVbu0RuP7EFpw82vHcL+GP35+KaNruVAZM90GxgQnGqB6crhBqW/ozBfFvdeImtmb4qPko0uxXjn8l9jpn0cwQ== + dependencies: + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/properties" "^5.6.0" + bn.js "^5.2.1" + elliptic "6.5.4" + hash.js "1.1.7" + +"@ethersproject/solidity@5.6.1", "@ethersproject/solidity@^5.0.0", "@ethersproject/solidity@^5.0.0-beta", "@ethersproject/solidity@^5.0.1", "@ethersproject/solidity@^5.4.0": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.6.1.tgz#5845e71182c66d32e6ec5eefd041fca091a473e2" + integrity sha512-KWqVLkUUoLBfL1iwdzUVlkNqAUIFMpbbeH0rgCfKmJp0vFtY4AsaN91gHKo9ZZLkC4UOm3cI3BmMV4N53BOq4g== + dependencies: + "@ethersproject/bignumber" "^5.6.2" + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/keccak256" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/sha2" "^5.6.1" + "@ethersproject/strings" "^5.6.1" + +"@ethersproject/solidity@^5.0.9": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.6.0.tgz#64657362a596bf7f5630bdc921c07dd78df06dc3" + integrity sha512-YwF52vTNd50kjDzqKaoNNbC/r9kMDPq3YzDWmsjFTRBcIF1y4JCQJ8gB30wsTfHbaxgxelI5BfxQSxD/PbJOww== + dependencies: + "@ethersproject/bignumber" "^5.6.0" + "@ethersproject/bytes" "^5.6.0" + "@ethersproject/keccak256" "^5.6.0" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/sha2" "^5.6.0" + "@ethersproject/strings" "^5.6.0" + +"@ethersproject/strings@5.6.1", "@ethersproject/strings@^5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.6.1.tgz#dbc1b7f901db822b5cafd4ebf01ca93c373f8952" + integrity sha512-2X1Lgk6Jyfg26MUnsHiT456U9ijxKUybz8IM1Vih+NJxYtXhmvKBcHOmvGqpFSVJ0nQ4ZCoIViR8XlRw1v/+Cw== + dependencies: + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/constants" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + +"@ethersproject/strings@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.6.0.tgz#9891b26709153d996bf1303d39a7f4bc047878fd" + integrity sha512-uv10vTtLTZqrJuqBZR862ZQjTIa724wGPWQqZrofaPI/kUsf53TBG0I0D+hQ1qyNtllbNzaW+PDPHHUI6/65Mg== + dependencies: + "@ethersproject/bytes" "^5.6.0" + "@ethersproject/constants" "^5.6.0" + "@ethersproject/logger" "^5.6.0" + +"@ethersproject/transactions@5.6.2", "@ethersproject/transactions@^5.4.0", "@ethersproject/transactions@^5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.6.2.tgz#793a774c01ced9fe7073985bb95a4b4e57a6370b" + integrity sha512-BuV63IRPHmJvthNkkt9G70Ullx6AcM+SDc+a8Aw/8Yew6YwT51TcBKEp1P4oOQ/bP25I18JJr7rcFRgFtU9B2Q== + dependencies: + "@ethersproject/address" "^5.6.1" + "@ethersproject/bignumber" "^5.6.2" + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/constants" "^5.6.1" + "@ethersproject/keccak256" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/rlp" "^5.6.1" + "@ethersproject/signing-key" "^5.6.2" + +"@ethersproject/units@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.6.1.tgz#ecc590d16d37c8f9ef4e89e2005bda7ddc6a4e6f" + integrity sha512-rEfSEvMQ7obcx3KWD5EWWx77gqv54K6BKiZzKxkQJqtpriVsICrktIQmKl8ReNToPeIYPnFHpXvKpi068YFZXw== + dependencies: + "@ethersproject/bignumber" "^5.6.2" + "@ethersproject/constants" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + +"@ethersproject/wallet@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.6.2.tgz#cd61429d1e934681e413f4bc847a5f2f87e3a03c" + integrity sha512-lrgh0FDQPuOnHcF80Q3gHYsSUODp6aJLAdDmDV0xKCN/T7D99ta1jGVhulg3PY8wiXEngD0DfM0I2XKXlrqJfg== + dependencies: + "@ethersproject/abstract-provider" "^5.6.1" + "@ethersproject/abstract-signer" "^5.6.2" + "@ethersproject/address" "^5.6.1" + "@ethersproject/bignumber" "^5.6.2" + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/hash" "^5.6.1" + "@ethersproject/hdnode" "^5.6.2" + "@ethersproject/json-wallets" "^5.6.1" + "@ethersproject/keccak256" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/random" "^5.6.1" + "@ethersproject/signing-key" "^5.6.2" + "@ethersproject/transactions" "^5.6.2" + "@ethersproject/wordlists" "^5.6.1" + +"@ethersproject/web@5.6.1", "@ethersproject/web@^5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.6.1.tgz#6e2bd3ebadd033e6fe57d072db2b69ad2c9bdf5d" + integrity sha512-/vSyzaQlNXkO1WV+RneYKqCJwualcUdx/Z3gseVovZP0wIlOFcCE1hkRhKBH8ImKbGQbMl9EAAyJFrJu7V0aqA== + dependencies: + "@ethersproject/base64" "^5.6.1" + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/strings" "^5.6.1" + +"@ethersproject/wordlists@5.6.1", "@ethersproject/wordlists@^5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.6.1.tgz#1e78e2740a8a21e9e99947e47979d72e130aeda1" + integrity sha512-wiPRgBpNbNwCQFoCr8bcWO8o5I810cqO6mkdtKfLKFlLxeCWcnzDi4Alu8iyNzlhYuS9npCwivMbRWF19dyblw== + dependencies: + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/hash" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/strings" "^5.6.1" + +"@findeth/abi@^0.3.0": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@findeth/abi/-/abi-0.3.1.tgz#fe9a25211bc0c840c8bc53f937fd9af7278b9dab" + integrity sha512-T9HUVEjEgM0MzVLY4gs52ffz5AlHeC3CSGFcEzL4ojKMVzMxa3na1GW/XCmunrhnWP2cDh4fE2MhqLxA0CHqTw== + dependencies: + keccak "^3.0.0" + +"@firebase/analytics-types@0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@firebase/analytics-types/-/analytics-types-0.4.0.tgz#d6716f9fa36a6e340bc0ecfe68af325aa6f60508" + integrity sha512-Jj2xW+8+8XPfWGkv9HPv/uR+Qrmq37NPYT352wf7MvE9LrstpLVmFg3LqG6MCRr5miLAom5sen2gZ+iOhVDeRA== + +"@firebase/analytics@0.6.0": + version "0.6.0" + resolved "https://registry.yarnpkg.com/@firebase/analytics/-/analytics-0.6.0.tgz#49f508d3f9f419f08c503f1171ef5fa1c3ba52eb" + integrity sha512-6qYEOPUVYrMhqvJ46Z5Uf1S4uULd6d7vGpMP5Qz+u8kIWuOQGcPdJKQap+Hla6Rq164or9gC2HRXuYXKlgWfpw== + dependencies: + "@firebase/analytics-types" "0.4.0" + "@firebase/component" "0.1.19" + "@firebase/installations" "0.4.17" + "@firebase/logger" "0.2.6" + "@firebase/util" "0.3.2" + tslib "^1.11.1" + +"@firebase/app-types@0.6.1": + version "0.6.1" + resolved "https://registry.yarnpkg.com/@firebase/app-types/-/app-types-0.6.1.tgz#dcbd23030a71c0c74fc95d4a3f75ba81653850e9" + integrity sha512-L/ZnJRAq7F++utfuoTKX4CLBG5YR7tFO3PLzG1/oXXKEezJ0kRL3CMRoueBEmTCzVb/6SIs2Qlaw++uDgi5Xyg== + +"@firebase/app@0.6.11": + version "0.6.11" + resolved "https://registry.yarnpkg.com/@firebase/app/-/app-0.6.11.tgz#f73f9e4571ba62f4029d8f9c9880a97e5a94eb1d" + integrity sha512-FH++PaoyTzfTAVuJ0gITNYEIcjT5G+D0671La27MU8Vvr6MTko+5YUZ4xS9QItyotSeRF4rMJ1KR7G8LSyySiA== + dependencies: + "@firebase/app-types" "0.6.1" + "@firebase/component" "0.1.19" + "@firebase/logger" "0.2.6" + "@firebase/util" "0.3.2" + dom-storage "2.1.0" + tslib "^1.11.1" + xmlhttprequest "1.8.0" + +"@firebase/auth-interop-types@0.1.5": + version "0.1.5" + resolved "https://registry.yarnpkg.com/@firebase/auth-interop-types/-/auth-interop-types-0.1.5.tgz#9fc9bd7c879f16b8d1bb08373a0f48c3a8b74557" + integrity sha512-88h74TMQ6wXChPA6h9Q3E1Jg6TkTHep2+k63OWg3s0ozyGVMeY+TTOti7PFPzq5RhszQPQOoCi59es4MaRvgCw== + +"@firebase/auth-types@0.10.1": + version "0.10.1" + resolved "https://registry.yarnpkg.com/@firebase/auth-types/-/auth-types-0.10.1.tgz#7815e71c9c6f072034415524b29ca8f1d1770660" + integrity sha512-/+gBHb1O9x/YlG7inXfxff/6X3BPZt4zgBv4kql6HEmdzNQCodIRlEYnI+/da+lN+dha7PjaFH7C7ewMmfV7rw== + +"@firebase/auth@0.15.0": + version "0.15.0" + resolved "https://registry.yarnpkg.com/@firebase/auth/-/auth-0.15.0.tgz#45d6def6d6d9444432c005710df442991828275f" + integrity sha512-IFuzhxS+HtOQl7+SZ/Mhaghy/zTU7CENsJFWbC16tv2wfLZbayKF5jYGdAU3VFLehgC8KjlcIWd10akc3XivfQ== + dependencies: + "@firebase/auth-types" "0.10.1" + +"@firebase/component@0.1.19": + version "0.1.19" + resolved "https://registry.yarnpkg.com/@firebase/component/-/component-0.1.19.tgz#bd2ac601652c22576b574c08c40da245933dbac7" + integrity sha512-L0S3g8eqaerg8y0zox3oOHSTwn/FE8RbcRHiurnbESvDViZtP5S5WnhuAPd7FnFxa8ElWK0z1Tr3ikzWDv1xdQ== + dependencies: + "@firebase/util" "0.3.2" + tslib "^1.11.1" + +"@firebase/database-types@0.5.2": + version "0.5.2" + resolved "https://registry.yarnpkg.com/@firebase/database-types/-/database-types-0.5.2.tgz#23bec8477f84f519727f165c687761e29958b63c" + integrity sha512-ap2WQOS3LKmGuVFKUghFft7RxXTyZTDr0Xd8y2aqmWsbJVjgozi0huL/EUMgTjGFrATAjcf2A7aNs8AKKZ2a8g== + dependencies: + "@firebase/app-types" "0.6.1" + +"@firebase/database@0.6.13": + version "0.6.13" + resolved "https://registry.yarnpkg.com/@firebase/database/-/database-0.6.13.tgz#b96fe0c53757dd6404ee085fdcb45c0f9f525c17" + integrity sha512-NommVkAPzU7CKd1gyehmi3lz0K78q0KOfiex7Nfy7MBMwknLm7oNqKovXSgQV1PCLvKXvvAplDSFhDhzIf9obA== + dependencies: + "@firebase/auth-interop-types" "0.1.5" + "@firebase/component" "0.1.19" + "@firebase/database-types" "0.5.2" + "@firebase/logger" "0.2.6" + "@firebase/util" "0.3.2" + faye-websocket "0.11.3" + tslib "^1.11.1" + +"@firebase/firestore-types@1.14.0": + version "1.14.0" + resolved "https://registry.yarnpkg.com/@firebase/firestore-types/-/firestore-types-1.14.0.tgz#4516249d3c181849fd3c856831944dbd5c8c55fc" + integrity sha512-WF8IBwHzZDhwyOgQnmB0pheVrLNP78A8PGxk1nxb/Nrgh1amo4/zYvFMGgSsTeaQK37xMYS/g7eS948te/dJxw== + +"@firebase/firestore@1.18.0": + version "1.18.0" + resolved "https://registry.yarnpkg.com/@firebase/firestore/-/firestore-1.18.0.tgz#3430e8c60d3e6be1d174b3a258838b1944c93a4d" + integrity sha512-maMq4ltkrwjDRusR2nt0qS4wldHQMp+0IDSfXIjC+SNmjnWY/t/+Skn9U3Po+dB38xpz3i7nsKbs+8utpDnPSw== + dependencies: + "@firebase/component" "0.1.19" + "@firebase/firestore-types" "1.14.0" + "@firebase/logger" "0.2.6" + "@firebase/util" "0.3.2" + "@firebase/webchannel-wrapper" "0.4.0" + "@grpc/grpc-js" "^1.0.0" + "@grpc/proto-loader" "^0.5.0" + node-fetch "2.6.1" + tslib "^1.11.1" + +"@firebase/functions-types@0.3.17": + version "0.3.17" + resolved "https://registry.yarnpkg.com/@firebase/functions-types/-/functions-types-0.3.17.tgz#348bf5528b238eeeeeae1d52e8ca547b21d33a94" + integrity sha512-DGR4i3VI55KnYk4IxrIw7+VG7Q3gA65azHnZxo98Il8IvYLr2UTBlSh72dTLlDf25NW51HqvJgYJDKvSaAeyHQ== + +"@firebase/functions@0.5.1": + version "0.5.1" + resolved "https://registry.yarnpkg.com/@firebase/functions/-/functions-0.5.1.tgz#fa0568bdcdf7dfa7e5f4f66c1e06e376dc7e25b6" + integrity sha512-yyjPZXXvzFPjkGRSqFVS5Hc2Y7Y48GyyMH+M3i7hLGe69r/59w6wzgXKqTiSYmyE1pxfjxU4a1YqBDHNkQkrYQ== + dependencies: + "@firebase/component" "0.1.19" + "@firebase/functions-types" "0.3.17" + "@firebase/messaging-types" "0.5.0" + node-fetch "2.6.1" + tslib "^1.11.1" + +"@firebase/installations-types@0.3.4": + version "0.3.4" + resolved "https://registry.yarnpkg.com/@firebase/installations-types/-/installations-types-0.3.4.tgz#589a941d713f4f64bf9f4feb7f463505bab1afa2" + integrity sha512-RfePJFovmdIXb6rYwtngyxuEcWnOrzdZd9m7xAW0gRxDIjBT20n3BOhjpmgRWXo/DAxRmS7bRjWAyTHY9cqN7Q== + +"@firebase/installations@0.4.17": + version "0.4.17" + resolved "https://registry.yarnpkg.com/@firebase/installations/-/installations-0.4.17.tgz#1367b721e2c6c4880646bbc4f257e8616986a004" + integrity sha512-AE/TyzIpwkC4UayRJD419xTqZkKzxwk0FLht3Dci8WI2OEKHSwoZG9xv4hOBZebe+fDzoV2EzfatQY8c/6Avig== + dependencies: + "@firebase/component" "0.1.19" + "@firebase/installations-types" "0.3.4" + "@firebase/util" "0.3.2" + idb "3.0.2" + tslib "^1.11.1" + +"@firebase/logger@0.2.6": + version "0.2.6" + resolved "https://registry.yarnpkg.com/@firebase/logger/-/logger-0.2.6.tgz#3aa2ca4fe10327cabf7808bd3994e88db26d7989" + integrity sha512-KIxcUvW/cRGWlzK9Vd2KB864HlUnCfdTH0taHE0sXW5Xl7+W68suaeau1oKNEqmc3l45azkd4NzXTCWZRZdXrw== + +"@firebase/messaging-types@0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@firebase/messaging-types/-/messaging-types-0.5.0.tgz#c5d0ef309ced1758fda93ef3ac70a786de2e73c4" + integrity sha512-QaaBswrU6umJYb/ZYvjR5JDSslCGOH6D9P136PhabFAHLTR4TWjsaACvbBXuvwrfCXu10DtcjMxqfhdNIB1Xfg== + +"@firebase/messaging@0.7.1": + version "0.7.1" + resolved "https://registry.yarnpkg.com/@firebase/messaging/-/messaging-0.7.1.tgz#debbe7eb17c5b789231da6c166c506e19ecf1ed4" + integrity sha512-iev/ST9v0xd/8YpGYrZtDcqdD9J6ZWzSuceRn8EKy5vIgQvW/rk2eTQc8axzvDpQ36ZfphMYuhW6XuNrR3Pd2Q== + dependencies: + "@firebase/component" "0.1.19" + "@firebase/installations" "0.4.17" + "@firebase/messaging-types" "0.5.0" + "@firebase/util" "0.3.2" + idb "3.0.2" + tslib "^1.11.1" + +"@firebase/performance-types@0.0.13": + version "0.0.13" + resolved "https://registry.yarnpkg.com/@firebase/performance-types/-/performance-types-0.0.13.tgz#58ce5453f57e34b18186f74ef11550dfc558ede6" + integrity sha512-6fZfIGjQpwo9S5OzMpPyqgYAUZcFzZxHFqOyNtorDIgNXq33nlldTL/vtaUZA8iT9TT5cJlCrF/jthKU7X21EA== + +"@firebase/performance@0.4.2": + version "0.4.2" + resolved "https://registry.yarnpkg.com/@firebase/performance/-/performance-0.4.2.tgz#d5f134674b429d095ce0edfb50fcb4ab279c3cbe" + integrity sha512-irHTCVWJ/sxJo0QHg+yQifBeVu8ZJPihiTqYzBUz/0AGc51YSt49FZwqSfknvCN2+OfHaazz/ARVBn87g7Ex8g== + dependencies: + "@firebase/component" "0.1.19" + "@firebase/installations" "0.4.17" + "@firebase/logger" "0.2.6" + "@firebase/performance-types" "0.0.13" + "@firebase/util" "0.3.2" + tslib "^1.11.1" + +"@firebase/polyfill@0.3.36": + version "0.3.36" + resolved "https://registry.yarnpkg.com/@firebase/polyfill/-/polyfill-0.3.36.tgz#c057cce6748170f36966b555749472b25efdb145" + integrity sha512-zMM9oSJgY6cT2jx3Ce9LYqb0eIpDE52meIzd/oe/y70F+v9u1LDqk5kUF5mf16zovGBWMNFmgzlsh6Wj0OsFtg== + dependencies: + core-js "3.6.5" + promise-polyfill "8.1.3" + whatwg-fetch "2.0.4" + +"@firebase/remote-config-types@0.1.9": + version "0.1.9" + resolved "https://registry.yarnpkg.com/@firebase/remote-config-types/-/remote-config-types-0.1.9.tgz#fe6bbe4d08f3b6e92fce30e4b7a9f4d6a96d6965" + integrity sha512-G96qnF3RYGbZsTRut7NBX0sxyczxt1uyCgXQuH/eAfUCngxjEGcZQnBdy6mvSdqdJh5mC31rWPO4v9/s7HwtzA== + +"@firebase/remote-config@0.1.28": + version "0.1.28" + resolved "https://registry.yarnpkg.com/@firebase/remote-config/-/remote-config-0.1.28.tgz#1c39916446f1ed82b4c07e556455bd232fcfd8e1" + integrity sha512-4zSdyxpt94jAnFhO8toNjG8oMKBD+xTuBIcK+Nw8BdQWeJhEamgXlupdBARUk1uf3AvYICngHH32+Si/dMVTbw== + dependencies: + "@firebase/component" "0.1.19" + "@firebase/installations" "0.4.17" + "@firebase/logger" "0.2.6" + "@firebase/remote-config-types" "0.1.9" + "@firebase/util" "0.3.2" + tslib "^1.11.1" + +"@firebase/storage-types@0.3.13": + version "0.3.13" + resolved "https://registry.yarnpkg.com/@firebase/storage-types/-/storage-types-0.3.13.tgz#cd43e939a2ab5742e109eb639a313673a48b5458" + integrity sha512-pL7b8d5kMNCCL0w9hF7pr16POyKkb3imOW7w0qYrhBnbyJTdVxMWZhb0HxCFyQWC0w3EiIFFmxoz8NTFZDEFog== + +"@firebase/storage@0.3.43": + version "0.3.43" + resolved "https://registry.yarnpkg.com/@firebase/storage/-/storage-0.3.43.tgz#107fb5db2eff2561b5c4e35ee4cbff48f28c7e77" + integrity sha512-Jp54jcuyimLxPhZHFVAhNbQmgTu3Sda7vXjXrNpPEhlvvMSq4yuZBR6RrZxe/OrNVprLHh/6lTCjwjOVSo3bWA== + dependencies: + "@firebase/component" "0.1.19" + "@firebase/storage-types" "0.3.13" + "@firebase/util" "0.3.2" + tslib "^1.11.1" + +"@firebase/util@0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@firebase/util/-/util-0.3.2.tgz#87de27f9cffc2324651cabf6ec133d0a9eb21b52" + integrity sha512-Dqs00++c8rwKky6KCKLLY2T1qYO4Q+X5t+lF7DInXDNF4ae1Oau35bkD+OpJ9u7l1pEv7KHowP6CUKuySCOc8g== + dependencies: + tslib "^1.11.1" + +"@firebase/webchannel-wrapper@0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.4.0.tgz#becce788818d3f47f0ac1a74c3c061ac1dcf4f6d" + integrity sha512-8cUA/mg0S+BxIZ72TdZRsXKBP5n5uRcE3k29TZhZw6oIiHBt9JA7CTb/4pE1uKtE/q5NeTY2tBDcagoZ+1zjXQ== + +"@graphql-tools/batch-execute@8.5.1": + version "8.5.1" + resolved "https://registry.yarnpkg.com/@graphql-tools/batch-execute/-/batch-execute-8.5.1.tgz#fa3321d58c64041650be44250b1ebc3aab0ba7a9" + integrity sha512-hRVDduX0UDEneVyEWtc2nu5H2PxpfSfM/riUlgZvo/a/nG475uyehxR5cFGvTEPEQUKY3vGIlqvtRigzqTfCew== + dependencies: + "@graphql-tools/utils" "8.9.0" + dataloader "2.1.0" + tslib "^2.4.0" + value-or-promise "1.0.11" + +"@graphql-tools/delegate@^8.4.3": + version "8.8.1" + resolved "https://registry.yarnpkg.com/@graphql-tools/delegate/-/delegate-8.8.1.tgz#0653a72f38947f38ab7917dfac50ebf6a6b883e9" + integrity sha512-NDcg3GEQmdEHlnF7QS8b4lM1PSF+DKeFcIlLEfZFBvVq84791UtJcDj8734sIHLukmyuAxXMfA1qLd2l4lZqzA== + dependencies: + "@graphql-tools/batch-execute" "8.5.1" + "@graphql-tools/schema" "8.5.1" + "@graphql-tools/utils" "8.9.0" + dataloader "2.1.0" + tslib "~2.4.0" + value-or-promise "1.0.11" + +"@graphql-tools/merge@8.3.1": + version "8.3.1" + resolved "https://registry.yarnpkg.com/@graphql-tools/merge/-/merge-8.3.1.tgz#06121942ad28982a14635dbc87b5d488a041d722" + integrity sha512-BMm99mqdNZbEYeTPK3it9r9S6rsZsQKtlqJsSBknAclXq2pGEfOxjcIZi+kBSkHZKPKCRrYDd5vY0+rUmIHVLg== + dependencies: + "@graphql-tools/utils" "8.9.0" + tslib "^2.4.0" + +"@graphql-tools/merge@8.3.6": + version "8.3.6" + resolved "https://registry.yarnpkg.com/@graphql-tools/merge/-/merge-8.3.6.tgz#97a936d4c8e8f935e58a514bb516c476437b5b2c" + integrity sha512-uUBokxXi89bj08P+iCvQk3Vew4vcfL5ZM6NTylWi8PIpoq4r5nJ625bRuN8h2uubEdRiH8ntN9M4xkd/j7AybQ== + dependencies: + "@graphql-tools/utils" "8.12.0" + tslib "^2.4.0" + +"@graphql-tools/mock@^8.1.2": + version "8.7.6" + resolved "https://registry.yarnpkg.com/@graphql-tools/mock/-/mock-8.7.6.tgz#701d898f7fe6c22e40d6d80e25874e464359ce11" + integrity sha512-cQGPyY6dF4x28552zjAg9En2WWVury62u1/xzipCNUSCdKRVOsAupTNBcAGdMjsKPLcGzzk1cPA8dP0DUfNqzg== + dependencies: + "@graphql-tools/schema" "9.0.4" + "@graphql-tools/utils" "8.12.0" + fast-json-stable-stringify "^2.1.0" + tslib "^2.4.0" + +"@graphql-tools/schema@8.5.1", "@graphql-tools/schema@^8.0.0", "@graphql-tools/schema@^8.3.1": + version "8.5.1" + resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-8.5.1.tgz#c2f2ff1448380919a330312399c9471db2580b58" + integrity sha512-0Esilsh0P/qYcB5DKQpiKeQs/jevzIadNTaT0jeWklPMwNbT7yMX4EqZany7mbeRRlSRwMzNzL5olyFdffHBZg== + dependencies: + "@graphql-tools/merge" "8.3.1" + "@graphql-tools/utils" "8.9.0" + tslib "^2.4.0" + value-or-promise "1.0.11" + +"@graphql-tools/schema@9.0.4": + version "9.0.4" + resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-9.0.4.tgz#1a74608b57abf90fae6fd929d25e5482c57bc05d" + integrity sha512-B/b8ukjs18fq+/s7p97P8L1VMrwapYc3N2KvdG/uNThSazRRn8GsBK0Nr+FH+mVKiUfb4Dno79e3SumZVoHuOQ== + dependencies: + "@graphql-tools/merge" "8.3.6" + "@graphql-tools/utils" "8.12.0" + tslib "^2.4.0" + value-or-promise "1.0.11" + +"@graphql-tools/utils@8.12.0": + version "8.12.0" + resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-8.12.0.tgz#243bc4f5fc2edbc9e8fd1038189e57d837cbe31f" + integrity sha512-TeO+MJWGXjUTS52qfK4R8HiPoF/R7X+qmgtOYd8DTH0l6b+5Y/tlg5aGeUJefqImRq7nvi93Ms40k/Uz4D5CWw== + dependencies: + tslib "^2.4.0" + +"@graphql-tools/utils@8.9.0": + version "8.9.0" + resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-8.9.0.tgz#c6aa5f651c9c99e1aca55510af21b56ec296cdb7" + integrity sha512-pjJIWH0XOVnYGXCqej8g/u/tsfV4LvLlj0eATKQu5zwnxd/TiTHq7Cg313qUPTFFHZ3PP5wJ15chYVtLDwaymg== + dependencies: + tslib "^2.4.0" + +"@grpc/grpc-js@^1.0.0": + version "1.6.8" + resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.6.8.tgz#77cc8b2d841c34dea8b105d45ff1732caefae4f2" + integrity sha512-Nt5tufF/O5Q310kP0cDzxznWMZW58GCTZhUUiAQ9B0K0ANKNQ4Lj/K9XK0vZg+UBKq5/7z7+8mXHHfrcwoeFJQ== + dependencies: + "@grpc/proto-loader" "^0.7.0" + "@types/node" ">=12.12.47" + +"@grpc/proto-loader@^0.5.0": + version "0.5.6" + resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.5.6.tgz#1dea4b8a6412b05e2d58514d507137b63a52a98d" + integrity sha512-DT14xgw3PSzPxwS13auTEwxhMMOoz33DPUKNtmYK/QYbBSpLXJy78FGGs5yVoxVobEqPm4iW9MOIoz0A3bLTRQ== + dependencies: + lodash.camelcase "^4.3.0" + protobufjs "^6.8.6" + +"@grpc/proto-loader@^0.7.0": + version "0.7.0" + resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.7.0.tgz#743cc8a941cc251620c66ebe0d330e1411a33535" + integrity sha512-SGPZtVmqOvNfPFOA/nNPn+0Weqa5wubBgQ56+JgTbeLY2VezwtMjwPPFzh0kvQccwWT3a2TXT0ZGK/pJoOTk1A== + dependencies: + "@types/long" "^4.0.1" + lodash.camelcase "^4.3.0" + long "^4.0.0" + protobufjs "^7.0.0" + yargs "^16.2.0" + +"@harmony-js/account@0.1.56": + version "0.1.56" + resolved "https://registry.yarnpkg.com/@harmony-js/account/-/account-0.1.56.tgz#74d008d199b81af6bd554a6cc455c882e85d61e7" + integrity sha512-VX3+NAirUxxowAc2QBuKEpHSN0XGYHqogYIf63XGFfg2BACS3RdN/tkJTzPPyIPejEKC3yDylm5c+8NzmsOjhQ== + dependencies: + "@harmony-js/core" "0.1.56" + "@harmony-js/crypto" "0.1.56" + "@harmony-js/network" "0.1.56" + "@harmony-js/staking" "0.1.56" + "@harmony-js/transaction" "0.1.56" + "@harmony-js/utils" "0.1.56" + +"@harmony-js/account@0.1.57": + version "0.1.57" + resolved "https://registry.yarnpkg.com/@harmony-js/account/-/account-0.1.57.tgz#d6e1e4955658ab25e89f512e12d9d9ecd28c738d" + integrity sha512-2Q0aX49m9IDDf9AvQHEgnxVBfvQ4wnXJqMo1y3g+9VuoyibNLFy/7GRwywwjrKTtfERXegTGHdZYo/CCO0PrpQ== + dependencies: + "@harmony-js/core" "0.1.57" + "@harmony-js/crypto" "0.1.56" + "@harmony-js/network" "0.1.56" + "@harmony-js/staking" "0.1.56" + "@harmony-js/transaction" "0.1.56" + "@harmony-js/utils" "0.1.56" + +"@harmony-js/contract@0.1.56": + version "0.1.56" + resolved "https://registry.yarnpkg.com/@harmony-js/contract/-/contract-0.1.56.tgz#cfe8ffca6332008137f248d5bce59c4f3c5f22f3" + integrity sha512-4yKBjUtMkiaMvhwbEFps7qZV/NIWRgkJuO2yZYsqbkzdFf3eMXXrq60HpDZcWhNf+rsL0VpDso9i09mW+DDZJQ== + dependencies: + "@harmony-js/account" "0.1.56" + "@harmony-js/crypto" "0.1.56" + "@harmony-js/network" "0.1.56" + "@harmony-js/transaction" "0.1.56" + "@harmony-js/utils" "0.1.56" + +"@harmony-js/core@0.1.56": + version "0.1.56" + resolved "https://registry.yarnpkg.com/@harmony-js/core/-/core-0.1.56.tgz#52c986c0ecfa881b57aaeb0448ae92d2d30c3f18" + integrity sha512-mYVIewX2oL0PHZJU64HD65M/QMA756d19MosATRqbfj8MLLgdMdTuXHF525NWDRxBiYlSh6BGSNJakNbtq8g3Q== + dependencies: + "@harmony-js/account" "0.1.56" + "@harmony-js/contract" "0.1.56" + "@harmony-js/crypto" "0.1.56" + "@harmony-js/network" "0.1.56" + "@harmony-js/staking" "0.1.56" + "@harmony-js/transaction" "0.1.56" + "@harmony-js/utils" "0.1.56" + +"@harmony-js/core@0.1.57", "@harmony-js/core@^0.1.57": + version "0.1.57" + resolved "https://registry.yarnpkg.com/@harmony-js/core/-/core-0.1.57.tgz#bf10eb017f0086868fa8aefab097894e7b36acb3" + integrity sha512-4d48MoR/3xabsoiV0fXjVwtL4u9AeNO72+UZWSZl2ZzrPvij2ucn14wvIZwCL69xJwD4bsqgy68Ju+DRLFVW3A== + dependencies: + "@harmony-js/account" "0.1.57" + "@harmony-js/contract" "0.1.56" + "@harmony-js/crypto" "0.1.56" + "@harmony-js/network" "0.1.56" + "@harmony-js/staking" "0.1.56" + "@harmony-js/transaction" "0.1.56" + "@harmony-js/utils" "0.1.56" + +"@harmony-js/crypto@0.1.56": + version "0.1.56" + resolved "https://registry.yarnpkg.com/@harmony-js/crypto/-/crypto-0.1.56.tgz#62bdd850de8b98df6049bd2c43e096113852287d" + integrity sha512-JMOWte8d3HXO2b038MqQpZ6al6OHsB9aZTretuzijxwrOIOdPKu9sDNHhmyJhQTIOKqG2+gErlj9AclZbXGk5g== + dependencies: + "@harmony-js/utils" "0.1.56" + aes-js "^3.1.2" + bip39 "^2.5.0" + bn.js "^4.11.8" + elliptic "^6.4.1" + hdkey "^1.1.1" + hmac-drbg "^1.0.1" + js-sha3 "^0.8.0" + pbkdf2 "^3.0.17" + scrypt-shim "github:web3-js/scrypt-shim" + uuid "^3.3.2" + +"@harmony-js/network@0.1.56": + version "0.1.56" + resolved "https://registry.yarnpkg.com/@harmony-js/network/-/network-0.1.56.tgz#86d08923d5963fb8ad15cb3beb85de045afd9969" + integrity sha512-ItwgvQPjcFyVKKa1mFAqRMno6yyp1cjM2UNIdHOHtWG+H8BgObcw2ZM4LJpAPVF/XSoaTcZZwfB2hD7zOFnnYQ== + dependencies: + "@harmony-js/utils" "0.1.56" + cross-fetch "^3.0.2" + mitt "^1.2.0" + websocket "^1.0.28" + +"@harmony-js/staking@0.1.56": + version "0.1.56" + resolved "https://registry.yarnpkg.com/@harmony-js/staking/-/staking-0.1.56.tgz#34a0c873760b54f68c1301aa2567572d338b8810" + integrity sha512-i0tliihg/7llJNp3uMjW5NZjJzLGz9iIESA4ST/cD2yT3KeRviwmlQPVf4uZpxIlmGgtk/oR4tLPLzmZEgSTOw== + dependencies: + "@harmony-js/crypto" "0.1.56" + "@harmony-js/network" "0.1.56" + "@harmony-js/transaction" "0.1.56" + "@harmony-js/utils" "0.1.56" + text-encoding "^0.7.0" + +"@harmony-js/transaction@0.1.56": + version "0.1.56" + resolved "https://registry.yarnpkg.com/@harmony-js/transaction/-/transaction-0.1.56.tgz#6b68607ccd83b0d9c1871dbaf5bfdb5152203e7f" + integrity sha512-+eX1+xBGsi6aGMyeZf7cvd2gncItPPifP7Hyjh9wNxbpyxpgBLvVnhD8hGaUQ6MJ9xJkFeWfkQPduEQBsCZj7A== + dependencies: + "@harmony-js/crypto" "0.1.56" + "@harmony-js/network" "0.1.56" + "@harmony-js/utils" "0.1.56" + +"@harmony-js/utils@0.1.56", "@harmony-js/utils@^0.1.56": + version "0.1.56" + resolved "https://registry.yarnpkg.com/@harmony-js/utils/-/utils-0.1.56.tgz#89d77d07989ecfb5679776917f2b78b7b698c854" + integrity sha512-XoYYIMoK/mSxPkxFd25dY/wScIWWevoTrHoFdlFd8N7GWlilfdgQEF5vO+4BA6hyDJ4ryfdLnGc6W6Hz+5qs2A== + dependencies: + "@types/bn.js" "^4.11.3" + bn.js "^4.11.8" + +"@humanwhocodes/config-array@^0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" + integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== + dependencies: + "@humanwhocodes/object-schema" "^1.2.0" + debug "^4.1.1" + minimatch "^3.0.4" + +"@humanwhocodes/object-schema@^1.2.0": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== + +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + +"@istanbuljs/schema@^0.1.2": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + +"@jest/console@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.9.0.tgz#79b1bc06fb74a8cfb01cbdedf945584b1b9707f0" + integrity sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ== + dependencies: + "@jest/source-map" "^24.9.0" + chalk "^2.0.1" + slash "^2.0.0" + +"@jest/console@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.5.1.tgz#260fe7239602fe5130a94f1aa386eff54b014bba" + integrity sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg== + dependencies: + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^27.5.1" + jest-util "^27.5.1" + slash "^3.0.0" + +"@jest/core@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.5.1.tgz#267ac5f704e09dc52de2922cbf3af9edcd64b626" + integrity sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ== + dependencies: + "@jest/console" "^27.5.1" + "@jest/reporters" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + emittery "^0.8.1" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-changed-files "^27.5.1" + jest-config "^27.5.1" + jest-haste-map "^27.5.1" + jest-message-util "^27.5.1" + jest-regex-util "^27.5.1" + jest-resolve "^27.5.1" + jest-resolve-dependencies "^27.5.1" + jest-runner "^27.5.1" + jest-runtime "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + jest-validate "^27.5.1" + jest-watcher "^27.5.1" + micromatch "^4.0.4" + rimraf "^3.0.0" + slash "^3.0.0" + strip-ansi "^6.0.0" + +"@jest/environment@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.5.1.tgz#d7425820511fe7158abbecc010140c3fd3be9c74" + integrity sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA== + dependencies: + "@jest/fake-timers" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + jest-mock "^27.5.1" + +"@jest/fake-timers@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.5.1.tgz#76979745ce0579c8a94a4678af7a748eda8ada74" + integrity sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ== + dependencies: + "@jest/types" "^27.5.1" + "@sinonjs/fake-timers" "^8.0.1" + "@types/node" "*" + jest-message-util "^27.5.1" + jest-mock "^27.5.1" + jest-util "^27.5.1" + +"@jest/globals@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.5.1.tgz#7ac06ce57ab966566c7963431cef458434601b2b" + integrity sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/types" "^27.5.1" + expect "^27.5.1" + +"@jest/reporters@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.5.1.tgz#ceda7be96170b03c923c37987b64015812ffec04" + integrity sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.2" + graceful-fs "^4.2.9" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^5.1.0" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.1.3" + jest-haste-map "^27.5.1" + jest-resolve "^27.5.1" + jest-util "^27.5.1" + jest-worker "^27.5.1" + slash "^3.0.0" + source-map "^0.6.0" + string-length "^4.0.1" + terminal-link "^2.0.0" + v8-to-istanbul "^8.1.0" + +"@jest/source-map@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.9.0.tgz#0e263a94430be4b41da683ccc1e6bffe2a191714" + integrity sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg== + dependencies: + callsites "^3.0.0" + graceful-fs "^4.1.15" + source-map "^0.6.0" + +"@jest/source-map@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.5.1.tgz#6608391e465add4205eae073b55e7f279e04e8cf" + integrity sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg== + dependencies: + callsites "^3.0.0" + graceful-fs "^4.2.9" + source-map "^0.6.0" + +"@jest/test-result@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.9.0.tgz#11796e8aa9dbf88ea025757b3152595ad06ba0ca" + integrity sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA== + dependencies: + "@jest/console" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/istanbul-lib-coverage" "^2.0.0" + +"@jest/test-result@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.5.1.tgz#56a6585fa80f7cdab72b8c5fc2e871d03832f5bb" + integrity sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag== + dependencies: + "@jest/console" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + +"@jest/test-sequencer@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz#4057e0e9cea4439e544c6353c6affe58d095745b" + integrity sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ== + dependencies: + "@jest/test-result" "^27.5.1" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-runtime "^27.5.1" + +"@jest/transform@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.5.1.tgz#6c3501dcc00c4c08915f292a600ece5ecfe1f409" + integrity sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw== + dependencies: + "@babel/core" "^7.1.0" + "@jest/types" "^27.5.1" + babel-plugin-istanbul "^6.1.1" + chalk "^4.0.0" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-regex-util "^27.5.1" + jest-util "^27.5.1" + micromatch "^4.0.4" + pirates "^4.0.4" + slash "^3.0.0" + source-map "^0.6.1" + write-file-atomic "^3.0.0" + +"@jest/types@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.9.0.tgz#63cb26cb7500d069e5a389441a7c6ab5e909fc59" + integrity sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^1.1.1" + "@types/yargs" "^13.0.0" + +"@jest/types@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80" + integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^16.0.0" + chalk "^4.0.0" + +"@josephg/resolvable@^1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@josephg/resolvable/-/resolvable-1.0.1.tgz#69bc4db754d79e1a2f17a650d3466e038d94a5eb" + integrity sha512-CtzORUwWTTOTqfVtHaKRJ0I1kNQd1bpn3sUh8I3nJDVY+5/M/Oe1DnEWzPQvqq/xPIIkzzzIP7mfCoAjFRvDhg== + +"@jridgewell/gen-mapping@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" + integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== + dependencies: + "@jridgewell/set-array" "^1.0.0" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@jridgewell/gen-mapping@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" + integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@^3.0.3": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== + +"@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.14" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== + +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@jridgewell/trace-mapping@^0.3.9": + version "0.3.14" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz#b231a081d8f66796e475ad588a1ef473112701ed" + integrity sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@metamask/eth-sig-util@^4.0.0": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz#3ad61f6ea9ad73ba5b19db780d40d9aae5157088" + integrity sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ== + dependencies: + ethereumjs-abi "^0.6.8" + ethereumjs-util "^6.2.1" + ethjs-util "^0.1.6" + tweetnacl "^1.0.3" + tweetnacl-util "^0.15.1" + +"@mrmlnc/readdir-enhanced@^2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" + integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== + dependencies: + call-me-maybe "^1.0.1" + glob-to-regexp "^0.3.0" + +"@noble/hashes@1.1.2", "@noble/hashes@~1.1.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.1.2.tgz#e9e035b9b166ca0af657a7848eb2718f0f22f183" + integrity sha512-KYRCASVTv6aeUi1tsF8/vpyR7zpfs3FUzy2Jqm+MU+LmUKhQ0y2FpfwqkCcxSg2ua4GALJd8k2R76WxwZGbQpA== + +"@noble/hashes@^1", "@noble/hashes@^1.0.0": + version "1.1.4" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.1.4.tgz#2611ebf5764c1bf754da7c7794de4fb30512336d" + integrity sha512-+PYsVPrTSqtVjatKt2A/Proukn2Yrz61OBThOCKErc5w2/r1Fh37vbDv0Eah7pyNltrmacjwTvdw3JoR+WE4TA== + +"@noble/secp256k1@1.6.3", "@noble/secp256k1@~1.6.0": + version "1.6.3" + resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.6.3.tgz#7eed12d9f4404b416999d0c87686836c4c5c9b94" + integrity sha512-T04e4iTurVy7I8Sw4+c5OSN9/RkPlo1uKxAomtxQNLq8j1uPAqnsqG1bqvY3Jv7c13gyr6dui0zmh/I3+f/JaQ== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.stat@^1.1.2": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" + integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@nomiclabs/hardhat-ethers@^2.0.6": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.1.0.tgz#9b7dc94d669ad9dc286b94f6f2f1513118c7027b" + integrity sha512-vlW90etB3675QWG7tMrHaDoTa7ymMB7irM4DAQ98g8zJoe9YqEggeDnbO6v5b+BLth/ty4vN6Ko/kaqRN1krHw== + +"@openzeppelin/cli@^2.8.2": + version "2.8.2" + resolved "https://registry.yarnpkg.com/@openzeppelin/cli/-/cli-2.8.2.tgz#b569c55f8c291ac4c7a16ca1b584ee2b4063a7f2" + integrity sha512-K0m1UAywnweAwzbwwmqI+JSezDRnqDRWkKQMI2VV6T03LOXcG/L9oqO9KRORI8md+KbxBW9v5rmNV63wGQIRlA== + dependencies: + "@openzeppelin/fuzzy-solidity-import-parser" "^0.1.2" + "@openzeppelin/upgrades" "2.8.0" + "@types/fs-extra" "^7.0.0" + "@types/npm" "^2.0.29" + "@types/semver" "^5.5.0" + ajv "^6.10.0" + axios "^0.18.0" + bignumber.js "^8.0.2" + chalk "^2.4.1" + cheerio "^1.0.0-rc.2" + commander "^2.15.1" + env-paths "^2.2.0" + ethereumjs-util "^6.1.0" + find-up "^3.0.0" + firebase "^7.8.0" + fs-extra "^7.0.1" + glob "^7.1.6" + inquirer "^6.4.1" + is-url "^1.2.4" + lockfile "^1.0.4" + npm-programmatic "0.0.12" + rlp "^2.2.3" + semver "^5.5.0" + simple-git "^1.110.0" + solc-wrapper "^0.6.3" + spinnies "^0.3.0" + toposort "^2.0.2" + truffle-config "1.1.16" + ts-generator "^0.0.8" + typechain "^1.0.3" + typechain-target-truffle "^1.0.1" + typechain-target-web3-v1 "^1.0.1" + underscore "^1.9.1" + uuid "^3.3.3" + web3 "1.2.2" + web3-eth "1.2.2" + web3-eth-contract "1.2.2" + web3-utils "1.2.2" + +"@openzeppelin/contracts@3.4.1-solc-0.7-2": + version "3.4.1-solc-0.7-2" + resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-3.4.1-solc-0.7-2.tgz#371c67ebffe50f551c3146a9eec5fe6ffe862e92" + integrity sha512-tAG9LWg8+M2CMu7hIsqHPaTyG4uDzjr6mhvH96LvOpLZZj6tgzTluBt+LsCf1/QaYrlis6pITvpIaIhE+iZB+Q== + +"@openzeppelin/contracts@3.4.2-solc-0.7": + version "3.4.2-solc-0.7" + resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-3.4.2-solc-0.7.tgz#38f4dbab672631034076ccdf2f3201fab1726635" + integrity sha512-W6QmqgkADuFcTLzHL8vVoNBtkwjvQRpYIAom7KiUNoLKghyx3FgH0GBjt8NRvigV1ZmMOBllvE1By1C+bi8WpA== + +"@openzeppelin/fuzzy-solidity-import-parser@^0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@openzeppelin/fuzzy-solidity-import-parser/-/fuzzy-solidity-import-parser-0.1.2.tgz#3b9f524d6028ca73df60474a313e0295e5610c51" + integrity sha512-leqEwfs8GlrPDrVcVc8Hv6LJ62ZzR0RgjwQNCkpT6H5jW9RB8YdR0a3inHoricSvw+sKI1b1hOqsCtPPZNnhng== + +"@openzeppelin/upgrades@2.8.0": + version "2.8.0" + resolved "https://registry.yarnpkg.com/@openzeppelin/upgrades/-/upgrades-2.8.0.tgz#8086ab9c99d9f8dac7205030b0f9e7e4a280c4a3" + integrity sha512-LzjTQPeljPsgHDPdZyH9cMCbIHZILgd2cpNcYEkdsC2IylBYRHShlbEDXJV9snnqg9JWfzPiKIqyj3XVliwtqQ== + dependencies: + "@types/cbor" "^2.0.0" + axios "^0.18.0" + bignumber.js "^7.2.0" + cbor "^4.1.5" + chalk "^2.4.1" + ethers "^4.0.20" + glob "^7.1.3" + lodash "^4.17.15" + semver "^5.5.1" + spinnies "^0.4.2" + truffle-flattener "^1.4.0" + web3 "1.2.2" + web3-eth "1.2.2" + web3-eth-contract "1.2.2" + web3-utils "1.2.2" + +"@pancakeswap-libs/pancake-swap-core@^0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@pancakeswap-libs/pancake-swap-core/-/pancake-swap-core-0.1.0.tgz#6957f1fa02170531a2ffbf95f2c0e145e9d21bc2" + integrity sha512-2jYiD1Ec3xAbP4JTa/Ozylx0xI4VwC7diCm5ak4AtGrIRhfRLSanaZSQdVpLigUnIFszma/4nVWtt3cup4Poxw== + dependencies: + truffle "^5.1.41" + truffle-flattener "^1.4.4" + truffle-hdwallet-provider "^1.0.17" + +"@pancakeswap/sdk@^2.4.5": + version "2.4.5" + resolved "https://registry.yarnpkg.com/@pancakeswap/sdk/-/sdk-2.4.5.tgz#783c02efc7ca89d2297b0b07040639d90c3e610d" + integrity sha512-qfHOPGXitDQ5y1dmYloe6UQe/0Ki0enow4MLtr5W49Jl7ZXr8oB6XV7usYtT63R7vqLSKY83rd8Wyw18vxP7dA== + dependencies: + big.js "^5.2.2" + decimal.js-light "^2.5.0" + jsbi "^3.1.4" + tiny-invariant "^1.1.0" + tiny-warning "^1.0.3" + toformat "^2.0.0" + +"@pangolindex/exchange-contracts@^1.0.1": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@pangolindex/exchange-contracts/-/exchange-contracts-1.0.2.tgz#2d5be49d9e63a311cb3c2de53b21815923b3a996" + integrity sha512-G0imyN39C/vGX1VT/dn5do9SB8rJjRViT4p76KbseKNZ2wPChtFsz6yRFkqEJjeDRvqhBk7TZZlPGcbNvz/mBA== + dependencies: + hardhat-tracer "^1.0.0-alpha.5" + +"@pangolindex/sdk@^1.1.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@pangolindex/sdk/-/sdk-1.5.0.tgz#5b51d76775b2e6fc23aa82264dea291fc12fbd8a" + integrity sha512-b/OLh0wGygl/6unrlJ1VtzepV9DpeNz/ifNVsQOkDUZFlGQT3Gv6DvSXWJelYKPUSK24ZPoNXbu0bvqHfnjhIg== + dependencies: + "@pangolindex/exchange-contracts" "^1.0.1" + big.js "^5.2.2" + decimal.js-light "^2.5.0" + jsbi "^3.1.1" + tiny-invariant "^1.1.0" + tiny-warning "^1.0.3" + toformat "^2.0.0" + +"@perp/curie-deployments@2022.10.5-1664940982527": + version "2022.10.5-1664940982527" + resolved "https://registry.yarnpkg.com/@perp/curie-deployments/-/curie-deployments-2022.10.5-1664940982527.tgz#ce191ad969b9e88a939fcae8409968d41665b0c2" + integrity sha512-07fv7vu8okF/9GevvOKoeUhOJqQNPAvOSdLj1DBffPtuq/dnUfP5Ck/CJopIm+FjRJVer8VX3Nx7IdQEo/nhBw== + +"@perp/sdk-curie@^1.16.0": + version "1.16.0" + resolved "https://registry.yarnpkg.com/@perp/sdk-curie/-/sdk-curie-1.16.0.tgz#a1de23339865648d901fb515822ee90567d67c85" + integrity sha512-MNaA2AkLdjm9tLTHuElxytbc43vcVBGLqM8TDtLMpvcMv3ALPp4l30hxF0LuEhGm2zvWB/9s1FDLpuM23Mbrbw== + dependencies: + "@perp/curie-deployments" "2022.10.5-1664940982527" + cross-fetch "3.1.5" + exponential-backoff "3.1.0" + +"@project-serum/anchor@^0.11.1": + version "0.11.1" + resolved "https://registry.yarnpkg.com/@project-serum/anchor/-/anchor-0.11.1.tgz#155bff2c70652eafdcfd5559c81a83bb19cec9ff" + integrity sha512-oIdm4vTJkUy6GmE6JgqDAuQPKI7XM4TPJkjtoIzp69RZe0iAD9JP2XHx7lV1jLdYXeYHqDXfBt3zcq7W91K6PA== + dependencies: + "@project-serum/borsh" "^0.2.2" + "@solana/web3.js" "^1.17.0" + base64-js "^1.5.1" + bn.js "^5.1.2" + bs58 "^4.0.1" + buffer-layout "^1.2.0" + camelcase "^5.3.1" + crypto-hash "^1.3.0" + eventemitter3 "^4.0.7" + find "^0.3.0" + js-sha256 "^0.9.0" + pako "^2.0.3" + snake-case "^3.0.4" + toml "^3.0.0" + +"@project-serum/anchor@^0.21.0": + version "0.21.0" + resolved "https://registry.yarnpkg.com/@project-serum/anchor/-/anchor-0.21.0.tgz#ad5fb33744991ec1900cdb2fd22707c908b12b5f" + integrity sha512-flRuW/F+iC8mitNokx82LOXyND7Dyk6n5UUPJpQv/+NfySFrNFlzuQZaBZJ4CG5g9s8HS/uaaIz1nVkDR8V/QA== + dependencies: + "@project-serum/borsh" "^0.2.4" + "@solana/web3.js" "^1.17.0" + base64-js "^1.5.1" + bn.js "^5.1.2" + bs58 "^4.0.1" + buffer-layout "^1.2.2" + camelcase "^5.3.1" + cross-fetch "^3.1.5" + crypto-hash "^1.3.0" + eventemitter3 "^4.0.7" + find "^0.3.0" + js-sha256 "^0.9.0" + pako "^2.0.3" + snake-case "^3.0.4" + toml "^3.0.0" + +"@project-serum/borsh@^0.2.2", "@project-serum/borsh@^0.2.4": + version "0.2.5" + resolved "https://registry.yarnpkg.com/@project-serum/borsh/-/borsh-0.2.5.tgz#6059287aa624ecebbfc0edd35e4c28ff987d8663" + integrity sha512-UmeUkUoKdQ7rhx6Leve1SssMR/Ghv8qrEiyywyxSWg7ooV7StdpPBhciiy5eB3T0qU1BXvdRNC8TdrkxK7WC5Q== + dependencies: + bn.js "^5.1.2" + buffer-layout "^1.2.0" + +"@project-serum/serum@^0.13.65": + version "0.13.65" + resolved "https://registry.yarnpkg.com/@project-serum/serum/-/serum-0.13.65.tgz#6d3cf07912f13985765237f053cca716fe84b0b0" + integrity sha512-BHRqsTqPSfFB5p+MgI2pjvMBAQtO8ibTK2fYY96boIFkCI3TTwXDt2gUmspeChKO2pqHr5aKevmexzAcXxrSRA== + dependencies: + "@project-serum/anchor" "^0.11.1" + "@solana/spl-token" "^0.1.6" + "@solana/web3.js" "^1.21.0" + bn.js "^5.1.2" + buffer-layout "^1.2.0" + +"@project-serum/sol-wallet-adapter@^0.2.0": + version "0.2.6" + resolved "https://registry.yarnpkg.com/@project-serum/sol-wallet-adapter/-/sol-wallet-adapter-0.2.6.tgz#b4cd25a566294354427c97c26d716112b91a0107" + integrity sha512-cpIb13aWPW8y4KzkZAPDgw+Kb+DXjCC6rZoH74MGm3I/6e/zKyGnfAuW5olb2zxonFqsYgnv7ev8MQnvSgJ3/g== + dependencies: + bs58 "^4.0.1" + eventemitter3 "^4.0.7" + +"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" + integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ== + +"@protobufjs/base64@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" + integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== + +"@protobufjs/codegen@^2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" + integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== + +"@protobufjs/eventemitter@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" + integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q== + +"@protobufjs/fetch@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" + integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ== + dependencies: + "@protobufjs/aspromise" "^1.1.1" + "@protobufjs/inquire" "^1.1.0" + +"@protobufjs/float@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" + integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ== + +"@protobufjs/inquire@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" + integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q== + +"@protobufjs/path@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" + integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA== + +"@protobufjs/pool@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" + integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw== + +"@protobufjs/utf8@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" + integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== + +"@redux-saga/core@^1.0.0": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@redux-saga/core/-/core-1.2.1.tgz#3680989621517d075a2cc85e0d2744b682990ed8" + integrity sha512-ABCxsZy9DwmNoYNo54ZlfuTvh77RXx8ODKpxOHeWam2dOaLGQ7vAktpfOtqSeTdYrKEORtTeWnxkGJMmPOoukg== + dependencies: + "@babel/runtime" "^7.6.3" + "@redux-saga/deferred" "^1.2.1" + "@redux-saga/delay-p" "^1.2.1" + "@redux-saga/is" "^1.1.3" + "@redux-saga/symbols" "^1.1.3" + "@redux-saga/types" "^1.2.1" + redux "^4.0.4" + typescript-tuple "^2.2.1" + +"@redux-saga/deferred@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@redux-saga/deferred/-/deferred-1.2.1.tgz#aca373a08ccafd6f3481037f2f7ee97f2c87c3ec" + integrity sha512-cmin3IuuzMdfQjA0lG4B+jX+9HdTgHZZ+6u3jRAOwGUxy77GSlTi4Qp2d6PM1PUoTmQUR5aijlA39scWWPF31g== + +"@redux-saga/delay-p@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@redux-saga/delay-p/-/delay-p-1.2.1.tgz#e72ac4731c5080a21f75b61bedc31cb639d9e446" + integrity sha512-MdiDxZdvb1m+Y0s4/hgdcAXntpUytr9g0hpcOO1XFVyyzkrDu3SKPgBFOtHn7lhu7n24ZKIAT1qtKyQjHqRd+w== + dependencies: + "@redux-saga/symbols" "^1.1.3" + +"@redux-saga/is@^1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@redux-saga/is/-/is-1.1.3.tgz#b333f31967e87e32b4e6b02c75b78d609dd4ad73" + integrity sha512-naXrkETG1jLRfVfhOx/ZdLj0EyAzHYbgJWkXbB3qFliPcHKiWbv/ULQryOAEKyjrhiclmr6AMdgsXFyx7/yE6Q== + dependencies: + "@redux-saga/symbols" "^1.1.3" + "@redux-saga/types" "^1.2.1" + +"@redux-saga/symbols@^1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@redux-saga/symbols/-/symbols-1.1.3.tgz#b731d56201719e96dc887dc3ae9016e761654367" + integrity sha512-hCx6ZvU4QAEUojETnX8EVg4ubNLBFl1Lps4j2tX7o45x/2qg37m3c6v+kSp8xjDJY+2tJw4QB3j8o8dsl1FDXg== + +"@redux-saga/types@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@redux-saga/types/-/types-1.2.1.tgz#9403f51c17cae37edf870c6bc0c81c1ece5ccef8" + integrity sha512-1dgmkh+3so0+LlBWRhGA33ua4MYr7tUOj+a9Si28vUi0IUFNbff1T3sgpeDJI/LaC75bBYnQ0A3wXjn0OrRNBA== + +"@resolver-engine/core@^0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@resolver-engine/core/-/core-0.2.1.tgz#0d71803f6d3b8cb2e9ed481a1bf0ca5f5256d0c0" + integrity sha512-nsLQHmPJ77QuifqsIvqjaF5B9aHnDzJjp73Q1z6apY3e9nqYrx4Dtowhpsf7Jwftg/XzVDEMQC+OzUBNTS+S1A== + dependencies: + debug "^3.1.0" + request "^2.85.0" + +"@resolver-engine/fs@^0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@resolver-engine/fs/-/fs-0.2.1.tgz#f98a308d77568cc02651d03636f46536b941b241" + integrity sha512-7kJInM1Qo2LJcKyDhuYzh9ZWd+mal/fynfL9BNjWOiTcOpX+jNfqb/UmGUqros5pceBITlWGqS4lU709yHFUbg== + dependencies: + "@resolver-engine/core" "^0.2.1" + debug "^3.1.0" + +"@resolver-engine/imports-fs@^0.2.2": + version "0.2.2" + resolved "https://registry.yarnpkg.com/@resolver-engine/imports-fs/-/imports-fs-0.2.2.tgz#5a81ef3285dbf0411ab3b15205080a1ad7622d9e" + integrity sha512-gFCgMvCwyppjwq0UzIjde/WI+yDs3oatJhozG9xdjJdewwtd7LiF0T5i9lrHAUtqrQbqoFE4E+ZMRVHWpWHpKQ== + dependencies: + "@resolver-engine/fs" "^0.2.1" + "@resolver-engine/imports" "^0.2.2" + debug "^3.1.0" + +"@resolver-engine/imports@^0.2.2": + version "0.2.2" + resolved "https://registry.yarnpkg.com/@resolver-engine/imports/-/imports-0.2.2.tgz#d3de55a1bb5f3beb7703fdde743298f321175843" + integrity sha512-u5/HUkvo8q34AA+hnxxqqXGfby5swnH0Myw91o3Sm2TETJlNKXibFGSKBavAH+wvWdBi4Z5gS2Odu0PowgVOUg== + dependencies: + "@resolver-engine/core" "^0.2.1" + debug "^3.1.0" + hosted-git-info "^2.6.0" + +"@scure/base@~1.1.0": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.1.tgz#ebb651ee52ff84f420097055f4bf46cfba403938" + integrity sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA== + +"@scure/bip32@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.1.0.tgz#dea45875e7fbc720c2b4560325f1cf5d2246d95b" + integrity sha512-ftTW3kKX54YXLCxH6BB7oEEoJfoE2pIgw7MINKAs5PsS6nqKPuKk1haTF/EuHmYqG330t5GSrdmtRuHaY1a62Q== + dependencies: + "@noble/hashes" "~1.1.1" + "@noble/secp256k1" "~1.6.0" + "@scure/base" "~1.1.0" + +"@scure/bip39@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.1.0.tgz#92f11d095bae025f166bef3defcc5bf4945d419a" + integrity sha512-pwrPOS16VeTKg98dYXQyIjJEcWfz7/1YJIwxUEPFfQPtc86Ym/1sVgQ2RLoD43AazMk2l/unK4ITySSpW2+82w== + dependencies: + "@noble/hashes" "~1.1.1" + "@scure/base" "~1.1.0" + +"@sentry/core@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-5.30.0.tgz#6b203664f69e75106ee8b5a2fe1d717379b331f3" + integrity sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg== + dependencies: + "@sentry/hub" "5.30.0" + "@sentry/minimal" "5.30.0" + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + tslib "^1.9.3" + +"@sentry/hub@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-5.30.0.tgz#2453be9b9cb903404366e198bd30c7ca74cdc100" + integrity sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ== + dependencies: + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + tslib "^1.9.3" + +"@sentry/minimal@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-5.30.0.tgz#ce3d3a6a273428e0084adcb800bc12e72d34637b" + integrity sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw== + dependencies: + "@sentry/hub" "5.30.0" + "@sentry/types" "5.30.0" + tslib "^1.9.3" + +"@sentry/node@^5.18.1": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/node/-/node-5.30.0.tgz#4ca479e799b1021285d7fe12ac0858951c11cd48" + integrity sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg== + dependencies: + "@sentry/core" "5.30.0" + "@sentry/hub" "5.30.0" + "@sentry/tracing" "5.30.0" + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + cookie "^0.4.1" + https-proxy-agent "^5.0.0" + lru_map "^0.3.3" + tslib "^1.9.3" + +"@sentry/tracing@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-5.30.0.tgz#501d21f00c3f3be7f7635d8710da70d9419d4e1f" + integrity sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw== + dependencies: + "@sentry/hub" "5.30.0" + "@sentry/minimal" "5.30.0" + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + tslib "^1.9.3" + +"@sentry/types@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-5.30.0.tgz#19709bbe12a1a0115bc790b8942917da5636f402" + integrity sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw== + +"@sentry/utils@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-5.30.0.tgz#9a5bd7ccff85ccfe7856d493bffa64cabc41e980" + integrity sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww== + dependencies: + "@sentry/types" "5.30.0" + tslib "^1.9.3" + +"@sindresorhus/is@^0.14.0": + version "0.14.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" + integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== + +"@sindresorhus/is@^4.6.0": + version "4.6.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" + integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== + +"@sinonjs/commons@^1.7.0": + version "1.8.3" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" + integrity sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^8.0.1": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz#3fdc2b6cb58935b21bfb8d1625eb1300484316e7" + integrity sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg== + dependencies: + "@sinonjs/commons" "^1.7.0" + +"@solana/buffer-layout@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@solana/buffer-layout/-/buffer-layout-4.0.0.tgz#75b1b11adc487234821c81dfae3119b73a5fd734" + integrity sha512-lR0EMP2HC3+Mxwd4YcnZb0smnaDw7Bl2IQWZiTevRH5ZZBZn6VRWn3/92E3qdU4SSImJkA6IDHawOHAnx/qUvQ== + dependencies: + buffer "~6.0.3" + +"@solana/spl-token@^0.1.6": + version "0.1.8" + resolved "https://registry.yarnpkg.com/@solana/spl-token/-/spl-token-0.1.8.tgz#f06e746341ef8d04165e21fc7f555492a2a0faa6" + integrity sha512-LZmYCKcPQDtJgecvWOgT/cnoIQPWjdH+QVyzPcFvyDUiT0DiRjZaam4aqNUyvchLFhzgunv3d9xOoyE34ofdoQ== + dependencies: + "@babel/runtime" "^7.10.5" + "@solana/web3.js" "^1.21.0" + bn.js "^5.1.0" + buffer "6.0.3" + buffer-layout "^1.2.0" + dotenv "10.0.0" + +"@solana/web3.js@^1.17.0", "@solana/web3.js@^1.21.0", "@solana/web3.js@^1.43.5": + version "1.50.1" + resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.50.1.tgz#dae726a06267d1bcd88b1e3cd8ae44c709302dcf" + integrity sha512-1l9N/nS8pJEA2YibNT8wa072718O0/A1eKWE0+pdWC5wDGQgBNxZSLuv7Cq5Dcn46WsZ5J5ZstK89q8J/ZZaQA== + dependencies: + "@babel/runtime" "^7.12.5" + "@ethersproject/sha2" "^5.5.0" + "@solana/buffer-layout" "^4.0.0" + bigint-buffer "^1.1.5" + bn.js "^5.0.0" + borsh "^0.7.0" + bs58 "^4.0.1" + buffer "6.0.1" + fast-stable-stringify "^1.0.0" + jayson "^3.4.4" + js-sha3 "^0.8.0" + node-fetch "2" + react-native-url-polyfill "^1.3.0" + rpc-websockets "^7.5.0" + secp256k1 "^4.0.2" + superstruct "^0.14.2" + tweetnacl "^1.0.0" + +"@solidity-parser/parser@^0.14.1", "@solidity-parser/parser@^0.14.2": + version "0.14.3" + resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.14.3.tgz#0d627427b35a40d8521aaa933cc3df7d07bfa36f" + integrity sha512-29g2SZ29HtsqA58pLCtopI1P/cPy5/UAzlcAXO6T/CNJimG6yA8kx4NaseMyJULiC+TEs02Y9/yeHzClqoA0hw== + dependencies: + antlr4ts "^0.5.0-alpha.4" + +"@sushiswap/core@^2.0.0-canary.1": + version "2.0.0-canary.1" + resolved "https://registry.yarnpkg.com/@sushiswap/core/-/core-2.0.0-canary.1.tgz#91c938668282d463e4fce6e0cf4d320ce5f3768f" + integrity sha512-6YFT4EKgm0XgfwCBsKx5HrDtRI6EvhZHipjBKegdTV0b2zKuXnmdyZ+RwPCr0mCKq2pKB0qIiqCxfbgXYDlLCQ== + +"@sushiswap/sdk@^5.0.0-canary.116": + version "5.0.0-canary.116" + resolved "https://registry.yarnpkg.com/@sushiswap/sdk/-/sdk-5.0.0-canary.116.tgz#cdf303590dc0a174a0332c76b15ee8a0d92a8e4f" + integrity sha512-EC25LvMGIyhmMJr2vbJ1HWFSUgKHq7IJp+Esemokx1RIdyrkW2Hwo4RWSzkAzWG4+lDJC/aI79iH4riiEk5tng== + dependencies: + "@ethersproject/abi" "^5.4.0" + "@ethersproject/abstract-signer" "^5.4.0" + "@ethersproject/address" "^5.4.0" + "@ethersproject/bignumber" "^5.4.0" + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/contracts" "^5.4.0" + "@ethersproject/experimental" "^5.4.0" + "@ethersproject/networks" "^5.4.0" + "@ethersproject/providers" "^5.4.0" + "@ethersproject/signing-key" "^5.4.0" + "@ethersproject/solidity" "^5.4.0" + "@ethersproject/transactions" "^5.4.0" + "@sushiswap/core" "^2.0.0-canary.1" + big.js "^6.1.0" + decimal.js-light "^2.5.0" + eip-712 "^0.4.3" + isomorphic-unfetch "^3.1.0" + jsbi "^4.1.0" + tiny-invariant "^1.1.0" + tiny-warning "^1.0.3" + toformat "^2.0.0" + +"@switchboard-xyz/defikingdoms-sdk@^1.0.7": + version "1.0.7" + resolved "https://registry.yarnpkg.com/@switchboard-xyz/defikingdoms-sdk/-/defikingdoms-sdk-1.0.7.tgz#9c7c9e30f82c6504af478699db71779b2e0ca914" + integrity sha512-1QppBzxlGymUyY7Jf/Rskp+7+TY6J0HlutnEuCqMPDLiBbI6HJtVE1yJIGR+mP4w3korrbB22XD7PGsT6GIBLw== + dependencies: + "@ethersproject/address" "^5.0.0-beta" + "@ethersproject/contracts" "^5.0.0-beta" + "@ethersproject/networks" "^5.0.0-beta" + "@ethersproject/providers" "^5.0.0-beta" + "@ethersproject/solidity" "^5.0.0-beta" + big.js "^5.2.2" + decimal.js-light "^2.5.0" + jsbi "^3.1.1" + tiny-invariant "^1.1.0" + tiny-warning "^1.0.3" + toformat "^2.0.0" + +"@szmarczak/http-timer@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" + integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== + dependencies: + defer-to-connect "^1.0.1" + +"@szmarczak/http-timer@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-5.0.1.tgz#c7c1bf1141cdd4751b0399c8fc7b8b664cd5be3a" + integrity sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw== + dependencies: + defer-to-connect "^2.0.1" + +"@tootallnate/once@1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" + integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== + +"@traderjoe-xyz/sdk@^1.6.1": + version "1.6.4" + resolved "https://registry.yarnpkg.com/@traderjoe-xyz/sdk/-/sdk-1.6.4.tgz#a0382bd891f9f684d0df87f2b0012063809e78c7" + integrity sha512-hLfAa9SdSABql6cSN3VW+E+AIfY8RWBSBHeJvokX82RXciD2buRirWiqbECcbDVR/moMKdOFWfqQ4Qz3NYIgFA== + dependencies: + "@openzeppelin/cli" "^2.8.2" + "@uniswap/v2-core" "^1.0.1" + big.js "^5.2.2" + decimal.js-light "^2.5.0" + jsbi "^3.1.1" + tiny-invariant "^1.1.0" + tiny-warning "^1.0.3" + toformat "^2.0.0" + +"@truffle/abi-utils@^0.3.3": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@truffle/abi-utils/-/abi-utils-0.3.3.tgz#4484489b160ad35aa0716427c73de10ebed40146" + integrity sha512-/KpaaPi0daffnwLhFulMtwdQ7YfZZtj24J34kZJi7OQw9x0dSNSskGFTU5SEv9d3fOfHNYqCevsqtv1zek0+zg== + dependencies: + change-case "3.0.2" + fast-check "3.1.1" + web3-utils "1.7.4" + +"@truffle/code-utils@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@truffle/code-utils/-/code-utils-3.0.0.tgz#47812cdaa6ede006d4f224c3f4d21d165a271e0a" + integrity sha512-MHUrOAZYlbmVp+9W2Mmw6vaLteWolkn6AF5iiKUr/j42Bon6CU5gNnc1gvdVoNdO/xsrqKqyoloYNgtZLgMldg== + dependencies: + cbor "^5.2.0" + +"@truffle/codec@^0.14.7": + version "0.14.7" + resolved "https://registry.yarnpkg.com/@truffle/codec/-/codec-0.14.7.tgz#2f7d2916f428be5da7a82559356c8570898e5cd9" + integrity sha512-qEbnghn/q3+hKoaRIlXfcdty0jhA1CcvWxjCgwOxEBVOGEBazjentyCzTGkrxyL9I4q1VDqk5Bmxl8umotzRTg== + dependencies: + "@truffle/abi-utils" "^0.3.3" + "@truffle/compile-common" "^0.9.0" + big.js "^6.0.3" + bn.js "^5.1.3" + cbor "^5.2.0" + debug "^4.3.1" + lodash "^4.17.21" + semver "7.3.7" + utf8 "^3.0.0" + web3-utils "1.7.4" + +"@truffle/compile-common@^0.9.0": + version "0.9.0" + resolved "https://registry.yarnpkg.com/@truffle/compile-common/-/compile-common-0.9.0.tgz#92ed5f91820b56e15604818464fa3803c6da13e7" + integrity sha512-kpTTU/7ZlQedH6cemCgrqXL4sUjsWAPj7X4LaqQ+KSna3egNJZ6wrKt2kpSYPpCpLihq2IpcBwWar3dTPZ7a5Q== + dependencies: + "@truffle/error" "^0.1.1" + colors "1.4.0" + +"@truffle/config@^1.3.40": + version "1.3.40" + resolved "https://registry.yarnpkg.com/@truffle/config/-/config-1.3.40.tgz#278a1b7cc4ab2af1c360df77b0c187425e4cb74d" + integrity sha512-4QWHZDPg4/YbJNdViYYJnNWR/XKmdQzff+4jUqpyFbeeW35NIvhTOVAbIiwnijjSZJ7PgNggploHI49Y3R+ohA== + dependencies: + "@truffle/error" "^0.1.1" + "@truffle/events" "^0.1.15" + "@truffle/provider" "^0.2.62" + conf "^10.1.2" + find-up "^2.1.0" + lodash "^4.17.21" + original-require "^1.0.1" + +"@truffle/dashboard-message-bus-client@^0.1.7": + version "0.1.7" + resolved "https://registry.yarnpkg.com/@truffle/dashboard-message-bus-client/-/dashboard-message-bus-client-0.1.7.tgz#62e71123eb2cc1e4dce0b1664a9455b3207c77da" + integrity sha512-7F62gQl5K1MIwVk5+dO9FeHD4zblty0jfTjKBMsdDZEd4yazzS2n2QOzxnPsjxvthX1oPPLRxK+VrN9c/3+VTw== + dependencies: + "@truffle/dashboard-message-bus-common" "^0.1.4" + "@truffle/promise-tracker" "^0.1.4" + axios "0.27.2" + debug "^4.3.1" + delay "^5.0.0" + isomorphic-ws "^4.0.1" + node-abort-controller "^3.0.1" + tiny-typed-emitter "^2.1.0" + ws "^7.2.0" + +"@truffle/dashboard-message-bus-common@^0.1.4": + version "0.1.4" + resolved "https://registry.yarnpkg.com/@truffle/dashboard-message-bus-common/-/dashboard-message-bus-common-0.1.4.tgz#f5b5326eb4774d5d209c310c135309f4b3f42bea" + integrity sha512-R+16jYcr/mxhz5pI+0GAJI14XUvYySLTB650kWubMBrVf4vi4QaIOdAOrx4KxAIA6e/5Nq9j0le59Y2c+xAHYg== + +"@truffle/db-loader@^0.2.2": + version "0.2.2" + resolved "https://registry.yarnpkg.com/@truffle/db-loader/-/db-loader-0.2.2.tgz#6e6ac597060b1d3c46aecbae1d6bcfc3163fd15a" + integrity sha512-kkUTBsCku0kmOcFd25tIcOaVshzPnfaxmJb20/NwOZEGnEyrpzdXRaNLPLBOUVASvWk57tlLmfR9R+7mDLSvLg== + optionalDependencies: + "@truffle/db" "^2.0.2" + +"@truffle/db@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@truffle/db/-/db-2.0.2.tgz#c8324909d8a6d01fc5b81ee93c0e21cb5575b4eb" + integrity sha512-9bScL0XJnh046ifTvUVhLTaqSN3BdXZHQ+pVxwde2JZ+FRcpjTsSk735u8WFU4VVlJbcy3lmL18CL+kBzfLL8A== + dependencies: + "@graphql-tools/delegate" "^8.4.3" + "@graphql-tools/schema" "^8.3.1" + "@truffle/abi-utils" "^0.3.3" + "@truffle/code-utils" "^3.0.0" + "@truffle/config" "^1.3.40" + abstract-leveldown "^7.2.0" + apollo-server "^3.6.3" + debug "^4.3.1" + fs-extra "^9.1.0" + graphql "^15.3.0" + graphql-tag "^2.12.6" + json-stable-stringify "^1.0.1" + pascal-case "^2.0.1" + pluralize "^8.0.0" + pouchdb "7.3.0" + pouchdb-adapter-memory "^7.1.1" + pouchdb-debug "^7.1.1" + pouchdb-find "^7.0.0" + web3-utils "1.7.4" + +"@truffle/debugger@^11.0.13": + version "11.0.13" + resolved "https://registry.yarnpkg.com/@truffle/debugger/-/debugger-11.0.13.tgz#21a49c9ff733be5509c920b85c8feafdecef31bf" + integrity sha512-s8ZUkmZ/xQDbAapYf7iunb1W0tM+ZrAqf+y/S0E9H+xAf+INY9FLPfUxS0soOjbzKMIgp/1XZ8mF/tP/MeMmpA== + dependencies: + "@truffle/abi-utils" "^0.3.3" + "@truffle/codec" "^0.14.7" + "@truffle/source-map-utils" "^1.3.98" + bn.js "^5.1.3" + debug "^4.3.1" + json-pointer "^0.6.1" + json-stable-stringify "^1.0.1" + lodash "^4.17.21" + redux "^3.7.2" + redux-saga "1.0.0" + reselect-tree "^1.3.7" + semver "7.3.7" + web3 "1.7.4" + web3-eth-abi "1.7.4" + +"@truffle/error@^0.0.6": + version "0.0.6" + resolved "https://registry.yarnpkg.com/@truffle/error/-/error-0.0.6.tgz#75d499845b4b3a40537889e7d04c663afcaee85d" + integrity sha512-QUM9ZWiwlXGixFGpV18g5I6vua6/r+ZV9W/5DQA5go9A3eZUNPHPaTKMIQPJLYn6+ZV5jg5H28zCHq56LHF3yA== + +"@truffle/error@^0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@truffle/error/-/error-0.1.1.tgz#e52026ac8ca7180d83443dca73c03e07ace2a301" + integrity sha512-sE7c9IHIGdbK4YayH4BC8i8qMjoAOeg6nUXUDZZp8wlU21/EMpaG+CLx+KqcIPyR+GSWIW3Dm0PXkr2nlggFDA== + +"@truffle/events@^0.1.15": + version "0.1.15" + resolved "https://registry.yarnpkg.com/@truffle/events/-/events-0.1.15.tgz#d2dbcb2494804d9cbc80d7ab3a1624bfd86239a2" + integrity sha512-GP0WFayhgzFT1vu9LAYJOzbOnEV7PWdkzrMrjYPv5biQQLcchCNNuIyuarflFZZ/08wpEjvy2F4FHj/RJXRdkQ== + dependencies: + "@truffle/dashboard-message-bus-client" "^0.1.7" + "@truffle/spinners" "^0.2.2" + debug "^4.3.1" + emittery "^0.4.1" + web3-utils "1.7.4" + +"@truffle/interface-adapter@^0.5.23": + version "0.5.23" + resolved "https://registry.yarnpkg.com/@truffle/interface-adapter/-/interface-adapter-0.5.23.tgz#a4103270e3c73746089b9e5807aaa1359f4725bb" + integrity sha512-nU8kChKgcUP+tELId1PMgHnmd2KcBdBer59TxfVqAZXRmt6blm2tpBbGYtKzTIdZlf6kMqVbZXdB6u1CJDqfxg== + dependencies: + bn.js "^5.1.3" + ethers "^4.0.32" + web3 "1.7.4" + +"@truffle/promise-tracker@^0.1.4": + version "0.1.4" + resolved "https://registry.yarnpkg.com/@truffle/promise-tracker/-/promise-tracker-0.1.4.tgz#6f9d019b048a78b6d024bf2967e24dfa8c3a164d" + integrity sha512-JqsZZXWXUnrF+zsU2jf12BXyVYAHQj0iJck7EyTsdy9Wdx1aSsqX9Cnc6U274Xk0xNXziV+NestyuoF3kHTWiw== + +"@truffle/provider@^0.2.62": + version "0.2.62" + resolved "https://registry.yarnpkg.com/@truffle/provider/-/provider-0.2.62.tgz#bbea5c8df961a2703aff45330cd6dbfe87ae3655" + integrity sha512-MxfUkt+fUO66F1u4wjYu7j8ZZxkodnOALII4CUTd55rTHd0mw0rRtVtYiNAaK+WDljqHb55bc6ecE45ioeTnqA== + dependencies: + "@truffle/error" "^0.1.1" + "@truffle/interface-adapter" "^0.5.23" + debug "^4.3.1" + web3 "1.7.4" + +"@truffle/source-map-utils@^1.3.98": + version "1.3.98" + resolved "https://registry.yarnpkg.com/@truffle/source-map-utils/-/source-map-utils-1.3.98.tgz#a6169b86acf306731365fa41551cbc7d080c048e" + integrity sha512-u3OCqU69CUMhwCb/auE7dklYQPZMuEZ/SeduI/syAq1CVPIy2jHABsEKebL6RUux/HfP9OTC4bc3h/zabDQ3Ww== + dependencies: + "@truffle/code-utils" "^3.0.0" + "@truffle/codec" "^0.14.7" + debug "^4.3.1" + json-pointer "^0.6.1" + node-interval-tree "^1.3.3" + web3-utils "1.7.4" + +"@truffle/spinners@^0.2.2": + version "0.2.2" + resolved "https://registry.yarnpkg.com/@truffle/spinners/-/spinners-0.2.2.tgz#0f69f18f3d8242eb6a9a20497e73e1c97e8ca0ac" + integrity sha512-6srCpV5MykkROtkj+ak5YX0GexAVuw+AB+lZIQxWLGP3i75pfJer7vL2nnqgr0madaAUuIixb7A2NJDFx3lOdg== + dependencies: + "@trufflesuite/spinnies" "^0.1.1" + +"@trufflesuite/bigint-buffer@1.1.10": + version "1.1.10" + resolved "https://registry.yarnpkg.com/@trufflesuite/bigint-buffer/-/bigint-buffer-1.1.10.tgz#a1d9ca22d3cad1a138b78baaf15543637a3e1692" + integrity sha512-pYIQC5EcMmID74t26GCC67946mgTJFiLXOT/BYozgrd4UEY2JHEGLhWi9cMiQCt5BSqFEvKkCHNnoj82SRjiEw== + dependencies: + node-gyp-build "4.4.0" + +"@trufflesuite/spinnies@^0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@trufflesuite/spinnies/-/spinnies-0.1.1.tgz#719230993f55ab39f936ed8778979e7661af188d" + integrity sha512-jltEtmFJj6xmQqr85gP8OqBHCEiId+zw+uAsb3DyLLRD17O6sySW6Afa2Z/jpzSafj+32ssDfLJ+c0of1NLqcA== + dependencies: + chalk "^4.1.2" + cli-cursor "^3.1.0" + strip-ansi "^6.0.0" + +"@tsconfig/node10@^1.0.7": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" + integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== + +"@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + +"@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + +"@tsconfig/node16@^1.0.2": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.3.tgz#472eaab5f15c1ffdd7f8628bd4c4f753995ec79e" + integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== + +"@types/abstract-leveldown@*": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@types/abstract-leveldown/-/abstract-leveldown-7.2.0.tgz#f055979a99f7654e84d6b8e6267419e9c4cfff87" + integrity sha512-q5veSX6zjUy/DlDhR4Y4cU0k2Ar+DT2LUraP00T19WLmTO6Se1djepCCaqU6nQrwcJ5Hyo/CWqxTzrrFg8eqbQ== + +"@types/accepts@^1.3.5": + version "1.3.5" + resolved "https://registry.yarnpkg.com/@types/accepts/-/accepts-1.3.5.tgz#c34bec115cfc746e04fe5a059df4ce7e7b391575" + integrity sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ== + dependencies: + "@types/node" "*" + +"@types/app-root-path@^1.2.4": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@types/app-root-path/-/app-root-path-1.2.4.tgz#a78b703282b32ac54de768f5512ecc3569919dc7" + integrity sha512-yhURoXmWN/zfw2MXXcOdUTwe5CWhzRWtb4Rs2+JwGpuhm2hxLCzjASi/aIuyVeJB3Iyks1teaHyOEfNNmltdvQ== + +"@types/async-retry@^1.4.2": + version "1.4.4" + resolved "https://registry.yarnpkg.com/@types/async-retry/-/async-retry-1.4.4.tgz#3304ce1e64f8757723f166518fc4c4b68df4fe66" + integrity sha512-IGT+yESLPYje0MV8MfOpT5V5oH9lAKLwlosQRyq75tYJmntkkWcfEThHLxsgYjGmYXJEY7ZZkYPb4xuW+NA6GA== + dependencies: + "@types/retry" "*" + +"@types/await-timeout@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@types/await-timeout/-/await-timeout-0.3.1.tgz#3a0baafc3a96c7a14447a4dcfdcc76b21ce97c3b" + integrity sha512-H5PzROT4KuP7XQDua13Iw8did//OCKAZ/3TL15DjvMzDonrk4HvhH1+tLko96f2guU6XaD3AoqRa49ZOwbwNig== + +"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": + version "7.1.19" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.19.tgz#7b497495b7d1b4812bdb9d02804d0576f43ee460" + integrity sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.6.4" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" + integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" + integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.18.0.tgz#8134fd78cb39567465be65b9fdc16d378095f41f" + integrity sha512-v4Vwdko+pgymgS+A2UIaJru93zQd85vIGWObM5ekZNdXCKtDYqATlEYnWgfo86Q6I1Lh0oXnksDnMU1cwmlPDw== + dependencies: + "@babel/types" "^7.3.0" + +"@types/big.js@^6.1.3": + version "6.1.5" + resolved "https://registry.yarnpkg.com/@types/big.js/-/big.js-6.1.5.tgz#ff06b43a4c0c4002522e0fd7fc28bb963722ab01" + integrity sha512-UiWyJ6TLWoHeHZ8VUyngzCOwJDVxTsPnqfAMR/85X93rkRk5A4T2U42BCx0wCmZdtMHGHN/utJ8ft5xWu0V1bA== + +"@types/big.js@^6.1.5": + version "6.1.6" + resolved "https://registry.yarnpkg.com/@types/big.js/-/big.js-6.1.6.tgz#3d417e758483d55345a03a087f7e0c87137ca444" + integrity sha512-0r9J+Zz9rYm2hOTwiMAVkm3XFQ4u5uTK37xrQMhc9bysn/sf/okzovWMYYIBMFTn/yrEZ11pusgLEaoarTlQbA== + +"@types/bn.js@^4.11.3", "@types/bn.js@^4.11.4": + version "4.11.6" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.6.tgz#c306c70d9358aaea33cd4eda092a742b9505967c" + integrity sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg== + dependencies: + "@types/node" "*" + +"@types/bn.js@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.0.tgz#32c5d271503a12653c62cf4d2b45e6eab8cebc68" + integrity sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA== + dependencies: + "@types/node" "*" + +"@types/bn.js@^5.1.1": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.1.tgz#b51e1b55920a4ca26e9285ff79936bbdec910682" + integrity sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g== + dependencies: + "@types/node" "*" + +"@types/body-parser@*", "@types/body-parser@1.19.2": + version "1.19.2" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" + integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/bs58@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@types/bs58/-/bs58-4.0.1.tgz#3d51222aab067786d3bc3740a84a7f5a0effaa37" + integrity sha512-yfAgiWgVLjFCmRv8zAcOIHywYATEwiTVccTLnRp6UxTNavT55M9d/uhK3T03St/+8/z/wW+CRjGKUNmEqoHHCA== + dependencies: + base-x "^3.0.6" + +"@types/bunyan-blackhole@^0.2.2": + version "0.2.2" + resolved "https://registry.yarnpkg.com/@types/bunyan-blackhole/-/bunyan-blackhole-0.2.2.tgz#469e58c5d129027a9e08bcf9a36232a69b6ad011" + integrity sha512-nbuxFn2FVw1AAT1h6shgluwz1cgpLKaMBYbEZcMU69Jb1UvSsXcwRiIg+FP4+/JjEUp/uPYLC+twWpfCAaVN1g== + dependencies: + "@types/bunyan" "*" + +"@types/bunyan@*", "@types/bunyan@^1.8.6": + version "1.8.8" + resolved "https://registry.yarnpkg.com/@types/bunyan/-/bunyan-1.8.8.tgz#8d6d33f090f37c07e2a80af30ae728450a101008" + integrity sha512-Cblq+Yydg3u+sGiz2mjHjC5MPmdjY+No4qvHrF+BUhblsmSfMvsHLbOG62tPbonsqBj6sbWv1LHcsoe5Jw+/Ow== + dependencies: + "@types/node" "*" + +"@types/cacheable-request@^6.0.2": + version "6.0.2" + resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.2.tgz#c324da0197de0a98a2312156536ae262429ff6b9" + integrity sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA== + dependencies: + "@types/http-cache-semantics" "*" + "@types/keyv" "*" + "@types/node" "*" + "@types/responselike" "*" + +"@types/cbor@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@types/cbor/-/cbor-2.0.0.tgz#c627afc2ee22f23f2337fecb34628a4f97c6afbb" + integrity sha512-yQH0JLcrHrH/GBIFFFq6DAsj9M4rmYsmSpGGGs67JrLGWPepYr2c1YugGjMd2Ib5pebluRAfNPJ4O1p80qX9HQ== + dependencies: + "@types/node" "*" + +"@types/connect@*", "@types/connect@^3.4.33": + version "3.4.35" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" + integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== + dependencies: + "@types/node" "*" + +"@types/cookiejar@*": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@types/cookiejar/-/cookiejar-2.1.2.tgz#66ad9331f63fe8a3d3d9d8c6e3906dd10f6446e8" + integrity sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog== + +"@types/cors@2.8.12": + version "2.8.12" + resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.12.tgz#6b2c510a7ad7039e98e7b8d3d6598f4359e5c080" + integrity sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw== + +"@types/encoding-down@*": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@types/encoding-down/-/encoding-down-5.0.0.tgz#0b5b90b93ac3aa75148f19508044e7bd36463557" + integrity sha512-G0MlS/+/U2RIQLcSEhhAcoMrXw3hXUCFSKbhbeEljoKMra2kq+NPX6tfOveSWQLX2hJXBo+YrvKgAGe+tFL1Aw== + dependencies: + "@types/abstract-leveldown" "*" + "@types/level-codec" "*" + +"@types/express-serve-static-core@4.17.31": + version "4.17.31" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz#a1139efeab4e7323834bb0226e62ac019f474b2f" + integrity sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + +"@types/express-serve-static-core@^4.17.18", "@types/express-serve-static-core@^4.17.9": + version "4.17.30" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.30.tgz#0f2f99617fa8f9696170c46152ccf7500b34ac04" + integrity sha512-gstzbTWro2/nFed1WXtf+TtrpwxH7Ggs4RLYTLbeVgIkUQOI3WG/JKjgeOU1zXDvezllupjrf8OPIdvTbIaVOQ== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + +"@types/express@*", "@types/express@^4.17.12": + version "4.17.13" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.13.tgz#a76e2995728999bab51a33fabce1d705a3709034" + integrity sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.18" + "@types/qs" "*" + "@types/serve-static" "*" + +"@types/express@4.17.14": + version "4.17.14" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.14.tgz#143ea0557249bc1b3b54f15db4c81c3d4eb3569c" + integrity sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.18" + "@types/qs" "*" + "@types/serve-static" "*" + +"@types/fs-extra@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-7.0.0.tgz#9c4ad9e1339e7448a76698829def1f159c1b636c" + integrity sha512-ndoMMbGyuToTy4qB6Lex/inR98nPiNHacsgMPvy+zqMLgSxbt8VtWpDArpGp69h1fEDQHn1KB+9DWD++wgbwYA== + dependencies: + "@types/node" "*" + +"@types/fs-extra@^9.0.13": + version "9.0.13" + resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-9.0.13.tgz#7594fbae04fe7f1918ce8b3d213f74ff44ac1f45" + integrity sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA== + dependencies: + "@types/node" "*" + +"@types/graceful-fs@^4.1.2": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" + integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== + dependencies: + "@types/node" "*" + +"@types/http-cache-semantics@*": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812" + integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ== + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" + integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== + +"@types/istanbul-lib-report@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^1.1.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz#e875cc689e47bce549ec81f3df5e6f6f11cfaeb2" + integrity sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw== + dependencies: + "@types/istanbul-lib-coverage" "*" + "@types/istanbul-lib-report" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" + integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/jest@^27.4.1": + version "27.5.2" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.5.2.tgz#ec49d29d926500ffb9fd22b84262e862049c026c" + integrity sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA== + dependencies: + jest-matcher-utils "^27.0.0" + pretty-format "^27.0.0" + +"@types/js-yaml@^4.0.2": + version "4.0.5" + resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-4.0.5.tgz#738dd390a6ecc5442f35e7f03fa1431353f7e138" + integrity sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA== + +"@types/json-buffer@~3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/json-buffer/-/json-buffer-3.0.0.tgz#85c1ff0f0948fc159810d4b5be35bf8c20875f64" + integrity sha512-3YP80IxxFJB4b5tYC2SUPwkg0XQLiu0nWvhRgEatgjf+29IcWO9X1k8xRv5DGssJ/lCrjYTjQPcobJr2yWIVuQ== + +"@types/json-schema@^7.0.7": + version "7.0.11" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" + integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== + +"@types/keyv@*": + version "3.1.4" + resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" + integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg== + dependencies: + "@types/node" "*" + +"@types/level-codec@*": + version "9.0.1" + resolved "https://registry.yarnpkg.com/@types/level-codec/-/level-codec-9.0.1.tgz#b135e0b3da81185b6f27655334c5f1da89b2b0af" + integrity sha512-6z7DSlBsmbax3I/bV1Q6jT1nKquDjFl95LURVThdKtwILkRawLYtXdINW19xM95N5kqN2detWb2iGrbUlPwNyw== + +"@types/level-errors@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/level-errors/-/level-errors-3.0.0.tgz#15c1f4915a5ef763b51651b15e90f6dc081b96a8" + integrity sha512-/lMtoq/Cf/2DVOm6zE6ORyOM+3ZVm/BvzEZVxUhf6bgh8ZHglXlBqxbxSlJeVp8FCbD3IVvk/VbsaNmDjrQvqQ== + +"@types/level@^6.0.0": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@types/level/-/level-6.0.1.tgz#6642c048dbae4638721105cd5f8255a2829bd5d6" + integrity sha512-4RK6vl9/CNCe5SyDCGaTgTOYEPNh8/wUaUY8UDN8AXon2D7hGPGIlx0t9jCds9wiKBqicsUyeAA0W4rUZeqYBQ== + dependencies: + "@types/abstract-leveldown" "*" + "@types/encoding-down" "*" + "@types/levelup" "*" + +"@types/levelup@*": + version "5.1.2" + resolved "https://registry.yarnpkg.com/@types/levelup/-/levelup-5.1.2.tgz#3b987fe66c95871dc97e74f0bce5b2eb91140782" + integrity sha512-JhCKONvFg2rEbsyyCCRkiPF03tMV1NyBXER4iXKBemgjwS4+SF6HGNuL4cfq6ueM6Yc+4ZbwJnU/5v6q3ZziUQ== + dependencies: + "@types/abstract-leveldown" "*" + "@types/level-errors" "*" + "@types/node" "*" + +"@types/levelup@^4.3.0": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@types/levelup/-/levelup-4.3.3.tgz#4dc2b77db079b1cf855562ad52321aa4241b8ef4" + integrity sha512-K+OTIjJcZHVlZQN1HmU64VtrC0jC3dXWQozuEIR9zVvltIk90zaGPM2AgT+fIkChpzHhFE3YnvFLCbLtzAmexA== + dependencies: + "@types/abstract-leveldown" "*" + "@types/level-errors" "*" + "@types/node" "*" + +"@types/lodash@^4.14.159", "@types/lodash@^4.14.168", "@types/lodash@^4.14.178": + version "4.14.182" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.182.tgz#05301a4d5e62963227eaafe0ce04dd77c54ea5c2" + integrity sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q== + +"@types/lodash@^4.14.182": + version "4.14.186" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.186.tgz#862e5514dd7bd66ada6c70ee5fce844b06c8ee97" + integrity sha512-eHcVlLXP0c2FlMPm56ITode2AgLMSa6aJ05JTTbYbI+7EMkCEE5qk2E41d5g2lCVTqRe0GnnRFurmlCsDODrPw== + +"@types/long@^4.0.0", "@types/long@^4.0.1": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.2.tgz#b74129719fc8d11c01868010082d483b7545591a" + integrity sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA== + +"@types/lru-cache@5.1.1", "@types/lru-cache@^5.1.0": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@types/lru-cache/-/lru-cache-5.1.1.tgz#c48c2e27b65d2a153b19bfc1a317e30872e01eef" + integrity sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw== + +"@types/mathjs@^9.4.2": + version "9.4.2" + resolved "https://registry.yarnpkg.com/@types/mathjs/-/mathjs-9.4.2.tgz#beec20340d768171fed8331b08fb321d218ec6e1" + integrity sha512-GF5g1vJmvKdWIWsE53XX7EDAyCaZ9p6gaYm1xhlXn5JjrY/NJrOfJN3fBxS3wyZpVh3QqKoMkS2WjFwxWMHOTw== + dependencies: + mathjs "*" + +"@types/mime@*": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" + integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== + +"@types/minimist@^1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" + integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== + +"@types/mkdirp@^0.5.2": + version "0.5.2" + resolved "https://registry.yarnpkg.com/@types/mkdirp/-/mkdirp-0.5.2.tgz#503aacfe5cc2703d5484326b1b27efa67a339c1f" + integrity sha512-U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg== + dependencies: + "@types/node" "*" + +"@types/morgan@^1.9.3": + version "1.9.3" + resolved "https://registry.yarnpkg.com/@types/morgan/-/morgan-1.9.3.tgz#ae04180dff02c437312bc0cfb1e2960086b2f540" + integrity sha512-BiLcfVqGBZCyNCnCH3F4o2GmDLrpy0HeBVnNlyZG4fo88ZiE9SoiBe3C+2ezuwbjlEyT+PDZ17//TAlRxAn75Q== + dependencies: + "@types/node" "*" + +"@types/node-fetch@^2.6.1": + version "2.6.2" + resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.2.tgz#d1a9c5fd049d9415dce61571557104dec3ec81da" + integrity sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A== + dependencies: + "@types/node" "*" + form-data "^3.0.0" + +"@types/node@*": + version "17.0.31" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.31.tgz#a5bb84ecfa27eec5e1c802c6bbf8139bdb163a5d" + integrity sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q== + +"@types/node@>=12.12.47", "@types/node@>=13.7.0": + version "18.7.6" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.7.6.tgz#31743bc5772b6ac223845e18c3fc26f042713c83" + integrity sha512-EdxgKRXgYsNITy5mjjXjVE/CS8YENSdhiagGrLqjG0pvA2owgJ6i4l7wy/PFZGC0B1/H20lWKN7ONVDNYDZm7A== + +"@types/node@^10.1.0", "@types/node@^10.12.18", "@types/node@^10.3.2": + version "10.17.60" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.60.tgz#35f3d6213daed95da7f0f73e75bcc6980e90597b" + integrity sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw== + +"@types/node@^12.12.54": + version "12.20.50" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.50.tgz#14ba5198f1754ffd0472a2f84ab433b45ee0b65e" + integrity sha512-+9axpWx2b2JCVovr7Ilgt96uc6C1zBKOQMpGtRbWT9IoR/8ue32GGMfGA4woP8QyP2gBs6GQWEVM3tCybGCxDA== + +"@types/node@^12.12.6", "@types/node@^12.6.1": + version "12.20.55" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" + integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== + +"@types/node@^15.12.4": + version "15.14.9" + resolved "https://registry.yarnpkg.com/@types/node/-/node-15.14.9.tgz#bc43c990c3c9be7281868bbc7b8fdd6e2b57adfa" + integrity sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A== + +"@types/npm@^2.0.29": + version "2.0.32" + resolved "https://registry.yarnpkg.com/@types/npm/-/npm-2.0.32.tgz#036682075b9c2116b510fe24b52a5b932e3a99d5" + integrity sha512-9Lg4woNVzJCtac0lET91H65lbO+8YXfk0nmlmoPGhHXMdaVEDloH6zOPIYMy2n39z/aCXXQR0nax66EDekAyIQ== + dependencies: + "@types/node" "*" + +"@types/pbkdf2@^3.0.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@types/pbkdf2/-/pbkdf2-3.1.0.tgz#039a0e9b67da0cdc4ee5dab865caa6b267bb66b1" + integrity sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ== + dependencies: + "@types/node" "*" + +"@types/prettier@^1.13.2": + version "1.19.1" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-1.19.1.tgz#33509849f8e679e4add158959fdb086440e9553f" + integrity sha512-5qOlnZscTn4xxM5MeGXAMOsIOIKIbh9e85zJWfBRVPlRMEVawzoPhINYbRGkBZCI8LxvBe7tJCdWiarA99OZfQ== + +"@types/prettier@^2.1.5": + version "2.7.0" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.0.tgz#ea03e9f0376a4446f44797ca19d9c46c36e352dc" + integrity sha512-RI1L7N4JnW5gQw2spvL7Sllfuf1SaHdrZpCHiBlCXjIlufi1SMNnbu2teze3/QE67Fg2tBlH7W+mi4hVNk4p0A== + +"@types/qs@*": + version "6.9.7" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" + integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== + +"@types/range-parser@*": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" + integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== + +"@types/resolve@^0.0.8": + version "0.0.8" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" + integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== + dependencies: + "@types/node" "*" + +"@types/responselike@*", "@types/responselike@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29" + integrity sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA== + dependencies: + "@types/node" "*" + +"@types/retry@*": + version "0.12.2" + resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.2.tgz#ed279a64fa438bb69f2480eda44937912bb7480a" + integrity sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow== + +"@types/secp256k1@^4.0.1": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.3.tgz#1b8e55d8e00f08ee7220b4d59a6abe89c37a901c" + integrity sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w== + dependencies: + "@types/node" "*" + +"@types/seedrandom@3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/seedrandom/-/seedrandom-3.0.1.tgz#1254750a4fec4aff2ebec088ccd0bb02e91fedb4" + integrity sha512-giB9gzDeiCeloIXDgzFBCgjj1k4WxcDrZtGl6h1IqmUPlxF+Nx8Ve+96QCyDZ/HseB/uvDsKbpib9hU5cU53pw== + +"@types/semver@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-5.5.0.tgz#146c2a29ee7d3bae4bf2fcb274636e264c813c45" + integrity sha512-41qEJgBH/TWgo5NFSvBCJ1qkoi3Q6ONSF2avrHq1LVEZfYpdHmj0y9SuTK+u9ZhG1sYQKBL1AWXKyLWP4RaUoQ== + +"@types/serve-static@*": + version "1.15.0" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.0.tgz#c7930ff61afb334e121a9da780aac0d9b8f34155" + integrity sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg== + dependencies: + "@types/mime" "*" + "@types/node" "*" + +"@types/stack-utils@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" + integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== + +"@types/stack-utils@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" + integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== + +"@types/stats-lite@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@types/stats-lite/-/stats-lite-2.2.0.tgz#bc8190bf9dfa1e16b89eaa2b433c99dff0804de9" + integrity sha512-YV6SS4QC+pbzqjMIV8qVSTDOOazgKBLTVaN+7PfuxELjz/eyzc20KwDVGPrbHt2OcYMA7K2ezLB45Cp6DpNOSQ== + +"@types/superagent@*": + version "4.1.15" + resolved "https://registry.yarnpkg.com/@types/superagent/-/superagent-4.1.15.tgz#63297de457eba5e2bc502a7609426c4cceab434a" + integrity sha512-mu/N4uvfDN2zVQQ5AYJI/g4qxn2bHB6521t1UuH09ShNWjebTqN0ZFuYK9uYjcgmI0dTQEs+Owi1EO6U0OkOZQ== + dependencies: + "@types/cookiejar" "*" + "@types/node" "*" + +"@types/supertest@^2.0.11": + version "2.0.12" + resolved "https://registry.yarnpkg.com/@types/supertest/-/supertest-2.0.12.tgz#ddb4a0568597c9aadff8dbec5b2e8fddbe8692fc" + integrity sha512-X3HPWTwXRerBZS7Mo1k6vMVR1Z6zmJcDVn5O/31whe0tnjE4te6ZJSJGq1RiqHPjzPdMTfjCFogDJmwng9xHaQ== + dependencies: + "@types/superagent" "*" + +"@types/swagger-ui-express@^4.1.3": + version "4.1.3" + resolved "https://registry.yarnpkg.com/@types/swagger-ui-express/-/swagger-ui-express-4.1.3.tgz#7adbbbf5343b45869debef1e9ff39c9ba73e380f" + integrity sha512-jqCjGU/tGEaqIplPy3WyQg+Nrp6y80DCFnDEAvVKWkJyv0VivSSDCChkppHRHAablvInZe6pijDFMnavtN0vqA== + dependencies: + "@types/express" "*" + "@types/serve-static" "*" + +"@types/uuid@^8.3.4": + version "8.3.4" + resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.4.tgz#bd86a43617df0594787d38b735f55c805becf1bc" + integrity sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw== + +"@types/ws@^7.4.4": + version "7.4.7" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702" + integrity sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww== + dependencies: + "@types/node" "*" + +"@types/yargs-parser@*": + version "21.0.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" + integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== + +"@types/yargs@^13.0.0": + version "13.0.12" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.12.tgz#d895a88c703b78af0465a9de88aa92c61430b092" + integrity sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ== + dependencies: + "@types/yargs-parser" "*" + +"@types/yargs@^16.0.0": + version "16.0.4" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.4.tgz#26aad98dd2c2a38e421086ea9ad42b9e51642977" + integrity sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw== + dependencies: + "@types/yargs-parser" "*" + +"@typescript-eslint/eslint-plugin@^4.26.1": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz#c24dc7c8069c7706bc40d99f6fa87edcb2005276" + integrity sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg== + dependencies: + "@typescript-eslint/experimental-utils" "4.33.0" + "@typescript-eslint/scope-manager" "4.33.0" + debug "^4.3.1" + functional-red-black-tree "^1.0.1" + ignore "^5.1.8" + regexpp "^3.1.0" + semver "^7.3.5" + tsutils "^3.21.0" + +"@typescript-eslint/experimental-utils@4.33.0": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz#6f2a786a4209fa2222989e9380b5331b2810f7fd" + integrity sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q== + dependencies: + "@types/json-schema" "^7.0.7" + "@typescript-eslint/scope-manager" "4.33.0" + "@typescript-eslint/types" "4.33.0" + "@typescript-eslint/typescript-estree" "4.33.0" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" + +"@typescript-eslint/parser@^4.26.1": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.33.0.tgz#dfe797570d9694e560528d18eecad86c8c744899" + integrity sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA== + dependencies: + "@typescript-eslint/scope-manager" "4.33.0" + "@typescript-eslint/types" "4.33.0" + "@typescript-eslint/typescript-estree" "4.33.0" + debug "^4.3.1" + +"@typescript-eslint/scope-manager@4.33.0": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz#d38e49280d983e8772e29121cf8c6e9221f280a3" + integrity sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ== + dependencies: + "@typescript-eslint/types" "4.33.0" + "@typescript-eslint/visitor-keys" "4.33.0" + +"@typescript-eslint/types@4.33.0": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.33.0.tgz#a1e59036a3b53ae8430ceebf2a919dc7f9af6d72" + integrity sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ== + +"@typescript-eslint/typescript-estree@4.33.0": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz#0dfb51c2908f68c5c08d82aefeaf166a17c24609" + integrity sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA== + dependencies: + "@typescript-eslint/types" "4.33.0" + "@typescript-eslint/visitor-keys" "4.33.0" + debug "^4.3.1" + globby "^11.0.3" + is-glob "^4.0.1" + semver "^7.3.5" + tsutils "^3.21.0" + +"@typescript-eslint/visitor-keys@4.33.0": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz#2a22f77a41604289b7a186586e9ec48ca92ef1dd" + integrity sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg== + dependencies: + "@typescript-eslint/types" "4.33.0" + eslint-visitor-keys "^2.0.0" + +"@ungap/promise-all-settled@1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" + integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== + +"@uniswap/default-token-list@^2.0.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@uniswap/default-token-list/-/default-token-list-2.3.0.tgz#e5e522e775791999643aac9b0faf1ccfb4c49bd8" + integrity sha512-yfd4snv9K20tEbNwy9Vjym41RU3Yb2lN0seKxsgkr+m3f6oub2lWyXfTiNwgGFbOQPDvX4dxjMhA+M+S7mxqKg== + +"@uniswap/lib@^4.0.1-alpha": + version "4.0.1-alpha" + resolved "https://registry.yarnpkg.com/@uniswap/lib/-/lib-4.0.1-alpha.tgz#2881008e55f075344675b3bca93f020b028fbd02" + integrity sha512-f6UIliwBbRsgVLxIaBANF6w09tYqc6Y/qXdsrbEmXHyFA7ILiKrIwRFXe1yOg8M3cksgVsO9N7yuL2DdCGQKBA== + +"@uniswap/router-sdk@^1.2.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@uniswap/router-sdk/-/router-sdk-1.3.0.tgz#8c17e957f65099a18dda536cd05fc34e779628aa" + integrity sha512-T6kXQFXrAkIHfCCmhyW+0xgUyuFVepL9rlwG9+MjnfVtmGIBssbMzyFKGk5HGQYlk6WQrm630W1j87kdfXpZ/Q== + dependencies: + "@ethersproject/abi" "^5.5.0" + "@uniswap/sdk-core" "^3.0.1" + "@uniswap/swap-router-contracts" "1.1.0" + "@uniswap/v2-sdk" "^3.0.1" + "@uniswap/v3-sdk" "^3.8.3" + +"@uniswap/sdk-core@^3.0.0", "@uniswap/sdk-core@^3.0.0-alpha.3", "@uniswap/sdk-core@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@uniswap/sdk-core/-/sdk-core-3.0.1.tgz#d08dd68257983af64b9a5f4d6b9cf26124b4138f" + integrity sha512-WbeDkhZ9myVR0VnHOdTrb8nHKKkqTFa5uE9RvUbG3eyDt2NWWDwhhqGHwAWJEHG405l30Fa1u3PogHDFsIOQlA== + dependencies: + "@ethersproject/address" "^5.0.2" + big.js "^5.2.2" + decimal.js-light "^2.5.0" + jsbi "^3.1.4" + tiny-invariant "^1.1.0" + toformat "^2.0.0" + +"@uniswap/sdk@3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@uniswap/sdk/-/sdk-3.0.2.tgz#c75da48a8d7c3e62556c2b29d6c0f75f133d6afa" + integrity sha512-x6dYbxs3xUi1BOeGj3UqunFaWaJffzqAdSABZSPqyG3hhLpLa2AR4ehH9ZgtTVGF4Rq4MF7UDOHeXMA8AqwyaA== + dependencies: + "@ethersproject/address" "^5.0.1" + "@ethersproject/contracts" "^5.0.1" + "@ethersproject/networks" "^5.0.1" + "@ethersproject/providers" "^5.0.4" + "@ethersproject/solidity" "^5.0.1" + "@uniswap/v2-core" "^1.0.0" + big.js "^5.2.2" + decimal.js-light "^2.5.0" + jsbi "^3.1.1" + tiny-invariant "^1.1.0" + tiny-warning "^1.0.3" + toformat "^2.0.0" + +"@uniswap/smart-order-router@^2.5.26": + version "2.8.2" + resolved "https://registry.yarnpkg.com/@uniswap/smart-order-router/-/smart-order-router-2.8.2.tgz#cb521e1e02351ab18b35ca50f7a6c6f3eec2dc55" + integrity sha512-wV34O6QkRJPz52VClzCKmJ1wUY/WrIAC/L6oifySeJjqNh92xQ+HfNjZav+NPAjkz6GUD4UN4qCghi5wrR62ZA== + dependencies: + "@nomiclabs/hardhat-ethers" "^2.0.6" + "@types/async-retry" "^1.4.2" + "@types/await-timeout" "^0.3.1" + "@types/bunyan" "^1.8.6" + "@types/bunyan-blackhole" "^0.2.2" + "@types/lodash" "^4.14.168" + "@types/stats-lite" "^2.2.0" + "@uniswap/default-token-list" "^2.0.0" + "@uniswap/router-sdk" "^1.2.0" + "@uniswap/swap-router-contracts" "1.2.0" + "@uniswap/token-lists" "^1.0.0-beta.25" + "@uniswap/v2-sdk" "^3.0.1" + "@uniswap/v3-sdk" "^3.7.0" + async-retry "^1.3.1" + await-timeout "^1.1.1" + axios "^0.21.1" + bunyan "^1.8.15" + bunyan-blackhole "^1.1.1" + bunyan-debug-stream "^2.0.0" + ethers "^5.6.1" + graphql "^15.5.0" + graphql-request "^3.4.0" + hardhat "^2.9.6" + lodash "^4.17.21" + mnemonist "^0.38.3" + node-cache "^5.1.2" + stats-lite "^2.2.0" + +"@uniswap/swap-router-contracts@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@uniswap/swap-router-contracts/-/swap-router-contracts-1.1.0.tgz#e027b14d4c172f231c53c48e1fd708a78d7d94d8" + integrity sha512-GPmpx1lvjXWloB95+YUabr3UHJYr3scnSS8EzaNXnNrIz9nYZ+XQcMaJxOKe85Yi7IfcUQpj0HzD2TW99dtolA== + dependencies: + "@openzeppelin/contracts" "3.4.1-solc-0.7-2" + "@uniswap/v2-core" "1.0.1" + "@uniswap/v3-core" "1.0.0" + "@uniswap/v3-periphery" "1.3.0" + hardhat-watcher "^2.1.1" + +"@uniswap/swap-router-contracts@1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@uniswap/swap-router-contracts/-/swap-router-contracts-1.2.0.tgz#9fd3be07c40c697cf71804ab450ca7d6c028401d" + integrity sha512-wau6xVIrXY/7EQc3uB+A1HlRfxnewS4MAYOgcJBHGHG4OVy+X0WAl8mILC52Xx+y6vx6uQHOwH+sT3SaWi5EGw== + dependencies: + "@openzeppelin/contracts" "3.4.1-solc-0.7-2" + "@uniswap/v2-core" "1.0.1" + "@uniswap/v3-core" "1.0.0" + "@uniswap/v3-periphery" "1.3.0" + dotenv "^14.2.0" + hardhat-watcher "^2.1.1" + +"@uniswap/swap-router-contracts@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@uniswap/swap-router-contracts/-/swap-router-contracts-1.2.1.tgz#223c8b6672b7754080d95ca917763d98feb5e696" + integrity sha512-aRNiZYIOpJ0uYxujPxvQsUEuNJWLC4bvnmU40TlNej1rGWHPyDL1PmnVzebu8UpW9EGeKlvDjsNGTyo53dih9Q== + dependencies: + "@openzeppelin/contracts" "3.4.2-solc-0.7" + "@uniswap/v2-core" "1.0.1" + "@uniswap/v3-core" "1.0.0" + "@uniswap/v3-periphery" "1.4.1" + dotenv "^14.2.0" + hardhat-watcher "^2.1.1" + +"@uniswap/token-lists@^1.0.0-beta.25": + version "1.0.0-beta.30" + resolved "https://registry.yarnpkg.com/@uniswap/token-lists/-/token-lists-1.0.0-beta.30.tgz#2103ca23b8007c59ec71718d34cdc97861c409e5" + integrity sha512-HwY2VvkQ8lNR6ks5NqQfAtg+4IZqz3KV1T8d2DlI8emIn9uMmaoFbIOg0nzjqAVKKnZSbMTRRtUoAh6mmjRvog== + +"@uniswap/v2-core@1.0.1", "@uniswap/v2-core@^1.0.0", "@uniswap/v2-core@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@uniswap/v2-core/-/v2-core-1.0.1.tgz#af8f508bf183204779938969e2e54043e147d425" + integrity sha512-MtybtkUPSyysqLY2U210NBDeCHX+ltHt3oADGdjqoThZaFRDKwM6k1Nb3F0A3hk5hwuQvytFWhrWHOEq6nVJ8Q== + +"@uniswap/v2-sdk@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@uniswap/v2-sdk/-/v2-sdk-3.0.1.tgz#690c484104c1debd1db56a236e5497def53d698b" + integrity sha512-eSpm2gjo2CZh9FACH5fq42str/oSNyWcDxB27o5k44bEew4sxb+pld4gGIf/byJndLBvArR9PtH8c0n/goNOTw== + dependencies: + "@ethersproject/address" "^5.0.0" + "@ethersproject/solidity" "^5.0.0" + "@uniswap/sdk-core" "^3.0.0-alpha.3" + tiny-invariant "^1.1.0" + tiny-warning "^1.0.3" + +"@uniswap/v3-core@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@uniswap/v3-core/-/v3-core-1.0.0.tgz#6c24adacc4c25dceee0ba3ca142b35adbd7e359d" + integrity sha512-kSC4djMGKMHj7sLMYVnn61k9nu+lHjMIxgg9CDQT+s2QYLoA56GbSK9Oxr+qJXzzygbkrmuY6cwgP6cW2JXPFA== + +"@uniswap/v3-core@^1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@uniswap/v3-core/-/v3-core-1.0.1.tgz#b6d2bdc6ba3c3fbd610bdc502395d86cd35264a0" + integrity sha512-7pVk4hEm00j9tc71Y9+ssYpO6ytkeI0y7WE9P6UcmNzhxPePwyAxImuhVsTqWK9YFvzgtvzJHi64pBl4jUzKMQ== + +"@uniswap/v3-periphery@1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@uniswap/v3-periphery/-/v3-periphery-1.3.0.tgz#37f0a1ef6025221722e50e9f3f2009c2d5d6e4ec" + integrity sha512-HjHdI5RkjBl8zz3bqHShrbULFoZSrjbbrRHoO2vbzn+WRzTa6xY4PWphZv2Tlcb38YEKfKHp6NPl5hVedac8uw== + dependencies: + "@openzeppelin/contracts" "3.4.1-solc-0.7-2" + "@uniswap/lib" "^4.0.1-alpha" + "@uniswap/v2-core" "1.0.1" + "@uniswap/v3-core" "1.0.0" + base64-sol "1.0.1" + hardhat-watcher "^2.1.1" + +"@uniswap/v3-periphery@1.4.1", "@uniswap/v3-periphery@^1.0.1", "@uniswap/v3-periphery@^1.1.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@uniswap/v3-periphery/-/v3-periphery-1.4.1.tgz#b90f08b7386163c0abfd7258831caef6339c7862" + integrity sha512-Ab0ZCKOQrQMKIcpBTezTsEhWfQjItd0TtkCG8mPhoQu+wC67nPaf4hYUhM6wGHeFUmDiYY5MpEQuokB0ENvoTg== + dependencies: + "@openzeppelin/contracts" "3.4.2-solc-0.7" + "@uniswap/lib" "^4.0.1-alpha" + "@uniswap/v2-core" "1.0.1" + "@uniswap/v3-core" "1.0.0" + base64-sol "1.0.1" + hardhat-watcher "^2.1.1" + +"@uniswap/v3-sdk@^3.7.0", "@uniswap/v3-sdk@^3.8.3": + version "3.9.0" + resolved "https://registry.yarnpkg.com/@uniswap/v3-sdk/-/v3-sdk-3.9.0.tgz#de93fa19f89c29d460996aa4d0b4bb6531641105" + integrity sha512-LuoF3UcY1DxSAQKJ3E4/1Eq4HaNp+x+7q9mvbpiu+/PBj+O1DjLforAMrKxu+RsA0aarmZtz7yBnAPy+akgfgQ== + dependencies: + "@ethersproject/abi" "^5.0.12" + "@ethersproject/solidity" "^5.0.9" + "@uniswap/sdk-core" "^3.0.1" + "@uniswap/swap-router-contracts" "^1.2.1" + "@uniswap/v3-periphery" "^1.1.1" + "@uniswap/v3-staker" "1.0.0" + tiny-invariant "^1.1.0" + tiny-warning "^1.0.3" + +"@uniswap/v3-staker@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@uniswap/v3-staker/-/v3-staker-1.0.0.tgz#9a6915ec980852479dfc903f50baf822ff8fa66e" + integrity sha512-JV0Qc46Px5alvg6YWd+UIaGH9lDuYG/Js7ngxPit1SPaIP30AlVer1UYB7BRYeUVVxE+byUyIeN5jeQ7LLDjIw== + dependencies: + "@openzeppelin/contracts" "3.4.1-solc-0.7-2" + "@uniswap/v3-core" "1.0.0" + "@uniswap/v3-periphery" "^1.0.1" + +"@zuzu-cat/defira-sdk@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@zuzu-cat/defira-sdk/-/defira-sdk-1.0.0.tgz#fc9a6625cb7c91d6a81440a6317faa4e3f326ad1" + integrity sha512-NuxpUe3wGjNFDS8YAI2RHi+KH3/h3q1uH3jx6uXJ1deh0QsaxCS7j+KgFKwpJQAvLUc2/wFJuauT4SOAJfLwIw== + dependencies: + "@ethersproject/address" "^5.0.0" + "@ethersproject/contracts" "^5.6.2" + "@ethersproject/providers" "^5.6.8" + "@ethersproject/solidity" "^5.0.0" + "@uniswap/sdk-core" "^3.0.0-alpha.3" + tiny-invariant "^1.1.0" + tiny-warning "^1.0.3" + +JSONStream@^1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" + integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== + dependencies: + jsonparse "^1.2.0" + through ">=2.2.7 <3" + +abab@^2.0.3, abab@^2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" + integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== + +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + +abi-decoder@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/abi-decoder/-/abi-decoder-2.4.0.tgz#99f72337c614d6ac45a28dbc83c08b44eba48ad5" + integrity sha512-TOLU2q1HgYOjs1GKGtVzaqrYkar6I2fT9a80rzx6/9EJ/5crb4nCGuro0grZayixem93T7omrajYmLiMkYDLDA== + dependencies: + web3-eth-abi "^1.2.1" + web3-utils "^1.2.1" + +abort-controller@3.0.0, abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + +abortcontroller-polyfill@^1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.3.tgz#1b5b487bd6436b5b764fd52a612509702c3144b5" + integrity sha512-zetDJxd89y3X99Kvo4qFx8GKlt6GsvN3UcRZHwU6iFA/0KiOmhkTVhe8oRoTBiTVPZu09x3vCra47+w8Yz1+2Q== + +abstract-level@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/abstract-level/-/abstract-level-1.0.3.tgz#78a67d3d84da55ee15201486ab44c09560070741" + integrity sha512-t6jv+xHy+VYwc4xqZMn2Pa9DjcdzvzZmQGRjTFc8spIbRGHgBrEKbPq+rYXc7CCo0lxgYvSgKVg9qZAhpVQSjA== + dependencies: + buffer "^6.0.3" + catering "^2.1.0" + is-buffer "^2.0.5" + level-supports "^4.0.0" + level-transcoder "^1.0.1" + module-error "^1.0.1" + queue-microtask "^1.2.3" + +abstract-leveldown@^6.2.1: + version "6.3.0" + resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-6.3.0.tgz#d25221d1e6612f820c35963ba4bd739928f6026a" + integrity sha512-TU5nlYgta8YrBMNpc9FwQzRbiXsj49gsALsXadbGHt9CROPzX5fB0rWDR5mtdpOOKa5XqRFpbj1QroPAoPzVjQ== + dependencies: + buffer "^5.5.0" + immediate "^3.2.3" + level-concat-iterator "~2.0.0" + level-supports "~1.0.0" + xtend "~4.0.0" + +abstract-leveldown@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-7.2.0.tgz#08d19d4e26fb5be426f7a57004851b39e1795a2e" + integrity sha512-DnhQwcFEaYsvYDnACLZhMmCWd3rkOeEvglpa4q5i/5Jlm3UIsWaxVzuXvDLFCSCWRO3yy2/+V/G7FusFgejnfQ== + dependencies: + buffer "^6.0.3" + catering "^2.0.0" + is-buffer "^2.0.5" + level-concat-iterator "^3.0.0" + level-supports "^2.0.1" + queue-microtask "^1.2.3" + +abstract-leveldown@~2.7.1: + version "2.7.2" + resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz#87a44d7ebebc341d59665204834c8b7e0932cc93" + integrity sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w== + dependencies: + xtend "~4.0.0" + +abstract-leveldown@~6.2.1, abstract-leveldown@~6.2.3: + version "6.2.3" + resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz#036543d87e3710f2528e47040bc3261b77a9a8eb" + integrity sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ== + dependencies: + buffer "^5.5.0" + immediate "^3.2.3" + level-concat-iterator "~2.0.0" + level-supports "~1.0.0" + xtend "~4.0.0" + +accepts@^1.3.5, accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +acorn-globals@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" + integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== + dependencies: + acorn "^7.1.1" + acorn-walk "^7.1.1" + +acorn-jsx@^5.3.1: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn-walk@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" + integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== + +acorn-walk@^8.1.1: + version "8.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" + integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== + +acorn@^7.1.1, acorn@^7.4.0: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + +acorn@^8.2.4, acorn@^8.4.1: + version "8.8.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" + integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== + +add@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/add/-/add-2.0.6.tgz#248f0a9f6e5a528ef2295dbeec30532130ae2235" + integrity sha512-j5QzrmsokwWWp6kUcJQySpbG+xfOBqqKnup3OIk1pz+kB/80SLorZ9V8zHFLO92Lcd+hbvq8bT+zOGoPkmBV0Q== + +adm-zip@^0.4.16: + version "0.4.16" + resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.16.tgz#cf4c508fdffab02c269cbc7f471a875f05570365" + integrity sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg== + +aes-js@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" + integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== + +aes-js@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.1.2.tgz#db9aabde85d5caabbfc0d4f2a4446960f627146a" + integrity sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ== + +agent-base@6: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ajv-formats@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" + integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== + dependencies: + ajv "^8.0.0" + +ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^8.0.0, ajv@^8.0.1, ajv@^8.6.3: + version "8.11.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f" + integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +ansi-colors@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + +ansi-colors@^4.1.1: + version "4.1.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== + +ansi-escapes@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== + +ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== + +ansi-regex@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" + integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== + +ansi-regex@^4.0.0, ansi-regex@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" + integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + +antlr4ts@^0.5.0-alpha.4: + version "0.5.0-alpha.4" + resolved "https://registry.yarnpkg.com/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz#71702865a87478ed0b40c0709f422cf14d51652a" + integrity sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ== + +any-promise@1.3.0, any-promise@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== + +anymatch@^3.0.3, anymatch@~3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +apollo-datasource@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/apollo-datasource/-/apollo-datasource-3.3.2.tgz#5711f8b38d4b7b53fb788cb4dbd4a6a526ea74c8" + integrity sha512-L5TiS8E2Hn/Yz7SSnWIVbZw0ZfEIXZCa5VUiVxD9P53JvSrf4aStvsFDlGWPvpIdCR+aly2CfoB79B9/JjKFqg== + dependencies: + "@apollo/utils.keyvaluecache" "^1.0.1" + apollo-server-env "^4.2.1" + +apollo-reporting-protobuf@^3.3.1, apollo-reporting-protobuf@^3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/apollo-reporting-protobuf/-/apollo-reporting-protobuf-3.3.3.tgz#df2b7ff73422cd682af3f1805d32301aefdd9e89" + integrity sha512-L3+DdClhLMaRZWVmMbBcwl4Ic77CnEBPXLW53F7hkYhkaZD88ivbCVB1w/x5gunO6ZHrdzhjq0FHmTsBvPo7aQ== + dependencies: + "@apollo/protobufjs" "1.2.6" + +apollo-server-core@^3.10.3: + version "3.10.3" + resolved "https://registry.yarnpkg.com/apollo-server-core/-/apollo-server-core-3.10.3.tgz#64db45703785e9e79e7c5dadb6df2f7ee6fcbecc" + integrity sha512-PiTirlcaszgnJGzSsGui9XWh0KAh0BUW+GvRKN6O0H0qOSXSLmoqqyL83J+u+HaUZGyyiE0+VOkyCcuF+kKbEw== + dependencies: + "@apollo/utils.keyvaluecache" "^1.0.1" + "@apollo/utils.logger" "^1.0.0" + "@apollo/utils.usagereporting" "^1.0.0" + "@apollographql/apollo-tools" "^0.5.3" + "@apollographql/graphql-playground-html" "1.6.29" + "@graphql-tools/mock" "^8.1.2" + "@graphql-tools/schema" "^8.0.0" + "@josephg/resolvable" "^1.0.0" + apollo-datasource "^3.3.2" + apollo-reporting-protobuf "^3.3.3" + apollo-server-env "^4.2.1" + apollo-server-errors "^3.3.1" + apollo-server-plugin-base "^3.6.3" + apollo-server-types "^3.6.3" + async-retry "^1.2.1" + fast-json-stable-stringify "^2.1.0" + graphql-tag "^2.11.0" + loglevel "^1.6.8" + lru-cache "^6.0.0" + sha.js "^2.4.11" + uuid "^9.0.0" + whatwg-mimetype "^3.0.0" + +apollo-server-env@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/apollo-server-env/-/apollo-server-env-4.2.1.tgz#ea5b1944accdbdba311f179e4dfaeca482c20185" + integrity sha512-vm/7c7ld+zFMxibzqZ7SSa5tBENc4B0uye9LTfjJwGoQFY5xsUPH5FpO5j0bMUDZ8YYNbrF9SNtzc5Cngcr90g== + dependencies: + node-fetch "^2.6.7" + +apollo-server-errors@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/apollo-server-errors/-/apollo-server-errors-3.3.1.tgz#ba5c00cdaa33d4cbd09779f8cb6f47475d1cd655" + integrity sha512-xnZJ5QWs6FixHICXHxUfm+ZWqqxrNuPlQ+kj5m6RtEgIpekOPssH/SD9gf2B4HuWV0QozorrygwZnux8POvyPA== + +apollo-server-express@^3.10.3: + version "3.10.3" + resolved "https://registry.yarnpkg.com/apollo-server-express/-/apollo-server-express-3.10.3.tgz#946b857c7d8516235a757e853966dd1189f247e1" + integrity sha512-Z8m0r10mX8KlGS3noYeRPcWxWR2hX6NHJicjuwZ62PeTZlrDJF5cwGmXqbUg/sCTPx7Ny//ZEASBTwFFp8DOeQ== + dependencies: + "@types/accepts" "^1.3.5" + "@types/body-parser" "1.19.2" + "@types/cors" "2.8.12" + "@types/express" "4.17.14" + "@types/express-serve-static-core" "4.17.31" + accepts "^1.3.5" + apollo-server-core "^3.10.3" + apollo-server-types "^3.6.3" + body-parser "^1.19.0" + cors "^2.8.5" + parseurl "^1.3.3" + +apollo-server-plugin-base@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/apollo-server-plugin-base/-/apollo-server-plugin-base-3.6.3.tgz#7eaf24af19641ddccf37307f294aba6877bf4c86" + integrity sha512-/Q0Zx8N8La97faKV0siGHDzfZ56ygN6ovtUpPbr+1GIbNmUzkte3lWW2YV08HmxiRmC2i2OGN80exNJEvbKvNA== + dependencies: + apollo-server-types "^3.6.3" + +apollo-server-types@^3.6.3: + version "3.6.3" + resolved "https://registry.yarnpkg.com/apollo-server-types/-/apollo-server-types-3.6.3.tgz#7818cab914c865dafa53ea263ca6cb1854b4f05a" + integrity sha512-+7caNTLdevpWI2dGKSa7CWdyudO3NBuJ3HzcrYxjBei6Bth9YdRUNzPSFmBjlm2baHF0GsrMwLpjO+HStJzm3A== + dependencies: + "@apollo/utils.keyvaluecache" "^1.0.1" + "@apollo/utils.logger" "^1.0.0" + apollo-reporting-protobuf "^3.3.3" + apollo-server-env "^4.2.1" + +apollo-server@^3.6.3: + version "3.10.3" + resolved "https://registry.yarnpkg.com/apollo-server/-/apollo-server-3.10.3.tgz#1da948f6494d30fb6dcb37b636c140489ea0bf39" + integrity sha512-qWaCVKmMpUmDPiug93kWbqVPt9/T9RwFsPP6cZ4MUF/0X931WrWPpYzyETPUhnVgdPzWbdVcvbXjgyKYc4NB2g== + dependencies: + "@types/express" "4.17.14" + apollo-server-core "^3.10.3" + apollo-server-express "^3.10.3" + express "^4.17.1" + +app-module-path@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/app-module-path/-/app-module-path-2.2.0.tgz#641aa55dfb7d6a6f0a8141c4b9c0aa50b6c24dd5" + integrity sha512-gkco+qxENJV+8vFcDiiFhuoSvRXb2a/QPqpSoWhVz829VNJfOTnELbBmPmNKFxf3xdNnw4DWCkzkDaavcX/1YQ== + +app-root-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/app-root-path/-/app-root-path-3.0.0.tgz#210b6f43873227e18a4b810a032283311555d5ad" + integrity sha512-qMcx+Gy2UZynHjOHOIXPNvpf+9cjvk3cWrBBK7zg4gH9+clobJRb9NGzcT7mQTcV/6Gm/1WelUtqxVXnNlrwcw== + +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +argsarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/argsarray/-/argsarray-0.0.1.tgz#6e7207b4ecdb39b0af88303fa5ae22bda8df61cb" + integrity sha512-u96dg2GcAKtpTrBdDoFIM7PjcBA+6rSP0OR94MOReNRyUECL6MtQt5XXmRr4qrftYaef9+l5hcpO5te7sML1Cg== + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA== + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== + +array-back@^1.0.3, array-back@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-1.0.4.tgz#644ba7f095f7ffcf7c43b5f0dc39d3c1f03c063b" + integrity sha512-1WxbZvrmyhkNoeYcizokbmh5oiOCIfyvGtcqbK3Ls1v1fKcquzxnQSceOx6tzq7jmai2kFLWIpGND2cLhH6TPw== + dependencies: + typical "^2.6.0" + +array-back@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-2.0.0.tgz#6877471d51ecc9c9bfa6136fb6c7d5fe69748022" + integrity sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw== + dependencies: + typical "^2.6.1" + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== + +array-includes@^3.1.4: + version "3.1.5" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.5.tgz#2c320010db8d31031fd2a5f6b3bbd4b1aad31bdb" + integrity sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.19.5" + get-intrinsic "^1.1.1" + is-string "^1.0.7" + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== + +array.prototype.flat@^1.2.5: + version "1.3.0" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz#0b0c1567bf57b38b56b4c97b8aa72ab45e4adc7b" + integrity sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.2" + es-shim-unscopables "^1.0.0" + +asap@^2.0.0: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== + +asn1.js@^5.2.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" + integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + safer-buffer "^2.1.0" + +asn1@~0.2.3: + version "0.2.6" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" + integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== + +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + +async-eventemitter@^0.2.4: + version "0.2.4" + resolved "https://registry.yarnpkg.com/async-eventemitter/-/async-eventemitter-0.2.4.tgz#f5e7c8ca7d3e46aab9ec40a292baf686a0bafaca" + integrity sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw== + dependencies: + async "^2.4.0" + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + +async-retry@^1.2.1, async-retry@^1.3.1: + version "1.3.3" + resolved "https://registry.yarnpkg.com/async-retry/-/async-retry-1.3.3.tgz#0e7f36c04d8478e7a58bdbed80cedf977785f280" + integrity sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw== + dependencies: + retry "0.13.1" + +async@^2.4.0: + version "2.6.4" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" + integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== + dependencies: + lodash "^4.17.14" + +async@^3.2.3: + version "3.2.4" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" + integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +atomically@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/atomically/-/atomically-1.7.0.tgz#c07a0458432ea6dbc9a3506fffa424b48bccaafe" + integrity sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w== + +available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== + +await-timeout@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/await-timeout/-/await-timeout-1.1.1.tgz#d42062ee6bc4eb271fe4d4f851eb658dae7e3906" + integrity sha512-gsDXAS6XVc4Jt+7S92MPX6Noq69bdeXUPEaXd8dk3+yVr629LTDLxNt4j1ycBbrU+AStK2PhKIyNIM+xzWMVOQ== + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== + +aws4@^1.8.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" + integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== + +axios@0.27.2: + version "0.27.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.27.2.tgz#207658cc8621606e586c85db4b41a750e756d972" + integrity sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ== + dependencies: + follow-redirects "^1.14.9" + form-data "^4.0.0" + +axios@^0.18.0: + version "0.18.1" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.18.1.tgz#ff3f0de2e7b5d180e757ad98000f1081b87bcea3" + integrity sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g== + dependencies: + follow-redirects "1.5.10" + is-buffer "^2.0.2" + +axios@^0.21.1, axios@^0.21.2: + version "0.21.4" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" + integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== + dependencies: + follow-redirects "^1.14.0" + +babel-jest@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.5.1.tgz#a1bf8d61928edfefd21da27eb86a695bfd691444" + integrity sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg== + dependencies: + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^27.5.1" + chalk "^4.0.0" + graceful-fs "^4.2.9" + slash "^3.0.0" + +babel-plugin-istanbul@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" + integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^5.0.4" + test-exclude "^6.0.0" + +babel-plugin-jest-hoist@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz#9be98ecf28c331eb9f5df9c72d6f89deb8181c2e" + integrity sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.0.0" + "@types/babel__traverse" "^7.0.6" + +babel-preset-current-node-syntax@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" + integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.8.3" + "@babel/plugin-syntax-import-meta" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + +babel-preset-jest@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz#91f10f58034cb7989cb4f962b69fa6eef6a6bc81" + integrity sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag== + dependencies: + babel-plugin-jest-hoist "^27.5.1" + babel-preset-current-node-syntax "^1.0.0" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base-x@^3.0.2, base-x@^3.0.6, base-x@^3.0.8: + version "3.0.9" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320" + integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ== + dependencies: + safe-buffer "^5.0.1" + +base-x@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-4.0.0.tgz#d0e3b7753450c73f8ad2389b5c018a4af7b2224a" + integrity sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw== + +base64-js@^1.3.0, base64-js@^1.3.1, base64-js@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +base64-sol@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/base64-sol/-/base64-sol-1.0.1.tgz#91317aa341f0bc763811783c5729f1c2574600f6" + integrity sha512-ld3cCNMeXt4uJXmLZBHFGMvVpK9KsLVEhPpFRXnvSVAqABKbuNZg/+dsq3NuM+wxFLb/UrVkz7m1ciWmkMfTbg== + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +basic-auth@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.1.tgz#b998279bf47ce38344b4f3cf916d4679bbf51e3a" + integrity sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg== + dependencies: + safe-buffer "5.1.2" + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== + dependencies: + tweetnacl "^0.14.3" + +bech32@1.1.4, bech32@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" + integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + +big.js@^6.0.3, big.js@^6.1.0, big.js@^6.1.1, big.js@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-6.2.1.tgz#7205ce763efb17c2e41f26f121c420c6a7c2744f" + integrity sha512-bCtHMwL9LeDIozFn+oNhhFoq+yQ3BNdnsLSASUxLciOb1vgvpHsIO1dsENiGMgbb4SkP5TrzWzRiLddn8ahVOQ== + +bigint-buffer@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/bigint-buffer/-/bigint-buffer-1.1.5.tgz#d038f31c8e4534c1f8d0015209bf34b4fa6dd442" + integrity sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA== + dependencies: + bindings "^1.3.0" + +bignumber.js@^7.2.0: + version "7.2.1" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-7.2.1.tgz#80c048759d826800807c4bfd521e50edbba57a5f" + integrity sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ== + +bignumber.js@^8.0.2: + version "8.1.1" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-8.1.1.tgz#4b072ae5aea9c20f6730e4e5d529df1271c4d885" + integrity sha512-QD46ppGintwPGuL1KqmwhR0O+N2cZUg8JG/VzwI2e28sM9TqHjQB10lI4QAaMHVbLzwVLLAwEglpKPViWX+5NQ== + +bignumber.js@^9.0.0, bignumber.js@^9.0.1: + version "9.0.2" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.2.tgz#71c6c6bed38de64e24a65ebe16cfcf23ae693673" + integrity sha512-GAcQvbpsM0pUb0zw1EI0KhQEZ+lRwR5fYaAp3vPOYuP7aDvGy6cVN6XHLauvF8SOga2y0dcLcjt3iQDTSEliyw== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +bindings@^1.3.0, bindings@^1.3.1, bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +bip39@^2.5.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/bip39/-/bip39-2.6.0.tgz#9e3a720b42ec8b3fbe4038f1e445317b6a99321c" + integrity sha512-RrnQRG2EgEoqO24ea+Q/fftuPUZLmrEM3qNhhGsA3PbaXaCW791LTzPuVyx/VprXQcTbPJ3K3UeTna8ZnVl2sg== + dependencies: + create-hash "^1.1.0" + pbkdf2 "^3.0.9" + randombytes "^2.0.1" + safe-buffer "^5.0.1" + unorm "^1.3.3" + +bip66@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/bip66/-/bip66-1.1.5.tgz#01fa8748785ca70955d5011217d1b3139969ca22" + integrity sha512-nemMHz95EmS38a26XbbdxIYj5csHd3RMP3H5bwQknX0WYHF01qhpufP42mLOwVICuH2JmhIhXiWs89MfUGL7Xw== + dependencies: + safe-buffer "^5.0.1" + +bl@^1.0.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.3.tgz#1e8dd80142eac80d7158c9dccc047fb620e035e7" + integrity sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww== + dependencies: + readable-stream "^2.3.5" + safe-buffer "^5.1.1" + +blakejs@^1.1.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.2.1.tgz#5057e4206eadb4a97f7c0b6e197a505042fc3814" + integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== + +bluebird@3.7.2, bluebird@^3.4.1, bluebird@^3.5.0, bluebird@^3.5.2: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +bn.js@4.11.6: + version "4.11.6" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" + integrity sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA== + +bn.js@4.11.8: + version "4.11.8" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" + integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== + +bn.js@5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" + integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== + +bn.js@5.2.1, bn.js@^5.0.0, bn.js@^5.1.0, bn.js@^5.1.1, bn.js@^5.1.2, bn.js@^5.1.3, bn.js@^5.2.0, bn.js@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.0, bn.js@^4.11.6, bn.js@^4.11.8, bn.js@^4.11.9, bn.js@^4.4.0: + version "4.12.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + +body-parser@1.20.0, body-parser@^1.16.0, body-parser@^1.19.0: + version "1.20.0" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.0.tgz#3de69bd89011c11573d7bfee6a64f11b6bd27cc5" + integrity sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg== + dependencies: + bytes "3.1.2" + content-type "~1.0.4" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.10.3" + raw-body "2.5.1" + type-is "~1.6.18" + unpipe "1.0.0" + +boolbase@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== + +borsh@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/borsh/-/borsh-0.6.0.tgz#a7c9eeca6a31ca9e0607cb49f329cb659eb791e1" + integrity sha512-sl5k89ViqsThXQpYa9XDtz1sBl3l1lI313cFUY1HKr+wvMILnb+58xpkqTNrYbelh99dY7K8usxoCusQmqix9Q== + dependencies: + bn.js "^5.2.0" + bs58 "^4.0.0" + text-encoding-utf-8 "^1.0.2" + +borsh@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/borsh/-/borsh-0.7.0.tgz#6e9560d719d86d90dc589bca60ffc8a6c51fec2a" + integrity sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA== + dependencies: + bn.js "^5.2.0" + bs58 "^4.0.0" + text-encoding-utf-8 "^1.0.2" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@^2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +braces@^3.0.2, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +brorand@^1.0.1, brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== + +browser-level@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browser-level/-/browser-level-1.0.1.tgz#36e8c3183d0fe1c405239792faaab5f315871011" + integrity sha512-XECYKJ+Dbzw0lbydyQuJzwNXtOpbMSq737qxJN11sIRTErOMShvDpbzTlgju7orJKvx4epULolZAuJGLzCmWRQ== + dependencies: + abstract-level "^1.0.2" + catering "^2.1.1" + module-error "^1.0.2" + run-parallel-limit "^1.1.0" + +browser-process-hrtime@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" + integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== + +browser-stdout@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" + integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== + +browserify-aes@^1.0.0, browserify-aes@^1.0.4, browserify-aes@^1.0.6, browserify-aes@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" + integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== + dependencies: + bn.js "^5.0.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" + integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== + dependencies: + bn.js "^5.1.1" + browserify-rsa "^4.0.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.3" + inherits "^2.0.4" + parse-asn1 "^5.1.5" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +browserslist@^4.20.2: + version "4.21.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.3.tgz#5df277694eb3c48bc5c4b05af3e8b7e09c5a6d1a" + integrity sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ== + dependencies: + caniuse-lite "^1.0.30001370" + electron-to-chromium "^1.4.202" + node-releases "^2.0.6" + update-browserslist-db "^1.0.5" + +bs-logger@0.x: + version "0.2.6" + resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" + integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== + dependencies: + fast-json-stable-stringify "2.x" + +bs58@^4.0.0, bs58@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" + integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== + dependencies: + base-x "^3.0.2" + +bs58@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-5.0.0.tgz#865575b4d13c09ea2a84622df6c8cbeb54ffc279" + integrity sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ== + dependencies: + base-x "^4.0.0" + +bs58check@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc" + integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== + dependencies: + bs58 "^4.0.0" + create-hash "^1.1.0" + safe-buffer "^5.1.2" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +buffer-alloc-unsafe@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" + integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== + +buffer-alloc@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" + integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== + dependencies: + buffer-alloc-unsafe "^1.1.0" + buffer-fill "^1.0.0" + +buffer-crc32@~0.2.3: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== + +buffer-fill@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" + integrity sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ== + +buffer-from@1.1.2, buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer-layout@^1.2.0, buffer-layout@^1.2.1, buffer-layout@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/buffer-layout/-/buffer-layout-1.2.2.tgz#b9814e7c7235783085f9ca4966a0cfff112259d5" + integrity sha512-kWSuLN694+KTk8SrYvCqwP2WcgQjoRCiF5b4QDvkkz8EmgD+aWAIceGFKMIAdmF/pH+vpgNV3d3kAKorcdAmWA== + +buffer-to-arraybuffer@^0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz#6064a40fa76eb43c723aba9ef8f6e1216d10511a" + integrity sha512-3dthu5CYiVB1DEJp61FtApNnNndTckcqe4pFcLdvHtrpG+kcyekCJKg4MRiDcFW7A6AODnXB9U4dwQiCW5kzJQ== + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== + +buffer-xor@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-2.0.2.tgz#34f7c64f04c777a1f8aac5e661273bb9dd320289" + integrity sha512-eHslX0bin3GB+Lx2p7lEYRShRewuNZL3fUl4qlVJGGiwoPGftmt8JQgk2Y9Ji5/01TnVDo33E5b5O3vUB1HdqQ== + dependencies: + safe-buffer "^5.1.1" + +buffer@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.1.tgz#3cbea8c1463e5a0779e30b66d4c88c6ffa182ac2" + integrity sha512-rVAXBwEcEoYtxnHSO5iWyhzV/O1WMtkUYWlfdLS7FjU4PnSJJHEfHXi/uHPI5EwltmOA794gN3bm3/pzuctWjQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + +buffer@6.0.3, buffer@^6.0.3, buffer@~6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + +buffer@^5.0.5, buffer@^5.2.1, buffer@^5.4.3, buffer@^5.5.0, buffer@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +bufferutil@4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.5.tgz#da9ea8166911cc276bf677b8aed2d02d31f59028" + integrity sha512-HTm14iMQKK2FjFLRTM5lAVcyaUzOnqbPtesFIvREgXpJHdQm8bWS+GkQgIkfaBYRHuCnea7w8UVNfwiAQhlr9A== + dependencies: + node-gyp-build "^4.3.0" + +bufferutil@^4.0.1: + version "4.0.6" + resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.6.tgz#ebd6c67c7922a0e902f053e5d8be5ec850e48433" + integrity sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw== + dependencies: + node-gyp-build "^4.3.0" + +bunyan-blackhole@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/bunyan-blackhole/-/bunyan-blackhole-1.1.1.tgz#b9208586dc0b4e47f4f713215b1bddd65e4f6257" + integrity sha512-UwzNPhbbSqbzeJhCbygqjlAY7p0ZUdv1ADXPQvDh3CA7VW3C/rCc1gaQO/8j9QL4vsKQCQZQSQIEwX+lxioPAQ== + dependencies: + stream-blackhole "^1.0.3" + +bunyan-debug-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/bunyan-debug-stream/-/bunyan-debug-stream-2.0.1.tgz#9bd7c7e30c7b2cf711317e9d37529b0464c3b164" + integrity sha512-MCEoqggU7NMt7f2O+PU8VkqfSkoQoa4lmN/OWhaRfqFRBF1Se2TOXQyLF6NxC+EtfrdthnquQe8jOe83fpEoGA== + dependencies: + colors "1.4.0" + exception-formatter "^1.0.4" + +bunyan@^1.8.15: + version "1.8.15" + resolved "https://registry.yarnpkg.com/bunyan/-/bunyan-1.8.15.tgz#8ce34ca908a17d0776576ca1b2f6cbd916e93b46" + integrity sha512-0tECWShh6wUysgucJcBAoYegf3JJoZWibxdqhTm7OHPeT42qdjkZ29QCMcKwbgU1kiH+auSIasNRXMLWXafXig== + optionalDependencies: + dtrace-provider "~0.8" + moment "^2.19.3" + mv "~2" + safe-json-stringify "~1" + +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +cacheable-lookup@^6.0.4: + version "6.0.4" + resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-6.0.4.tgz#65c0e51721bb7f9f2cb513aed6da4a1b93ad7dc8" + integrity sha512-mbcDEZCkv2CZF4G01kr8eBd/5agkt9oCqz75tJMSIsquvRZ2sL6Hi5zGVKi/0OSC9oO1GHfJ2AV0ZIOY9vye0A== + +cacheable-request@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" + integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== + dependencies: + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^3.0.0" + lowercase-keys "^2.0.0" + normalize-url "^4.1.0" + responselike "^1.0.2" + +cacheable-request@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.2.tgz#ea0d0b889364a25854757301ca12b2da77f91d27" + integrity sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew== + dependencies: + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^4.0.0" + lowercase-keys "^2.0.0" + normalize-url "^6.0.1" + responselike "^2.0.0" + +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +call-me-maybe@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" + integrity sha512-wCyFsDQkKPwwF8BDwOiWNx/9K45L/hvggQiDbve+viMNMQnWhrlYIuBk09offfwCRtCO9P6XwUttufzU11WCVw== + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camel-case@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" + integrity sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w== + dependencies: + no-case "^2.2.0" + upper-case "^1.1.1" + +camelcase@^5.0.0, camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.0.0, camelcase@^6.2.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +caniuse-lite@^1.0.30001370: + version "1.0.30001374" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001374.tgz#3dab138e3f5485ba2e74bd13eca7fe1037ce6f57" + integrity sha512-mWvzatRx3w+j5wx/mpFN5v5twlPrabG8NqX2c6e45LCpymdoGqNvRkRutFUqpRTXKFQFNQJasvK0YT7suW6/Hw== + +capability@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/capability/-/capability-0.2.5.tgz#51ad87353f1936ffd77f2f21c74633a4dea88801" + integrity sha512-rsJZYVCgXd08sPqwmaIqjAd5SUTfonV0z/gDJ8D6cN8wQphky1kkAYEqQ+hmDxTw7UihvBfjUVUSY+DBEe44jg== + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== + +catering@^2.0.0, catering@^2.1.0, catering@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/catering/-/catering-2.1.1.tgz#66acba06ed5ee28d5286133982a927de9a04b510" + integrity sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w== + +cbor@^4.1.5: + version "4.3.0" + resolved "https://registry.yarnpkg.com/cbor/-/cbor-4.3.0.tgz#0217c1cadd067d9112f44336dca07e72020bb804" + integrity sha512-CvzaxQlaJVa88sdtTWvLJ++MbdtPHtZOBBNjm7h3YKUHILMs9nQyD4AC6hvFZy7GBVB3I6bRibJcxeHydyT2IQ== + dependencies: + bignumber.js "^9.0.0" + commander "^3.0.0" + json-text-sequence "^0.1" + nofilter "^1.0.3" + +cbor@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/cbor/-/cbor-5.2.0.tgz#4cca67783ccd6de7b50ab4ed62636712f287a67c" + integrity sha512-5IMhi9e1QU76ppa5/ajP1BmMWZ2FHkhAhjeVKQ/EFCgYSEaeVaoGtL7cxJskf9oCCk+XjzaIdc3IuU/dbA/o2A== + dependencies: + bignumber.js "^9.0.1" + nofilter "^1.0.4" + +chain-registry@^0.0.26: + version "0.0.26" + resolved "https://registry.yarnpkg.com/chain-registry/-/chain-registry-0.0.26.tgz#63598d451f9b121d3a7f6bc038a3415121696c66" + integrity sha512-lLtXYvJ19KbN/eUm2kLzl+G7SRdPM06Ti7AzqB0f9lcHORwOP7AyqtLq3swLjgU8mOJ03zpqoj7tiSELf4PCow== + dependencies: + "@babel/runtime" "^7.18.3" + +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +change-case@3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/change-case/-/change-case-3.0.2.tgz#fd48746cce02f03f0a672577d1d3a8dc2eceb037" + integrity sha512-Mww+SLF6MZ0U6kdg11algyKd5BARbyM4TbFBepwowYSR5ClfQGCGtxNXgykpN0uF/bstWeaGDT4JWaDh8zWAHA== + dependencies: + camel-case "^3.0.0" + constant-case "^2.0.0" + dot-case "^2.1.0" + header-case "^1.0.0" + is-lower-case "^1.1.0" + is-upper-case "^1.1.0" + lower-case "^1.1.1" + lower-case-first "^1.0.0" + no-case "^2.3.2" + param-case "^2.1.0" + pascal-case "^2.0.0" + path-case "^2.1.0" + sentence-case "^2.1.0" + snake-case "^2.1.0" + swap-case "^1.1.0" + title-case "^2.1.0" + upper-case "^1.1.1" + upper-case-first "^1.1.0" + +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + +cheerio-select@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-2.1.0.tgz#4d8673286b8126ca2a8e42740d5e3c4884ae21b4" + integrity sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g== + dependencies: + boolbase "^1.0.0" + css-select "^5.1.0" + css-what "^6.1.0" + domelementtype "^2.3.0" + domhandler "^5.0.3" + domutils "^3.0.1" + +cheerio@^1.0.0-rc.2: + version "1.0.0-rc.12" + resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.12.tgz#788bf7466506b1c6bf5fae51d24a2c4d62e47683" + integrity sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q== + dependencies: + cheerio-select "^2.1.0" + dom-serializer "^2.0.0" + domhandler "^5.0.3" + domutils "^3.0.1" + htmlparser2 "^8.0.1" + parse5 "^7.0.0" + parse5-htmlparser2-tree-adapter "^7.0.0" + +chokidar@3.5.3, chokidar@^3.4.0, chokidar@^3.5.2, chokidar@^3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chownr@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + +ci-info@^3.2.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.2.tgz#6d2967ffa407466481c6c90b6e16b3098f080128" + integrity sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg== + +cids@^0.7.1: + version "0.7.5" + resolved "https://registry.yarnpkg.com/cids/-/cids-0.7.5.tgz#60a08138a99bfb69b6be4ceb63bfef7a396b28b2" + integrity sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA== + dependencies: + buffer "^5.5.0" + class-is "^1.1.0" + multibase "~0.6.0" + multicodec "^1.0.0" + multihashes "~0.4.15" + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +cjs-module-lexer@^1.0.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" + integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== + +class-is@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/class-is/-/class-is-1.1.0.tgz#9d3c0fba0440d211d843cec3dedfa48055005825" + integrity sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw== + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +classic-level@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/classic-level/-/classic-level-1.2.0.tgz#2d52bdec8e7a27f534e67fdeb890abef3e643c27" + integrity sha512-qw5B31ANxSluWz9xBzklRWTUAJ1SXIdaVKTVS7HcTGKOAmExx65Wo5BUICW+YGORe2FOUaDghoI9ZDxj82QcFg== + dependencies: + abstract-level "^1.0.2" + catering "^2.1.0" + module-error "^1.0.1" + napi-macros "~2.0.0" + node-gyp-build "^4.3.0" + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw== + dependencies: + restore-cursor "^2.0.0" + +cli-cursor@^3.0.0, cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-width@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" + integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== + +cliui@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" + integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + wrap-ansi "^2.0.0" + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +clone-buffer@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" + integrity sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g== + +clone-response@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3" + integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA== + dependencies: + mimic-response "^1.0.0" + +clone@2.x: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== + +cobertura-parse@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/cobertura-parse/-/cobertura-parse-1.0.5.tgz#3a8c5d30a97468496a2aabd04b8fa4fb7c3cd20e" + integrity sha512-uYJfkGhzw1wibe/8jqqHmSaPNWFguzq/IlSj83u3cSnZho/lUnfj0mLTmZGmB3AiKCOTYr22TYwpR1sXy2JEkg== + dependencies: + mocha "5.0.5" + xml2js "0.4.19" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + integrity sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA== + +coinalpha-ref-sdk@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/coinalpha-ref-sdk/-/coinalpha-ref-sdk-1.1.0.tgz#f8d2d08e2de5ddafa7ee948553b6780d206770ec" + integrity sha512-C3rtns2RWyi1DmfJCVmW2MOLqXOvVVIVqjXZPQkThexsimzdqNQ6DgU2CWLRlIujlqHgRNT6LYaqfc25wCC0Kg== + dependencies: + "@types/big.js" "^6.1.5" + "@types/bn.js" "^5.1.1" + "@types/lodash" "^4.14.182" + big.js "^6.2.1" + lodash-es "^4.17.21" + mathjs "^9.3.0" + near-api-js "0.44.2" + ref-sdk "^0.1.5" + +collect-v8-coverage@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" + integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw== + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0, color-convert@^1.9.3: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-name@^1.0.0, color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-string@^1.6.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" + integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^3.1.3: + version "3.2.1" + resolved "https://registry.yarnpkg.com/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164" + integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA== + dependencies: + color-convert "^1.9.3" + color-string "^1.6.0" + +colors@1.4.0, colors@^1.0.3: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== + +colorspace@1.1.x: + version "1.1.4" + resolved "https://registry.yarnpkg.com/colorspace/-/colorspace-1.1.4.tgz#8d442d1186152f60453bf8070cd66eb364e59243" + integrity sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w== + dependencies: + color "^3.1.3" + text-hex "1.0.x" + +combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +command-exists@^1.2.8: + version "1.2.9" + resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" + integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== + +command-line-args@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-4.0.7.tgz#f8d1916ecb90e9e121eda6428e41300bfb64cc46" + integrity sha512-aUdPvQRAyBvQd2n7jXcsMDz68ckBJELXNzBybCHOibUWEg0mWTnaYCSRU8h9R+aNRSvDihJtssSRCiDRpLaezA== + dependencies: + array-back "^2.0.0" + find-replace "^1.0.3" + typical "^2.6.1" + +commander@2.11.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" + integrity sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ== + +commander@2.15.1: + version "2.15.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" + integrity sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag== + +commander@3.0.2, commander@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" + integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== + +commander@^2.15.1, commander@^2.20.3, commander@^2.8.1: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +complex.js@^2.0.15, complex.js@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/complex.js/-/complex.js-2.1.1.tgz#0675dac8e464ec431fb2ab7d30f41d889fb25c31" + integrity sha512-8njCHOTtFFLtegk6zQo0kkVX1rngygb/KQI6z1qZxlFI3scluC+LVTCFbrkWjBv4vvLlbQ9t88IPMC6k95VTTg== + +component-emitter@^1.2.1, component-emitter@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +compress-brotli@^1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/compress-brotli/-/compress-brotli-1.3.8.tgz#0c0a60c97a989145314ec381e84e26682e7b38db" + integrity sha512-lVcQsjhxhIXsuupfy9fmZUFtAIdBmXA7EGY6GBdgZ++qkM9zG4YFT8iU7FoBxzryNDMOpD1HIFHUSX4D87oqhQ== + dependencies: + "@types/json-buffer" "~3.0.0" + json-buffer "~3.0.1" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +conf@^10.1.2: + version "10.2.0" + resolved "https://registry.yarnpkg.com/conf/-/conf-10.2.0.tgz#838e757be963f1a2386dfe048a98f8f69f7b55d6" + integrity sha512-8fLl9F04EJqjSqH+QjITQfJF8BrOVaYr1jewVgSRAEWePfxT0sku4w2hrGQ60BC/TNLGQ2pgxNlTbWQmMPFvXg== + dependencies: + ajv "^8.6.3" + ajv-formats "^2.1.1" + atomically "^1.7.0" + debounce-fn "^4.0.0" + dot-prop "^6.0.1" + env-paths "^2.2.1" + json-schema-typed "^7.0.3" + onetime "^5.1.2" + pkg-up "^3.1.0" + semver "^7.3.5" + +configstore@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/configstore/-/configstore-4.0.0.tgz#5933311e95d3687efb592c528b922d9262d227e7" + integrity sha512-CmquAXFBocrzaSM8mtGPMM/HiWmyIpr4CcJl/rgY2uCObZ/S7cKU0silxslqJejl+t/T9HS8E0PUNQD81JGUEQ== + dependencies: + dot-prop "^4.1.0" + graceful-fs "^4.1.2" + make-dir "^1.0.0" + unique-string "^1.0.0" + write-file-atomic "^2.0.0" + xdg-basedir "^3.0.0" + +constant-case@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/constant-case/-/constant-case-2.0.0.tgz#4175764d389d3fa9c8ecd29186ed6005243b6a46" + integrity sha512-eS0N9WwmjTqrOmR3o83F5vW8Z+9R1HnVz3xmzT2PMFug9ly+Au/fxRWlEBSb6LcZwspSsEn9Xs1uw9YgzAg1EQ== + dependencies: + snake-case "^2.1.0" + upper-case "^1.1.1" + +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +content-hash@^2.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/content-hash/-/content-hash-2.5.2.tgz#bbc2655e7c21f14fd3bfc7b7d4bfe6e454c9e211" + integrity sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw== + dependencies: + cids "^0.7.1" + multicodec "^0.5.5" + multihashes "^0.4.15" + +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + +convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" + integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== + dependencies: + safe-buffer "~5.1.1" + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== + +cookie@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" + integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== + +cookie@^0.4.1: + version "0.4.2" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" + integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== + +cookiejar@^2.1.1, cookiejar@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.3.tgz#fc7a6216e408e74414b90230050842dacda75acc" + integrity sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ== + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== + +copyfiles@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/copyfiles/-/copyfiles-2.4.1.tgz#d2dcff60aaad1015f09d0b66e7f0f1c5cd3c5da5" + integrity sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg== + dependencies: + glob "^7.0.5" + minimatch "^3.0.3" + mkdirp "^1.0.4" + noms "0.0.0" + through2 "^2.0.1" + untildify "^4.0.0" + yargs "^16.1.0" + +core-js-pure@^3.0.1: + version "3.24.1" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.24.1.tgz#8839dde5da545521bf282feb7dc6d0b425f39fd3" + integrity sha512-r1nJk41QLLPyozHUUPmILCEMtMw24NG4oWK6RbsDdjzQgg9ZvrUsPBj1MnG0wXXp1DCDU6j+wUvEmBSrtRbLXg== + +core-js@3.6.5: + version "3.6.5" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a" + integrity sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA== + +core-util-is@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cors@^2.8.1, cors@^2.8.5: + version "2.8.5" + resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" + integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== + dependencies: + object-assign "^4" + vary "^1" + +cosmjs-types@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/cosmjs-types/-/cosmjs-types-0.4.1.tgz#3b2a53ba60d33159dd075596ce8267cfa7027063" + integrity sha512-I7E/cHkIgoJzMNQdFF0YVqPlaTqrqKHrskuSTIqlEyxfB5Lf3WKCajSXVK2yHOfOFfSux/RxEdpMzw/eO4DIog== + dependencies: + long "^4.0.0" + protobufjs "~6.11.2" + +crc-32@^1.2.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff" + integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== + +create-ecdh@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" + integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== + dependencies: + bn.js "^4.1.0" + elliptic "^6.5.3" + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + +cross-fetch@3.1.5, cross-fetch@^3.0.2, cross-fetch@^3.0.6, cross-fetch@^3.1.4, cross-fetch@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" + integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== + dependencies: + node-fetch "2.6.7" + +cross-spawn@^6.0.0: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@^7.0.2, cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +crypto-browserify@3.12.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + +crypto-hash@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/crypto-hash/-/crypto-hash-1.3.0.tgz#b402cb08f4529e9f4f09346c3e275942f845e247" + integrity sha512-lyAZ0EMyjDkVvz8WOeVnuCPvKVBXcMv1l5SVqO1yC7PzTwrD/pPje/BIRbWhMoPe436U+Y2nD7f5bFx0kt+Sbg== + +crypto-random-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" + integrity sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg== + +css-select@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" + integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== + dependencies: + boolbase "^1.0.0" + css-what "^6.1.0" + domhandler "^5.0.2" + domutils "^3.0.1" + nth-check "^2.0.1" + +css-what@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== + +cssfilter@0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/cssfilter/-/cssfilter-0.0.10.tgz#c6d2672632a2e5c83e013e6864a42ce8defd20ae" + integrity sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw== + +cssom@^0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" + integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== + +cssom@~0.3.6: + version "0.3.8" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + +cssstyle@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" + integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== + dependencies: + cssom "~0.3.6" + +cycle@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/cycle/-/cycle-1.0.3.tgz#21e80b2be8580f98b468f379430662b046c34ad2" + integrity sha512-TVF6svNzeQCOpjCqsy0/CSy8VgObG3wXusJ73xW2GbG5rGx7lC8zxDSURicsXI2UsGdi2L0QNRCi745/wUDvsA== + +d@1, d@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== + dependencies: + es5-ext "^0.10.50" + type "^1.0.1" + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== + dependencies: + assert-plus "^1.0.0" + +data-urls@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" + integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== + dependencies: + abab "^2.0.3" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.0.0" + +dataloader@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/dataloader/-/dataloader-2.1.0.tgz#c69c538235e85e7ac6c6c444bae8ecabf5de9df7" + integrity sha512-qTcEYLen3r7ojZNgVUaRggOI+KM7jrKxXeSHhogh/TWxYMeONEMqY+hmkobiYQozsGIyg9OYVzO4ZIfoB4I0pQ== + +dayjs@^1.10.6: + version "1.11.4" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.4.tgz#3b3c10ca378140d8917e06ebc13a4922af4f433e" + integrity sha512-Zj/lPM5hOvQ1Bf7uAvewDaUcsJoI6JmNqmHhHl3nyumwe0XHwt8sWdOVAPACJzCebL8gQCi+K49w7iKWnGwX9g== + +debounce-fn@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/debounce-fn/-/debounce-fn-4.0.0.tgz#ed76d206d8a50e60de0dd66d494d82835ffe61c7" + integrity sha512-8pYCQiL9Xdcg0UPSD3d+0KMlOjp+KGU5EPwYddgzQ7DATsg4fuUDjQtsYLmWjnk2obnNHgV3vE2Y4jejSOJVBQ== + dependencies: + mimic-fn "^3.0.0" + +debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@3.1.0, debug@=3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + dependencies: + ms "2.0.0" + +debug@4, debug@4.3.4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +debug@4.3.3: + version "4.3.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" + integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== + dependencies: + ms "2.1.2" + +debug@^3.0.1, debug@^3.1.0, debug@^3.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== + +decamelize@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" + integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== + +decimal.js-light@^2.5.0, decimal.js-light@^2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/decimal.js-light/-/decimal.js-light-2.5.1.tgz#134fd32508f19e208f4fb2f8dac0d2626a867934" + integrity sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg== + +decimal.js@^10.2.1, decimal.js@^10.3.1: + version "10.3.1" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783" + integrity sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ== + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og== + +decompress-response@^3.2.0, decompress-response@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + integrity sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA== + dependencies: + mimic-response "^1.0.0" + +decompress-response@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" + integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== + dependencies: + mimic-response "^3.1.0" + +decompress-tar@^4.0.0, decompress-tar@^4.1.0, decompress-tar@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/decompress-tar/-/decompress-tar-4.1.1.tgz#718cbd3fcb16209716e70a26b84e7ba4592e5af1" + integrity sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ== + dependencies: + file-type "^5.2.0" + is-stream "^1.1.0" + tar-stream "^1.5.2" + +decompress-tarbz2@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz#3082a5b880ea4043816349f378b56c516be1a39b" + integrity sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A== + dependencies: + decompress-tar "^4.1.0" + file-type "^6.1.0" + is-stream "^1.1.0" + seek-bzip "^1.0.5" + unbzip2-stream "^1.0.9" + +decompress-targz@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/decompress-targz/-/decompress-targz-4.1.1.tgz#c09bc35c4d11f3de09f2d2da53e9de23e7ce1eee" + integrity sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w== + dependencies: + decompress-tar "^4.1.1" + file-type "^5.2.0" + is-stream "^1.1.0" + +decompress-unzip@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/decompress-unzip/-/decompress-unzip-4.0.1.tgz#deaaccdfd14aeaf85578f733ae8210f9b4848f69" + integrity sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw== + dependencies: + file-type "^3.8.0" + get-stream "^2.2.0" + pify "^2.3.0" + yauzl "^2.4.2" + +decompress@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/decompress/-/decompress-4.2.1.tgz#007f55cc6a62c055afa37c07eb6a4ee1b773f118" + integrity sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ== + dependencies: + decompress-tar "^4.0.0" + decompress-tarbz2 "^4.0.0" + decompress-targz "^4.0.0" + decompress-unzip "^4.0.1" + graceful-fs "^4.1.10" + make-dir "^1.0.0" + pify "^2.3.0" + strip-dirs "^2.0.0" + +dedent@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== + +deep-is@^0.1.3, deep-is@~0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +deepmerge@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + +defer-to-connect@^1.0.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" + integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== + +defer-to-connect@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" + integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== + +deferred-leveldown@~5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-5.3.0.tgz#27a997ad95408b61161aa69bd489b86c71b78058" + integrity sha512-a59VOT+oDy7vtAbLRCZwWgxu2BaCfd5Hk7wxJd48ei7I+nsg8Orlb9CLG0PMZienk9BSUKgeAqkO2+Lw+1+Ukw== + dependencies: + abstract-leveldown "~6.2.1" + inherits "^2.0.3" + +define-properties@^1.1.3, define-properties@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" + integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== + dependencies: + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA== + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA== + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +delay@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d" + integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw== + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +delimit-stream@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/delimit-stream/-/delimit-stream-0.1.0.tgz#9b8319477c0e5f8aeb3ce357ae305fc25ea1cd2b" + integrity sha512-a02fiQ7poS5CnjiJBAsjGLPp5EwVoGHNeu9sziBd9huppRfsAFIpv5zNLv0V1gbop53ilngAf5Kf331AwcoRBQ== + +denque@^1.5.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/denque/-/denque-1.5.1.tgz#07f670e29c9a78f8faecb2566a1e2c11929c5cbf" + integrity sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw== + +depd@2.0.0, depd@^2.0.0, depd@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== + +des.js@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" + integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +detect-newline@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== + +dezalgo@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.3.tgz#7f742de066fc748bc8db820569dddce49bf0d456" + integrity sha512-K7i4zNfT2kgQz3GylDw40ot9GAE47sFZ9EXHFSPP6zONLgH6kWXE0KWJchkbQJLBkRazq4APwZ4OwiFFlT95OQ== + dependencies: + asap "^2.0.0" + wrappy "1" + +diff-sequences@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5" + integrity sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew== + +diff-sequences@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" + integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== + +diff@3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" + integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== + +diff@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" + integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== + +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +diffparser@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/diffparser/-/diffparser-2.0.1.tgz#4228d5688ab2f05832c320231deda048fcfce8e7" + integrity sha512-XBuCzzdLUBJzXTvbonNPv7+AhNkiUyhyiZBSrhKxKYcIXfAcPOVaINviC2vB+bfBa5EopW60CzkBjuwb3jdmiw== + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dom-serializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" + integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== + dependencies: + domelementtype "^2.3.0" + domhandler "^5.0.2" + entities "^4.2.0" + +dom-storage@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/dom-storage/-/dom-storage-2.1.0.tgz#00fb868bc9201357ea243c7bcfd3304c1e34ea39" + integrity sha512-g6RpyWXzl0RR6OTElHKBl7nwnK87GUyZMYC7JWsB/IA73vpqK2K6LT39x4VepLxlSsWBFrPVLnsSR5Jyty0+2Q== + +dom-walk@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" + integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== + +domelementtype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== + +domexception@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" + integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== + dependencies: + webidl-conversions "^5.0.0" + +domhandler@^5.0.1, domhandler@^5.0.2, domhandler@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" + integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== + dependencies: + domelementtype "^2.3.0" + +domutils@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.0.1.tgz#696b3875238338cb186b6c0612bd4901c89a4f1c" + integrity sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q== + dependencies: + dom-serializer "^2.0.0" + domelementtype "^2.3.0" + domhandler "^5.0.1" + +dot-case@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-2.1.1.tgz#34dcf37f50a8e93c2b3bca8bb7fb9155c7da3bee" + integrity sha512-HnM6ZlFqcajLsyudHq7LeeLDr2rFAVYtDv/hV5qchQEidSck8j9OPUsXY9KwJv/lHMtYlX4DjRQqwFYa+0r8Ug== + dependencies: + no-case "^2.2.0" + +dot-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +dot-prop@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.1.tgz#45884194a71fc2cda71cbb4bceb3a4dd2f433ba4" + integrity sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ== + dependencies: + is-obj "^1.0.0" + +dot-prop@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-6.0.1.tgz#fc26b3cf142b9e59b74dbd39ed66ce620c681083" + integrity sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA== + dependencies: + is-obj "^2.0.0" + +dotenv@10.0.0, dotenv@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" + integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== + +dotenv@^14.2.0: + version "14.3.2" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-14.3.2.tgz#7c30b3a5f777c79a3429cb2db358eef6751e8369" + integrity sha512-vwEppIphpFdvaMCaHfCEv9IgwcxMljMw2TnAQBB4VWPvzXQLTb82jwmdOKzlEVUL3gNFT4l4TPKO+Bn+sqcrVQ== + +double-ended-queue@2.1.0-0: + version "2.1.0-0" + resolved "https://registry.yarnpkg.com/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz#103d3527fd31528f40188130c841efdd78264e5c" + integrity sha512-+BNfZ+deCo8hMNpDqDnvT+c0XpJ5cUa6mqYq89bho2Ifze4URTqRkcwR399hWoTrTkbZ/XJYDgP6rc7pRgffEQ== + +drbg.js@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/drbg.js/-/drbg.js-1.0.1.tgz#3e36b6c42b37043823cdbc332d58f31e2445480b" + integrity sha512-F4wZ06PvqxYLFEZKkFxTDcns9oFNk34hvmJSEwdzsxVQ8YI5YaxtACgQatkYgv2VI2CFkUd2Y+xosPQnHv809g== + dependencies: + browserify-aes "^1.0.6" + create-hash "^1.1.2" + create-hmac "^1.1.4" + +dtrace-provider@~0.8: + version "0.8.8" + resolved "https://registry.yarnpkg.com/dtrace-provider/-/dtrace-provider-0.8.8.tgz#2996d5490c37e1347be263b423ed7b297fb0d97e" + integrity sha512-b7Z7cNtHPhH9EJhNNbbeqTcXB8LGFFZhq1PGgEvpeHlzd36bhbdTWoE/Ba/YguqpBSlAPKnARWhVlhunCMwfxg== + dependencies: + nan "^2.14.0" + +duplexer3@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.5.tgz#0b5e4d7bad5de8901ea4440624c8e1d20099217e" + integrity sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA== + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + +eip-712@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/eip-712/-/eip-712-0.4.3.tgz#71da445c3118960933910d168e75f0b1f8f39879" + integrity sha512-RzHERjClqKWennbIFFfoxSTI/BB241R+Dm1FO6KP+NEcFODzApxZHaIXut4fgB4x+5SmQjdW577PfozFoHQ1FA== + dependencies: + "@findeth/abi" "^0.3.0" + keccak "^3.0.1" + superstruct "^0.10.12" + +electron-to-chromium@^1.4.202: + version "1.4.211" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.211.tgz#afaa8b58313807501312d598d99b953568d60f91" + integrity sha512-BZSbMpyFQU0KBJ1JG26XGeFI3i4op+qOYGxftmZXFZoHkhLgsSv4DHDJfl8ogII3hIuzGt51PaZ195OVu0yJ9A== + +elliptic@6.3.3: + version "6.3.3" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.3.3.tgz#5482d9646d54bcb89fd7d994fc9e2e9568876e3f" + integrity sha512-cIky9SO2H8W2eU1NOLySnhOYJnuEWCq9ZJeHvHd/lXzEL9vyraIMfilZSn57X3aVX+wkfYmqkch2LvmTzkjFpA== + dependencies: + bn.js "^4.4.0" + brorand "^1.0.1" + hash.js "^1.0.0" + inherits "^2.0.1" + +elliptic@6.5.4, elliptic@^6.4.0, elliptic@^6.4.1, elliptic@^6.5.2, elliptic@^6.5.3, elliptic@^6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +emittery@0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.10.0.tgz#bb373c660a9d421bb44706ec4967ed50c02a8026" + integrity sha512-AGvFfs+d0JKCJQ4o01ASQLGPmSCxgfU9RFXvzPvZdjKK8oscynksuJhWrSTSw7j7Ep/sZct5b5ZhYCi8S/t0HQ== + +emittery@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.4.1.tgz#abe9d3297389ba424ac87e53d1c701962ce7433d" + integrity sha512-r4eRSeStEGf6M5SKdrQhhLK5bOwOBxQhIE3YSTnZE3GpKiLfnnhE+tPtrJE79+eDJgm39BM6LSoI8SCx4HbwlQ== + +emittery@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" + integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +enabled@2.0.x: + version "2.0.0" + resolved "https://registry.yarnpkg.com/enabled/-/enabled-2.0.0.tgz#f9dd92ec2d6f4bbc0d5d1e64e21d61cd4665e7c2" + integrity sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + +encoding-down@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/encoding-down/-/encoding-down-6.3.0.tgz#b1c4eb0e1728c146ecaef8e32963c549e76d082b" + integrity sha512-QKrV0iKR6MZVJV08QY0wp1e7vF6QbhnbQhb07bwpEyuz4uZiZgPlEGdkCROuFkUwdxlFaiPIhjyarH1ee/3vhw== + dependencies: + abstract-leveldown "^6.2.1" + inherits "^2.0.3" + level-codec "^9.0.0" + level-errors "^2.0.0" + +end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +end-stream@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/end-stream/-/end-stream-0.1.0.tgz#32003f3f438a2b0143168137f8fa6e9866c81ed5" + integrity sha512-Brl10T8kYnc75IepKizW6Y9liyW8ikz1B7n/xoHrJxoVSSjoqPn30sb7XVFfQERK4QfUMYRGs9dhWwtt2eu6uA== + dependencies: + write-stream "~0.4.3" + +enquirer@^2.3.0, enquirer@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + +entities@^4.2.0, entities@^4.3.0: + version "4.3.1" + resolved "https://registry.yarnpkg.com/entities/-/entities-4.3.1.tgz#c34062a94c865c322f9d67b4384e4169bcede6a4" + integrity sha512-o4q/dYJlmyjP2zfnaWDUC6A3BQFmVTX+tZPezK7k0GLSU9QYCauscf5Y+qcEPzKL+EixVouYDgLQK5H9GrLpkg== + +env-paths@^2.2.0, env-paths@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== + +errno@~0.1.1: + version "0.1.8" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" + integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== + dependencies: + prr "~1.0.1" + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +error-polyfill@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/error-polyfill/-/error-polyfill-0.1.3.tgz#df848b61ad8834f7a5db69a70b9913df86721d15" + integrity sha512-XHJk60ufE+TG/ydwp4lilOog549iiQF2OAPhkk9DdiYWMrltz5yhDz/xnKuenNwP7gy3dsibssO5QpVhkrSzzg== + dependencies: + capability "^0.2.5" + o3 "^1.0.3" + u3 "^0.1.1" + +es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.5, es-abstract@^1.20.0: + version "1.20.1" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.1.tgz#027292cd6ef44bd12b1913b828116f54787d1814" + integrity sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA== + dependencies: + call-bind "^1.0.2" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + function.prototype.name "^1.1.5" + get-intrinsic "^1.1.1" + get-symbol-description "^1.0.0" + has "^1.0.3" + has-property-descriptors "^1.0.0" + has-symbols "^1.0.3" + internal-slot "^1.0.3" + is-callable "^1.2.4" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-weakref "^1.0.2" + object-inspect "^1.12.0" + object-keys "^1.1.1" + object.assign "^4.1.2" + regexp.prototype.flags "^1.4.3" + string.prototype.trimend "^1.0.5" + string.prototype.trimstart "^1.0.5" + unbox-primitive "^1.0.2" + +es-shim-unscopables@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" + integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== + dependencies: + has "^1.0.3" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +es5-ext@^0.10.35, es5-ext@^0.10.50: + version "0.10.62" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.62.tgz#5e6adc19a6da524bf3d1e02bbc8960e5eb49a9a5" + integrity sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA== + dependencies: + es6-iterator "^2.0.3" + es6-symbol "^3.1.3" + next-tick "^1.1.0" + +es6-iterator@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-promise@^4.0.3, es6-promise@^4.2.8: + version "4.2.8" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" + integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== + +es6-promisify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + integrity sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ== + dependencies: + es6-promise "^4.0.3" + +es6-symbol@^3.1.1, es6-symbol@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + dependencies: + d "^1.0.1" + ext "^1.1.2" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +escape-latex@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/escape-latex/-/escape-latex-1.2.0.tgz#07c03818cf7dac250cce517f4fda1b001ef2bca1" + integrity sha512-nV5aVWW1K0wEiUIEdZ4erkGGH8mDxGyxSeqPzRNtWP7ataw+/olFObw7hujFWlVjNsaDFw5VZ5NzVSIqRgfTiw== + +escape-string-regexp@1.0.5, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escodegen@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" + integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== + dependencies: + esprima "^4.0.1" + estraverse "^5.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +eslint-config-prettier@^8.3.0: + version "8.5.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1" + integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q== + +eslint-config-standard@^16.0.3: + version "16.0.3" + resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-16.0.3.tgz#6c8761e544e96c531ff92642eeb87842b8488516" + integrity sha512-x4fmJL5hGqNJKGHSjnLdgA6U6h1YW/G2dW9fA+cyVur4SK6lyue8+UgNKWlZtUDTXvgKDD/Oa3GQjmB5kjtVvg== + +eslint-import-resolver-node@^0.3.6: + version "0.3.6" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd" + integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw== + dependencies: + debug "^3.2.7" + resolve "^1.20.0" + +eslint-module-utils@^2.7.3: + version "2.7.3" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz#ad7e3a10552fdd0642e1e55292781bd6e34876ee" + integrity sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ== + dependencies: + debug "^3.2.7" + find-up "^2.1.0" + +eslint-plugin-es@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz#75a7cdfdccddc0589934aeeb384175f221c57893" + integrity sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ== + dependencies: + eslint-utils "^2.0.0" + regexpp "^3.0.0" + +eslint-plugin-import@^2.23.4: + version "2.26.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz#f812dc47be4f2b72b478a021605a59fc6fe8b88b" + integrity sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA== + dependencies: + array-includes "^3.1.4" + array.prototype.flat "^1.2.5" + debug "^2.6.9" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.6" + eslint-module-utils "^2.7.3" + has "^1.0.3" + is-core-module "^2.8.1" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.values "^1.1.5" + resolve "^1.22.0" + tsconfig-paths "^3.14.1" + +eslint-plugin-node@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz#c95544416ee4ada26740a30474eefc5402dc671d" + integrity sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g== + dependencies: + eslint-plugin-es "^3.0.0" + eslint-utils "^2.0.0" + ignore "^5.1.1" + minimatch "^3.0.4" + resolve "^1.10.1" + semver "^6.1.0" + +eslint-plugin-prettier@^3.4.0: + version "3.4.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz#e9ddb200efb6f3d05ffe83b1665a716af4a387e5" + integrity sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g== + dependencies: + prettier-linter-helpers "^1.0.0" + +eslint-plugin-promise@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-5.2.0.tgz#a596acc32981627eb36d9d75f9666ac1a4564971" + integrity sha512-SftLb1pUG01QYq2A/hGAWfDRXqYD82zE7j7TopDOyNdU+7SvvoXREls/+PRTY17vUXzXnZA/zfnyKgRH6x4JJw== + +eslint-plugin-standard@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-4.1.0.tgz#0c3bf3a67e853f8bbbc580fb4945fbf16f41b7c5" + integrity sha512-ZL7+QRixjTR6/528YNGyDotyffm5OQst/sGxKDwGb9Uqs4In5Egi4+jbobhqJoyoCM6/7v/1A5fhQ7ScMtDjaQ== + +eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-utils@^2.0.0, eslint-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" + integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== + dependencies: + eslint-visitor-keys "^2.0.0" + +eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + +eslint-visitor-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + +eslint@^7.25.0: + version "7.32.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" + integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== + dependencies: + "@babel/code-frame" "7.12.11" + "@eslint/eslintrc" "^0.4.3" + "@humanwhocodes/config-array" "^0.5.0" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.0.1" + doctrine "^3.0.0" + enquirer "^2.3.5" + escape-string-regexp "^4.0.0" + eslint-scope "^5.1.1" + eslint-utils "^2.1.0" + eslint-visitor-keys "^2.0.0" + espree "^7.3.1" + esquery "^1.4.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.1.2" + globals "^13.6.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.0.4" + natural-compare "^1.4.0" + optionator "^0.9.1" + progress "^2.0.0" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" + table "^6.0.9" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@^7.3.0, espree@^7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" + integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== + dependencies: + acorn "^7.4.0" + acorn-jsx "^5.3.1" + eslint-visitor-keys "^1.3.0" + +esprima@^4.0.0, esprima@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" + integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + +eth-ens-namehash@2.0.8: + version "2.0.8" + resolved "https://registry.yarnpkg.com/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz#229ac46eca86d52e0c991e7cb2aef83ff0f68bcf" + integrity sha512-VWEI1+KJfz4Km//dadyvBBoBeSQ0MHTXPvr8UIXiLW6IanxvAV+DmlZAijZwAyggqGUfwQBeHf7tc9wzc1piSw== + dependencies: + idna-uts46-hx "^2.3.1" + js-sha3 "^0.5.7" + +eth-lib@0.2.7: + version "0.2.7" + resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.2.7.tgz#2f93f17b1e23aec3759cd4a3fe20c1286a3fc1ca" + integrity sha512-VqEBQKH92jNsaE8lG9CTq8M/bc12gdAfb5MY8Ro1hVyXkh7rOtY3m5tRHK3Hus5HqIAAwU2ivcUjTLVwsvf/kw== + dependencies: + bn.js "^4.11.6" + elliptic "^6.4.0" + xhr-request-promise "^0.1.2" + +eth-lib@0.2.8: + version "0.2.8" + resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.2.8.tgz#b194058bef4b220ad12ea497431d6cb6aa0623c8" + integrity sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw== + dependencies: + bn.js "^4.11.6" + elliptic "^6.4.0" + xhr-request-promise "^0.1.2" + +eth-lib@^0.1.26: + version "0.1.29" + resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.1.29.tgz#0c11f5060d42da9f931eab6199084734f4dbd1d9" + integrity sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ== + dependencies: + bn.js "^4.11.6" + elliptic "^6.4.0" + nano-json-stream-parser "^0.1.2" + servify "^0.1.12" + ws "^3.0.0" + xhr-request-promise "^0.1.2" + +ethereum-bloom-filters@^1.0.6: + version "1.0.10" + resolved "https://registry.yarnpkg.com/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz#3ca07f4aed698e75bd134584850260246a5fed8a" + integrity sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA== + dependencies: + js-sha3 "^0.8.0" + +ethereum-cryptography@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz#8d6143cfc3d74bf79bbd8edecdf29e4ae20dd191" + integrity sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ== + dependencies: + "@types/pbkdf2" "^3.0.0" + "@types/secp256k1" "^4.0.1" + blakejs "^1.1.0" + browserify-aes "^1.2.0" + bs58check "^2.1.2" + create-hash "^1.2.0" + create-hmac "^1.1.7" + hash.js "^1.1.7" + keccak "^3.0.0" + pbkdf2 "^3.0.17" + randombytes "^2.1.0" + safe-buffer "^5.1.2" + scrypt-js "^3.0.0" + secp256k1 "^4.0.1" + setimmediate "^1.0.5" + +ethereum-cryptography@^1.0.3: + version "1.1.2" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-1.1.2.tgz#74f2ac0f0f5fe79f012c889b3b8446a9a6264e6d" + integrity sha512-XDSJlg4BD+hq9N2FjvotwUET9Tfxpxc3kWGE2AqUG5vcbeunnbImVk3cj6e/xT3phdW21mE8R5IugU4fspQDcQ== + dependencies: + "@noble/hashes" "1.1.2" + "@noble/secp256k1" "1.6.3" + "@scure/bip32" "1.1.0" + "@scure/bip39" "1.1.0" + +ethereumjs-abi@^0.6.8: + version "0.6.8" + resolved "https://registry.yarnpkg.com/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz#71bc152db099f70e62f108b7cdfca1b362c6fcae" + integrity sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA== + dependencies: + bn.js "^4.11.8" + ethereumjs-util "^6.0.0" + +ethereumjs-common@^1.3.2, ethereumjs-common@^1.5.0: + version "1.5.2" + resolved "https://registry.yarnpkg.com/ethereumjs-common/-/ethereumjs-common-1.5.2.tgz#2065dbe9214e850f2e955a80e650cb6999066979" + integrity sha512-hTfZjwGX52GS2jcVO6E2sx4YuFnf0Fhp5ylo4pEPhEffNln7vS59Hr5sLnp3/QCazFLluuBZ+FZ6J5HTp0EqCA== + +ethereumjs-tx@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz#5dfe7688bf177b45c9a23f86cf9104d47ea35fed" + integrity sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw== + dependencies: + ethereumjs-common "^1.5.0" + ethereumjs-util "^6.0.0" + +ethereumjs-util@^6.0.0, ethereumjs-util@^6.1.0, ethereumjs-util@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz#fcb4e4dd5ceacb9d2305426ab1a5cd93e3163b69" + integrity sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw== + dependencies: + "@types/bn.js" "^4.11.3" + bn.js "^4.11.0" + create-hash "^1.1.2" + elliptic "^6.5.2" + ethereum-cryptography "^0.1.3" + ethjs-util "0.1.6" + rlp "^2.2.3" + +ethereumjs-util@^7.0.10, ethereumjs-util@^7.1.0, ethereumjs-util@^7.1.1, ethereumjs-util@^7.1.4, ethereumjs-util@^7.1.5: + version "7.1.5" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz#9ecf04861e4fbbeed7465ece5f23317ad1129181" + integrity sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg== + dependencies: + "@types/bn.js" "^5.1.0" + bn.js "^5.1.2" + create-hash "^1.1.2" + ethereum-cryptography "^0.1.3" + rlp "^2.2.4" + +ethers@4.0.0-beta.3: + version "4.0.0-beta.3" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.0-beta.3.tgz#15bef14e57e94ecbeb7f9b39dd0a4bd435bc9066" + integrity sha512-YYPogooSknTwvHg3+Mv71gM/3Wcrx+ZpCzarBj3mqs9njjRkrOo2/eufzhHloOCo3JSoNI4TQJJ6yU5ABm3Uog== + dependencies: + "@types/node" "^10.3.2" + aes-js "3.0.0" + bn.js "^4.4.0" + elliptic "6.3.3" + hash.js "1.1.3" + js-sha3 "0.5.7" + scrypt-js "2.0.3" + setimmediate "1.0.4" + uuid "2.0.1" + xmlhttprequest "1.8.0" + +ethers@^4.0.20, ethers@^4.0.32: + version "4.0.49" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.49.tgz#0eb0e9161a0c8b4761be547396bbe2fb121a8894" + integrity sha512-kPltTvWiyu+OktYy1IStSO16i2e7cS9D9OxZ81q2UUaiNPVrm/RTcbxamCXF9VUSKzJIdJV68EAIhTEVBalRWg== + dependencies: + aes-js "3.0.0" + bn.js "^4.11.9" + elliptic "6.5.4" + hash.js "1.1.3" + js-sha3 "0.5.7" + scrypt-js "2.0.4" + setimmediate "1.0.4" + uuid "2.0.1" + xmlhttprequest "1.8.0" + +ethers@^5.0.19, ethers@^5.0.24, ethers@^5.6.1, ethers@^5.6.2, ethers@^5.6.8: + version "5.6.9" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.6.9.tgz#4e12f8dfcb67b88ae7a78a9519b384c23c576a4d" + integrity sha512-lMGC2zv9HC5EC+8r429WaWu3uWJUCgUCt8xxKCFqkrFuBDZXDYIdzDUECxzjf2BMF8IVBByY1EBoGSL3RTm8RA== + dependencies: + "@ethersproject/abi" "5.6.4" + "@ethersproject/abstract-provider" "5.6.1" + "@ethersproject/abstract-signer" "5.6.2" + "@ethersproject/address" "5.6.1" + "@ethersproject/base64" "5.6.1" + "@ethersproject/basex" "5.6.1" + "@ethersproject/bignumber" "5.6.2" + "@ethersproject/bytes" "5.6.1" + "@ethersproject/constants" "5.6.1" + "@ethersproject/contracts" "5.6.2" + "@ethersproject/hash" "5.6.1" + "@ethersproject/hdnode" "5.6.2" + "@ethersproject/json-wallets" "5.6.1" + "@ethersproject/keccak256" "5.6.1" + "@ethersproject/logger" "5.6.0" + "@ethersproject/networks" "5.6.4" + "@ethersproject/pbkdf2" "5.6.1" + "@ethersproject/properties" "5.6.0" + "@ethersproject/providers" "5.6.8" + "@ethersproject/random" "5.6.1" + "@ethersproject/rlp" "5.6.1" + "@ethersproject/sha2" "5.6.1" + "@ethersproject/signing-key" "5.6.2" + "@ethersproject/solidity" "5.6.1" + "@ethersproject/strings" "5.6.1" + "@ethersproject/transactions" "5.6.2" + "@ethersproject/units" "5.6.1" + "@ethersproject/wallet" "5.6.2" + "@ethersproject/web" "5.6.1" + "@ethersproject/wordlists" "5.6.1" + +ethjs-unit@0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/ethjs-unit/-/ethjs-unit-0.1.6.tgz#c665921e476e87bce2a9d588a6fe0405b2c41699" + integrity sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw== + dependencies: + bn.js "4.11.6" + number-to-bn "1.7.0" + +ethjs-util@0.1.6, ethjs-util@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/ethjs-util/-/ethjs-util-0.1.6.tgz#f308b62f185f9fe6237132fb2a9818866a5cd536" + integrity sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w== + dependencies: + is-hex-prefixed "1.0.0" + strip-hex-prefix "1.0.0" + +event-target-shim@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + +eventemitter3@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" + integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== + +eventemitter3@4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384" + integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ== + +eventemitter3@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +exception-formatter@^1.0.4: + version "1.0.7" + resolved "https://registry.yarnpkg.com/exception-formatter/-/exception-formatter-1.0.7.tgz#3291616b86fceabefa97aee6a4708032c6e3b96d" + integrity sha512-zV45vEsjytJrwfGq6X9qd1Ll56cW4NC2mhCO6lqwMk4ZpA1fZ6C3UiaQM/X7if+7wZFmCgss3ahp9B/uVFuLRw== + dependencies: + colors "^1.0.3" + +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA== + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +expect@^24.1.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-24.9.0.tgz#b75165b4817074fa4a157794f46fe9f1ba15b6ca" + integrity sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q== + dependencies: + "@jest/types" "^24.9.0" + ansi-styles "^3.2.0" + jest-get-type "^24.9.0" + jest-matcher-utils "^24.9.0" + jest-message-util "^24.9.0" + jest-regex-util "^24.9.0" + +expect@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/expect/-/expect-27.5.1.tgz#83ce59f1e5bdf5f9d2b94b61d2050db48f3fef74" + integrity sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw== + dependencies: + "@jest/types" "^27.5.1" + jest-get-type "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + +exponential-backoff@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/exponential-backoff/-/exponential-backoff-3.1.0.tgz#9409c7e579131f8bd4b32d7d8094a911040f2e68" + integrity sha512-oBuz5SYz5zzyuHINoe9ooePwSu0xApKWgeNzok4hZ5YKXFh9zrQBEM15CXqoZkJJPuI2ArvqjPQd8UKJA753XA== + +express-ipfilter@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/express-ipfilter/-/express-ipfilter-1.3.1.tgz#200ccee7954bf914d2e2b150e389e3234ee142d3" + integrity sha512-9WZC8wGkI6I6ygZNzuZ2MbFJiGoDXs1dM+E8LKtSP13pdgqrnkonWlgvvbxG3YZpa7Haz7Ndum9/J6qkj52OqA== + dependencies: + ip "^1.1.8" + lodash "^4.17.11" + proxy-addr "^2.0.7" + range_check "^2.0.4" + +express-winston@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/express-winston/-/express-winston-4.2.0.tgz#e9d535d52aa4c125a54a29cce132ae2e3633f4fa" + integrity sha512-EMD74g63nVHi7pFleQw7KHCxiA1pjF5uCwbCfzGqmFxs9KvlDPIVS3cMGpULm6MshExMT9TjC3SqmRGB9kb7yw== + dependencies: + chalk "^2.4.2" + lodash "^4.17.21" + +express@^4.14.0, express@^4.17.1: + version "4.18.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.18.1.tgz#7797de8b9c72c857b9cd0e14a5eea80666267caf" + integrity sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q== + dependencies: + accepts "~1.3.8" + array-flatten "1.1.1" + body-parser "1.20.0" + content-disposition "0.5.4" + content-type "~1.0.4" + cookie "0.5.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "2.0.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.2.0" + fresh "0.5.2" + http-errors "2.0.0" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "2.4.1" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.7" + qs "6.10.3" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "0.18.0" + serve-static "1.15.0" + setprototypeof "1.2.0" + statuses "2.0.1" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +ext@^1.1.2: + version "1.6.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.6.0.tgz#3871d50641e874cc172e2b53f919842d19db4c52" + integrity sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg== + dependencies: + type "^2.5.0" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q== + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +external-editor@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +extract-files@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/extract-files/-/extract-files-9.0.0.tgz#8a7744f2437f81f5ed3250ed9f1550de902fe54a" + integrity sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ== + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== + +extsprintf@^1.2.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" + integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== + +eyes@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0" + integrity sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ== + +fast-check@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/fast-check/-/fast-check-3.1.1.tgz#72c5ae7022a4e86504762e773adfb8a5b0b01252" + integrity sha512-3vtXinVyuUKCKFKYcwXhGE6NtGWkqF8Yh3rvMZNzmwz8EPrgoc/v4pDdLHyLnCyCI5MZpZZkDEwFyXyEONOxpA== + dependencies: + pure-rand "^5.0.1" + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-diff@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" + integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== + +fast-glob@^2.2.3: + version "2.2.7" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" + integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== + dependencies: + "@mrmlnc/readdir-enhanced" "^2.2.1" + "@nodelib/fs.stat" "^1.1.2" + glob-parent "^3.1.0" + is-glob "^4.0.0" + merge2 "^1.2.3" + micromatch "^3.1.10" + +fast-glob@^3.2.9: + version "3.2.11" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" + integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fast-safe-stringify@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" + integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== + +fast-stable-stringify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fast-stable-stringify/-/fast-stable-stringify-1.0.0.tgz#5c5543462b22aeeefd36d05b34e51c78cb86d313" + integrity sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag== + +fastq@^1.6.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" + integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== + dependencies: + reusify "^1.0.4" + +faye-websocket@0.11.3: + version "0.11.3" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" + integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== + dependencies: + websocket-driver ">=0.5.1" + +fb-watchman@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" + integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== + dependencies: + bser "2.1.1" + +fd-slicer@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" + integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g== + dependencies: + pend "~1.2.0" + +fecha@^4.2.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.3.tgz#4d9ccdbc61e8629b259fdca67e65891448d569fd" + integrity sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw== + +fetch-cookie@0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/fetch-cookie/-/fetch-cookie-0.11.0.tgz#e046d2abadd0ded5804ce7e2cae06d4331c15407" + integrity sha512-BQm7iZLFhMWFy5CZ/162sAGjBfdNWb7a8LEqqnzsHFhxT/X/SVj/z2t2nu3aJvjlbQkrAlTUApplPRjWyH4mhA== + dependencies: + tough-cookie "^2.3.3 || ^3.0.1 || ^4.0.0" + +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + integrity sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA== + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +file-stream-rotator@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/file-stream-rotator/-/file-stream-rotator-0.6.1.tgz#007019e735b262bb6c6f0197e58e5c87cb96cec3" + integrity sha512-u+dBid4PvZw17PmDeRcNOtCP9CCK/9lRN2w+r1xIS7yOL9JFrIBKTvrYsxT4P0pGtThYTn++QS5ChHaUov3+zQ== + dependencies: + moment "^2.29.1" + +file-type@^3.8.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9" + integrity sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA== + +file-type@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-5.2.0.tgz#2ddbea7c73ffe36368dfae49dc338c058c2b8ad6" + integrity sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ== + +file-type@^6.1.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-6.2.0.tgz#e50cd75d356ffed4e306dc4f5bcf52a79903a919" + integrity sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg== + +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ== + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" + integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "2.4.1" + parseurl "~1.3.3" + statuses "2.0.1" + unpipe "~1.0.0" + +find-replace@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-1.0.3.tgz#b88e7364d2d9c959559f388c66670d6130441fa0" + integrity sha512-KrUnjzDCD9426YnCP56zGYy/eieTnhtK6Vn++j+JJzmlsWWwEkDnsyVF575spT6HJ6Ow9tlbT3TQTDsa+O4UWA== + dependencies: + array-back "^1.0.4" + test-value "^2.1.0" + +find-up@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ== + dependencies: + locate-path "^2.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/find/-/find-0.3.0.tgz#4082e8fc8d8320f1a382b5e4f521b9bc50775cb8" + integrity sha512-iSd+O4OEYV/I36Zl8MdYJO0xD82wH528SaCieTVHhclgiYNe9y+yPKSwK+A7/WsmHL1EZ+pYUJBXWTL5qofksw== + dependencies: + traverse-chain "~0.1.0" + +firebase@^7.8.0: + version "7.24.0" + resolved "https://registry.yarnpkg.com/firebase/-/firebase-7.24.0.tgz#dab53b9c0f1c9538d2d6f4f51769897b0b6d60d8" + integrity sha512-j6jIyGFFBlwWAmrlUg9HyQ/x+YpsPkc/TTkbTyeLwwAJrpAmmEHNPT6O9xtAnMV4g7d3RqLL/u9//aZlbY4rQA== + dependencies: + "@firebase/analytics" "0.6.0" + "@firebase/app" "0.6.11" + "@firebase/app-types" "0.6.1" + "@firebase/auth" "0.15.0" + "@firebase/database" "0.6.13" + "@firebase/firestore" "1.18.0" + "@firebase/functions" "0.5.1" + "@firebase/installations" "0.4.17" + "@firebase/messaging" "0.7.1" + "@firebase/performance" "0.4.2" + "@firebase/polyfill" "0.3.36" + "@firebase/remote-config" "0.1.28" + "@firebase/storage" "0.3.43" + "@firebase/util" "0.3.2" + +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" + +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + +flatted@^3.1.0: + version "3.2.6" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.6.tgz#022e9218c637f9f3fc9c35ab9c9193f05add60b2" + integrity sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ== + +fn.name@1.x.x: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc" + integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw== + +follow-redirects@1.5.10: + version "1.5.10" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" + integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== + dependencies: + debug "=3.1.0" + +follow-redirects@^1.12.1, follow-redirects@^1.14.0: + version "1.15.1" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.1.tgz#0ca6a452306c9b276e4d3127483e29575e207ad5" + integrity sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA== + +follow-redirects@^1.14.9: + version "1.15.2" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" + integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== + +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + +for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ== + +foreach@^2.0.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.6.tgz#87bcc8a1a0e74000ff2bf9802110708cfb02eb6e" + integrity sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg== + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== + +form-data-encoder@1.7.1: + version "1.7.1" + resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-1.7.1.tgz#ac80660e4f87ee0d3d3c3638b7da8278ddb8ec96" + integrity sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg== + +form-data@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" + integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +formidable@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/formidable/-/formidable-2.0.1.tgz#4310bc7965d185536f9565184dee74fbb75557ff" + integrity sha512-rjTMNbp2BpfQShhFbR3Ruk3qk2y9jKpvMW78nJgx8QKtxjDVrwbZG+wvDOmVbifHyOUOQJXxqEy6r0faRrPzTQ== + dependencies: + dezalgo "1.0.3" + hexoid "1.0.0" + once "1.4.0" + qs "6.9.3" + +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fp-ts@1.19.3: + version "1.19.3" + resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-1.19.3.tgz#261a60d1088fbff01f91256f91d21d0caaaaa96f" + integrity sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg== + +fp-ts@^1.0.0: + version "1.19.5" + resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-1.19.5.tgz#3da865e585dfa1fdfd51785417357ac50afc520a" + integrity sha512-wDNqTimnzs8QqpldiId9OavWK2NptormjXnRJTQecNjzwfyp6P/8s/zG8e4h3ja3oqkKaY72UlTjQYt/1yXf9A== + +fraction.js@^4.1.1, fraction.js@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950" + integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA== + dependencies: + map-cache "^0.2.2" + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + +fs-extra@^0.30.0: + version "0.30.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" + integrity sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^2.1.0" + klaw "^1.0.0" + path-is-absolute "^1.0.0" + rimraf "^2.2.8" + +fs-extra@^10.0.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-extra@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" + integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^7.0.0, fs-extra@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-minipass@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" + integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== + dependencies: + minipass "^2.6.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@^2.3.2, fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +function.prototype.name@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" + integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.0" + functions-have-names "^1.2.2" + +functional-red-black-tree@^1.0.1, functional-red-black-tree@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== + +functions-have-names@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + +ganache@7.4.4: + version "7.4.4" + resolved "https://registry.yarnpkg.com/ganache/-/ganache-7.4.4.tgz#af1bb7e85cde010c8d05186ab952a69df970dfa2" + integrity sha512-wC5XZB7ttHXc4rYfAq8+ieOZZajlsTdWsWievtQNjiuxcrIkqPqSwAZK6IP5mbooe/HSp3bDGJhXW5EHVd2G9w== + dependencies: + "@trufflesuite/bigint-buffer" "1.1.10" + "@types/bn.js" "^5.1.0" + "@types/lru-cache" "5.1.1" + "@types/seedrandom" "3.0.1" + emittery "0.10.0" + keccak "3.0.2" + leveldown "6.1.0" + secp256k1 "4.0.3" + optionalDependencies: + bufferutil "4.0.5" + utf-8-validate "5.0.7" + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" + integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.2.tgz#336975123e05ad0b7ba41f152ee4aadbea6cf598" + integrity sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.3" + +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + +get-stdin@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" + integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== + +get-stream@^2.2.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de" + integrity sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA== + dependencies: + object-assign "^4.0.1" + pinkie-promise "^2.0.0" + +get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + integrity sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ== + +get-stream@^4.0.0, get-stream@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +get-stream@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + +get-stream@^6.0.0, get-stream@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA== + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== + dependencies: + assert-plus "^1.0.0" + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA== + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-to-regexp@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" + integrity sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig== + +glob@7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" + integrity sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" + integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^6.0.1: + version "6.0.4" + resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22" + integrity sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A== + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global@~4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" + integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== + dependencies: + min-document "^2.19.0" + process "^0.11.10" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^13.6.0, globals@^13.9.0: + version "13.17.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.17.0.tgz#902eb1e680a41da93945adbdcb5a9f361ba69bd4" + integrity sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw== + dependencies: + type-fest "^0.20.2" + +globalthis@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" + integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== + dependencies: + define-properties "^1.1.3" + +globby@^11.0.3: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +golang-cover-parse@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/golang-cover-parse/-/golang-cover-parse-2.0.0.tgz#6bac2e5a88c1fb26468fa8d605aa52b4b8d12119" + integrity sha512-3AI0uT2motB7CQUInokoYqVVLeRpqTDaoXL5XS++v+UwCUNM0uIiEDy0L1UZe0VXbhhe8LUvcG3CtFXdzEebxA== + dependencies: + mocha "^5.2.0" + +got@12.1.0: + version "12.1.0" + resolved "https://registry.yarnpkg.com/got/-/got-12.1.0.tgz#099f3815305c682be4fd6b0ee0726d8e4c6b0af4" + integrity sha512-hBv2ty9QN2RdbJJMK3hesmSkFTjVIHyIDDbssCKnSmq62edGgImJWD10Eb1k77TiV1bxloxqcFAVK8+9pkhOig== + dependencies: + "@sindresorhus/is" "^4.6.0" + "@szmarczak/http-timer" "^5.0.1" + "@types/cacheable-request" "^6.0.2" + "@types/responselike" "^1.0.0" + cacheable-lookup "^6.0.4" + cacheable-request "^7.0.2" + decompress-response "^6.0.0" + form-data-encoder "1.7.1" + get-stream "^6.0.1" + http2-wrapper "^2.1.10" + lowercase-keys "^3.0.0" + p-cancelable "^3.0.0" + responselike "^2.0.0" + +got@9.6.0: + version "9.6.0" + resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" + integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== + dependencies: + "@sindresorhus/is" "^0.14.0" + "@szmarczak/http-timer" "^1.1.2" + cacheable-request "^6.0.0" + decompress-response "^3.3.0" + duplexer3 "^0.1.4" + get-stream "^4.1.0" + lowercase-keys "^1.0.1" + mimic-response "^1.0.1" + p-cancelable "^1.0.0" + to-readable-stream "^1.0.0" + url-parse-lax "^3.0.0" + +got@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/got/-/got-7.1.0.tgz#05450fd84094e6bbea56f451a43a9c289166385a" + integrity sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw== + dependencies: + decompress-response "^3.2.0" + duplexer3 "^0.1.4" + get-stream "^3.0.0" + is-plain-obj "^1.1.0" + is-retry-allowed "^1.0.0" + is-stream "^1.0.0" + isurl "^1.0.0-alpha5" + lowercase-keys "^1.0.0" + p-cancelable "^0.3.0" + p-timeout "^1.1.1" + safe-buffer "^5.0.1" + timed-out "^4.0.0" + url-parse-lax "^1.0.0" + url-to-options "^1.0.1" + +graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.9: + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + +graphql-request@^3.4.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/graphql-request/-/graphql-request-3.7.0.tgz#c7406e537084f8b9788541e3e6704340ca13055b" + integrity sha512-dw5PxHCgBneN2DDNqpWu8QkbbJ07oOziy8z+bK/TAXufsOLaETuVO4GkXrbs0WjhdKhBMN3BkpN/RIvUHkmNUQ== + dependencies: + cross-fetch "^3.0.6" + extract-files "^9.0.0" + form-data "^3.0.0" + +graphql-tag@^2.11.0, graphql-tag@^2.12.6: + version "2.12.6" + resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.12.6.tgz#d441a569c1d2537ef10ca3d1633b48725329b5f1" + integrity sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg== + dependencies: + tslib "^2.1.0" + +graphql@^15.3.0, graphql@^15.5.0: + version "15.8.0" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.8.0.tgz#33410e96b012fa3bdb1091cc99a94769db212b38" + integrity sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw== + +growl@1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.3.tgz#1926ba90cf3edfe2adb4927f5880bc22c66c790f" + integrity sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q== + +growl@1.10.5: + version "1.10.5" + resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" + integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== + +har-validator@~5.1.3: + version "5.1.5" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== + dependencies: + ajv "^6.12.3" + har-schema "^2.0.0" + +hardhat-tracer@^1.0.0-alpha.5: + version "1.0.0-alpha.6" + resolved "https://registry.yarnpkg.com/hardhat-tracer/-/hardhat-tracer-1.0.0-alpha.6.tgz#4545a772930567cad4620ee9448cb76e89b07b02" + integrity sha512-QXKEJPaCDU0P7ZNHvFuGQoKLZ9+uma3ASAoPjhHr4CYwgIHcronVPZ7zkztRc7LhDbKFffIuoh0jEQWGgR6Neg== + dependencies: + ethers "^5.0.24" + +hardhat-watcher@^2.1.1: + version "2.3.0" + resolved "https://registry.yarnpkg.com/hardhat-watcher/-/hardhat-watcher-2.3.0.tgz#57586a7fb79b73365014794f7e3dc0706aa65b7d" + integrity sha512-u76a/1pxPyW9DRZ7FZ8HoSQ4AuKOiSDQTR2NyiZlH5f0Ux+qQfahsh9CNusRLhx2s1OWzlkwCVvrdHq5FTGUzw== + dependencies: + chokidar "^3.5.3" + +hardhat@^2.0.0, hardhat@^2.9.6: + version "2.10.1" + resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.10.1.tgz#37fdc0c96d6a5d16b322269db2ad8f9f115c4046" + integrity sha512-0FN9TyCtn7Lt25SB2ei2G7nA2rZjP+RN6MvFOm+zYwherxLZNo6RbD8nDz88eCbhRapevmXqOiL2nM8INKsjmA== + dependencies: + "@ethereumjs/block" "^3.6.2" + "@ethereumjs/blockchain" "^5.5.2" + "@ethereumjs/common" "^2.6.4" + "@ethereumjs/tx" "^3.5.1" + "@ethereumjs/vm" "^5.9.0" + "@ethersproject/abi" "^5.1.2" + "@metamask/eth-sig-util" "^4.0.0" + "@sentry/node" "^5.18.1" + "@solidity-parser/parser" "^0.14.2" + "@types/bn.js" "^5.1.0" + "@types/lru-cache" "^5.1.0" + abort-controller "^3.0.0" + adm-zip "^0.4.16" + aggregate-error "^3.0.0" + ansi-escapes "^4.3.0" + chalk "^2.4.2" + chokidar "^3.4.0" + ci-info "^2.0.0" + debug "^4.1.1" + enquirer "^2.3.0" + env-paths "^2.2.0" + ethereum-cryptography "^1.0.3" + ethereumjs-abi "^0.6.8" + ethereumjs-util "^7.1.4" + find-up "^2.1.0" + fp-ts "1.19.3" + fs-extra "^7.0.1" + glob "7.2.0" + immutable "^4.0.0-rc.12" + io-ts "1.10.4" + lodash "^4.17.11" + merkle-patricia-tree "^4.2.4" + mnemonist "^0.38.0" + mocha "^10.0.0" + p-map "^4.0.0" + qs "^6.7.0" + raw-body "^2.4.1" + resolve "1.17.0" + semver "^6.3.0" + slash "^3.0.0" + solc "0.7.3" + source-map-support "^0.5.13" + stacktrace-parser "^0.1.10" + "true-case-path" "^2.2.1" + tsort "0.0.1" + undici "^5.4.0" + uuid "^8.3.2" + ws "^7.4.6" + +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== + +has-flag@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" + integrity sha512-P+1n3MnwjR/Epg9BBo1KT8qbye2g2Ou4sFumihwt6I4tsUX7jnLcX4BTOSKg/B1ZrIYMN9FcEnG4x5a7NB8Eng== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + dependencies: + get-intrinsic "^1.1.1" + +has-symbol-support-x@^1.4.1: + version "1.4.2" + resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" + integrity sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw== + +has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-to-string-tag-x@^1.2.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d" + integrity sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw== + dependencies: + has-symbol-support-x "^1.4.1" + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q== + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw== + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ== + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ== + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash.js@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846" + integrity sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.0" + +hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +hdkey@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/hdkey/-/hdkey-1.1.2.tgz#c60f9cf6f90fbf24a8a52ea06893f36a0108cd3e" + integrity sha512-PTQ4VKu0oRnCrYfLp04iQZ7T2Cxz0UsEXYauk2j8eh6PJXCpbXuCFhOmtIFtbET0i3PMWmHN9J11gU8LEgUljQ== + dependencies: + bs58check "^2.1.2" + safe-buffer "^5.1.1" + secp256k1 "^3.0.1" + +he@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" + integrity sha512-z/GDPjlRMNOa2XJiB4em8wJpuuBfrFOlYKTZxtpkdr1uPdibHI8rYA3MY0KDObpVyaes0e/aunid/t88ZI2EKA== + +he@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +header-case@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/header-case/-/header-case-1.0.1.tgz#9535973197c144b09613cd65d317ef19963bd02d" + integrity sha512-i0q9mkOeSuhXw6bGgiQCCBgY/jlZuV/7dZXyZ9c6LcBrqwvT8eT719E9uxE5LiZftdl+z81Ugbg/VvXV4OJOeQ== + dependencies: + no-case "^2.2.0" + upper-case "^1.1.3" + +hexoid@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hexoid/-/hexoid-1.0.0.tgz#ad10c6573fb907de23d9ec63a711267d9dc9bc18" + integrity sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g== + +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +hosted-git-info@^2.6.0: + version "2.8.9" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== + +html-encoding-sniffer@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" + integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== + dependencies: + whatwg-encoding "^1.0.5" + +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +htmlparser2@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-8.0.1.tgz#abaa985474fcefe269bc761a779b544d7196d010" + integrity sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA== + dependencies: + domelementtype "^2.3.0" + domhandler "^5.0.2" + domutils "^3.0.1" + entities "^4.3.0" + +http-cache-semantics@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" + integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== + +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + +http-errors@^1.7.2: + version "1.8.1" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c" + integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.1" + +http-https@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/http-https/-/http-https-1.0.0.tgz#2f908dd5f1db4068c058cd6e6d4ce392c913389b" + integrity sha512-o0PWwVCSp3O0wS6FvNr6xfBCHgt0m1tvPLFOCc2iFDKTRAXhB7m8klDf7ErowFH8POa6dVdGatKU5I1YYwzUyg== + +http-parser-js@>=0.5.1: + version "0.5.8" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.8.tgz#af23090d9ac4e24573de6f6aecc9d84a48bf20e3" + integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q== + +http-proxy-agent@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" + integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== + dependencies: + "@tootallnate/once" "1" + agent-base "6" + debug "4" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +http-status-codes@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/http-status-codes/-/http-status-codes-2.2.0.tgz#bb2efe63d941dfc2be18e15f703da525169622be" + integrity sha512-feERVo9iWxvnejp3SEfm/+oNG517npqL2/PIA8ORjyOZjGC7TwCRQsZylciLS64i6pJ0wRYz3rkXLRwbtFa8Ng== + +http2-wrapper@^2.1.10: + version "2.1.11" + resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-2.1.11.tgz#d7c980c7ffb85be3859b6a96c800b2951ae257ef" + integrity sha512-aNAk5JzLturWEUiuhAN73Jcbq96R7rTitAoXV54FYMatvihnpD2+6PUgU4ce3D/m5VDbw+F5CsyKSF176ptitQ== + dependencies: + quick-lru "^5.1.1" + resolve-alpn "^1.2.0" + +https-proxy-agent@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +iconv-lite@0.4.24, iconv-lite@^0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +idb@3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/idb/-/idb-3.0.2.tgz#c8e9122d5ddd40f13b60ae665e4862f8b13fa384" + integrity sha512-+FLa/0sTXqyux0o6C+i2lOR0VoS60LU/jzUo5xjfY6+7sEEgy4Gz1O7yFBXvjd7N0NyIGWIRg8DcQSLEG+VSPw== + +idna-uts46-hx@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz#a1dc5c4df37eee522bf66d969cc980e00e8711f9" + integrity sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA== + dependencies: + punycode "2.1.0" + +ieee754@^1.1.13, ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +ignore-by-default@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" + integrity sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA== + +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +ignore@^5.1.1, ignore@^5.1.8, ignore@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" + integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== + +immediate@3.3.0, immediate@^3.2.3: + version "3.3.0" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.3.0.tgz#1aef225517836bcdf7f2a2de2600c79ff0269266" + integrity sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q== + +immediate@~3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.2.3.tgz#d140fa8f614659bd6541233097ddaac25cdd991c" + integrity sha512-RrGCXRm/fRVqMIhqXrGEX9rRADavPiDFSoMb/k64i9XMk8uH4r/Omi5Ctierj6XzNecwDbO4WuFbDD1zmpl3Tg== + +immutable@^4.0.0, immutable@^4.0.0-rc.12: + version "4.1.0" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.1.0.tgz#f795787f0db780183307b9eb2091fcac1f6fafef" + integrity sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ== + +import-fresh@^3.0.0, import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-local@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" + integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inquirer@^6.4.1: + version "6.5.2" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" + integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== + dependencies: + ansi-escapes "^3.2.0" + chalk "^2.4.2" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^3.0.3" + figures "^2.0.0" + lodash "^4.17.12" + mute-stream "0.0.7" + run-async "^2.2.0" + rxjs "^6.4.0" + string-width "^2.1.0" + strip-ansi "^5.1.0" + through "^2.3.6" + +internal-slot@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" + integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== + dependencies: + get-intrinsic "^1.1.0" + has "^1.0.3" + side-channel "^1.0.4" + +invert-kv@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" + integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== + +io-ts@1.10.4: + version "1.10.4" + resolved "https://registry.yarnpkg.com/io-ts/-/io-ts-1.10.4.tgz#cd5401b138de88e4f920adbcb7026e2d1967e6e2" + integrity sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g== + dependencies: + fp-ts "^1.0.0" + +ip6@^0.2.0: + version "0.2.10" + resolved "https://registry.yarnpkg.com/ip6/-/ip6-0.2.10.tgz#19c07f70b68e1f3b40685d69c8cec0ea9e4ec0fd" + integrity sha512-1LdpyKjhvepd6EbAU6rW4g14vuYtx5TnJX9TfZZBhsM6DsyPQLNzW12rtbUqXBMwqFrLVV/Gcxv0GNFvJp2cYA== + +ip@^1.1.8: + version "1.1.8" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.8.tgz#ae05948f6b075435ed3307acce04629da8cdbf48" + integrity sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg== + +ipaddr.js@1.9.1, ipaddr.js@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A== + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + +is-arguments@^1.0.4: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-buffer@^2.0.2, is-buffer@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" + integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== + +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" + integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== + +is-core-module@^2.8.1, is-core-module@^2.9.0: + version "2.10.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.10.0.tgz#9012ede0a91c69587e647514e1d5277019e728ed" + integrity sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg== + dependencies: + has "^1.0.3" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg== + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-date-object@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw== + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-function@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.2.tgz#4f097f30abf6efadac9833b17ca5dc03f8144e08" + integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ== + +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + +is-generator-function@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== + dependencies: + has-tostringtag "^1.0.0" + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw== + dependencies: + is-extglob "^2.1.0" + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-hex-prefixed@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" + integrity sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA== + +is-lower-case@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-lower-case/-/is-lower-case-1.1.3.tgz#7e147be4768dc466db3bfb21cc60b31e6ad69393" + integrity sha512-+5A1e/WJpLLXZEDlgz4G//WYSHyQBD32qa4Jd3Lw06qQlv3fJHnp3YIHjTQSGzHMgzmVKz2ZP3rBxTHkPw/lxA== + dependencies: + lower-case "^1.1.0" + +is-natural-number@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-4.0.1.tgz#ab9d76e1db4ced51e35de0c72ebecf09f734cde8" + integrity sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ== + +is-negative-zero@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + +is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== + dependencies: + has-tostringtag "^1.0.0" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg== + dependencies: + kind-of "^3.0.2" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-obj@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + integrity sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg== + +is-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + +is-object@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.2.tgz#a56552e1c665c9e950b4a025461da87e72f86fcf" + integrity sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA== + +is-plain-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== + +is-plain-obj@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + +is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-potential-custom-element-name@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" + integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== + +is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-retry-allowed@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" + integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== + +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" + +is-stream@^1.0.0, is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-typed-array@^1.1.3, is-typed-array@^1.1.9: + version "1.1.9" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.9.tgz#246d77d2871e7d9f5aeb1d54b9f52c71329ece67" + integrity sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + es-abstract "^1.20.0" + for-each "^0.3.3" + has-tostringtag "^1.0.0" + +is-typedarray@^1.0.0, is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + +is-upper-case@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-upper-case/-/is-upper-case-1.1.2.tgz#8d0b1fa7e7933a1e58483600ec7d9661cbaf756f" + integrity sha512-GQYSJMgfeAmVwh9ixyk888l7OIhNAGKtY6QA+IrWlu9MDTCaXmeozOZ2S9Knj7bQwBO/H6J2kb+pbyTUiMNbsw== + dependencies: + upper-case "^1.1.0" + +is-url@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" + integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww== + +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== + +isarray@1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isnumber@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isnumber/-/isnumber-1.0.0.tgz#0e3f9759b581d99dd85086f0ec2a74909cfadd01" + integrity sha512-JLiSz/zsZcGFXPrB4I/AGBvtStkt+8QmksyZBZnVXnnK9XdTEyz0tX8CRYljtwYDuIuZzih6DpHQdi+3Q6zHPw== + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA== + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== + +isomorphic-unfetch@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz#87341d5f4f7b63843d468438128cb087b7c3e98f" + integrity sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q== + dependencies: + node-fetch "^2.6.1" + unfetch "^4.2.0" + +isomorphic-ws@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc" + integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w== + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== + +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" + integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== + +istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz#31d18bdd127f825dd02ea7bfdfd906f8ab840e9f" + integrity sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A== + dependencies: + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.2.0" + semver "^6.3.0" + +istanbul-lib-report@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" + integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^3.0.0" + supports-color "^7.1.0" + +istanbul-lib-source-maps@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" + integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + source-map "^0.6.1" + +istanbul-reports@^3.1.3: + version "3.1.5" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.5.tgz#cc9a6ab25cb25659810e4785ed9d9fb742578bae" + integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +isurl@^1.0.0-alpha5: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67" + integrity sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w== + dependencies: + has-to-string-tag-x "^1.2.0" + is-object "^1.0.1" + +jacoco-parse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/jacoco-parse/-/jacoco-parse-2.0.1.tgz#a1fab49df2c8a11fd9204b615677bc58ab784b65" + integrity sha512-YGhIb2iXuQ4/zNh2zgHd6Z6dqlYwLYH1wfsxtTNQ+jnHH9PhhuMwqOFihXymSI41trxok48LdKkSeDIWs28tYg== + dependencies: + mocha "^5.2.0" + xml2js "^0.4.9" + +javascript-natural-sort@^0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz#f9e2303d4507f6d74355a73664d1440fb5a0ef59" + integrity sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw== + +jayson@^3.4.4: + version "3.6.6" + resolved "https://registry.yarnpkg.com/jayson/-/jayson-3.6.6.tgz#189984f624e398f831bd2be8e8c80eb3abf764a1" + integrity sha512-f71uvrAWTtrwoww6MKcl9phQTC+56AopLyEenWvKVAIMz+q0oVGj6tenLZ7Z6UiPBkJtKLj4kt0tACllFQruGQ== + dependencies: + "@types/connect" "^3.4.33" + "@types/express-serve-static-core" "^4.17.9" + "@types/lodash" "^4.14.159" + "@types/node" "^12.12.54" + "@types/ws" "^7.4.4" + JSONStream "^1.3.5" + commander "^2.20.3" + delay "^5.0.0" + es6-promisify "^5.0.0" + eyes "^0.1.8" + isomorphic-ws "^4.0.1" + json-stringify-safe "^5.0.1" + lodash "^4.17.20" + uuid "^8.3.2" + ws "^7.4.5" + +jest-changed-files@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.5.1.tgz#a348aed00ec9bf671cc58a66fcbe7c3dfd6a68f5" + integrity sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw== + dependencies: + "@jest/types" "^27.5.1" + execa "^5.0.0" + throat "^6.0.1" + +jest-circus@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.5.1.tgz#37a5a4459b7bf4406e53d637b49d22c65d125ecc" + integrity sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + dedent "^0.7.0" + expect "^27.5.1" + is-generator-fn "^2.0.0" + jest-each "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + jest-runtime "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + pretty-format "^27.5.1" + slash "^3.0.0" + stack-utils "^2.0.3" + throat "^6.0.1" + +jest-cli@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.5.1.tgz#278794a6e6458ea8029547e6c6cbf673bd30b145" + integrity sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw== + dependencies: + "@jest/core" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + import-local "^3.0.2" + jest-config "^27.5.1" + jest-util "^27.5.1" + jest-validate "^27.5.1" + prompts "^2.0.1" + yargs "^16.2.0" + +jest-config@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.5.1.tgz#5c387de33dca3f99ad6357ddeccd91bf3a0e4a41" + integrity sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA== + dependencies: + "@babel/core" "^7.8.0" + "@jest/test-sequencer" "^27.5.1" + "@jest/types" "^27.5.1" + babel-jest "^27.5.1" + chalk "^4.0.0" + ci-info "^3.2.0" + deepmerge "^4.2.2" + glob "^7.1.1" + graceful-fs "^4.2.9" + jest-circus "^27.5.1" + jest-environment-jsdom "^27.5.1" + jest-environment-node "^27.5.1" + jest-get-type "^27.5.1" + jest-jasmine2 "^27.5.1" + jest-regex-util "^27.5.1" + jest-resolve "^27.5.1" + jest-runner "^27.5.1" + jest-util "^27.5.1" + jest-validate "^27.5.1" + micromatch "^4.0.4" + parse-json "^5.2.0" + pretty-format "^27.5.1" + slash "^3.0.0" + strip-json-comments "^3.1.1" + +jest-diff@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.9.0.tgz#931b7d0d5778a1baf7452cb816e325e3724055da" + integrity sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ== + dependencies: + chalk "^2.0.1" + diff-sequences "^24.9.0" + jest-get-type "^24.9.0" + pretty-format "^24.9.0" + +jest-diff@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def" + integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw== + dependencies: + chalk "^4.0.0" + diff-sequences "^27.5.1" + jest-get-type "^27.5.1" + pretty-format "^27.5.1" + +jest-docblock@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.5.1.tgz#14092f364a42c6108d42c33c8cf30e058e25f6c0" + integrity sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ== + dependencies: + detect-newline "^3.0.0" + +jest-each@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.5.1.tgz#5bc87016f45ed9507fed6e4702a5b468a5b2c44e" + integrity sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ== + dependencies: + "@jest/types" "^27.5.1" + chalk "^4.0.0" + jest-get-type "^27.5.1" + jest-util "^27.5.1" + pretty-format "^27.5.1" + +jest-environment-jsdom@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz#ea9ccd1fc610209655a77898f86b2b559516a546" + integrity sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/fake-timers" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + jest-mock "^27.5.1" + jest-util "^27.5.1" + jsdom "^16.6.0" + +jest-environment-node@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.5.1.tgz#dedc2cfe52fab6b8f5714b4808aefa85357a365e" + integrity sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/fake-timers" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + jest-mock "^27.5.1" + jest-util "^27.5.1" + +jest-extended@^0.11.5: + version "0.11.5" + resolved "https://registry.yarnpkg.com/jest-extended/-/jest-extended-0.11.5.tgz#f063b3f1eaadad8d7c13a01f0dfe0f538d498ccf" + integrity sha512-3RsdFpLWKScpsLD6hJuyr/tV5iFOrw7v6YjA3tPdda9sJwoHwcMROws5gwiIZfcwhHlJRwFJB2OUvGmF3evV/Q== + dependencies: + expect "^24.1.0" + jest-get-type "^22.4.3" + jest-matcher-utils "^22.0.0" + +jest-get-type@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-22.4.3.tgz#e3a8504d8479342dd4420236b322869f18900ce4" + integrity sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w== + +jest-get-type@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e" + integrity sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q== + +jest-get-type@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" + integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== + +jest-haste-map@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.5.1.tgz#9fd8bd7e7b4fa502d9c6164c5640512b4e811e7f" + integrity sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng== + dependencies: + "@jest/types" "^27.5.1" + "@types/graceful-fs" "^4.1.2" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.9" + jest-regex-util "^27.5.1" + jest-serializer "^27.5.1" + jest-util "^27.5.1" + jest-worker "^27.5.1" + micromatch "^4.0.4" + walker "^1.0.7" + optionalDependencies: + fsevents "^2.3.2" + +jest-jasmine2@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz#a037b0034ef49a9f3d71c4375a796f3b230d1ac4" + integrity sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/source-map" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + expect "^27.5.1" + is-generator-fn "^2.0.0" + jest-each "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + jest-runtime "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + pretty-format "^27.5.1" + throat "^6.0.1" + +jest-leak-detector@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz#6ec9d54c3579dd6e3e66d70e3498adf80fde3fb8" + integrity sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ== + dependencies: + jest-get-type "^27.5.1" + pretty-format "^27.5.1" + +jest-matcher-utils@^22.0.0: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-22.4.3.tgz#4632fe428ebc73ebc194d3c7b65d37b161f710ff" + integrity sha512-lsEHVaTnKzdAPR5t4B6OcxXo9Vy4K+kRRbG5gtddY8lBEC+Mlpvm1CJcsMESRjzUhzkz568exMV1hTB76nAKbA== + dependencies: + chalk "^2.0.1" + jest-get-type "^22.4.3" + pretty-format "^22.4.3" + +jest-matcher-utils@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz#f5b3661d5e628dffe6dd65251dfdae0e87c3a073" + integrity sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA== + dependencies: + chalk "^2.0.1" + jest-diff "^24.9.0" + jest-get-type "^24.9.0" + pretty-format "^24.9.0" + +jest-matcher-utils@^27.0.0, jest-matcher-utils@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz#9c0cdbda8245bc22d2331729d1091308b40cf8ab" + integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw== + dependencies: + chalk "^4.0.0" + jest-diff "^27.5.1" + jest-get-type "^27.5.1" + pretty-format "^27.5.1" + +jest-message-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.9.0.tgz#527f54a1e380f5e202a8d1149b0ec872f43119e3" + integrity sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw== + dependencies: + "@babel/code-frame" "^7.0.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/stack-utils" "^1.0.1" + chalk "^2.0.1" + micromatch "^3.1.10" + slash "^2.0.0" + stack-utils "^1.0.1" + +jest-message-util@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.5.1.tgz#bdda72806da10d9ed6425e12afff38cd1458b6cf" + integrity sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^27.5.1" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^27.5.1" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-mock@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.5.1.tgz#19948336d49ef4d9c52021d34ac7b5f36ff967d6" + integrity sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og== + dependencies: + "@jest/types" "^27.5.1" + "@types/node" "*" + +jest-pnp-resolver@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" + integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== + +jest-regex-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.9.0.tgz#c13fb3380bde22bf6575432c493ea8fe37965636" + integrity sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA== + +jest-regex-util@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.5.1.tgz#4da143f7e9fd1e542d4aa69617b38e4a78365b95" + integrity sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg== + +jest-resolve-dependencies@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz#d811ecc8305e731cc86dd79741ee98fed06f1da8" + integrity sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg== + dependencies: + "@jest/types" "^27.5.1" + jest-regex-util "^27.5.1" + jest-snapshot "^27.5.1" + +jest-resolve@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.5.1.tgz#a2f1c5a0796ec18fe9eb1536ac3814c23617b384" + integrity sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw== + dependencies: + "@jest/types" "^27.5.1" + chalk "^4.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-pnp-resolver "^1.2.2" + jest-util "^27.5.1" + jest-validate "^27.5.1" + resolve "^1.20.0" + resolve.exports "^1.1.0" + slash "^3.0.0" + +jest-runner@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.5.1.tgz#071b27c1fa30d90540805c5645a0ec167c7b62e5" + integrity sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ== + dependencies: + "@jest/console" "^27.5.1" + "@jest/environment" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.8.1" + graceful-fs "^4.2.9" + jest-docblock "^27.5.1" + jest-environment-jsdom "^27.5.1" + jest-environment-node "^27.5.1" + jest-haste-map "^27.5.1" + jest-leak-detector "^27.5.1" + jest-message-util "^27.5.1" + jest-resolve "^27.5.1" + jest-runtime "^27.5.1" + jest-util "^27.5.1" + jest-worker "^27.5.1" + source-map-support "^0.5.6" + throat "^6.0.1" + +jest-runtime@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.5.1.tgz#4896003d7a334f7e8e4a53ba93fb9bcd3db0a1af" + integrity sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/fake-timers" "^27.5.1" + "@jest/globals" "^27.5.1" + "@jest/source-map" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + chalk "^4.0.0" + cjs-module-lexer "^1.0.0" + collect-v8-coverage "^1.0.0" + execa "^5.0.0" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-message-util "^27.5.1" + jest-mock "^27.5.1" + jest-regex-util "^27.5.1" + jest-resolve "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + slash "^3.0.0" + strip-bom "^4.0.0" + +jest-serializer@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.5.1.tgz#81438410a30ea66fd57ff730835123dea1fb1f64" + integrity sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w== + dependencies: + "@types/node" "*" + graceful-fs "^4.2.9" + +jest-snapshot@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.5.1.tgz#b668d50d23d38054a51b42c4039cab59ae6eb6a1" + integrity sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA== + dependencies: + "@babel/core" "^7.7.2" + "@babel/generator" "^7.7.2" + "@babel/plugin-syntax-typescript" "^7.7.2" + "@babel/traverse" "^7.7.2" + "@babel/types" "^7.0.0" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/babel__traverse" "^7.0.4" + "@types/prettier" "^2.1.5" + babel-preset-current-node-syntax "^1.0.0" + chalk "^4.0.0" + expect "^27.5.1" + graceful-fs "^4.2.9" + jest-diff "^27.5.1" + jest-get-type "^27.5.1" + jest-haste-map "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + jest-util "^27.5.1" + natural-compare "^1.4.0" + pretty-format "^27.5.1" + semver "^7.3.2" + +jest-util@^27.0.0, jest-util@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.5.1.tgz#3ba9771e8e31a0b85da48fe0b0891fb86c01c2f9" + integrity sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw== + dependencies: + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-validate@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.5.1.tgz#9197d54dc0bdb52260b8db40b46ae668e04df067" + integrity sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ== + dependencies: + "@jest/types" "^27.5.1" + camelcase "^6.2.0" + chalk "^4.0.0" + jest-get-type "^27.5.1" + leven "^3.1.0" + pretty-format "^27.5.1" + +jest-watcher@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.5.1.tgz#71bd85fb9bde3a2c2ec4dc353437971c43c642a2" + integrity sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw== + dependencies: + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + jest-util "^27.5.1" + string-length "^4.0.1" + +jest-worker@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest@^27.3.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest/-/jest-27.5.1.tgz#dadf33ba70a779be7a6fc33015843b51494f63fc" + integrity sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ== + dependencies: + "@jest/core" "^27.5.1" + import-local "^3.0.2" + jest-cli "^27.5.1" + +js-sha256@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/js-sha256/-/js-sha256-0.9.0.tgz#0b89ac166583e91ef9123644bd3c5334ce9d0966" + integrity sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA== + +js-sha3@0.5.7, js-sha3@^0.5.7: + version "0.5.7" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.7.tgz#0d4ffd8002d5333aabaf4a23eed2f6374c9f28e7" + integrity sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g== + +js-sha3@0.8.0, js-sha3@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" + integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@4.1.0, js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsbi@^3.1.1, jsbi@^3.1.4: + version "3.2.5" + resolved "https://registry.yarnpkg.com/jsbi/-/jsbi-3.2.5.tgz#b37bb90e0e5c2814c1c2a1bcd8c729888a2e37d6" + integrity sha512-aBE4n43IPvjaddScbvWRA2YlTzKEynHzu7MqOyTipdHucf/VxS63ViCjxYRg86M8Rxwbt/GfzHl1kKERkt45fQ== + +jsbi@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/jsbi/-/jsbi-4.3.0.tgz#b54ee074fb6fcbc00619559305c8f7e912b04741" + integrity sha512-SnZNcinB4RIcnEyZqFPdGPVgrg2AcnykiBy0sHVJQKHYeaLUvi3Exj+iaPpLnFVkDPZIV4U0yvgC9/R4uEAZ9g== + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== + +jsdom@^16.6.0: + version "16.7.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" + integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== + dependencies: + abab "^2.0.5" + acorn "^8.2.4" + acorn-globals "^6.0.0" + cssom "^0.4.4" + cssstyle "^2.3.0" + data-urls "^2.0.0" + decimal.js "^10.2.1" + domexception "^2.0.1" + escodegen "^2.0.0" + form-data "^3.0.0" + html-encoding-sniffer "^2.0.1" + http-proxy-agent "^4.0.1" + https-proxy-agent "^5.0.0" + is-potential-custom-element-name "^1.0.1" + nwsapi "^2.2.0" + parse5 "6.0.1" + saxes "^5.0.1" + symbol-tree "^3.2.4" + tough-cookie "^4.0.0" + w3c-hr-time "^1.0.2" + w3c-xmlserializer "^2.0.0" + webidl-conversions "^6.1.0" + whatwg-encoding "^1.0.5" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.5.0" + ws "^7.4.6" + xml-name-validator "^3.0.0" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +json-buffer@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" + integrity sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ== + +json-buffer@3.0.1, json-buffer@~3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-pointer@^0.6.1: + version "0.6.2" + resolved "https://registry.yarnpkg.com/json-pointer/-/json-pointer-0.6.2.tgz#f97bd7550be5e9ea901f8c9264c9d436a22a93cd" + integrity sha512-vLWcKbOaXlO+jvRy4qNd+TI1QUPZzfJj1tpJ3vAXDych5XJf93ftpUKe5pKCrzyIIwgBJcOcCVRUfqQP25afBw== + dependencies: + foreach "^2.0.4" + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json-schema-typed@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/json-schema-typed/-/json-schema-typed-7.0.3.tgz#23ff481b8b4eebcd2ca123b4fa0409e66469a2d9" + integrity sha512-7DE8mpG+/fVw+dTpjbxnx47TaMnDfOI1jwft9g1VybltZCduyRQPJPvc+zzKY9WPHxhPWczyFuYa6I8Mw4iU5A== + +json-schema@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" + integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +json-stable-stringify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" + integrity sha512-i/J297TW6xyj7sDFa7AmBPkQvLIxWr2kKPWI26tXydnZrzVAocNqn5DMNT1Mzk0vit1V5UkRM7C1KdVNp7Lmcg== + dependencies: + jsonify "~0.0.0" + +json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== + +json-text-sequence@^0.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/json-text-sequence/-/json-text-sequence-0.1.1.tgz#a72f217dc4afc4629fff5feb304dc1bd51a2f3d2" + integrity sha512-L3mEegEWHRekSHjc7+sc8eJhba9Clq1PZ8kMkzf8OxElhXc8O4TS5MwcVlj9aEbm5dr81N90WHC5nAz3UO971w== + dependencies: + delimit-stream "0.1.0" + +json5@2.x, json5@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" + integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== + +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + +jsonfile@^2.1.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" + integrity sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw== + optionalDependencies: + graceful-fs "^4.1.6" + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== + optionalDependencies: + graceful-fs "^4.1.6" + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonify@~0.0.0: + version "0.0.1" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.1.tgz#2aa3111dae3d34a0f151c63f3a45d995d9420978" + integrity sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg== + +jsonparse@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= + +jsprim@^1.2.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" + integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.4.0" + verror "1.10.0" + +keccak@3.0.2, keccak@^3.0.0, keccak@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.2.tgz#4c2c6e8c54e04f2670ee49fa734eb9da152206e0" + integrity sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ== + dependencies: + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + readable-stream "^3.6.0" + +keyv@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" + integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== + dependencies: + json-buffer "3.0.0" + +keyv@^4.0.0: + version "4.3.3" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.3.3.tgz#6c1bcda6353a9e96fc1b4e1aeb803a6e35090ba9" + integrity sha512-AcysI17RvakTh8ir03+a3zJr5r0ovnAH/XTXei/4HIv3bL2K/jzvgivLK9UuI/JbU1aJjM3NSAnVvVVd3n+4DQ== + dependencies: + compress-brotli "^1.3.8" + json-buffer "3.0.1" + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw== + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +klaw@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" + integrity sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw== + optionalDependencies: + graceful-fs "^4.1.9" + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +kuler@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/kuler/-/kuler-2.0.0.tgz#e2c570a3800388fb44407e851531c1d670b061b3" + integrity sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A== + +lcid@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" + integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== + dependencies: + invert-kv "^2.0.0" + +lcov-parse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcov-parse/-/lcov-parse-1.0.0.tgz#eb0d46b54111ebc561acb4c408ef9363bdc8f7e0" + integrity sha1-6w1GtUER68VhrLTECO+TY73I9+A= + +level-codec@9.0.2, level-codec@^9.0.0: + version "9.0.2" + resolved "https://registry.yarnpkg.com/level-codec/-/level-codec-9.0.2.tgz#fd60df8c64786a80d44e63423096ffead63d8cbc" + integrity sha512-UyIwNb1lJBChJnGfjmO0OR+ezh2iVu1Kas3nvBS/BzGnx79dv6g7unpKIDNPMhfdTEGoc7mC8uAu51XEtX+FHQ== + dependencies: + buffer "^5.6.0" + +level-concat-iterator@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/level-concat-iterator/-/level-concat-iterator-3.1.0.tgz#5235b1f744bc34847ed65a50548aa88d22e881cf" + integrity sha512-BWRCMHBxbIqPxJ8vHOvKUsaO0v1sLYZtjN3K2iZJsRBYtp+ONsY6Jfi6hy9K3+zolgQRryhIn2NRZjZnWJ9NmQ== + dependencies: + catering "^2.1.0" + +level-concat-iterator@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/level-concat-iterator/-/level-concat-iterator-2.0.1.tgz#1d1009cf108340252cb38c51f9727311193e6263" + integrity sha512-OTKKOqeav2QWcERMJR7IS9CUo1sHnke2C0gkSmcR7QuEtFNLLzHQAvnMw8ykvEcv0Qtkg0p7FOwP1v9e5Smdcw== + +level-errors@^2.0.0, level-errors@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-2.0.1.tgz#2132a677bf4e679ce029f517c2f17432800c05c8" + integrity sha512-UVprBJXite4gPS+3VznfgDSU8PTRuVX0NXwoWW50KLxd2yw4Y1t2JUR5In1itQnudZqRMT9DlAM3Q//9NCjCFw== + dependencies: + errno "~0.1.1" + +level-iterator-stream@~4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-4.0.2.tgz#7ceba69b713b0d7e22fcc0d1f128ccdc8a24f79c" + integrity sha512-ZSthfEqzGSOMWoUGhTXdX9jv26d32XJuHz/5YnuHZzH6wldfWMOVwI9TBtKcya4BKTyTt3XVA0A3cF3q5CY30Q== + dependencies: + inherits "^2.0.4" + readable-stream "^3.4.0" + xtend "^4.0.2" + +level-js@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/level-js/-/level-js-5.0.2.tgz#5e280b8f93abd9ef3a305b13faf0b5397c969b55" + integrity sha512-SnBIDo2pdO5VXh02ZmtAyPP6/+6YTJg2ibLtl9C34pWvmtMEmRTWpra+qO/hifkUtBTOtfx6S9vLDjBsBK4gRg== + dependencies: + abstract-leveldown "~6.2.3" + buffer "^5.5.0" + inherits "^2.0.3" + ltgt "^2.1.2" + +level-mem@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/level-mem/-/level-mem-5.0.1.tgz#c345126b74f5b8aa376dc77d36813a177ef8251d" + integrity sha512-qd+qUJHXsGSFoHTziptAKXoLX87QjR7v2KMbqncDXPxQuCdsQlzmyX+gwrEHhlzn08vkf8TyipYyMmiC6Gobzg== + dependencies: + level-packager "^5.0.3" + memdown "^5.0.0" + +level-packager@^5.0.3, level-packager@^5.1.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/level-packager/-/level-packager-5.1.1.tgz#323ec842d6babe7336f70299c14df2e329c18939" + integrity sha512-HMwMaQPlTC1IlcwT3+swhqf/NUO+ZhXVz6TY1zZIIZlIR0YSn8GtAAWmIvKjNY16ZkEg/JcpAuQskxsXqC0yOQ== + dependencies: + encoding-down "^6.3.0" + levelup "^4.3.2" + +level-supports@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-2.1.0.tgz#9af908d853597ecd592293b2fad124375be79c5f" + integrity sha512-E486g1NCjW5cF78KGPrMDRBYzPuueMZ6VBXHT6gC7A8UYWGiM14fGgp+s/L1oFfDWSPV/+SFkYCmZ0SiESkRKA== + +level-supports@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-4.0.1.tgz#431546f9d81f10ff0fea0e74533a0e875c08c66a" + integrity sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA== + +level-supports@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-1.0.1.tgz#2f530a596834c7301622521988e2c36bb77d122d" + integrity sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg== + dependencies: + xtend "^4.0.2" + +level-transcoder@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/level-transcoder/-/level-transcoder-1.0.1.tgz#f8cef5990c4f1283d4c86d949e73631b0bc8ba9c" + integrity sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w== + dependencies: + buffer "^6.0.3" + module-error "^1.0.1" + +level-write-stream@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/level-write-stream/-/level-write-stream-1.0.0.tgz#3f7fbb679a55137c0feb303dee766e12ee13c1dc" + integrity sha512-bBNKOEOMl8msO+uIM9YX/gUO6ckokZ/4pCwTm/lwvs46x6Xs8Zy0sn3Vh37eDqse4mhy4fOMIb/JsSM2nyQFtw== + dependencies: + end-stream "~0.1.0" + +level-ws@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/level-ws/-/level-ws-2.0.0.tgz#207a07bcd0164a0ec5d62c304b4615c54436d339" + integrity sha512-1iv7VXx0G9ec1isqQZ7y5LmoZo/ewAsyDHNA8EFDW5hqH2Kqovm33nSFkSdnLLAK+I5FlT+lo5Cw9itGe+CpQA== + dependencies: + inherits "^2.0.3" + readable-stream "^3.1.0" + xtend "^4.0.1" + +level@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/level/-/level-6.0.1.tgz#dc34c5edb81846a6de5079eac15706334b0d7cd6" + integrity sha512-psRSqJZCsC/irNhfHzrVZbmPYXDcEYhA5TVNwr+V92jF44rbf86hqGp8fiT702FyiArScYIlPSBTDUASCVNSpw== + dependencies: + level-js "^5.0.0" + level-packager "^5.1.0" + leveldown "^5.4.0" + +level@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/level/-/level-8.0.0.tgz#41b4c515dabe28212a3e881b61c161ffead14394" + integrity sha512-ypf0jjAk2BWI33yzEaaotpq7fkOPALKAgDBxggO6Q9HGX2MRXn0wbP1Jn/tJv1gtL867+YOjOB49WaUF3UoJNQ== + dependencies: + browser-level "^1.0.1" + classic-level "^1.2.0" + +leveldown@5.6.0, leveldown@^5.4.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/leveldown/-/leveldown-5.6.0.tgz#16ba937bb2991c6094e13ac5a6898ee66d3eee98" + integrity sha512-iB8O/7Db9lPaITU1aA2txU/cBEXAt4vWwKQRrrWuS6XDgbP4QZGj9BL2aNbwb002atoQ/lIotJkfyzz+ygQnUQ== + dependencies: + abstract-leveldown "~6.2.1" + napi-macros "~2.0.0" + node-gyp-build "~4.1.0" + +leveldown@6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/leveldown/-/leveldown-6.1.0.tgz#7ab1297706f70c657d1a72b31b40323aa612b9ee" + integrity sha512-8C7oJDT44JXxh04aSSsfcMI8YiaGRhOFI9/pMEL7nWJLVsWajDPTRxsSHTM2WcTVY5nXM+SuRHzPPi0GbnDX+w== + dependencies: + abstract-leveldown "^7.2.0" + napi-macros "~2.0.0" + node-gyp-build "^4.3.0" + +levelup@4.4.0, levelup@^4.3.2: + version "4.4.0" + resolved "https://registry.yarnpkg.com/levelup/-/levelup-4.4.0.tgz#f89da3a228c38deb49c48f88a70fb71f01cafed6" + integrity sha512-94++VFO3qN95cM/d6eBXvd894oJE0w3cInq9USsyQzzoJxmiYzPAocNcuGCPGGjoXqDVJcr3C1jzt1TSjyaiLQ== + dependencies: + deferred-leveldown "~5.3.0" + level-errors "~2.0.0" + level-iterator-stream "~4.0.0" + level-supports "~1.0.0" + xtend "~4.0.0" + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +libsodium-wrappers@^0.7.6: + version "0.7.10" + resolved "https://registry.yarnpkg.com/libsodium-wrappers/-/libsodium-wrappers-0.7.10.tgz#13ced44cacb0fc44d6ac9ce67d725956089ce733" + integrity sha512-pO3F1Q9NPLB/MWIhehim42b/Fwb30JNScCNh8TcQ/kIc+qGLQch8ag8wb0keK3EP5kbGakk1H8Wwo7v+36rNQg== + dependencies: + libsodium "^0.7.0" + +libsodium@^0.7.0: + version "0.7.10" + resolved "https://registry.yarnpkg.com/libsodium/-/libsodium-0.7.10.tgz#c2429a7e4c0836f879d701fec2c8a208af024159" + integrity sha512-eY+z7hDrDKxkAK+QKZVNv92A5KYkxfvIshtBJkmg5TSiCnYqZP3i9OO9whE79Pwgm4jGaoHgkM4ao/b9Cyu4zQ== + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA== + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lockfile@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lockfile/-/lockfile-1.0.4.tgz#07f819d25ae48f87e538e6578b6964a4981a5609" + integrity sha512-cvbTwETRfsFh4nHsL1eGWapU1XFi5Ot9E85sWAwia7Y7EgB7vfqcZhTKZ+l7hCGxSPoushMv5GKhT5PdLv03WA== + dependencies: + signal-exit "^3.0.2" + +lodash-es@^4.17.21, lodash-es@^4.2.1: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" + integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== + +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== + +lodash.memoize@4.x: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA== + +lodash.truncate@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" + integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== + +lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.2.1, lodash@^4.7.0: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +log-symbols@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +logform@^2.3.2, logform@^2.4.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/logform/-/logform-2.4.2.tgz#a617983ac0334d0c3b942c34945380062795b47c" + integrity sha512-W4c9himeAwXEdZ05dQNerhFz2XG80P9Oj0loPUMV23VC2it0orMHQhJm4hdnnor3rd1HsGf6a2lPwBM1zeXHGw== + dependencies: + "@colors/colors" "1.5.0" + fecha "^4.2.0" + ms "^2.1.1" + safe-stable-stringify "^2.3.1" + triple-beam "^1.3.0" + +loglevel@^1.6.8: + version "1.8.0" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.8.0.tgz#e7ec73a57e1e7b419cb6c6ac06bf050b67356114" + integrity sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA== + +long@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" + integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== + +long@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/long/-/long-5.2.0.tgz#2696dadf4b4da2ce3f6f6b89186085d94d52fd61" + integrity sha512-9RTUNjK60eJbx3uz+TEGF7fUr29ZDxR5QzXcyDpeSfeH28S9ycINflOgOlppit5U+4kNTe83KQnMEerw7GmE8w== + +loose-envify@^1.1.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lower-case-first@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/lower-case-first/-/lower-case-first-1.0.2.tgz#e5da7c26f29a7073be02d52bac9980e5922adfa1" + integrity sha512-UuxaYakO7XeONbKrZf5FEgkantPf5DUqDayzP5VXZrtRPdH86s4kN47I8B3TW10S4QKiE3ziHNf3kRN//okHjA== + dependencies: + lower-case "^1.1.2" + +lower-case@^1.1.0, lower-case@^1.1.1, lower-case@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" + integrity sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA== + +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== + dependencies: + tslib "^2.0.3" + +lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" + integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== + +lowercase-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" + integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== + +lowercase-keys@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-3.0.0.tgz#c5e7d442e37ead247ae9db117a9d0a467c89d4f2" + integrity sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ== + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +lru-cache@^7.10.1: + version "7.14.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.14.0.tgz#21be64954a4680e303a09e9468f880b98a0b3c7f" + integrity sha512-EIRtP1GrSJny0dqb50QXRUNBxHJhcpxHC++M5tD7RYbvLLn5KVWKsbyswSSqDuU15UFi3bgTQIY8nhDMeF6aDQ== + +lru_map@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd" + integrity sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ== + +ltgt@2.2.1, ltgt@^2.1.2, ltgt@~2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.2.1.tgz#f35ca91c493f7b73da0e07495304f17b31f87ee5" + integrity sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA== + +make-dir@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" + integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== + dependencies: + pify "^3.0.0" + +make-dir@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +make-error@1.x, make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== + dependencies: + tmpl "1.0.5" + +map-age-cleaner@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" + integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== + dependencies: + p-defer "^1.0.0" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg== + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w== + dependencies: + object-visit "^1.0.0" + +mathjs@*: + version "11.0.1" + resolved "https://registry.yarnpkg.com/mathjs/-/mathjs-11.0.1.tgz#7fb5150ef8c427f8bcddba52a084a3d8bffda7ea" + integrity sha512-Kgm+GcTxwD68zupr7BPK0yrlWpTh2q8sMH6VcBcQe5+JCBqcwOrBxBF11WPah7hVv0NCLDnJnFTiXtik1Phasg== + dependencies: + "@babel/runtime" "^7.18.9" + complex.js "^2.1.1" + decimal.js "^10.3.1" + escape-latex "^1.2.0" + fraction.js "^4.2.0" + javascript-natural-sort "^0.7.1" + seedrandom "^3.0.5" + tiny-emitter "^2.1.0" + typed-function "^3.0.0" + +mathjs@^10.5.0: + version "10.6.4" + resolved "https://registry.yarnpkg.com/mathjs/-/mathjs-10.6.4.tgz#1b87a1268781d64f0c8b4e5e1b36cf7ecf58bb05" + integrity sha512-omQyvRE1jIy+3k2qsqkWASOcd45aZguXZDckr3HtnTYyXk5+2xpVfC3kATgbO2Srjxlqww3TVdhD0oUdZ/hiFA== + dependencies: + "@babel/runtime" "^7.18.6" + complex.js "^2.1.1" + decimal.js "^10.3.1" + escape-latex "^1.2.0" + fraction.js "^4.2.0" + javascript-natural-sort "^0.7.1" + seedrandom "^3.0.5" + tiny-emitter "^2.1.0" + typed-function "^2.1.0" + +mathjs@^9.3.0: + version "9.5.2" + resolved "https://registry.yarnpkg.com/mathjs/-/mathjs-9.5.2.tgz#e0f3279320dc6f49e45d99c4fcdd8b52231f0462" + integrity sha512-c0erTq0GP503/Ch2OtDOAn50GIOsuxTMjmE00NI/vKJFSWrDaQHRjx6ai+16xYv70yBSnnpUgHZGNf9FR9IwmA== + dependencies: + "@babel/runtime" "^7.15.4" + complex.js "^2.0.15" + decimal.js "^10.3.1" + escape-latex "^1.2.0" + fraction.js "^4.1.1" + javascript-natural-sort "^0.7.1" + seedrandom "^3.0.5" + tiny-emitter "^2.1.0" + typed-function "^2.0.0" + +mcl-wasm@^0.7.1: + version "0.7.9" + resolved "https://registry.yarnpkg.com/mcl-wasm/-/mcl-wasm-0.7.9.tgz#c1588ce90042a8700c3b60e40efb339fc07ab87f" + integrity sha512-iJIUcQWA88IJB/5L15GnJVnSQJmf/YaxxV6zRavv83HILHaJQb6y0iFyDMdDO0gN8X37tdxmAOrH/P8B6RB8sQ== + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== + +mem@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" + integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== + dependencies: + map-age-cleaner "^0.1.1" + mimic-fn "^2.0.0" + p-is-promise "^2.0.0" + +memdown@1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/memdown/-/memdown-1.4.1.tgz#b4e4e192174664ffbae41361aa500f3119efe215" + integrity sha512-iVrGHZB8i4OQfM155xx8akvG9FIj+ht14DX5CQkCTG4EHzZ3d3sgckIf/Lm9ivZalEsFuEVnWv2B2WZvbrro2w== + dependencies: + abstract-leveldown "~2.7.1" + functional-red-black-tree "^1.0.1" + immediate "^3.2.3" + inherits "~2.0.1" + ltgt "~2.2.0" + safe-buffer "~5.1.1" + +memdown@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/memdown/-/memdown-5.1.0.tgz#608e91a9f10f37f5b5fe767667a8674129a833cb" + integrity sha512-B3J+UizMRAlEArDjWHTMmadet+UKwHd3UjMgGBkZcKAxAYVPS9o0Yeiha4qvz7iGiL2Sb3igUft6p7nbFWctpw== + dependencies: + abstract-leveldown "~6.2.1" + functional-red-black-tree "~1.0.1" + immediate "~3.2.3" + inherits "~2.0.1" + ltgt "~2.2.0" + safe-buffer "~5.2.0" + +memorystream@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" + integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw== + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.2.3, merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +merkle-patricia-tree@^4.2.4: + version "4.2.4" + resolved "https://registry.yarnpkg.com/merkle-patricia-tree/-/merkle-patricia-tree-4.2.4.tgz#ff988d045e2bf3dfa2239f7fabe2d59618d57413" + integrity sha512-eHbf/BG6eGNsqqfbLED9rIqbsF4+sykEaBn6OLNs71tjclbMcMOk1tEPmJKcNcNCLkvbpY/lwyOlizWsqPNo8w== + dependencies: + "@types/levelup" "^4.3.0" + ethereumjs-util "^7.1.4" + level-mem "^5.0.1" + level-ws "^2.0.0" + readable-stream "^3.6.0" + semaphore-async-await "^1.5.1" + +methods@^1.1.2, methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== + +micromatch@^3.1.10: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12, mime-types@^2.1.16, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mime@2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== + +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== + +mimic-fn@^2.0.0, mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mimic-fn@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-3.1.0.tgz#65755145bbf3e36954b949c16450427451d5ca74" + integrity sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ== + +mimic-response@^1.0.0, mimic-response@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + +mimic-response@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" + integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== + +min-document@^2.19.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" + integrity sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ== + dependencies: + dom-walk "^0.1.0" + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== + +"minimatch@2 || 3", minimatch@^3.0.3, minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimatch@4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-4.2.1.tgz#40d9d511a46bdc4e563c22c3080cde9c0d8299b4" + integrity sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g== + dependencies: + brace-expansion "^1.1.7" + +minimatch@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b" + integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g== + dependencies: + brace-expansion "^2.0.1" + +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + integrity sha512-miQKw5Hv4NS1Psg2517mV4e4dYNaO3++hjAvLOAzKqZ61rH8NS1SK+vbfBWZ5PY/Me/bEWhUwqMghEW5Fb9T7Q== + +minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" + integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== + +minipass@^2.6.0, minipass@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" + integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + +minizlib@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" + integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== + dependencies: + minipass "^2.9.0" + +mitt@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mitt/-/mitt-1.2.0.tgz#cb24e6569c806e31bd4e3995787fe38a04fdf90d" + integrity sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw== + +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mkdirp-promise@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz#e9b8f68e552c68a9c1713b84883f7a1dd039b8a1" + integrity sha512-Hepn5kb1lJPtVW84RFT40YG1OddBNTOVUZR2bzQUHc+Z03en8/3uX0+060JDhcEzyO08HmipsN9DcnFMxhIL9w== + dependencies: + mkdirp "*" + +mkdirp@*, mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +mkdirp@0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + integrity sha512-SknJC52obPfGQPnjIkXbmA6+5H15E+fR+E4iR2oQ3zzCLbd7/ONua69R/Gw7AgkTLsRG+r5fzksYwWe1AgTyWA== + dependencies: + minimist "0.0.8" + +mkdirp@^0.5.1, mkdirp@^0.5.5, mkdirp@~0.5.1: + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +mnemonist@^0.38.0, mnemonist@^0.38.3: + version "0.38.5" + resolved "https://registry.yarnpkg.com/mnemonist/-/mnemonist-0.38.5.tgz#4adc7f4200491237fe0fa689ac0b86539685cade" + integrity sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg== + dependencies: + obliterator "^2.0.0" + +mocha@5.0.5: + version "5.0.5" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-5.0.5.tgz#e228e3386b9387a4710007a641f127b00be44b52" + integrity sha512-3MM3UjZ5p8EJrYpG7s+29HAI9G7sTzKEe4+w37Dg0QP7qL4XGsV+Q2xet2cE37AqdgN1OtYQB6Vl98YiPV3PgA== + dependencies: + browser-stdout "1.3.1" + commander "2.11.0" + debug "3.1.0" + diff "3.5.0" + escape-string-regexp "1.0.5" + glob "7.1.2" + growl "1.10.3" + he "1.1.1" + mkdirp "0.5.1" + supports-color "4.4.0" + +mocha@9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.2.2.tgz#d70db46bdb93ca57402c809333e5a84977a88fb9" + integrity sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g== + dependencies: + "@ungap/promise-all-settled" "1.1.2" + ansi-colors "4.1.1" + browser-stdout "1.3.1" + chokidar "3.5.3" + debug "4.3.3" + diff "5.0.0" + escape-string-regexp "4.0.0" + find-up "5.0.0" + glob "7.2.0" + growl "1.10.5" + he "1.2.0" + js-yaml "4.1.0" + log-symbols "4.1.0" + minimatch "4.2.1" + ms "2.1.3" + nanoid "3.3.1" + serialize-javascript "6.0.0" + strip-json-comments "3.1.1" + supports-color "8.1.1" + which "2.0.2" + workerpool "6.2.0" + yargs "16.2.0" + yargs-parser "20.2.4" + yargs-unparser "2.0.0" + +mocha@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.0.0.tgz#205447d8993ec755335c4b13deba3d3a13c4def9" + integrity sha512-0Wl+elVUD43Y0BqPZBzZt8Tnkw9CMUdNYnUsTfOM1vuhJVZL+kiesFYsqwBkEEuEixaiPe5ZQdqDgX2jddhmoA== + dependencies: + "@ungap/promise-all-settled" "1.1.2" + ansi-colors "4.1.1" + browser-stdout "1.3.1" + chokidar "3.5.3" + debug "4.3.4" + diff "5.0.0" + escape-string-regexp "4.0.0" + find-up "5.0.0" + glob "7.2.0" + he "1.2.0" + js-yaml "4.1.0" + log-symbols "4.1.0" + minimatch "5.0.1" + ms "2.1.3" + nanoid "3.3.3" + serialize-javascript "6.0.0" + strip-json-comments "3.1.1" + supports-color "8.1.1" + workerpool "6.2.1" + yargs "16.2.0" + yargs-parser "20.2.4" + yargs-unparser "2.0.0" + +mocha@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-5.2.0.tgz#6d8ae508f59167f940f2b5b3c4a612ae50c90ae6" + integrity sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ== + dependencies: + browser-stdout "1.3.1" + commander "2.15.1" + debug "3.1.0" + diff "3.5.0" + escape-string-regexp "1.0.5" + glob "7.1.2" + growl "1.10.5" + he "1.1.1" + minimatch "3.0.4" + mkdirp "0.5.1" + supports-color "5.4.0" + +mock-ethers-provider@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/mock-ethers-provider/-/mock-ethers-provider-1.0.2.tgz#e63966d9c3f088987c9f47b52b2c7e9a5157de68" + integrity sha512-bxNEAGoHpjOi8Used1GUfT/rT42UekmbsByxyEdcZRlr7zZwxoL0ONIS9pgWkpWcSzqzzQvlElNblyUK/FqcXg== + dependencies: + ethers "^5.0.19" + +mock-fs@^4.1.0: + version "4.14.0" + resolved "https://registry.yarnpkg.com/mock-fs/-/mock-fs-4.14.0.tgz#ce5124d2c601421255985e6e94da80a7357b1b18" + integrity sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw== + +module-error@^1.0.1, module-error@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/module-error/-/module-error-1.0.2.tgz#8d1a48897ca883f47a45816d4fb3e3c6ba404d86" + integrity sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA== + +moment@^2.19.3, moment@^2.29.1: + version "2.29.4" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108" + integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== + +morgan@^1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.10.0.tgz#091778abc1fc47cd3509824653dae1faab6b17d7" + integrity sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ== + dependencies: + basic-auth "~2.0.1" + debug "2.6.9" + depd "~2.0.0" + on-finished "~2.3.0" + on-headers "~1.0.2" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@2.1.3, ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multibase@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.7.0.tgz#1adfc1c50abe05eefeb5091ac0c2728d6b84581b" + integrity sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg== + dependencies: + base-x "^3.0.8" + buffer "^5.5.0" + +multibase@~0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.6.1.tgz#b76df6298536cc17b9f6a6db53ec88f85f8cc12b" + integrity sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw== + dependencies: + base-x "^3.0.8" + buffer "^5.5.0" + +multicodec@^0.5.5: + version "0.5.7" + resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-0.5.7.tgz#1fb3f9dd866a10a55d226e194abba2dcc1ee9ffd" + integrity sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA== + dependencies: + varint "^5.0.0" + +multicodec@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-1.0.4.tgz#46ac064657c40380c28367c90304d8ed175a714f" + integrity sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg== + dependencies: + buffer "^5.6.0" + varint "^5.0.0" + +multihashes@^0.4.15, multihashes@~0.4.15: + version "0.4.21" + resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-0.4.21.tgz#dc02d525579f334a7909ade8a122dabb58ccfcb5" + integrity sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw== + dependencies: + buffer "^5.5.0" + multibase "^0.7.0" + varint "^5.0.0" + +mustache@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/mustache/-/mustache-4.2.0.tgz#e5892324d60a12ec9c2a73359edca52972bf6f64" + integrity sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ== + +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + integrity sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ== + +mv@~2: + version "2.1.1" + resolved "https://registry.yarnpkg.com/mv/-/mv-2.1.1.tgz#ae6ce0d6f6d5e0a4f7d893798d03c1ea9559b6a2" + integrity sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg== + dependencies: + mkdirp "~0.5.1" + ncp "~2.0.0" + rimraf "~2.4.0" + +nan@^2.14.0: + version "2.16.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.16.0.tgz#664f43e45460fb98faf00edca0bb0d7b8dce7916" + integrity sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA== + +nano-json-stream-parser@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz#0cc8f6d0e2b622b479c40d499c46d64b755c6f5f" + integrity sha512-9MqxMH/BSJC7dnLsEMPyfN5Dvoo49IsPFYMcHw3Bcfc2kN0lpHRBSzlMSVx4HGyJ7s9B31CyBTVehWJoQ8Ctew== + +nanoid@3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" + integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== + +nanoid@3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" + integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +napi-macros@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/napi-macros/-/napi-macros-2.0.0.tgz#2b6bae421e7b96eb687aa6c77a7858640670001b" + integrity sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +ncp@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ncp/-/ncp-2.0.0.tgz#195a21d6c46e361d2fb1281ba38b91e9df7bdbb3" + integrity sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA== + +near-api-js@0.44.2: + version "0.44.2" + resolved "https://registry.yarnpkg.com/near-api-js/-/near-api-js-0.44.2.tgz#e451f68f2c56bd885c7b918db5818a3e6e9423d0" + integrity sha512-eMnc4V+geggapEUa3nU2p8HSHn/njtloI4P2mceHQWO8vDE1NGpnAw8FuTBrLmXSgIv9m6oocgFc9t3VNf5zwg== + dependencies: + bn.js "5.2.0" + borsh "^0.6.0" + bs58 "^4.0.0" + depd "^2.0.0" + error-polyfill "^0.1.3" + http-errors "^1.7.2" + js-sha256 "^0.9.0" + mustache "^4.0.0" + node-fetch "^2.6.1" + text-encoding-utf-8 "^1.0.2" + tweetnacl "^1.0.1" + +near-api-js@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/near-api-js/-/near-api-js-1.0.0.tgz#7aebc8e538071114ed242e6cce3b8fa956267691" + integrity sha512-OYItaQIYlKK27FG5PrqqtkTI8Vv9TEOCi7gXePYigS4o6WofXciAXNjr4sihDJ8Vzi6s7+eEkf3zTNP3042FBw== + dependencies: + bn.js "5.2.1" + borsh "^0.7.0" + bs58 "^4.0.0" + depd "^2.0.0" + error-polyfill "^0.1.3" + http-errors "^1.7.2" + js-sha256 "^0.9.0" + mustache "^4.0.0" + node-fetch "^2.6.1" + text-encoding-utf-8 "^1.0.2" + tweetnacl "^1.0.1" + +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +next-tick@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" + integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +no-case@^2.2.0, no-case@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" + integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== + dependencies: + lower-case "^1.1.1" + +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== + dependencies: + lower-case "^2.0.2" + tslib "^2.0.3" + +node-abort-controller@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/node-abort-controller/-/node-abort-controller-3.0.1.tgz#f91fa50b1dee3f909afabb7e261b1e1d6b0cb74e" + integrity sha512-/ujIVxthRs+7q6hsdjHMaj8hRG9NuWmwrz+JdRwZ14jdFoKSkm+vDsCbF9PLpnSqjaWQJuTmVtcWHNLr+vrOFw== + +node-addon-api@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" + integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== + +node-cache@5.1.2, node-cache@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/node-cache/-/node-cache-5.1.2.tgz#f264dc2ccad0a780e76253a694e9fd0ed19c398d" + integrity sha512-t1QzWwnk4sjLWaQAS8CHgOJ+RAfmHpxFWmc36IWTiWHQfs0w5JDMBS1b1ZxQteo0vVVuWJvIUKHDkkeK7vIGCg== + dependencies: + clone "2.x" + +node-fetch@2, node-fetch@2.6.7, node-fetch@^2.6.1, node-fetch@^2.6.7: + version "2.6.7" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== + dependencies: + whatwg-url "^5.0.0" + +node-fetch@2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" + integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== + +node-gyp-build@4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.4.0.tgz#42e99687ce87ddeaf3a10b99dc06abc11021f3f4" + integrity sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ== + +node-gyp-build@^4.2.0, node-gyp-build@^4.3.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.5.0.tgz#7a64eefa0b21112f89f58379da128ac177f20e40" + integrity sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg== + +node-gyp-build@~4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.1.1.tgz#d7270b5d86717068d114cc57fff352f96d745feb" + integrity sha512-dSq1xmcPDKPZ2EED2S6zw/b9NKsqzXRE6dVr8TVQnI3FJOTteUMuqF3Qqs6LZg+mLGYJWqQzMbIjMtJqTv87nQ== + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== + +node-interval-tree@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/node-interval-tree/-/node-interval-tree-1.3.3.tgz#15ffb904cde08270214acace8dc7653e89ae32b7" + integrity sha512-K9vk96HdTK5fEipJwxSvIIqwTqr4e3HRJeJrNxBSeVMNSC/JWARRaX7etOLOuTmrRMeOI/K5TCJu3aWIwZiNTw== + dependencies: + shallowequal "^1.0.2" + +node-releases@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" + integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== + +node-ts-cache-storage-memory@4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/node-ts-cache-storage-memory/-/node-ts-cache-storage-memory-4.4.0.tgz#d87da36bef0145c4d5a988191ffff6b9789c394e" + integrity sha512-eG8tFF4C1/RBmx52cS/dEu63l+Cn+Z6mz16nuTJwNyvtvDHWjsKKM3hg77PA7ddgf2ztaCyen8ZMQnLy191S4g== + dependencies: + debug "^4.3.2" + node-ts-cache "^4.4.0" + +node-ts-cache@4.4.0, node-ts-cache@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/node-ts-cache/-/node-ts-cache-4.4.0.tgz#ce10368537751d198565d15d1352bab5cc649252" + integrity sha512-ZULcxpzyFfgpOd33PHjwhPz4fkWSfyrwa9sq1j4jyOm+PaBpQDIzB3m5HRiSKdgEBtQhP3g6hX44dnMjnoHiPA== + dependencies: + bluebird "3.7.2" + debug "^4.3.2" + redis "^3.1.2" + +nodemon@^2.0.16: + version "2.0.19" + resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.19.tgz#cac175f74b9cb8b57e770d47841995eebe4488bd" + integrity sha512-4pv1f2bMDj0Eeg/MhGqxrtveeQ5/G/UVe9iO6uTZzjnRluSA4PVWf8CW99LUPwGB3eNIA7zUFoP77YuI7hOc0A== + dependencies: + chokidar "^3.5.2" + debug "^3.2.7" + ignore-by-default "^1.0.1" + minimatch "^3.0.4" + pstree.remy "^1.1.8" + semver "^5.7.1" + simple-update-notifier "^1.0.7" + supports-color "^5.5.0" + touch "^3.1.0" + undefsafe "^2.0.5" + +nofilter@^1.0.3, nofilter@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/nofilter/-/nofilter-1.0.4.tgz#78d6f4b6a613e7ced8b015cec534625f7667006e" + integrity sha512-N8lidFp+fCz+TD51+haYdbDGrcBWwuHX40F5+z0qkUjMJ5Tp+rdSuAkMJ9N9eoolDlEVTf6u5icM+cNKkKW2mA== + +nohup@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/nohup/-/nohup-0.1.0.tgz#b280603d4d04211648b4047d011484d0bcf347e3" + integrity sha512-22CT1M3ehv0QWL3+oJUfl5I/3MqtBaUO1kI4ciW+9AAjBsZ4u1CsGU8tlLwgDvYk6GmG7ECB0LTadvRjMFEpMg== + +noms@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/noms/-/noms-0.0.0.tgz#da8ebd9f3af9d6760919b27d9cdc8092a7332859" + integrity sha512-lNDU9VJaOPxUmXcLb+HQFeUgQQPtMI24Gt6hgfuMHRJgMRHMF/qZ4HJD3GDru4sSw9IQl2jPjAYnQrdIeLbwow== + dependencies: + inherits "^2.0.1" + readable-stream "~1.0.31" + +nopt@~1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" + integrity sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg== + dependencies: + abbrev "1" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-url@^4.1.0: + version "4.5.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" + integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== + +normalize-url@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" + integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== + +npm-programmatic@0.0.12: + version "0.0.12" + resolved "https://registry.yarnpkg.com/npm-programmatic/-/npm-programmatic-0.0.12.tgz#566ba2452c886c7fd3a41586bd559cdc872fa77e" + integrity sha512-fvZdiJS038ZH31z59cEiIywOcgX1u23aLc0wAKF4btyhbYQxE93wTQjzs/URERK+GhS/QghDILQmEvgxu77/zQ== + dependencies: + bluebird "^3.4.1" + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw== + dependencies: + path-key "^2.0.0" + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +nth-check@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== + dependencies: + boolbase "^1.0.0" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== + +number-to-bn@1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/number-to-bn/-/number-to-bn-1.7.0.tgz#bb3623592f7e5f9e0030b1977bd41a0c53fe1ea0" + integrity sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig== + dependencies: + bn.js "4.11.6" + strip-hex-prefix "1.0.0" + +nwsapi@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.1.tgz#10a9f268fbf4c461249ebcfe38e359aa36e2577c" + integrity sha512-JYOWTeFoS0Z93587vRJgASD5Ut11fYl5NyihP3KrYBvMe1FRRs6RN7m20SA/16GM4P6hTnZjT+UmDOt38UeXNg== + +o3@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/o3/-/o3-1.0.3.tgz#192ce877a882dfa6751f0412a865fafb2da1dac0" + integrity sha512-f+4n+vC6s4ysy7YO7O2gslWZBUu8Qj2i2OUJOvjRxQva7jVjYjB29jrr9NCjmxZQR0gzrOcv1RnqoYOeMs5VRQ== + dependencies: + capability "^0.2.5" + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ== + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-hash@^2.0.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.2.0.tgz#5ad518581eefc443bd763472b8ff2e9c2c0d54a5" + integrity sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw== + +object-inspect@^1.12.0, object-inspect@^1.9.0: + version "1.12.2" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" + integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA== + dependencies: + isobject "^3.0.0" + +object.assign@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + has-symbols "^1.0.1" + object-keys "^1.1.1" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ== + dependencies: + isobject "^3.0.1" + +object.values@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" + integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + +obliterator@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/obliterator/-/obliterator-2.0.4.tgz#fa650e019b2d075d745e44f1effeb13a2adbe816" + integrity sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ== + +oboe@2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.4.tgz#20c88cdb0c15371bb04119257d4fdd34b0aa49f6" + integrity sha512-ymBJ4xSC6GBXLT9Y7lirj+xbqBLa+jADGJldGEYG7u8sZbS9GyG+u1Xk9c5cbriKwSpCg41qUhPjvU5xOpvIyQ== + dependencies: + http-https "^1.0.0" + +oboe@2.1.5: + version "2.1.5" + resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.5.tgz#5554284c543a2266d7a38f17e073821fbde393cd" + integrity sha512-zRFWiF+FoicxEs3jNI/WYUrVEgA7DeET/InK0XQuudGHRg8iIob3cNPrJTKaz4004uaA9Pbe+Dwa8iluhjLZWA== + dependencies: + http-https "^1.0.0" + +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww== + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@1.4.0, once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +one-time@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/one-time/-/one-time-1.0.0.tgz#e06bc174aed214ed58edede573b433bbf827cb45" + integrity sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g== + dependencies: + fn.name "1.x.x" + +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ== + dependencies: + mimic-fn "^1.0.0" + +onetime@^5.1.0, onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +optionator@^0.8.1: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + +original-require@1.0.1, original-require@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/original-require/-/original-require-1.0.1.tgz#0f130471584cd33511c5ec38c8d59213f9ac5e20" + integrity sha512-5vdKMbE58WaE61uVD+PKyh8xdM398UnjPBLotW2sjG5MzHARwta/+NtMBCBA0t2WQblGYBvq5vsiZpWokwno+A== + +os-locale@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" + integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== + dependencies: + execa "^1.0.0" + lcid "^2.0.0" + mem "^4.0.0" + +os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== + +p-cancelable@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa" + integrity sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw== + +p-cancelable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" + integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== + +p-cancelable@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-3.0.0.tgz#63826694b54d61ca1c20ebcb6d3ecf5e14cd8050" + integrity sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw== + +p-defer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" + integrity sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw== + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== + +p-is-promise@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" + integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-limit@^2.0.0, p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg== + dependencies: + p-limit "^1.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +p-timeout@^1.1.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-1.2.1.tgz#5eb3b353b7fce99f101a1038880bb054ebbea386" + integrity sha512-gb0ryzr+K2qFqFv6qi3khoeqMZF/+ajxQipEF6NteZVnvz9tzdsfAVj3lYtn1gAXvH5lfLwfxEII799gt/mRIA== + dependencies: + p-finally "^1.0.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +pako@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pako/-/pako-2.0.4.tgz#6cebc4bbb0b6c73b0d5b8d7e8476e2b2fbea576d" + integrity sha512-v8tweI900AUkZN6heMU/4Uy4cXRc2AYNRggVmTR+dEncawDJgCdLMximOVA2p4qO57WMynangsfGRb5WD6L1Bg== + +param-case@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" + integrity sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w== + dependencies: + no-case "^2.2.0" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-asn1@^5.0.0, parse-asn1@^5.1.5: + version "5.1.6" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" + integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== + dependencies: + asn1.js "^5.2.0" + browserify-aes "^1.0.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" + +parse-headers@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.5.tgz#069793f9356a54008571eb7f9761153e6c770da9" + integrity sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA== + +parse-json@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +parse5-htmlparser2-tree-adapter@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz#23c2cc233bcf09bb7beba8b8a69d46b08c62c2f1" + integrity sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g== + dependencies: + domhandler "^5.0.2" + parse5 "^7.0.0" + +parse5@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== + +parse5@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.0.0.tgz#51f74a5257f5fcc536389e8c2d0b3802e1bfa91a" + integrity sha512-y/t8IXSPWTuRZqXc0ajH/UwDj4mnqLEbSttNbThcFhGrZuOyoyvNBO85PBp2jQa55wY9d07PBNjsK8ZP3K5U6g== + dependencies: + entities "^4.3.0" + +parseurl@^1.3.3, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascal-case@^2.0.0, pascal-case@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-2.0.1.tgz#2d578d3455f660da65eca18ef95b4e0de912761e" + integrity sha512-qjS4s8rBOJa2Xm0jmxXiyh1+OFf6ekCWOvUaRgAQSktzlTbMotS0nmG9gyYAybCWBcuP4fsBeRCKNwGBnMe2OQ== + dependencies: + camel-case "^3.0.0" + upper-case-first "^1.1.0" + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw== + +path-case@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/path-case/-/path-case-2.1.1.tgz#94b8037c372d3fe2906e465bb45e25d226e8eea5" + integrity sha512-Ou0N05MioItesaLr9q8TtHVWmJ6fxWdqKB2RohFmNWVyJ+2zeKIeDNWAN6B/Pe7wpzWChhZX6nONYmOnMeJQ/Q== + dependencies: + no-case "^2.2.0" + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q== + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.6, path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pbkdf2@^3.0.17, pbkdf2@^3.0.3, pbkdf2@^3.0.9: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" + integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +pend@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw== + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== + +pirates@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" + integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== + +pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +pkg-up@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" + integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== + dependencies: + find-up "^3.0.0" + +pluralize@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" + integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== + +pouchdb-abstract-mapreduce@7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/pouchdb-abstract-mapreduce/-/pouchdb-abstract-mapreduce-7.3.0.tgz#cc178cb5d07f73b7c3f0f47a7f963defd4872b1c" + integrity sha512-+2fVt3SDh7D776lIGbYZOsKX5js1aUyUw7iJaTGitxSdQ2ObWSTrr3SUrj5Qo1CkgPXwRM3Tdoq/53JYAa2qCA== + dependencies: + pouchdb-binary-utils "7.3.0" + pouchdb-collate "7.3.0" + pouchdb-collections "7.3.0" + pouchdb-errors "7.3.0" + pouchdb-fetch "7.3.0" + pouchdb-mapreduce-utils "7.3.0" + pouchdb-md5 "7.3.0" + pouchdb-utils "7.3.0" + +pouchdb-adapter-leveldb-core@7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/pouchdb-adapter-leveldb-core/-/pouchdb-adapter-leveldb-core-7.3.0.tgz#91fa1fbc35e744252ae73f9e88911883c1841c9a" + integrity sha512-OyUsEae1JlqR2jSGMohP03gj6VANh9fDR/3nPIa1vYyoQWlwQzOS7knKqDaJm7Nui3JC5q/lWos7/FGZBFuF5Q== + dependencies: + argsarray "0.0.1" + buffer-from "1.1.2" + double-ended-queue "2.1.0-0" + levelup "4.4.0" + pouchdb-adapter-utils "7.3.0" + pouchdb-binary-utils "7.3.0" + pouchdb-collections "7.3.0" + pouchdb-errors "7.3.0" + pouchdb-json "7.3.0" + pouchdb-md5 "7.3.0" + pouchdb-merge "7.3.0" + pouchdb-utils "7.3.0" + sublevel-pouchdb "7.3.0" + through2 "3.0.2" + +pouchdb-adapter-memory@^7.1.1: + version "7.3.0" + resolved "https://registry.yarnpkg.com/pouchdb-adapter-memory/-/pouchdb-adapter-memory-7.3.0.tgz#ddd5b9ab9d30209d066374648abc761c68444db3" + integrity sha512-nUdYi5KpbUa0uv0L3IJorpiUnIOBPxX9qplCX9i7JE8OtLPeLyKuX3WC+3M1//8Lmmxg3b1wXSNIod6FJy4wAQ== + dependencies: + memdown "1.4.1" + pouchdb-adapter-leveldb-core "7.3.0" + pouchdb-utils "7.3.0" + +pouchdb-adapter-utils@7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/pouchdb-adapter-utils/-/pouchdb-adapter-utils-7.3.0.tgz#1747e4ea0b519a9d817c6eda0e2f0ebc3dc18c41" + integrity sha512-mU1+smcagWSpInVx/VQk7VVjjnJlyagKtusUS3OdCMFZY35L6RbXC8eIhoNVDbkBfEv3cIwqQ3t7fdvkaa1odQ== + dependencies: + pouchdb-binary-utils "7.3.0" + pouchdb-collections "7.3.0" + pouchdb-errors "7.3.0" + pouchdb-md5 "7.3.0" + pouchdb-merge "7.3.0" + pouchdb-utils "7.3.0" + +pouchdb-binary-utils@7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/pouchdb-binary-utils/-/pouchdb-binary-utils-7.3.0.tgz#ecc235d28e7f226c168affcf53959675f78d5aaf" + integrity sha512-xvBH/XGHGcou2vkEzszJxkCc7YElfRUrkLUg51Jbdmh1mogLDUO0bU3Tj6TOIIJfRkQrU/HV+dDkMAhsil0amQ== + dependencies: + buffer-from "1.1.2" + +pouchdb-collate@7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/pouchdb-collate/-/pouchdb-collate-7.3.0.tgz#9276de7459a21a6aded71e3090d9b5d5488be19f" + integrity sha512-ys7rXKtEr6cfghgUjknwFJiOkITebV6JmeTybJKCzMV0r2luXu0OoPQsKVpE/wbM/3F5LxfpbFKGFpPcfGMvTA== + +pouchdb-collections@7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/pouchdb-collections/-/pouchdb-collections-7.3.0.tgz#3197dfbee8d69c3760229705fc5a73d0c8a896f1" + integrity sha512-Xr54m2+fErShXn+qAT4xwqJ+8NwddNPeTMJT4z4k1sZsrwfHmZsWbsKAyGPMF04eQaaU+7DDRMciu2VzaBUXyg== + +pouchdb-debug@^7.1.1: + version "7.2.1" + resolved "https://registry.yarnpkg.com/pouchdb-debug/-/pouchdb-debug-7.2.1.tgz#f5f869f6113c12ccb97cddf5b0a32b6e0e67e961" + integrity sha512-eP3ht/AKavLF2RjTzBM6S9gaI2/apcW6xvaKRQhEdOfiANqerFuksFqHCal3aikVQuDO+cB/cw+a4RyJn/glBw== + dependencies: + debug "3.1.0" + +pouchdb-errors@7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/pouchdb-errors/-/pouchdb-errors-7.3.0.tgz#23bc328108778be0bfe22d69c0df67eab94aeca5" + integrity sha512-dTBbIC1BbCy6J9W/Csg5xROgb3wJN3HpbgAJHHSEtAkb8oA45KZmU3ZwEpNhf0AfPuQm4XgW1936PvlDlGgJiw== + dependencies: + inherits "2.0.4" + +pouchdb-fetch@7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/pouchdb-fetch/-/pouchdb-fetch-7.3.0.tgz#92b5d3b067d79ecbb9a61cbd52dce36e94dbbf28" + integrity sha512-8/lcg8iMDG+GVs1dHNXA4ktJSEpH71dHU3xesMJ25tNQOqfAaaWrkfz9j71ZYDDkveLYE6UjUzl/sDacu2hSjw== + dependencies: + abort-controller "3.0.0" + fetch-cookie "0.11.0" + node-fetch "2.6.7" + +pouchdb-find@^7.0.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/pouchdb-find/-/pouchdb-find-7.3.0.tgz#27291c3d069f4f1a1a4913f63b1a148dac1b345b" + integrity sha512-EwhnfyxCAkKf8PG4tfndTTygEmtuz+o1LiZkxfPrflfXA3m1jo1ithib0hwBYtEwEYWuZxH6B8pRZutbLoQCGA== + dependencies: + pouchdb-abstract-mapreduce "7.3.0" + pouchdb-collate "7.3.0" + pouchdb-errors "7.3.0" + pouchdb-fetch "7.3.0" + pouchdb-md5 "7.3.0" + pouchdb-selector-core "7.3.0" + pouchdb-utils "7.3.0" + +pouchdb-json@7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/pouchdb-json/-/pouchdb-json-7.3.0.tgz#94c2d876202c6879cb525db05e7633b926346e5d" + integrity sha512-D4wyi20ltyiFpuziQeMk3CbXs/Q58VoGTYTJQY8MWBw37OidtHGQAt1Kh5yJ435wJqDzJZyxMA5RxGZxEOBDVg== + dependencies: + vuvuzela "1.0.3" + +pouchdb-mapreduce-utils@7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/pouchdb-mapreduce-utils/-/pouchdb-mapreduce-utils-7.3.0.tgz#21d42ea9a376b0fa2e61c8c1ac53f886ffdf3409" + integrity sha512-KDVSd+H2r+XWTrQfKWV71SknDDYRjYXoeWs0ZQl3xITHCcTl+fIgqyagg/XN+Zy/U9LeLPGMe2JdgPx9H8lJgw== + dependencies: + argsarray "0.0.1" + inherits "2.0.4" + pouchdb-collections "7.3.0" + pouchdb-utils "7.3.0" + +pouchdb-md5@7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/pouchdb-md5/-/pouchdb-md5-7.3.0.tgz#3a094e45ccce87271530ad3f37d7e82c53562bb0" + integrity sha512-wL04QgoKyd/L/TV5gxgcvlEyCJiZoXCOEFJklTzkdza/kBQNJGPH7i0ZhKa7Sb+AvZYoWZHddf1Zgv7rBScHkA== + dependencies: + pouchdb-binary-utils "7.3.0" + spark-md5 "3.0.2" + +pouchdb-merge@7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/pouchdb-merge/-/pouchdb-merge-7.3.0.tgz#dfde5b54aa6dd203ac62d768fe33e7bdbd56e38e" + integrity sha512-E7LmchMzwYFm6V8OBxejzARLisanpksOju2LEfuiYnotGfNDeW7MByP0qBH0/zF8BfUyyjA1cl7ByaEpsapkeQ== + +pouchdb-selector-core@7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/pouchdb-selector-core/-/pouchdb-selector-core-7.3.0.tgz#1860afeec069ba4d5b79583b4b520dd2b643e3a3" + integrity sha512-sK/cCrIGeL9ImcMhKGcwa54+bzX7Wv4hhVV+oUW3T1Nasaoxh+Muem1GuA+x1+SbTCE8y37rUg8i6DIOhX51ew== + dependencies: + pouchdb-collate "7.3.0" + pouchdb-utils "7.3.0" + +pouchdb-utils@7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/pouchdb-utils/-/pouchdb-utils-7.3.0.tgz#782df5ab3309edd5dc8c0f8ae4663bf0e67962e2" + integrity sha512-HH+5IXXWn/ZgVCSnrlydBMYn6MabT7RS7SNoo9w8qVH9efpZSp3eLchw6yMQNLw8LQefWmbbskiHV9VgJmSVWQ== + dependencies: + argsarray "0.0.1" + clone-buffer "1.0.0" + immediate "3.3.0" + inherits "2.0.4" + pouchdb-collections "7.3.0" + pouchdb-errors "7.3.0" + pouchdb-md5 "7.3.0" + uuid "8.3.2" + +pouchdb@7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/pouchdb/-/pouchdb-7.3.0.tgz#440fbef12dfd8f9002320802528665e883a3b7f8" + integrity sha512-OwsIQGXsfx3TrU1pLruj6PGSwFH+h5k4hGNxFkZ76Um7/ZI8F5TzUHFrpldVVIhfXYi2vP31q0q7ot1FSLFYOw== + dependencies: + abort-controller "3.0.0" + argsarray "0.0.1" + buffer-from "1.1.2" + clone-buffer "1.0.0" + double-ended-queue "2.1.0-0" + fetch-cookie "0.11.0" + immediate "3.3.0" + inherits "2.0.4" + level "6.0.1" + level-codec "9.0.2" + level-write-stream "1.0.0" + leveldown "5.6.0" + levelup "4.4.0" + ltgt "2.2.1" + node-fetch "2.6.7" + readable-stream "1.1.14" + spark-md5 "3.0.2" + through2 "3.0.2" + uuid "8.3.2" + vuvuzela "1.0.3" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== + +prepend-http@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + integrity sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg== + +prepend-http@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" + integrity sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA== + +prettier-linter-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" + integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== + dependencies: + fast-diff "^1.1.2" + +prettier@^1.14.2: + version "1.19.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" + integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== + +prettier@^2.3.0: + version "2.7.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" + integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== + +pretty-format@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-22.4.3.tgz#f873d780839a9c02e9664c8a082e9ee79eaac16f" + integrity sha512-S4oT9/sT6MN7/3COoOy+ZJeA92VmOnveLHgrwBE3Z1W5N9S2A1QGNYiE1z75DAENbJrXXUb+OWXhpJcg05QKQQ== + dependencies: + ansi-regex "^3.0.0" + ansi-styles "^3.2.0" + +pretty-format@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9" + integrity sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA== + dependencies: + "@jest/types" "^24.9.0" + ansi-regex "^4.0.0" + ansi-styles "^3.2.0" + react-is "^16.8.4" + +pretty-format@^27.0.0, pretty-format@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" + integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== + dependencies: + ansi-regex "^5.0.1" + ansi-styles "^5.0.0" + react-is "^17.0.1" + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== + +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +promise-polyfill@8.1.3: + version "8.1.3" + resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-8.1.3.tgz#8c99b3cf53f3a91c68226ffde7bde81d7f904116" + integrity sha512-MG5r82wBzh7pSKDRa9y+vllNHz3e3d4CNj1PQE4BQYxLme0gKYYBm9YENq+UkEikyZ0XbiGWxYlVw3Rl9O/U8g== + +prompts@^2.0.1: + version "2.4.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +protobufjs@^6.8.6, protobufjs@^6.8.8, protobufjs@~6.11.2, protobufjs@~6.11.3: + version "6.11.3" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.3.tgz#637a527205a35caa4f3e2a9a4a13ddffe0e7af74" + integrity sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg== + dependencies: + "@protobufjs/aspromise" "^1.1.2" + "@protobufjs/base64" "^1.1.2" + "@protobufjs/codegen" "^2.0.4" + "@protobufjs/eventemitter" "^1.1.0" + "@protobufjs/fetch" "^1.1.0" + "@protobufjs/float" "^1.0.2" + "@protobufjs/inquire" "^1.1.0" + "@protobufjs/path" "^1.1.2" + "@protobufjs/pool" "^1.1.0" + "@protobufjs/utf8" "^1.1.0" + "@types/long" "^4.0.1" + "@types/node" ">=13.7.0" + long "^4.0.0" + +protobufjs@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.0.0.tgz#8c678e1351fd926178fce5a4213913e8d990974f" + integrity sha512-ffNIEm+quOcYtQvHdW406v1NQmZSuqVklxsXk076BtuFnlYZfigLU+JOMrTD8TUOyqHYbRI/fSVNvgd25YeN3w== + dependencies: + "@protobufjs/aspromise" "^1.1.2" + "@protobufjs/base64" "^1.1.2" + "@protobufjs/codegen" "^2.0.4" + "@protobufjs/eventemitter" "^1.1.0" + "@protobufjs/fetch" "^1.1.0" + "@protobufjs/float" "^1.0.2" + "@protobufjs/inquire" "^1.1.0" + "@protobufjs/path" "^1.1.2" + "@protobufjs/pool" "^1.1.0" + "@protobufjs/utf8" "^1.1.0" + "@types/long" "^4.0.1" + "@types/node" ">=13.7.0" + long "^5.0.0" + +proxy-addr@^2.0.7, proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== + +psl@^1.1.28, psl@^1.1.33: + version "1.9.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" + integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== + +pstree.remy@^1.1.8: + version "1.1.8" + resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a" + integrity sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w== + +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +punycode@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d" + integrity sha512-Yxz2kRwT90aPiWEMHVYnEf4+rhwF1tBmmZ4KepCP+Wkium9JxtWnUm1nqGwpiAHr/tnTSeHqr3wb++jgSkXjhA== + +punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +pure-rand@^5.0.1: + version "5.0.3" + resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-5.0.3.tgz#a2f15dfbc3be8433d1d8ed67ee411aa83fb90406" + integrity sha512-9N8x1h8dptBQpHyC7aZMS+iNOAm97WMGY0AFrguU1cpfW3I5jINkWe5BIY5md0ofy+1TCIELsVcm/GJXZSaPbw== + +qs@6.10.3: + version "6.10.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" + integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ== + dependencies: + side-channel "^1.0.4" + +qs@6.9.3: + version "6.9.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.3.tgz#bfadcd296c2d549f1dffa560619132c977f5008e" + integrity sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw== + +qs@^6.10.3, qs@^6.7.0: + version "6.11.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== + dependencies: + side-channel "^1.0.4" + +qs@~6.5.2: + version "6.5.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" + integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== + +query-string@^5.0.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" + integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw== + dependencies: + decode-uri-component "^0.2.0" + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +querystringify@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== + +queue-microtask@^1.2.2, queue-microtask@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +quick-lru@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" + integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== + +quickswap-sdk@^3.0.8: + version "3.0.9" + resolved "https://registry.yarnpkg.com/quickswap-sdk/-/quickswap-sdk-3.0.9.tgz#905af4ed4117396beabcc836a0171124975afe93" + integrity sha512-4Txvhb4xhrkNNbsxWGguUJsUlv2LP8NUGD7rpvrlOv8FXhtvataVBv/EFAr5QAh0PrxLOuOWeo7V7BhVlT61ww== + dependencies: + "@uniswap/v2-core" "^1.0.0" + big.js "^5.2.2" + decimal.js-light "^2.5.0" + jsbi "^3.1.1" + tiny-invariant "^1.1.0" + tiny-warning "^1.0.3" + toformat "^2.0.0" + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +range_check@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/range_check/-/range_check-2.0.4.tgz#6682e9ed16da5e84089a553028ceb5920f1111a5" + integrity sha512-aed0ocXXj+SIiNNN9b+mZWA3Ow2GXHtftOGk2xQwshK5GbEZAvUcPWNQBLTx/lPcdFRIUFlFCRtHTQNIFMqynQ== + dependencies: + ip6 "^0.2.0" + ipaddr.js "^1.9.1" + +raw-body@2.5.1, raw-body@^2.4.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" + integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +react-is@^16.8.4: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-is@^17.0.1: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== + +react-native-url-polyfill@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/react-native-url-polyfill/-/react-native-url-polyfill-1.3.0.tgz#c1763de0f2a8c22cc3e959b654c8790622b6ef6a" + integrity sha512-w9JfSkvpqqlix9UjDvJjm1EjSt652zVQ6iwCIj1cVVkwXf4jQhQgTNXY6EVTwuAmUjg6BC6k9RHCBynoLFo3IQ== + dependencies: + whatwg-url-without-unicode "8.0.0-3" + +readable-stream@1.1.14: + version "1.1.14" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + integrity sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +"readable-stream@2 || 3", readable-stream@^3.1.0, readable-stream@^3.4.0, readable-stream@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-stream@^2.3.0, readable-stream@^2.3.5, readable-stream@~2.3.6: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@~0.0.2: + version "0.0.4" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-0.0.4.tgz#f32d76e3fb863344a548d79923007173665b3b8d" + integrity sha512-azrivNydKRYt7zwLV5wWUK7YzKTWs3q87xSmY6DlHapPrCvaT6ZrukvM5erV+yCSSPmZT8zkSdttOHQpWWm9zw== + +readable-stream@~1.0.31: + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + integrity sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +readonly-date@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/readonly-date/-/readonly-date-1.0.0.tgz#5af785464d8c7d7c40b9d738cbde8c646f97dcd9" + integrity sha512-tMKIV7hlk0h4mO3JTmmVuIlJVXjKk3Sep9Bf5OH0O+758ruuVkUy2J9SttDLm91IEX/WHlXPSpxMGjPj4beMIQ== + +redis-commands@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.7.0.tgz#15a6fea2d58281e27b1cd1acfb4b293e278c3a89" + integrity sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ== + +redis-errors@^1.0.0, redis-errors@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/redis-errors/-/redis-errors-1.2.0.tgz#eb62d2adb15e4eaf4610c04afe1529384250abad" + integrity sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w== + +redis-parser@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/redis-parser/-/redis-parser-3.0.0.tgz#b66d828cdcafe6b4b8a428a7def4c6bcac31c8b4" + integrity sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A== + dependencies: + redis-errors "^1.0.0" + +redis@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/redis/-/redis-3.1.2.tgz#766851117e80653d23e0ed536254677ab647638c" + integrity sha512-grn5KoZLr/qrRQVwoSkmzdbw6pwF+/rwODtrOr6vuBRiR/f3rjSTGupbF90Zpqm2oenix8Do6RV7pYEkGwlKkw== + dependencies: + denque "^1.5.0" + redis-commands "^1.7.0" + redis-errors "^1.2.0" + redis-parser "^3.0.0" + +redux-saga@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/redux-saga/-/redux-saga-1.0.0.tgz#acb8b3ed9180fecbe75f342011d75af3ac11045b" + integrity sha512-GvJWs/SzMvEQgeaw6sRMXnS2FghlvEGsHiEtTLpJqc/FHF3I5EE/B+Hq5lyHZ8LSoT2r/X/46uWvkdCnK9WgHA== + dependencies: + "@redux-saga/core" "^1.0.0" + +redux@^3.7.2: + version "3.7.2" + resolved "https://registry.yarnpkg.com/redux/-/redux-3.7.2.tgz#06b73123215901d25d065be342eb026bc1c8537b" + integrity sha512-pNqnf9q1hI5HHZRBkj3bAngGZW/JMCmexDlOxw4XagXY2o1327nHH54LoTjiPJ0gizoqPDRqWyX/00g0hD6w+A== + dependencies: + lodash "^4.2.1" + lodash-es "^4.2.1" + loose-envify "^1.1.0" + symbol-observable "^1.0.3" + +redux@^4.0.4: + version "4.2.0" + resolved "https://registry.yarnpkg.com/redux/-/redux-4.2.0.tgz#46f10d6e29b6666df758780437651eeb2b969f13" + integrity sha512-oSBmcKKIuIR4ME29/AeNUnl5L+hvBq7OaJWzaptTQJAntaPvxIJqfnjbaEiCzzaIz+XmVILfqAM3Ob0aXLPfjA== + dependencies: + "@babel/runtime" "^7.9.2" + +ref-sdk@^0.1.4, ref-sdk@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/ref-sdk/-/ref-sdk-0.1.5.tgz#d6e4cfca38a6f2a2433d97a930ed4eebb81de8c4" + integrity sha512-Gr40hYT+xY+rsj47s+HHejFENWkcBNELMbi67HZ8DmTyOq8VHUhXUY7gP5bMicw03jFAVU3+6jZ90iGM82IoXw== + dependencies: + "@types/big.js" "^6.1.5" + "@types/bn.js" "^5.1.1" + "@types/lodash" "^4.14.182" + big.js "^6.2.1" + mathjs "^9.3.0" + near-api-js "0.44.2" + ref-sdk "^0.1.4" + +regenerator-runtime@^0.13.10: + version "0.13.10" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz#ed07b19616bcbec5da6274ebc75ae95634bfc2ee" + integrity sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw== + +regenerator-runtime@^0.13.11: + version "0.13.11" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== + +regenerator-runtime@^0.13.4: + version "0.13.9" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" + integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regexp.prototype.flags@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" + integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + functions-have-names "^1.2.2" + +regexpp@^3.0.0, regexpp@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== + +repeat-element@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" + integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== + +request@^2.79.0, request@^2.85.0: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +require-from-string@^2.0.0, require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + integrity sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== + +reselect-tree@^1.3.7: + version "1.3.7" + resolved "https://registry.yarnpkg.com/reselect-tree/-/reselect-tree-1.3.7.tgz#c3eca58765d9df96bae0017f6ff3504c304cdea0" + integrity sha512-kZN+C1cVJ6fFN2smSb0l4UvYZlRzttgnu183svH4NrU22cBY++ikgr2QT75Uuk4MYpv5gXSVijw4c5U6cx6GKg== + dependencies: + debug "^3.1.0" + json-pointer "^0.6.1" + reselect "^4.0.0" + +reselect@^4.0.0: + version "4.1.6" + resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.1.6.tgz#19ca2d3d0b35373a74dc1c98692cdaffb6602656" + integrity sha512-ZovIuXqto7elwnxyXbBtCPo9YFEr3uJqj2rRbcOOog1bmu2Ag85M4hixSwFWyaBMKXNgvPaJ9OSu9SkBPIeJHQ== + +resolve-alpn@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" + integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== + +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== + +resolve.exports@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" + integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== + +resolve@1.17.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" + integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== + dependencies: + path-parse "^1.0.6" + +resolve@^1.10.1, resolve@^1.20.0, resolve@^1.22.0, resolve@^1.8.1: + version "1.22.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" + integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== + dependencies: + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +responselike@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" + integrity sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ== + dependencies: + lowercase-keys "^1.0.0" + +responselike@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc" + integrity sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw== + dependencies: + lowercase-keys "^2.0.0" + +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q== + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +retry@0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" + integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@^2.2.8: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +rimraf@^3.0.0, rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +rimraf@~2.4.0: + version "2.4.5" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.4.5.tgz#ee710ce5d93a8fdb856fb5ea8ff0e2d75934b2da" + integrity sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ== + dependencies: + glob "^6.0.1" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +rlp@^2.2.3, rlp@^2.2.4: + version "2.2.7" + resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.7.tgz#33f31c4afac81124ac4b283e2bd4d9720b30beaf" + integrity sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ== + dependencies: + bn.js "^5.2.0" + +rpc-websockets@^7.5.0: + version "7.5.0" + resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-7.5.0.tgz#bbeb87572e66703ff151e50af1658f98098e2748" + integrity sha512-9tIRi1uZGy7YmDjErf1Ax3wtqdSSLIlnmL5OtOzgd5eqPKbsPpwDP5whUDO2LQay3Xp0CcHlcNSGzacNRluBaQ== + dependencies: + "@babel/runtime" "^7.17.2" + eventemitter3 "^4.0.7" + uuid "^8.3.2" + ws "^8.5.0" + optionalDependencies: + bufferutil "^4.0.1" + utf-8-validate "^5.0.2" + +run-async@^2.2.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== + +run-parallel-limit@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz#be80e936f5768623a38a963262d6bef8ff11e7ba" + integrity sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw== + dependencies: + queue-microtask "^1.2.2" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +rustbn.js@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/rustbn.js/-/rustbn.js-0.2.0.tgz#8082cb886e707155fd1cb6f23bd591ab8d55d0ca" + integrity sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA== + +rxjs@^6.4.0: + version "6.6.7" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" + integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== + dependencies: + tslib "^1.9.0" + +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-json-stringify@~1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz#356e44bc98f1f93ce45df14bcd7c01cda86e0afd" + integrity sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg== + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg== + dependencies: + ret "~0.1.10" + +safe-stable-stringify@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.3.1.tgz#ab67cbe1fe7d40603ca641c5e765cb942d04fc73" + integrity sha512-kYBSfT+troD9cDA85VDnHZ1rpHC50O0g1e6WlGHVCz/g+JS+9WKLj+XwFYyR8UbrZN8ll9HUpDAAddY58MGisg== + +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sax@>=0.6.0: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +saxes@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" + integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== + dependencies: + xmlchars "^2.2.0" + +scrypt-js@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-2.0.3.tgz#bb0040be03043da9a012a2cea9fc9f852cfc87d4" + integrity sha512-d8DzQxNivoNDogyYmb/9RD5mEQE/Q7vG2dLDUgvfPmKL9xCVzgqUntOdS0me9Cq9Sh9VxIZuoNEFcsfyXRnyUw== + +scrypt-js@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-2.0.4.tgz#32f8c5149f0797672e551c07e230f834b6af5f16" + integrity sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw== + +scrypt-js@3.0.1, scrypt-js@^3.0.0, scrypt-js@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" + integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== + +"scrypt-shim@github:web3-js/scrypt-shim": + version "0.1.0" + resolved "https://codeload.github.com/web3-js/scrypt-shim/tar.gz/aafdadda13e660e25e1c525d1f5b2443f5eb1ebb" + dependencies: + scryptsy "^2.1.0" + semver "^6.3.0" + +scryptsy@2.1.0, scryptsy@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/scryptsy/-/scryptsy-2.1.0.tgz#8d1e8d0c025b58fdd25b6fa9a0dc905ee8faa790" + integrity sha512-1CdSqHQowJBnMAFyPEBRfqag/YP9OF394FV+4YREIJX4ljD7OxvQRDayyoyyCk+senRjSkP6VnUNQmVQqB6g7w== + +secp256k1@4.0.3, secp256k1@^4.0.1, secp256k1@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.3.tgz#c4559ecd1b8d3c1827ed2d1b94190d69ce267303" + integrity sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA== + dependencies: + elliptic "^6.5.4" + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + +secp256k1@^3.0.1: + version "3.8.0" + resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-3.8.0.tgz#28f59f4b01dbee9575f56a47034b7d2e3b3b352d" + integrity sha512-k5ke5avRZbtl9Tqx/SA7CbY3NF6Ro+Sj9cZxezFzuBlLDmyqPiL8hJJ+EmzD8Ig4LUDByHJ3/iPOVoRixs/hmw== + dependencies: + bindings "^1.5.0" + bip66 "^1.1.5" + bn.js "^4.11.8" + create-hash "^1.2.0" + drbg.js "^1.0.1" + elliptic "^6.5.2" + nan "^2.14.0" + safe-buffer "^5.1.2" + +seedrandom@^3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-3.0.5.tgz#54edc85c95222525b0c7a6f6b3543d8e0b3aa0a7" + integrity sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg== + +seek-bzip@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.6.tgz#35c4171f55a680916b52a07859ecf3b5857f21c4" + integrity sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ== + dependencies: + commander "^2.8.1" + +semaphore-async-await@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/semaphore-async-await/-/semaphore-async-await-1.5.1.tgz#857bef5e3644601ca4b9570b87e9df5ca12974fa" + integrity sha512-b/ptP11hETwYWpeilHXXQiV5UJNJl7ZWWooKRE5eBIYWoom6dZ0SluCIdCtKycsMtZgKWE01/qAw6jblw1YVhg== + +semver@6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.2.0.tgz#4d813d9590aaf8a9192693d6c85b9344de5901db" + integrity sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A== + +semver@7.3.7, semver@7.x, semver@^7.2.1, semver@^7.3.2, semver@^7.3.5, semver@^7.3.7: + version "7.3.7" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" + integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== + dependencies: + lru-cache "^6.0.0" + +semver@^5.5.0, semver@^5.5.1, semver@^5.7.1: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@^6.0.0, semver@^6.1.0, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@~7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + +send@0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "2.0.0" + mime "1.6.0" + ms "2.1.3" + on-finished "2.4.1" + range-parser "~1.2.1" + statuses "2.0.1" + +sentence-case@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/sentence-case/-/sentence-case-2.1.1.tgz#1f6e2dda39c168bf92d13f86d4a918933f667ed4" + integrity sha512-ENl7cYHaK/Ktwk5OTD+aDbQ3uC8IByu/6Bkg+HDv8Mm+XnBnppVNalcfJTNsp1ibstKh030/JKQQWglDvtKwEQ== + dependencies: + no-case "^2.2.0" + upper-case-first "^1.1.2" + +serialize-javascript@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" + integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== + dependencies: + randombytes "^2.1.0" + +serve-static@1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.18.0" + +servify@^0.1.12: + version "0.1.12" + resolved "https://registry.yarnpkg.com/servify/-/servify-0.1.12.tgz#142ab7bee1f1d033b66d0707086085b17c06db95" + integrity sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw== + dependencies: + body-parser "^1.16.0" + cors "^2.8.1" + express "^4.14.0" + request "^2.79.0" + xhr "^2.3.3" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== + +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setimmediate@1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.4.tgz#20e81de622d4a02588ce0c8da8973cbcf1d3138f" + integrity sha512-/TjEmXQVEzdod/FFskf3o7oOAsGhHf2j1dZqRFbDzq4F3mvvxflIIi4Hd3bLQE9y/CpwqfSQam5JakI/mi3Pog== + +setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +sha.js@^2.4.0, sha.js@^2.4.11, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shallowequal@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" + integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== + dependencies: + shebang-regex "^1.0.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +simple-concat@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" + integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== + +simple-get@^2.7.0: + version "2.8.2" + resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-2.8.2.tgz#5708fb0919d440657326cd5fe7d2599d07705019" + integrity sha512-Ijd/rV5o+mSBBs4F/x9oDPtTx9Zb6X9brmnXvMW4J7IR15ngi9q5xxqWBKU744jTZiaXtxaPL7uHG6vtN8kUkw== + dependencies: + decompress-response "^3.3.0" + once "^1.3.1" + simple-concat "^1.0.0" + +simple-git@^1.110.0: + version "1.132.0" + resolved "https://registry.yarnpkg.com/simple-git/-/simple-git-1.132.0.tgz#53ac4c5ec9e74e37c2fd461e23309f22fcdf09b1" + integrity sha512-xauHm1YqCTom1sC9eOjfq3/9RKiUA9iPnxBbrY2DdL8l4ADMu0jjM5l5lphQP5YWNqAL2aXC/OeuQ76vHtW5fg== + dependencies: + debug "^4.0.1" + +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== + dependencies: + is-arrayish "^0.3.1" + +simple-update-notifier@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/simple-update-notifier/-/simple-update-notifier-1.0.7.tgz#7edf75c5bdd04f88828d632f762b2bc32996a9cc" + integrity sha512-BBKgR84BJQJm6WjWFMHgLVuo61FBDSj1z/xSFUIozqO6wO7ii0JxCqlIud7Enr/+LhlbNI0whErq96P2qHNWew== + dependencies: + semver "~7.0.0" + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +snake-case@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-2.1.0.tgz#41bdb1b73f30ec66a04d4e2cad1b76387d4d6d9f" + integrity sha512-FMR5YoPFwOLuh4rRz92dywJjyKYZNLpMn1R5ujVpIYkbA9p01fq8RMg0FkO4M+Yobt4MjHeLTJVm5xFFBHSV2Q== + dependencies: + no-case "^2.2.0" + +snake-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c" + integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +solc-wrapper@^0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/solc-wrapper/-/solc-wrapper-0.6.3.tgz#3230f9665bf8dce9fbe5a1517bd81b96c605e3a3" + integrity sha512-FWBnuQfU537SVSsBxuE4XkOKcK88a/bpLMVde2gc3BZcj0VmPc38wYO0Hkqqxsek7ZLK2lmXuEDLmgXhXl8Kyw== + dependencies: + command-exists "^1.2.8" + fs-extra "^0.30.0" + js-sha3 "0.8.0" + memorystream "^0.3.1" + require-from-string "^2.0.0" + semver "^5.5.0" + tmp "0.0.33" + +solc@0.7.3: + version "0.7.3" + resolved "https://registry.yarnpkg.com/solc/-/solc-0.7.3.tgz#04646961bd867a744f63d2b4e3c0701ffdc7d78a" + integrity sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA== + dependencies: + command-exists "^1.2.8" + commander "3.0.2" + follow-redirects "^1.12.1" + fs-extra "^0.30.0" + js-sha3 "0.8.0" + memorystream "^0.3.1" + require-from-string "^2.0.0" + semver "^5.5.0" + tmp "0.0.33" + +source-map-resolve@^0.5.0: + version "0.5.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-support@^0.5.13, source-map-support@^0.5.6: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-url@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" + integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== + +source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== + +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.7.3: + version "0.7.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" + integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== + +spark-md5@3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/spark-md5/-/spark-md5-3.0.2.tgz#7952c4a30784347abcee73268e473b9c0167e3fc" + integrity sha512-wcFzz9cDfbuqe0FZzfi2or1sgyIrsDwmPwfZC4hiNidPdPINjeUwNfv5kldczoEAcjl9Y1L3SM7Uz2PUEQzxQw== + +spinnies@^0.3.0: + version "0.3.2" + resolved "https://registry.yarnpkg.com/spinnies/-/spinnies-0.3.2.tgz#693d85cdaa095e253b13a8dc0dc8808cef23d678" + integrity sha512-WOvGI8X3h2XbAu/VBzIG99qJTeWCZ5RjyZtuLc4Q6qwAIv1/OPA2aL9j5wYEhwNsWLbBDHH5bLk/bOJTpexljw== + dependencies: + chalk "^2.4.2" + cli-cursor "^3.0.0" + +spinnies@^0.4.2: + version "0.4.3" + resolved "https://registry.yarnpkg.com/spinnies/-/spinnies-0.4.3.tgz#2ea0ad148e78353ddf621dec3951a6f4c3cbf66e" + integrity sha512-TTA2vWXrXJpfThWAl2t2hchBnCMI1JM5Wmb2uyI7Zkefdw/xO98LDy6/SBYwQPiYXL3swx3Eb44ZxgoS8X5wpA== + dependencies: + chalk "^2.4.2" + cli-cursor "^3.0.0" + strip-ansi "^5.2.0" + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +sshpk@^1.7.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" + integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +stack-trace@0.0.x: + version "0.0.10" + resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" + integrity sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg== + +stack-utils@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.5.tgz#a19b0b01947e0029c8e451d5d61a498f5bb1471b" + integrity sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ== + dependencies: + escape-string-regexp "^2.0.0" + +stack-utils@^2.0.3: + version "2.0.5" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.5.tgz#d25265fca995154659dbbfba3b49254778d2fdd5" + integrity sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA== + dependencies: + escape-string-regexp "^2.0.0" + +stacktrace-parser@^0.1.10: + version "0.1.10" + resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz#29fb0cae4e0d0b85155879402857a1639eb6051a" + integrity sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg== + dependencies: + type-fest "^0.7.1" + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g== + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +stats-lite@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/stats-lite/-/stats-lite-2.2.0.tgz#278a5571fa1d2e8b1691295dccc0235282393bbf" + integrity sha512-/Kz55rgUIv2KP2MKphwYT/NCuSfAlbbMRv2ZWw7wyXayu230zdtzhxxuXXcvsc6EmmhS8bSJl3uS1wmMHFumbA== + dependencies: + isnumber "~1.0.0" + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +"statuses@>= 1.5.0 < 2": + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + +stream-blackhole@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/stream-blackhole/-/stream-blackhole-1.0.3.tgz#6fc2e2c2e9d9fde6be8c68d3db88de09802e4d63" + integrity sha512-7NWl3dkmCd12mPkEwTbBPGxwvxj7L4O9DTjJudn02Fmk9K+RuPaDF8zeGo3kmjbsffU5E1aGpZ1dTR9AaRg6AQ== + +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + integrity sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ== + +string-length@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== + dependencies: + char-regex "^1.0.2" + strip-ansi "^6.0.0" + +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw== + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string.prototype.trimend@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz#914a65baaab25fbdd4ee291ca7dde57e869cb8d0" + integrity sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.19.5" + +string.prototype.trimstart@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz#5466d93ba58cfa2134839f81d7f42437e8c01fef" + integrity sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.19.5" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ== + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow== + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== + +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + +strip-dirs@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/strip-dirs/-/strip-dirs-2.1.0.tgz#4987736264fc344cf20f6c34aca9d13d1d4ed6c5" + integrity sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g== + dependencies: + is-natural-number "^4.0.1" + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q== + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-hex-prefix@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz#0c5f155fef1151373377de9dbb588da05500e36f" + integrity sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A== + dependencies: + is-hex-prefixed "1.0.0" + +strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +sublevel-pouchdb@7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/sublevel-pouchdb/-/sublevel-pouchdb-7.3.0.tgz#d27138c34d98c3d5c8c3ee85c1662add3ad04525" + integrity sha512-zp7u4jmv2N/s+dXZkWTtL4BjREs3SZ1nGBNNJ8RWX4yqN59oHgKmti4CfVOqfsAW9RMasmTqQAEPxL9hX8+CIA== + dependencies: + inherits "2.0.4" + level-codec "9.0.2" + ltgt "2.2.1" + readable-stream "1.1.14" + +superagent@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/superagent/-/superagent-8.0.0.tgz#2ea4587df4b81ef023ec01ebc6e1bcb9e2344cb6" + integrity sha512-iudipXEel+SzlP9y29UBWGDjB+Zzag+eeA1iLosaR2YHBRr1Q1kC29iBrF2zIVD9fqVbpZnXkN/VJmwFMVyNWg== + dependencies: + component-emitter "^1.3.0" + cookiejar "^2.1.3" + debug "^4.3.4" + fast-safe-stringify "^2.1.1" + form-data "^4.0.0" + formidable "^2.0.1" + methods "^1.1.2" + mime "2.6.0" + qs "^6.10.3" + readable-stream "^3.6.0" + semver "^7.3.7" + +superstruct@^0.10.12: + version "0.10.13" + resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-0.10.13.tgz#705535a5598ff231bd976601a7b6b534a71a821b" + integrity sha512-W4SitSZ9MOyMPbHreoZVEneSZyPEeNGbdfJo/7FkJyRs/M3wQRFzq+t3S/NBwlrFSWdx1ONLjLb9pB+UKe4IqQ== + +superstruct@^0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-0.14.2.tgz#0dbcdf3d83676588828f1cf5ed35cda02f59025b" + integrity sha512-nPewA6m9mR3d6k7WkZ8N8zpTWfenFH3q9pA2PkuiZxINr9DKB2+40wEQf0ixn8VaGuJ78AB6iWOtStI+/4FKZQ== + +supertest@^6.1.6: + version "6.2.4" + resolved "https://registry.yarnpkg.com/supertest/-/supertest-6.2.4.tgz#3dcebe42f7fd6f28dd7ac74c6cba881f7101b2f0" + integrity sha512-M8xVnCNv+q2T2WXVzxDECvL2695Uv2uUj2O0utxsld/HRyJvOU8W9f1gvsYxSNU4wmIe0/L/ItnpU4iKq0emDA== + dependencies: + methods "^1.1.2" + superagent "^8.0.0" + +supports-color@4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.4.0.tgz#883f7ddabc165142b2a61427f3352ded195d1a3e" + integrity sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ== + dependencies: + has-flag "^2.0.0" + +supports-color@5.4.0: + version "5.4.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" + integrity sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w== + dependencies: + has-flag "^3.0.0" + +supports-color@8.1.1, supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-color@^5.3.0, supports-color@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.0.0, supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-hyperlinks@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" + integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ== + dependencies: + has-flag "^4.0.0" + supports-color "^7.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +swagger-ui-dist@>=4.1.3: + version "4.14.0" + resolved "https://registry.yarnpkg.com/swagger-ui-dist/-/swagger-ui-dist-4.14.0.tgz#e34d807464eb84578c43902e393084a1a6fbda52" + integrity sha512-TBzhheU15s+o54Cgk9qxuYcZMiqSm/SkvKnapoGHOF66kz0Y5aGjpzj5BT/vpBbn6rTPJ9tUYXQxuDWfsjiGMw== + +swagger-ui-express@^4.1.6: + version "4.3.0" + resolved "https://registry.yarnpkg.com/swagger-ui-express/-/swagger-ui-express-4.3.0.tgz#226238ab231f7718f9109d63a66efc3a795618dd" + integrity sha512-jN46SEEe9EoXa3ZgZoKgnSF6z0w3tnM1yqhO4Y+Q4iZVc8JOQB960EZpIAz6rNROrDApVDwcMHR0mhlnc/5Omw== + dependencies: + swagger-ui-dist ">=4.1.3" + +swap-case@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/swap-case/-/swap-case-1.1.2.tgz#c39203a4587385fad3c850a0bd1bcafa081974e3" + integrity sha512-BAmWG6/bx8syfc6qXPprof3Mn5vQgf5dwdUNJhsNqU9WdPt5P+ES/wQ5bxfijy8zwZgZZHslC3iAsxsuQMCzJQ== + dependencies: + lower-case "^1.1.1" + upper-case "^1.1.1" + +swarm-js@0.1.39: + version "0.1.39" + resolved "https://registry.yarnpkg.com/swarm-js/-/swarm-js-0.1.39.tgz#79becb07f291d4b2a178c50fee7aa6e10342c0e8" + integrity sha512-QLMqL2rzF6n5s50BptyD6Oi0R1aWlJC5Y17SRIVXRj6OR1DRIPM7nepvrxxkjA1zNzFz6mUOMjfeqeDaWB7OOg== + dependencies: + bluebird "^3.5.0" + buffer "^5.0.5" + decompress "^4.0.0" + eth-lib "^0.1.26" + fs-extra "^4.0.2" + got "^7.1.0" + mime-types "^2.1.16" + mkdirp-promise "^5.0.1" + mock-fs "^4.1.0" + setimmediate "^1.0.5" + tar "^4.0.2" + xhr-request-promise "^0.1.2" + +swarm-js@^0.1.40: + version "0.1.40" + resolved "https://registry.yarnpkg.com/swarm-js/-/swarm-js-0.1.40.tgz#b1bc7b6dcc76061f6c772203e004c11997e06b99" + integrity sha512-yqiOCEoA4/IShXkY3WKwP5PvZhmoOOD8clsKA7EEcRILMkTEYHCQ21HDCAcVpmIxZq4LyZvWeRJ6quIyHk1caA== + dependencies: + bluebird "^3.5.0" + buffer "^5.0.5" + eth-lib "^0.1.26" + fs-extra "^4.0.2" + got "^7.1.0" + mime-types "^2.1.16" + mkdirp-promise "^5.0.1" + mock-fs "^4.1.0" + setimmediate "^1.0.5" + tar "^4.0.2" + xhr-request "^1.0.1" + +symbol-observable@^1.0.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" + integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== + +symbol-observable@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-2.0.3.tgz#5b521d3d07a43c351055fa43b8355b62d33fd16a" + integrity sha512-sQV7phh2WCYAn81oAkakC5qjq2Ml0g8ozqz03wOGnx9dDlG1de6yrF+0RAzSJD8fPUow3PTSMf2SAbOGxb93BA== + +symbol-tree@^3.2.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + +table@^6.0.9: + version "6.8.0" + resolved "https://registry.yarnpkg.com/table/-/table-6.8.0.tgz#87e28f14fa4321c3377ba286f07b79b281a3b3ca" + integrity sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA== + dependencies: + ajv "^8.0.1" + lodash.truncate "^4.4.2" + slice-ansi "^4.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + +tar-stream@^1.5.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555" + integrity sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A== + dependencies: + bl "^1.0.0" + buffer-alloc "^1.2.0" + end-of-stream "^1.0.0" + fs-constants "^1.0.0" + readable-stream "^2.3.0" + to-buffer "^1.1.1" + xtend "^4.0.0" + +tar@^4.0.2: + version "4.4.19" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.19.tgz#2e4d7263df26f2b914dee10c825ab132123742f3" + integrity sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA== + dependencies: + chownr "^1.1.4" + fs-minipass "^1.2.7" + minipass "^2.9.0" + minizlib "^1.3.3" + mkdirp "^0.5.5" + safe-buffer "^5.2.1" + yallist "^3.1.1" + +terminal-link@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" + integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== + dependencies: + ansi-escapes "^4.2.1" + supports-hyperlinks "^2.0.0" + +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + +test-value@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/test-value/-/test-value-2.1.0.tgz#11da6ff670f3471a73b625ca4f3fdcf7bb748291" + integrity sha512-+1epbAxtKeXttkGFMTX9H42oqzOTufR1ceCF+GYA5aOmvaPq9wd4PUS8329fn2RRLGNeUkgRLnVpycjx8DsO2w== + dependencies: + array-back "^1.0.3" + typical "^2.6.0" + +text-encoding-utf-8@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz#585b62197b0ae437e3c7b5d0af27ac1021e10d13" + integrity sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg== + +text-encoding@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/text-encoding/-/text-encoding-0.7.0.tgz#f895e836e45990624086601798ea98e8f36ee643" + integrity sha512-oJQ3f1hrOnbRLOcwKz0Liq2IcrvDeZRHXhd9RgLrsT+DjWY/nty1Hi7v3dtkaEYbPYe0mUoOfzRrMwfXXwgPUA== + +text-hex@1.0.x: + version "1.0.0" + resolved "https://registry.yarnpkg.com/text-hex/-/text-hex-1.0.0.tgz#69dc9c1b17446ee79a92bf5b884bb4b9127506f5" + integrity sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg== + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +throat@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.1.tgz#d514fedad95740c12c2d7fc70ea863eb51ade375" + integrity sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w== + +through2@3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.2.tgz#99f88931cfc761ec7678b41d5d7336b5b6a07bf4" + integrity sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ== + dependencies: + inherits "^2.0.4" + readable-stream "2 || 3" + +through2@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +"through@>=2.2.7 <3", through@^2.3.6, through@^2.3.8: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + +timed-out@^4.0.0, timed-out@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" + integrity sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA== + +tiny-emitter@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz#1d1a56edfc51c43e863cbb5382a72330e3555423" + integrity sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q== + +tiny-invariant@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.2.0.tgz#a1141f86b672a9148c72e978a19a73b9b94a15a9" + integrity sha512-1Uhn/aqw5C6RI4KejVeTg6mIS7IqxnLJ8Mv2tV5rTc0qWobay7pDUz6Wi392Cnc8ak1H0F2cjoRzb2/AW4+Fvg== + +tiny-typed-emitter@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/tiny-typed-emitter/-/tiny-typed-emitter-2.1.0.tgz#b3b027fdd389ff81a152c8e847ee2f5be9fad7b5" + integrity sha512-qVtvMxeXbVej0cQWKqVSSAHmKZEHAvxdF8HEUBFWts8h+xEo5m/lEiPakuyZ3BnCBjOD8i24kzNOiOLLgsSxhA== + +tiny-warning@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" + integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== + +title-case@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/title-case/-/title-case-2.1.1.tgz#3e127216da58d2bc5becf137ab91dae3a7cd8faa" + integrity sha512-EkJoZ2O3zdCz3zJsYCsxyq2OC5hrxR9mfdd5I+w8h/tmFfeOxJ+vvkxsKxdmN0WtS9zLdHEgfgVOiMVgv+Po4Q== + dependencies: + no-case "^2.2.0" + upper-case "^1.0.3" + +tmp@0.0.33, tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +tmpl@1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== + +to-buffer@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" + integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg== + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg== + dependencies: + kind-of "^3.0.2" + +to-readable-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" + integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg== + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +toformat@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/toformat/-/toformat-2.0.0.tgz#7a043fd2dfbe9021a4e36e508835ba32056739d8" + integrity sha512-03SWBVop6nU8bpyZCx7SodpYznbZF5R4ljwNLBcTQzKOD9xuihRo/psX58llS1BMFhhAI08H3luot5GoXJz2pQ== + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +toml@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/toml/-/toml-3.0.0.tgz#342160f1af1904ec9d204d03a5d61222d762c5ee" + integrity sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w== + +toposort@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/toposort/-/toposort-2.0.2.tgz#ae21768175d1559d48bef35420b2f4962f09c330" + integrity sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg== + +touch@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b" + integrity sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA== + dependencies: + nopt "~1.0.10" + +"tough-cookie@^2.3.3 || ^3.0.1 || ^4.0.0": + version "4.1.2" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.2.tgz#e53e84b85f24e0b65dd526f46628db6c85f6b874" + integrity sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ== + dependencies: + psl "^1.1.33" + punycode "^2.1.1" + universalify "^0.2.0" + url-parse "^1.5.3" + +tough-cookie@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" + integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== + dependencies: + psl "^1.1.33" + punycode "^2.1.1" + universalify "^0.1.2" + +tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +tr46@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" + integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== + dependencies: + punycode "^2.1.1" + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +traverse-chain@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/traverse-chain/-/traverse-chain-0.1.0.tgz#61dbc2d53b69ff6091a12a168fd7d433107e40f1" + integrity sha512-up6Yvai4PYKhpNp5PkYtx50m3KbwQrqDwbuZP/ItyL64YEWHAvH6Md83LFLV/GRSk/BoUVwwgUzX6SOQSbsfAg== + +triple-beam@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.3.0.tgz#a595214c7298db8339eeeee083e4d10bd8cb8dd9" + integrity sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw== + +"true-case-path@^2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-2.2.1.tgz#c5bf04a5bbec3fd118be4084461b3a27c4d796bf" + integrity sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q== + +truffle-config@1.1.16: + version "1.1.16" + resolved "https://registry.yarnpkg.com/truffle-config/-/truffle-config-1.1.16.tgz#366ec223165953c77852437e00f01ed8921a77a2" + integrity sha512-of9wKDjXAKIA4kpdQbxnSxRl4EOPi6ipkoOn01J3yC1UJ942jeyLm7hUrTRdxcL8Nz3G47xO+xTMX5T7UYbdTA== + dependencies: + configstore "^4.0.0" + find-up "^2.1.0" + lodash "^4.17.13" + original-require "1.0.1" + truffle-error "^0.0.5" + truffle-provider "^0.1.12" + +truffle-error@^0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/truffle-error/-/truffle-error-0.0.5.tgz#6b5740c9f3aac74f47b85d654fff7fe2c1fc5e0e" + integrity sha512-JpzPLMPSCE0vaZ3vH5NO5u42GpMj/Y1SRBkQ6b69PSw3xMSH1umApN32cEcg1nnh8q5FNYc5FnKu0m4tiBffyQ== + +truffle-flattener@^1.4.0, truffle-flattener@^1.4.4: + version "1.6.0" + resolved "https://registry.yarnpkg.com/truffle-flattener/-/truffle-flattener-1.6.0.tgz#abb64488b711e6cca0a9d3e449f6a85e35964c5d" + integrity sha512-scS5Bsi4CZyvlrmD4iQcLHTiG2RQFUXVheTgWeH6PuafmI+Lk5U87Es98loM3w3ImqC9/fPHq+3QIXbcPuoJ1Q== + dependencies: + "@resolver-engine/imports-fs" "^0.2.2" + "@solidity-parser/parser" "^0.14.1" + find-up "^2.1.0" + mkdirp "^1.0.4" + tsort "0.0.1" + +truffle-hdwallet-provider@^1.0.17: + version "1.0.17" + resolved "https://registry.yarnpkg.com/truffle-hdwallet-provider/-/truffle-hdwallet-provider-1.0.17.tgz#fe8edd0d6974eeb31af9959e41525fb19abd74ca" + integrity sha512-s6DvSP83jiIAc6TUcpr7Uqnja1+sLGJ8og3X7n41vfyC4OCaKmBtXL5HOHf+SsU3iblOvnbFDgmN6Y1VBL/fsg== + dependencies: + any-promise "^1.3.0" + bindings "^1.3.1" + web3 "1.2.1" + websocket "^1.0.28" + +truffle-interface-adapter@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/truffle-interface-adapter/-/truffle-interface-adapter-0.2.5.tgz#aa0bee635517b4a8e06adcdc99eacb993e68c243" + integrity sha512-EL39OpP8FcZ99ne1Rno3jImfb92Nectd4iVsZzoEUCBfbwHe7sr0k+i45guoruSoP8nMUE81Mov2s8I5pi6d9Q== + dependencies: + bn.js "^4.11.8" + ethers "^4.0.32" + lodash "^4.17.13" + web3 "1.2.1" + +truffle-provider@^0.1.12: + version "0.1.16" + resolved "https://registry.yarnpkg.com/truffle-provider/-/truffle-provider-0.1.16.tgz#05db46a4bda9b7e6503f8701f2b03ccb1e6c78ba" + integrity sha512-3d5WqSKIzZcpgW44mdfF97s+Tgh2a/3Ly6vHJirBV9OZDUtiAzP6WVnlRNvmlDJXFCDqt6Yb9qQWoXFHbYoR6w== + dependencies: + "@truffle/error" "^0.0.6" + truffle-interface-adapter "^0.2.5" + web3 "1.2.1" + +truffle@^5.1.41: + version "5.6.2" + resolved "https://registry.yarnpkg.com/truffle/-/truffle-5.6.2.tgz#69650bdc75ecef93cf96776116320ad782578571" + integrity sha512-xWcjQeG/xEXvtS+PcHAShleG5I6IO5YP4IYW5eA0scJO6F0wqaq5ZaU88NMqpFeopTB/neFwaHdvYKX/sfNQIQ== + dependencies: + "@truffle/db-loader" "^0.2.2" + "@truffle/debugger" "^11.0.13" + app-module-path "^2.2.0" + ganache "7.4.4" + mocha "9.2.2" + original-require "^1.0.1" + optionalDependencies: + "@truffle/db" "^2.0.2" + +ts-essentials@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-1.0.4.tgz#ce3b5dade5f5d97cf69889c11bf7d2da8555b15a" + integrity sha512-q3N1xS4vZpRouhYHDPwO0bDW3EZ6SK9CrrDHxi/D6BPReSjpVgWIOpLS2o0gSBZm+7q/wyKp6RVM1AeeW7uyfQ== + +ts-generator@^0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/ts-generator/-/ts-generator-0.0.8.tgz#7bd48ca064db026d9520bcb682b69efc20971d6a" + integrity sha512-Gi+aZCELpVL7Mqb+GuMgM+n8JZ/arZZib1iD/R9Ok8JDjOCOCrqS9b1lr72ku7J45WeDCFZxyJoRsiQvhokCnw== + dependencies: + "@types/mkdirp" "^0.5.2" + "@types/prettier" "^1.13.2" + "@types/resolve" "^0.0.8" + chalk "^2.4.1" + glob "^7.1.2" + mkdirp "^0.5.1" + prettier "^1.14.2" + resolve "^1.8.1" + ts-essentials "^1.0.0" + +ts-jest@^27.0.5: + version "27.1.5" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-27.1.5.tgz#0ddf1b163fbaae3d5b7504a1e65c914a95cff297" + integrity sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA== + dependencies: + bs-logger "0.x" + fast-json-stable-stringify "2.x" + jest-util "^27.0.0" + json5 "2.x" + lodash.memoize "4.x" + make-error "1.x" + semver "7.x" + yargs-parser "20.x" + +ts-node@^10.0.0: + version "10.9.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" + integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + +tsconfig-paths@^3.14.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a" + integrity sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.1" + minimist "^1.2.6" + strip-bom "^3.0.0" + +tslib@^1.11.1, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.1, tslib@^2.4.0, tslib@~2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== + +tsort@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/tsort/-/tsort-0.0.1.tgz#e2280f5e817f8bf4275657fd0f9aebd44f5a2786" + integrity sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw== + +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== + dependencies: + safe-buffer "^5.0.1" + +tweetnacl-util@^0.15.1: + version "0.15.1" + resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz#b80fcdb5c97bcc508be18c44a4be50f022eea00b" + integrity sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw== + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== + +tweetnacl@^1.0.0, tweetnacl@^1.0.1, tweetnacl@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" + integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== + dependencies: + prelude-ls "~1.1.2" + +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +type-fest@^0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48" + integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== + +type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +type@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.5.0: + version "2.7.2" + resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0" + integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== + +typechain-target-truffle@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/typechain-target-truffle/-/typechain-target-truffle-1.0.2.tgz#52ecbd8b7a854960567ad223660d60fcb42eaa17" + integrity sha512-XF3Iq2IzR+Pqvx6fcKIKGXNEk3lEcY24vYv9VqoVPfPB6vUM09PRLJCeLm1/ag6Pr2PICKUA0f4Es+YTR3ESKA== + dependencies: + lodash "^4.17.15" + +typechain-target-web3-v1@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/typechain-target-web3-v1/-/typechain-target-web3-v1-1.0.4.tgz#0157359e534737c07fc62529d5d8570a2047a2da" + integrity sha512-jQ6eCfY7QorBq6kQDjSy5LMuImZGkp6IXR6FXZp7/ulITIxAfb6Dxh+yvh0NN/zboLnMPvvSJi6tHWCqlwfSDA== + dependencies: + lodash "^4.17.15" + web3 "^1.2.4" + +typechain@^1.0.3: + version "1.0.5" + resolved "https://registry.yarnpkg.com/typechain/-/typechain-1.0.5.tgz#797899d9dbce54a83b3aef04ce1727ddf07d2138" + integrity sha512-gbQmJXPKuYQ0p3tK+dMhpdQql/UPtSnkPQXw2QM/aqwCengI86z2vEM2e5rVQpmk/blFx1PYNdApSDxE12rR1Q== + dependencies: + command-line-args "^4.0.7" + debug "^3.0.1" + fs-extra "^7.0.0" + js-sha3 "^0.8.0" + lodash "^4.17.15" + ts-generator "^0.0.8" + +typed-function@^2.0.0, typed-function@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/typed-function/-/typed-function-2.1.0.tgz#ded6f8a442ba8749ff3fe75bc41419c8d46ccc3f" + integrity sha512-bctQIOqx2iVbWGDGPWwIm18QScpu2XRmkC19D8rQGFsjKSgteq/o1hTZvIG/wuDq8fanpBDrLkLq+aEN/6y5XQ== + +typed-function@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/typed-function/-/typed-function-3.0.0.tgz#42f75ffdd7dd63bf5dcc950847138f2bb65f1ad3" + integrity sha512-mKJKkt2xYxJUuMD7jyfgUxfn5KCsCxkEKBVjep5yYellJJ5aEDO2QUAmIGdvcZmfQnIrplkzELIaG+5b1475qg== + +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + +typescript-compare@^0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/typescript-compare/-/typescript-compare-0.0.2.tgz#7ee40a400a406c2ea0a7e551efd3309021d5f425" + integrity sha512-8ja4j7pMHkfLJQO2/8tut7ub+J3Lw2S3061eJLFQcvs3tsmJKp8KG5NtpLn7KcY2w08edF74BSVN7qJS0U6oHA== + dependencies: + typescript-logic "^0.0.0" + +typescript-logic@^0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/typescript-logic/-/typescript-logic-0.0.0.tgz#66ebd82a2548f2b444a43667bec120b496890196" + integrity sha512-zXFars5LUkI3zP492ls0VskH3TtdeHCqu0i7/duGt60i5IGPIpAHE/DWo5FqJ6EjQ15YKXrt+AETjv60Dat34Q== + +typescript-tuple@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/typescript-tuple/-/typescript-tuple-2.2.1.tgz#7d9813fb4b355f69ac55032e0363e8bb0f04dad2" + integrity sha512-Zcr0lbt8z5ZdEzERHAMAniTiIKerFCMgd7yjq1fPnDJ43et/k9twIFQMUYff9k5oXcsQ0WpvFcgzK2ZKASoW6Q== + dependencies: + typescript-compare "^0.0.2" + +typescript@^4.3.2: + version "4.7.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.4.tgz#1a88596d1cf47d59507a1bcdfb5b9dfe4d488235" + integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ== + +typical@^2.6.0, typical@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/typical/-/typical-2.6.1.tgz#5c080e5d661cbbe38259d2e70a3c7253e873881d" + integrity sha512-ofhi8kjIje6npGozTip9Fr8iecmYfEbS06i0JnIg+rh51KakryWF4+jX8lLKZVhy6N+ID45WYSFCxPOdTWCzNg== + +u3@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/u3/-/u3-0.1.1.tgz#5f52044f42ee76cd8de33148829e14528494b73b" + integrity sha512-+J5D5ir763y+Am/QY6hXNRlwljIeRMZMGs0cT6qqZVVzzT3X3nFPXVyPOFRMOR4kupB0T8JnCdpWdp6Q/iXn3w== + +ultron@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" + integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== + +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== + dependencies: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" + +unbzip2-stream@^1.0.9: + version "1.4.3" + resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7" + integrity sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg== + dependencies: + buffer "^5.2.1" + through "^2.3.8" + +undefsafe@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.5.tgz#38733b9327bdcd226db889fb723a6efd162e6e2c" + integrity sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA== + +underscore@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.1.tgz#06dce34a0e68a7babc29b365b8e74b8925203961" + integrity sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg== + +underscore@^1.9.1: + version "1.13.4" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.4.tgz#7886b46bbdf07f768e0052f1828e1dcab40c0dee" + integrity sha512-BQFnUDuAQ4Yf/cYY5LNrK9NCJFKriaRbD9uR1fTeXnBeoa97W0i41qkZfGO9pSo8I5KzjAcSY2XYtdf0oKd7KQ== + +undici@^5.4.0: + version "5.8.1" + resolved "https://registry.yarnpkg.com/undici/-/undici-5.8.1.tgz#511d43ff6be02f84ec2513ae7f4b07c589319272" + integrity sha512-iDRmWX4Zar/4A/t+1LrKQRm102zw2l9Wgat3LtTlTn8ykvMZmAmpq9tjyHEigx18FsY7IfATvyN3xSw9BDz0eA== + +unfetch@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-4.2.0.tgz#7e21b0ef7d363d8d9af0fb929a5555f6ef97a3be" + integrity sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA== + +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +unique-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" + integrity sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg== + dependencies: + crypto-random-string "^1.0.0" + +universalify@^0.1.0, universalify@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +universalify@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" + integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== + +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + +unorm@^1.3.3: + version "1.6.0" + resolved "https://registry.yarnpkg.com/unorm/-/unorm-1.6.0.tgz#029b289661fba714f1a9af439eb51d9b16c205af" + integrity sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA== + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ== + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +untildify@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" + integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== + +update-browserslist-db@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz#be06a5eedd62f107b7c19eb5bcefb194411abf38" + integrity sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + +upper-case-first@^1.1.0, upper-case-first@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/upper-case-first/-/upper-case-first-1.1.2.tgz#5d79bedcff14419518fd2edb0a0507c9b6859115" + integrity sha512-wINKYvI3Db8dtjikdAqoBbZoP6Q+PZUyfMR7pmwHzjC2quzSkUq5DmPrTtPEqHaz8AGtmsB4TqwapMTM1QAQOQ== + dependencies: + upper-case "^1.1.1" + +upper-case@^1.0.3, upper-case@^1.1.0, upper-case@^1.1.1, upper-case@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" + integrity sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA== + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== + +url-parse-lax@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" + integrity sha512-BVA4lR5PIviy2PMseNd2jbFQ+jwSwQGdJejf5ctd1rEXt0Ypd7yanUK9+lYechVlN5VaTJGsu2U/3MDDu6KgBA== + dependencies: + prepend-http "^1.0.1" + +url-parse-lax@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" + integrity sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ== + dependencies: + prepend-http "^2.0.0" + +url-parse@^1.5.3: + version "1.5.10" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" + integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + +url-set-query@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/url-set-query/-/url-set-query-1.0.0.tgz#016e8cfd7c20ee05cafe7795e892bd0702faa339" + integrity sha512-3AChu4NiXquPfeckE5R5cGdiHCMWJx1dwCWOmWIL4KHAziJNOFIYJlpGFeKDvwLPHovZRCxK3cYlwzqI9Vp+Gg== + +url-to-options@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" + integrity sha512-0kQLIzG4fdk/G5NONku64rSH/x32NOA39LVQqlK8Le6lvTF6GGRJpqaQFGgU+CLwySIqBSMdwYM0sYcW9f6P4A== + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +utf-8-validate@5.0.7: + version "5.0.7" + resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.7.tgz#c15a19a6af1f7ad9ec7ddc425747ca28c3644922" + integrity sha512-vLt1O5Pp+flcArHGIyKEQq883nBt8nN8tVBcoL0qUXj2XT1n7p70yGIq2VK98I5FdZ1YHc0wk/koOnHjnXWk1Q== + dependencies: + node-gyp-build "^4.3.0" + +utf-8-validate@^5.0.2: + version "5.0.9" + resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.9.tgz#ba16a822fbeedff1a58918f2a6a6b36387493ea3" + integrity sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q== + dependencies: + node-gyp-build "^4.3.0" + +utf8@3.0.0, utf8@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/utf8/-/utf8-3.0.0.tgz#f052eed1364d696e769ef058b183df88c87f69d1" + integrity sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ== + +util-deprecate@^1.0.1, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +util@^0.12.0: + version "0.12.4" + resolved "https://registry.yarnpkg.com/util/-/util-0.12.4.tgz#66121a31420df8f01ca0c464be15dfa1d1850253" + integrity sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw== + dependencies: + inherits "^2.0.3" + is-arguments "^1.0.4" + is-generator-function "^1.0.7" + is-typed-array "^1.1.3" + safe-buffer "^5.1.2" + which-typed-array "^1.1.2" + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + +uuid@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.1.tgz#c2a30dedb3e535d72ccf82e343941a50ba8533ac" + integrity sha512-nWg9+Oa3qD2CQzHIP4qKUqwNfzKn8P0LtFhotaCTFchsV7ZfDhAybeip/HZVeMIpZi9JgY1E3nUlwaCmZT1sEg== + +uuid@3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" + integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== + +uuid@8.3.2, uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +uuid@^3.3.2, uuid@^3.3.3: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +uuid@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5" + integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg== + +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + +v8-compile-cache@^2.0.3: + version "2.3.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" + integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== + +v8-to-istanbul@^8.1.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz#77b752fd3975e31bbcef938f85e9bd1c7a8d60ed" + integrity sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^1.6.0" + source-map "^0.7.3" + +value-or-promise@1.0.11: + version "1.0.11" + resolved "https://registry.yarnpkg.com/value-or-promise/-/value-or-promise-1.0.11.tgz#3e90299af31dd014fe843fe309cefa7c1d94b140" + integrity sha512-41BrgH+dIbCFXClcSapVs5M6GkENd3gQOJpEfPDNa71LsUGMXDL0jMWpI/Rh7WhX+Aalfz2TTS3Zt5pUsbnhLg== + +varint@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/varint/-/varint-5.0.2.tgz#5b47f8a947eb668b848e034dcfa87d0ff8a7f7a4" + integrity sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow== + +vary@^1, vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +vuvuzela@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/vuvuzela/-/vuvuzela-1.0.3.tgz#3be145e58271c73ca55279dd851f12a682114b0b" + integrity sha512-Tm7jR1xTzBbPW+6y1tknKiEhz04Wf/1iZkcTJjSFcpNko43+dFW6+OOeQe9taJIug3NdfUAjFKgUSyQrIKaDvQ== + +vvs-sdk@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/vvs-sdk/-/vvs-sdk-2.4.0.tgz#bbc807b84b312b7cac47778f2722ef3d7d00fa08" + integrity sha512-xy/ICGVonDINDAjvMoWIlUzCB1JpZmJe/cXTzOHbzKqXFNFtRiKThlYZqZ1/ANT+pXIEvRGM4xfagBH1HIeLXw== + dependencies: + "@pancakeswap-libs/pancake-swap-core" "^0.1.0" + big.js "^5.2.2" + decimal.js-light "^2.5.0" + jsbi "^3.1.1" + tiny-invariant "^1.1.0" + tiny-warning "^1.0.3" + toformat "^2.0.0" + +w3c-hr-time@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" + integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== + dependencies: + browser-process-hrtime "^1.0.0" + +w3c-xmlserializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" + integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== + dependencies: + xml-name-validator "^3.0.0" + +walker@^1.0.7: + version "1.0.8" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== + dependencies: + makeerror "1.0.12" + +web3-bzz@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.2.1.tgz#c3bd1e8f0c02a13cd6d4e3c3e9e1713f144f6f0d" + integrity sha512-LdOO44TuYbGIPfL4ilkuS89GQovxUpmLz6C1UC7VYVVRILeZS740FVB3j9V4P4FHUk1RenaDfKhcntqgVCHtjw== + dependencies: + got "9.6.0" + swarm-js "0.1.39" + underscore "1.9.1" + +web3-bzz@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.2.2.tgz#a3b9f613c49fd3e120e0997088a73557d5adb724" + integrity sha512-b1O2ObsqUN1lJxmFSjvnEC4TsaCbmh7Owj3IAIWTKqL9qhVgx7Qsu5O9cD13pBiSPNZJ68uJPaKq380QB4NWeA== + dependencies: + "@types/node" "^10.12.18" + got "9.6.0" + swarm-js "0.1.39" + underscore "1.9.1" + +web3-bzz@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.7.4.tgz#9419e606e38a9777443d4ce40506ebd796e06075" + integrity sha512-w9zRhyEqTK/yi0LGRHjZMcPCfP24LBjYXI/9YxFw9VqsIZ9/G0CRCnUt12lUx0A56LRAMpF7iQ8eA73aBcO29Q== + dependencies: + "@types/node" "^12.12.6" + got "9.6.0" + swarm-js "^0.1.40" + +web3-bzz@1.7.5: + version "1.7.5" + resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.7.5.tgz#edeb262c3a6619109763077a94172513cf07cdde" + integrity sha512-Z53sY0YK/losqjJncmL4vP0zZI9r6tiXg6o7R6e1JD2Iy7FH3serQvU+qXmPjqEBzsnhf8wTG+YcBPB3RHpr0Q== + dependencies: + "@types/node" "^12.12.6" + got "12.1.0" + swarm-js "^0.1.40" + +web3-core-helpers@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.2.1.tgz#f5f32d71c60a4a3bd14786118e633ce7ca6d5d0d" + integrity sha512-Gx3sTEajD5r96bJgfuW377PZVFmXIH4TdqDhgGwd2lZQCcMi+DA4TgxJNJGxn0R3aUVzyyE76j4LBrh412mXrw== + dependencies: + underscore "1.9.1" + web3-eth-iban "1.2.1" + web3-utils "1.2.1" + +web3-core-helpers@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.2.2.tgz#484974f4bd4a487217b85b0d7cfe841af0907619" + integrity sha512-HJrRsIGgZa1jGUIhvGz4S5Yh6wtOIo/TMIsSLe+Xay+KVnbseJpPprDI5W3s7H2ODhMQTbogmmUFquZweW2ImQ== + dependencies: + underscore "1.9.1" + web3-eth-iban "1.2.2" + web3-utils "1.2.2" + +web3-core-helpers@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.7.4.tgz#f8f808928560d3e64e0c8d7bdd163aa4766bcf40" + integrity sha512-F8PH11qIkE/LpK4/h1fF/lGYgt4B6doeMi8rukeV/s4ivseZHHslv1L6aaijLX/g/j4PsFmR42byynBI/MIzFg== + dependencies: + web3-eth-iban "1.7.4" + web3-utils "1.7.4" + +web3-core-helpers@1.7.5: + version "1.7.5" + resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.7.5.tgz#e97b3ecac787ade4b9390807a86aca78ed97872b" + integrity sha512-lDDjTks6Q6aNUO87RYrY2xub3UWTKr/RIWxpHJODEqkLxZS1dWdyliJ6aIx3031VQwsNT5HE7NvABe/t0p3iDQ== + dependencies: + web3-eth-iban "1.7.5" + web3-utils "1.7.5" + +web3-core-method@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.2.1.tgz#9df1bafa2cd8be9d9937e01c6a47fc768d15d90a" + integrity sha512-Ghg2WS23qi6Xj8Od3VCzaImLHseEA7/usvnOItluiIc5cKs00WYWsNy2YRStzU9a2+z8lwQywPYp0nTzR/QXdQ== + dependencies: + underscore "1.9.1" + web3-core-helpers "1.2.1" + web3-core-promievent "1.2.1" + web3-core-subscriptions "1.2.1" + web3-utils "1.2.1" + +web3-core-method@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.2.2.tgz#d4fe2bb1945b7152e5f08e4ea568b171132a1e56" + integrity sha512-szR4fDSBxNHaF1DFqE+j6sFR/afv9Aa36OW93saHZnrh+iXSrYeUUDfugeNcRlugEKeUCkd4CZylfgbK2SKYJA== + dependencies: + underscore "1.9.1" + web3-core-helpers "1.2.2" + web3-core-promievent "1.2.2" + web3-core-subscriptions "1.2.2" + web3-utils "1.2.2" + +web3-core-method@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.7.4.tgz#3873c6405e1a0a8a1efc1d7b28de8b7550b00c15" + integrity sha512-56K7pq+8lZRkxJyzf5MHQPI9/VL3IJLoy4L/+q8HRdZJ3CkB1DkXYaXGU2PeylG1GosGiSzgIfu1ljqS7CP9xQ== + dependencies: + "@ethersproject/transactions" "^5.6.2" + web3-core-helpers "1.7.4" + web3-core-promievent "1.7.4" + web3-core-subscriptions "1.7.4" + web3-utils "1.7.4" + +web3-core-method@1.7.5: + version "1.7.5" + resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.7.5.tgz#ffe8883c169468f0e4d13509377f2d8876d9b7be" + integrity sha512-ApTvq1Llzlbxmy0n4L7QaE6NodIsR80VJqk8qN4kLg30SGznt/pNJFebryLI2kpyDmxSgj1TjEWzmHJBp6FhYg== + dependencies: + "@ethersproject/transactions" "^5.6.2" + web3-core-helpers "1.7.5" + web3-core-promievent "1.7.5" + web3-core-subscriptions "1.7.5" + web3-utils "1.7.5" + +web3-core-promievent@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.2.1.tgz#003e8a3eb82fb27b6164a6d5b9cad04acf733838" + integrity sha512-IVUqgpIKoeOYblwpex4Hye6npM0aMR+kU49VP06secPeN0rHMyhGF0ZGveWBrGvf8WDPI7jhqPBFIC6Jf3Q3zw== + dependencies: + any-promise "1.3.0" + eventemitter3 "3.1.2" + +web3-core-promievent@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.2.2.tgz#3b60e3f2a0c96db8a891c927899d29d39e66ab1c" + integrity sha512-tKvYeT8bkUfKABcQswK6/X79blKTKYGk949urZKcLvLDEaWrM3uuzDwdQT3BNKzQ3vIvTggFPX9BwYh0F1WwqQ== + dependencies: + any-promise "1.3.0" + eventemitter3 "3.1.2" + +web3-core-promievent@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.7.4.tgz#80a75633fdfe21fbaae2f1e38950edb2f134868c" + integrity sha512-o4uxwXKDldN7ER7VUvDfWsqTx9nQSP1aDssi1XYXeYC2xJbVo0n+z6ryKtmcoWoRdRj7uSpVzal3nEmlr480mA== + dependencies: + eventemitter3 "4.0.4" + +web3-core-promievent@1.7.5: + version "1.7.5" + resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.7.5.tgz#56a9b06a20e20a0a89d2ab7f88d44c8ae01d5b62" + integrity sha512-uZ1VRErVuhiLtHlyt3oEH/JSvAf6bWPndChHR9PG7i1Zfqm6ZVCeM91ICTPmiL8ddsGQOxASpnJk4vhApcTIww== + dependencies: + eventemitter3 "4.0.4" + +web3-core-requestmanager@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.2.1.tgz#fa2e2206c3d738db38db7c8fe9c107006f5c6e3d" + integrity sha512-xfknTC69RfYmLKC+83Jz73IC3/sS2ZLhGtX33D4Q5nQ8yc39ElyAolxr9sJQS8kihOcM6u4J+8gyGMqsLcpIBg== + dependencies: + underscore "1.9.1" + web3-core-helpers "1.2.1" + web3-providers-http "1.2.1" + web3-providers-ipc "1.2.1" + web3-providers-ws "1.2.1" + +web3-core-requestmanager@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.2.2.tgz#667ba9ac724c9c76fa8965ae8a3c61f66e68d8d6" + integrity sha512-a+gSbiBRHtHvkp78U2bsntMGYGF2eCb6219aMufuZWeAZGXJ63Wc2321PCbA8hF9cQrZI4EoZ4kVLRI4OF15Hw== + dependencies: + underscore "1.9.1" + web3-core-helpers "1.2.2" + web3-providers-http "1.2.2" + web3-providers-ipc "1.2.2" + web3-providers-ws "1.2.2" + +web3-core-requestmanager@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.7.4.tgz#2dc8a526dab8183dca3fef54658621801b1d0469" + integrity sha512-IuXdAm65BQtPL4aI6LZJJOrKAs0SM5IK2Cqo2/lMNvVMT9Kssq6qOk68Uf7EBDH0rPuINi+ReLP+uH+0g3AnPA== + dependencies: + util "^0.12.0" + web3-core-helpers "1.7.4" + web3-providers-http "1.7.4" + web3-providers-ipc "1.7.4" + web3-providers-ws "1.7.4" + +web3-core-requestmanager@1.7.5: + version "1.7.5" + resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.7.5.tgz#be18fc99642689aeb2e016fa43fb47bb9e8c94ce" + integrity sha512-3KpfxW/wVH4mgwWEsSJGHKrtRVoijWlDxtUrm17xgtqRNZ2mFolifKnHAUKa0fY48C9CrxmcCiMIi3W4G6WYRw== + dependencies: + util "^0.12.0" + web3-core-helpers "1.7.5" + web3-providers-http "1.7.5" + web3-providers-ipc "1.7.5" + web3-providers-ws "1.7.5" + +web3-core-subscriptions@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.2.1.tgz#8c2368a839d4eec1c01a4b5650bbeb82d0e4a099" + integrity sha512-nmOwe3NsB8V8UFsY1r+sW6KjdOS68h8nuh7NzlWxBQT/19QSUGiERRTaZXWu5BYvo1EoZRMxCKyCQpSSXLc08g== + dependencies: + eventemitter3 "3.1.2" + underscore "1.9.1" + web3-core-helpers "1.2.1" + +web3-core-subscriptions@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.2.2.tgz#bf4ba23a653a003bdc3551649958cc0b080b068e" + integrity sha512-QbTgigNuT4eicAWWr7ahVpJyM8GbICsR1Ys9mJqzBEwpqS+RXTRVSkwZ2IsxO+iqv6liMNwGregbJLq4urMFcQ== + dependencies: + eventemitter3 "3.1.2" + underscore "1.9.1" + web3-core-helpers "1.2.2" + +web3-core-subscriptions@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.7.4.tgz#cfbd3fa71081a8c8c6f1a64577a1a80c5bd9826f" + integrity sha512-VJvKWaXRyxk2nFWumOR94ut9xvjzMrRtS38c4qj8WBIRSsugrZr5lqUwgndtj0qx4F+50JhnU++QEqUEAtKm3g== + dependencies: + eventemitter3 "4.0.4" + web3-core-helpers "1.7.4" + +web3-core-subscriptions@1.7.5: + version "1.7.5" + resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.7.5.tgz#c0e25610768ea9d9f9107b4ac74b6b6573125e00" + integrity sha512-YK6utQ7Wwjbe4XZOIA8quWGBPi1lFDS1A+jQYwxKKrCvm6BloBNc3FhvrcSYlDhLe/kOy8+2Je8i9amndgT4ww== + dependencies: + eventemitter3 "4.0.4" + web3-core-helpers "1.7.5" + +web3-core@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.2.1.tgz#7278b58fb6495065e73a77efbbce781a7fddf1a9" + integrity sha512-5ODwIqgl8oIg/0+Ai4jsLxkKFWJYE0uLuE1yUKHNVCL4zL6n3rFjRMpKPokd6id6nJCNgeA64KdWQ4XfpnjdMg== + dependencies: + web3-core-helpers "1.2.1" + web3-core-method "1.2.1" + web3-core-requestmanager "1.2.1" + web3-utils "1.2.1" + +web3-core@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.2.2.tgz#334b99c8222ef9cfd0339e27352f0b58ea789a2f" + integrity sha512-miHAX3qUgxV+KYfaOY93Hlc3kLW2j5fH8FJy6kSxAv+d4d5aH0wwrU2IIoJylQdT+FeenQ38sgsCnFu9iZ1hCQ== + dependencies: + "@types/bn.js" "^4.11.4" + "@types/node" "^12.6.1" + web3-core-helpers "1.2.2" + web3-core-method "1.2.2" + web3-core-requestmanager "1.2.2" + web3-utils "1.2.2" + +web3-core@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.7.4.tgz#943fff99134baedafa7c65b4a0bbd424748429ff" + integrity sha512-L0DCPlIh9bgIED37tYbe7bsWrddoXYc897ANGvTJ6MFkSNGiMwDkTLWSgYd9Mf8qu8b4iuPqXZHMwIo4atoh7Q== + dependencies: + "@types/bn.js" "^5.1.0" + "@types/node" "^12.12.6" + bignumber.js "^9.0.0" + web3-core-helpers "1.7.4" + web3-core-method "1.7.4" + web3-core-requestmanager "1.7.4" + web3-utils "1.7.4" + +web3-core@1.7.5: + version "1.7.5" + resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.7.5.tgz#8ee2ca490230a30ca970cb9f308eb65b76405e1d" + integrity sha512-UgOWXZr1fR/3cUQJKWbfMwRxj1/N7o6RSd/dHqdXBlOD+62EjNZItFmLRg5veq5kp9YfXzrNw9bnDkXfsL+nKQ== + dependencies: + "@types/bn.js" "^5.1.0" + "@types/node" "^12.12.6" + bignumber.js "^9.0.0" + web3-core-helpers "1.7.5" + web3-core-method "1.7.5" + web3-core-requestmanager "1.7.5" + web3-utils "1.7.5" + +web3-eth-abi@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.1.tgz#9b915b1c9ebf82f70cca631147035d5419064689" + integrity sha512-jI/KhU2a/DQPZXHjo2GW0myEljzfiKOn+h1qxK1+Y9OQfTcBMxrQJyH5AP89O6l6NZ1QvNdq99ThAxBFoy5L+g== + dependencies: + ethers "4.0.0-beta.3" + underscore "1.9.1" + web3-utils "1.2.1" + +web3-eth-abi@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.2.tgz#d5616d88a90020f894763423a9769f2da11fe37a" + integrity sha512-Yn/ZMgoOLxhTVxIYtPJ0eS6pnAnkTAaJgUJh1JhZS4ekzgswMfEYXOwpMaD5eiqPJLpuxmZFnXnBZlnQ1JMXsw== + dependencies: + ethers "4.0.0-beta.3" + underscore "1.9.1" + web3-utils "1.2.2" + +web3-eth-abi@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.7.4.tgz#3fee967bafd67f06b99ceaddc47ab0970f2a614a" + integrity sha512-eMZr8zgTbqyL9MCTCAvb67RbVyN5ZX7DvA0jbLOqRWCiw+KlJKTGnymKO6jPE8n5yjk4w01e165Qb11hTDwHgg== + dependencies: + "@ethersproject/abi" "^5.6.3" + web3-utils "1.7.4" + +web3-eth-abi@1.7.5, web3-eth-abi@^1.2.1: + version "1.7.5" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.7.5.tgz#db9d6dbcc043a6e922252f3228686e9bbd50d7c9" + integrity sha512-qWHvF7sayxql9BD1yqK9sZRLBQ66eJzGeaU53Y1PRq2iFPrhY6NUWxQ3c3ps0rg+dyObvRbloviWpKXcS4RE/A== + dependencies: + "@ethersproject/abi" "^5.6.3" + web3-utils "1.7.5" + +web3-eth-accounts@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.2.1.tgz#2741a8ef337a7219d57959ac8bd118b9d68d63cf" + integrity sha512-26I4qq42STQ8IeKUyur3MdQ1NzrzCqPsmzqpux0j6X/XBD7EjZ+Cs0lhGNkSKH5dI3V8CJasnQ5T1mNKeWB7nQ== + dependencies: + any-promise "1.3.0" + crypto-browserify "3.12.0" + eth-lib "0.2.7" + scryptsy "2.1.0" + semver "6.2.0" + underscore "1.9.1" + uuid "3.3.2" + web3-core "1.2.1" + web3-core-helpers "1.2.1" + web3-core-method "1.2.1" + web3-utils "1.2.1" + +web3-eth-accounts@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.2.2.tgz#c187e14bff6baa698ac352220290222dbfd332e5" + integrity sha512-KzHOEyXOEZ13ZOkWN3skZKqSo5f4Z1ogPFNn9uZbKCz+kSp+gCAEKxyfbOsB/JMAp5h7o7pb6eYsPCUBJmFFiA== + dependencies: + any-promise "1.3.0" + crypto-browserify "3.12.0" + eth-lib "0.2.7" + ethereumjs-common "^1.3.2" + ethereumjs-tx "^2.1.1" + scrypt-shim "github:web3-js/scrypt-shim" + underscore "1.9.1" + uuid "3.3.2" + web3-core "1.2.2" + web3-core-helpers "1.2.2" + web3-core-method "1.2.2" + web3-utils "1.2.2" + +web3-eth-accounts@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.7.4.tgz#7a24a4dfe947f7e9d1bae678529e591aa146167a" + integrity sha512-Y9vYLRKP7VU7Cgq6wG1jFaG2k3/eIuiTKAG8RAuQnb6Cd9k5BRqTm5uPIiSo0AP/u11jDomZ8j7+WEgkU9+Btw== + dependencies: + "@ethereumjs/common" "^2.5.0" + "@ethereumjs/tx" "^3.3.2" + crypto-browserify "3.12.0" + eth-lib "0.2.8" + ethereumjs-util "^7.0.10" + scrypt-js "^3.0.1" + uuid "3.3.2" + web3-core "1.7.4" + web3-core-helpers "1.7.4" + web3-core-method "1.7.4" + web3-utils "1.7.4" + +web3-eth-accounts@1.7.5: + version "1.7.5" + resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.7.5.tgz#b37ee3aeebcc6bce3337636aeb272cbba0ece547" + integrity sha512-AzMLoTj3RGwKpyp3x3TtHrEeU4VpR99iMOD6NKrWSDumS6QEi0lCo+y7QZhdTlINw3iIA3SFIdvbAOO4NCHSDg== + dependencies: + "@ethereumjs/common" "^2.5.0" + "@ethereumjs/tx" "^3.3.2" + crypto-browserify "3.12.0" + eth-lib "0.2.8" + ethereumjs-util "^7.0.10" + scrypt-js "^3.0.1" + uuid "3.3.2" + web3-core "1.7.5" + web3-core-helpers "1.7.5" + web3-core-method "1.7.5" + web3-utils "1.7.5" + +web3-eth-contract@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.2.1.tgz#3542424f3d341386fd9ff65e78060b85ac0ea8c4" + integrity sha512-kYFESbQ3boC9bl2rYVghj7O8UKMiuKaiMkxvRH5cEDHil8V7MGEGZNH0slSdoyeftZVlaWSMqkRP/chfnKND0g== + dependencies: + underscore "1.9.1" + web3-core "1.2.1" + web3-core-helpers "1.2.1" + web3-core-method "1.2.1" + web3-core-promievent "1.2.1" + web3-core-subscriptions "1.2.1" + web3-eth-abi "1.2.1" + web3-utils "1.2.1" + +web3-eth-contract@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.2.2.tgz#84e92714918a29e1028ee7718f0712536e14e9a1" + integrity sha512-EKT2yVFws3FEdotDQoNsXTYL798+ogJqR2//CaGwx3p0/RvQIgfzEwp8nbgA6dMxCsn9KOQi7OtklzpnJMkjtA== + dependencies: + "@types/bn.js" "^4.11.4" + underscore "1.9.1" + web3-core "1.2.2" + web3-core-helpers "1.2.2" + web3-core-method "1.2.2" + web3-core-promievent "1.2.2" + web3-core-subscriptions "1.2.2" + web3-eth-abi "1.2.2" + web3-utils "1.2.2" + +web3-eth-contract@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.7.4.tgz#e5761cfb43d453f57be4777b2e5e7e1082078ff7" + integrity sha512-ZgSZMDVI1pE9uMQpK0T0HDT2oewHcfTCv0osEqf5qyn5KrcQDg1GT96/+S0dfqZ4HKj4lzS5O0rFyQiLPQ8LzQ== + dependencies: + "@types/bn.js" "^5.1.0" + web3-core "1.7.4" + web3-core-helpers "1.7.4" + web3-core-method "1.7.4" + web3-core-promievent "1.7.4" + web3-core-subscriptions "1.7.4" + web3-eth-abi "1.7.4" + web3-utils "1.7.4" + +web3-eth-contract@1.7.5: + version "1.7.5" + resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.7.5.tgz#a032419579bcec062513a3d089ad0e89ac63d731" + integrity sha512-qab7NPJRKRlTs58ozsqK8YIEwWpxIm3vD/okSIKBGkFx5gIHWW+vGmMh5PDSfefLJM9rCd+T+Lc0LYvtME7uqg== + dependencies: + "@types/bn.js" "^5.1.0" + web3-core "1.7.5" + web3-core-helpers "1.7.5" + web3-core-method "1.7.5" + web3-core-promievent "1.7.5" + web3-core-subscriptions "1.7.5" + web3-eth-abi "1.7.5" + web3-utils "1.7.5" + +web3-eth-ens@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.2.1.tgz#a0e52eee68c42a8b9865ceb04e5fb022c2d971d5" + integrity sha512-lhP1kFhqZr2nnbu3CGIFFrAnNxk2veXpOXBY48Tub37RtobDyHijHgrj+xTh+mFiPokyrapVjpFsbGa+Xzye4Q== + dependencies: + eth-ens-namehash "2.0.8" + underscore "1.9.1" + web3-core "1.2.1" + web3-core-helpers "1.2.1" + web3-core-promievent "1.2.1" + web3-eth-abi "1.2.1" + web3-eth-contract "1.2.1" + web3-utils "1.2.1" + +web3-eth-ens@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.2.2.tgz#0a4abed1d4cbdacbf5e1ab06e502d806d1192bc6" + integrity sha512-CFjkr2HnuyMoMFBoNUWojyguD4Ef+NkyovcnUc/iAb9GP4LHohKrODG4pl76R5u61TkJGobC2ij6TyibtsyVYg== + dependencies: + eth-ens-namehash "2.0.8" + underscore "1.9.1" + web3-core "1.2.2" + web3-core-helpers "1.2.2" + web3-core-promievent "1.2.2" + web3-eth-abi "1.2.2" + web3-eth-contract "1.2.2" + web3-utils "1.2.2" + +web3-eth-ens@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.7.4.tgz#346720305379c0a539e226141a9602f1da7bc0c8" + integrity sha512-Gw5CVU1+bFXP5RVXTCqJOmHn71X2ghNk9VcEH+9PchLr0PrKbHTA3hySpsPco1WJAyK4t8SNQVlNr3+bJ6/WZA== + dependencies: + content-hash "^2.5.2" + eth-ens-namehash "2.0.8" + web3-core "1.7.4" + web3-core-helpers "1.7.4" + web3-core-promievent "1.7.4" + web3-eth-abi "1.7.4" + web3-eth-contract "1.7.4" + web3-utils "1.7.4" + +web3-eth-ens@1.7.5: + version "1.7.5" + resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.7.5.tgz#fa0e287f5e6fae20531117b7467e21b482d58cab" + integrity sha512-k1Q0msdRv/wac2egpZBIwG3n/sa/KdrVmVJvFm471gLTL4xfUizV5qJjkDVf+ikf9JyDvWJTs5eWNUUbOFIw/A== + dependencies: + content-hash "^2.5.2" + eth-ens-namehash "2.0.8" + web3-core "1.7.5" + web3-core-helpers "1.7.5" + web3-core-promievent "1.7.5" + web3-eth-abi "1.7.5" + web3-eth-contract "1.7.5" + web3-utils "1.7.5" + +web3-eth-iban@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.2.1.tgz#2c3801718946bea24e9296993a975c80b5acf880" + integrity sha512-9gkr4QPl1jCU+wkgmZ8EwODVO3ovVj6d6JKMos52ggdT2YCmlfvFVF6wlGLwi0VvNa/p+0BjJzaqxnnG/JewjQ== + dependencies: + bn.js "4.11.8" + web3-utils "1.2.1" + +web3-eth-iban@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.2.2.tgz#76bec73bad214df7c4192388979a59fc98b96c5a" + integrity sha512-gxKXBoUhaTFHr0vJB/5sd4i8ejF/7gIsbM/VvemHT3tF5smnmY6hcwSMmn7sl5Gs+83XVb/BngnnGkf+I/rsrQ== + dependencies: + bn.js "4.11.8" + web3-utils "1.2.2" + +web3-eth-iban@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.7.4.tgz#711fb2547fdf0f988060027331b2b6c430505753" + integrity sha512-XyrsgWlZQMv5gRcjXMsNvAoCRvV5wN7YCfFV5+tHUCqN8g9T/o4XUS20vDWD0k4HNiAcWGFqT1nrls02MGZ08w== + dependencies: + bn.js "^5.2.1" + web3-utils "1.7.4" + +web3-eth-iban@1.7.5: + version "1.7.5" + resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.7.5.tgz#1a50efa42cabf1b731396d38bef6a8bf92b5ee1f" + integrity sha512-mn2W5t/1IpL8OZvzAabLKT4kvwRnZSJ9K0tctndl9sDNWkfITYQibEEhUaNNA50Q5fJKgVudHI/m0gwIVTyG8Q== + dependencies: + bn.js "^5.2.1" + web3-utils "1.7.5" + +web3-eth-personal@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.2.1.tgz#244e9911b7b482dc17c02f23a061a627c6e47faf" + integrity sha512-RNDVSiaSoY4aIp8+Hc7z+X72H7lMb3fmAChuSBADoEc7DsJrY/d0R5qQDK9g9t2BO8oxgLrLNyBP/9ub2Hc6Bg== + dependencies: + web3-core "1.2.1" + web3-core-helpers "1.2.1" + web3-core-method "1.2.1" + web3-net "1.2.1" + web3-utils "1.2.1" + +web3-eth-personal@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.2.2.tgz#eee1c86a8132fa16b5e34c6d421ca92e684f0be6" + integrity sha512-4w+GLvTlFqW3+q4xDUXvCEMU7kRZ+xm/iJC8gm1Li1nXxwwFbs+Y+KBK6ZYtoN1qqAnHR+plYpIoVo27ixI5Rg== + dependencies: + "@types/node" "^12.6.1" + web3-core "1.2.2" + web3-core-helpers "1.2.2" + web3-core-method "1.2.2" + web3-net "1.2.2" + web3-utils "1.2.2" + +web3-eth-personal@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.7.4.tgz#22c399794cb828a75703df8bb4b3c1331b471546" + integrity sha512-O10C1Hln5wvLQsDhlhmV58RhXo+GPZ5+W76frSsyIrkJWLtYQTCr5WxHtRC9sMD1idXLqODKKgI2DL+7xeZ0/g== + dependencies: + "@types/node" "^12.12.6" + web3-core "1.7.4" + web3-core-helpers "1.7.4" + web3-core-method "1.7.4" + web3-net "1.7.4" + web3-utils "1.7.4" + +web3-eth-personal@1.7.5: + version "1.7.5" + resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.7.5.tgz#615a3ddcf97aeea93e2a4569753c033fd7a495c5" + integrity sha512-txh2P/eN8I4AOUKFi9++KKddoD0tWfCuu9Y1Kc41jSRbk6smO88Fum0KWNmYFYhSCX2qiknS1DfqsONl3igoKQ== + dependencies: + "@types/node" "^12.12.6" + web3-core "1.7.5" + web3-core-helpers "1.7.5" + web3-core-method "1.7.5" + web3-net "1.7.5" + web3-utils "1.7.5" + +web3-eth@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.2.1.tgz#b9989e2557c73a9e8ffdc107c6dafbe72c79c1b0" + integrity sha512-/2xly4Yry5FW1i+uygPjhfvgUP/MS/Dk+PDqmzp5M88tS86A+j8BzKc23GrlA8sgGs0645cpZK/999LpEF5UdA== + dependencies: + underscore "1.9.1" + web3-core "1.2.1" + web3-core-helpers "1.2.1" + web3-core-method "1.2.1" + web3-core-subscriptions "1.2.1" + web3-eth-abi "1.2.1" + web3-eth-accounts "1.2.1" + web3-eth-contract "1.2.1" + web3-eth-ens "1.2.1" + web3-eth-iban "1.2.1" + web3-eth-personal "1.2.1" + web3-net "1.2.1" + web3-utils "1.2.1" + +web3-eth@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.2.2.tgz#65a1564634a23b990efd1655bf94ad513904286c" + integrity sha512-UXpC74mBQvZzd4b+baD4Ocp7g+BlwxhBHumy9seyE/LMIcMlePXwCKzxve9yReNpjaU16Mmyya6ZYlyiKKV8UA== + dependencies: + underscore "1.9.1" + web3-core "1.2.2" + web3-core-helpers "1.2.2" + web3-core-method "1.2.2" + web3-core-subscriptions "1.2.2" + web3-eth-abi "1.2.2" + web3-eth-accounts "1.2.2" + web3-eth-contract "1.2.2" + web3-eth-ens "1.2.2" + web3-eth-iban "1.2.2" + web3-eth-personal "1.2.2" + web3-net "1.2.2" + web3-utils "1.2.2" + +web3-eth@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.7.4.tgz#a7c1d3ccdbba4de4a82df7e3c4db716e4a944bf2" + integrity sha512-JG0tTMv0Ijj039emXNHi07jLb0OiWSA9O24MRSk5vToTQyDNXihdF2oyq85LfHuF690lXZaAXrjhtLNlYqb7Ug== + dependencies: + web3-core "1.7.4" + web3-core-helpers "1.7.4" + web3-core-method "1.7.4" + web3-core-subscriptions "1.7.4" + web3-eth-abi "1.7.4" + web3-eth-accounts "1.7.4" + web3-eth-contract "1.7.4" + web3-eth-ens "1.7.4" + web3-eth-iban "1.7.4" + web3-eth-personal "1.7.4" + web3-net "1.7.4" + web3-utils "1.7.4" + +web3-eth@1.7.5: + version "1.7.5" + resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.7.5.tgz#36906f50a6c35570cbc08871a33caa83dc131c9c" + integrity sha512-BucjvqZyDWYkGlsFX+OnOBub0YutlC1KZiNGibdmvtNX0NQK+8iw1uzAoL9yTTwCSszL7lnkFe8N+HCOl9B4Dw== + dependencies: + web3-core "1.7.5" + web3-core-helpers "1.7.5" + web3-core-method "1.7.5" + web3-core-subscriptions "1.7.5" + web3-eth-abi "1.7.5" + web3-eth-accounts "1.7.5" + web3-eth-contract "1.7.5" + web3-eth-ens "1.7.5" + web3-eth-iban "1.7.5" + web3-eth-personal "1.7.5" + web3-net "1.7.5" + web3-utils "1.7.5" + +web3-net@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.2.1.tgz#edd249503315dd5ab4fa00220f6509d95bb7ab10" + integrity sha512-Yt1Bs7WgnLESPe0rri/ZoPWzSy55ovioaP35w1KZydrNtQ5Yq4WcrAdhBzcOW7vAkIwrsLQsvA+hrOCy7mNauw== + dependencies: + web3-core "1.2.1" + web3-core-method "1.2.1" + web3-utils "1.2.1" + +web3-net@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.2.2.tgz#5c3226ca72df7c591422440ce6f1203fd42ddad9" + integrity sha512-K07j2DXq0x4UOJgae65rWZKraOznhk8v5EGSTdFqASTx7vWE/m+NqBijBYGEsQY1lSMlVaAY9UEQlcXK5HzXTw== + dependencies: + web3-core "1.2.2" + web3-core-method "1.2.2" + web3-utils "1.2.2" + +web3-net@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.7.4.tgz#3153dfd3423262dd6fbec7aae5467202c4cad431" + integrity sha512-d2Gj+DIARHvwIdmxFQ4PwAAXZVxYCR2lET0cxz4KXbE5Og3DNjJi+MoPkX+WqoUXqimu/EOd4Cd+7gefqVAFDg== + dependencies: + web3-core "1.7.4" + web3-core-method "1.7.4" + web3-utils "1.7.4" + +web3-net@1.7.5: + version "1.7.5" + resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.7.5.tgz#87fbc00a9ca40515bf60c847c0092498887cfdc8" + integrity sha512-xwuCb2YWw49PmW81AJQ/G+Xi2ikRsYyZXSgyPt4LmZuKjiqg/6kSdK8lZvUi3Pi3wM+QDBXbpr73M/WEkW0KvA== + dependencies: + web3-core "1.7.5" + web3-core-method "1.7.5" + web3-utils "1.7.5" + +web3-providers-http@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.2.1.tgz#c93ea003a42e7b894556f7e19dd3540f947f5013" + integrity sha512-BDtVUVolT9b3CAzeGVA/np1hhn7RPUZ6YYGB/sYky+GjeO311Yoq8SRDUSezU92x8yImSC2B+SMReGhd1zL+bQ== + dependencies: + web3-core-helpers "1.2.1" + xhr2-cookies "1.1.0" + +web3-providers-http@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.2.2.tgz#155e55c1d69f4c5cc0b411ede40dea3d06720956" + integrity sha512-BNZ7Hguy3eBszsarH5gqr9SIZNvqk9eKwqwmGH1LQS1FL3NdoOn7tgPPdddrXec4fL94CwgNk4rCU+OjjZRNDg== + dependencies: + web3-core-helpers "1.2.2" + xhr2-cookies "1.1.0" + +web3-providers-http@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.7.4.tgz#8209cdcb115db5ccae1f550d1c4e3005e7538d02" + integrity sha512-AU+/S+49rcogUER99TlhW+UBMk0N2DxvN54CJ2pK7alc2TQ7+cprNPLHJu4KREe8ndV0fT6JtWUfOMyTvl+FRA== + dependencies: + web3-core-helpers "1.7.4" + xhr2-cookies "1.1.0" + +web3-providers-http@1.7.5: + version "1.7.5" + resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.7.5.tgz#144bb0c29007d1b766bafb0e20f80be050c7aa80" + integrity sha512-vPgr4Kzy0M3CHtoP/Bh7qwK/D9h2fhjpoqctdMWVJseOfeTgfOphCKN0uwV8w2VpZgDPXA8aeTdBx5OjmDdStA== + dependencies: + abortcontroller-polyfill "^1.7.3" + cross-fetch "^3.1.4" + es6-promise "^4.2.8" + web3-core-helpers "1.7.5" + +web3-providers-ipc@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.2.1.tgz#017bfc687a8fc5398df2241eb98f135e3edd672c" + integrity sha512-oPEuOCwxVx8L4CPD0TUdnlOUZwGBSRKScCz/Ws2YHdr9Ium+whm+0NLmOZjkjQp5wovQbyBzNa6zJz1noFRvFA== + dependencies: + oboe "2.1.4" + underscore "1.9.1" + web3-core-helpers "1.2.1" + +web3-providers-ipc@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.2.2.tgz#c6d165a12bc68674b4cdd543ea18aec79cafc2e8" + integrity sha512-t97w3zi5Kn/LEWGA6D9qxoO0LBOG+lK2FjlEdCwDQatffB/+vYrzZ/CLYVQSoyFZAlsDoBasVoYSWZK1n39aHA== + dependencies: + oboe "2.1.4" + underscore "1.9.1" + web3-core-helpers "1.2.2" + +web3-providers-ipc@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.7.4.tgz#02e85e99e48f432c9d34cee7d786c3685ec9fcfa" + integrity sha512-jhArOZ235dZy8fS8090t60nTxbd1ap92ibQw5xIrAQ9m7LcZKNfmLAQUVsD+3dTFvadRMi6z1vCO7zRi84gWHw== + dependencies: + oboe "2.1.5" + web3-core-helpers "1.7.4" + +web3-providers-ipc@1.7.5: + version "1.7.5" + resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.7.5.tgz#5b0f9b4f7340416953b8816d2e42e3f548d47372" + integrity sha512-aNHx+RAROzO+apDEzy8Zncj78iqWBadIXtpmFDg7uiTn8i+oO+IcP1Yni7jyzkltsysVJHgHWG4kPx50ANCK3Q== + dependencies: + oboe "2.1.5" + web3-core-helpers "1.7.5" + +web3-providers-ws@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.2.1.tgz#2d941eaf3d5a8caa3214eff8dc16d96252b842cb" + integrity sha512-oqsQXzu+ejJACVHy864WwIyw+oB21nw/pI65/sD95Zi98+/HQzFfNcIFneF1NC4bVF3VNX4YHTNq2I2o97LAiA== + dependencies: + underscore "1.9.1" + web3-core-helpers "1.2.1" + websocket "github:web3-js/WebSocket-Node#polyfill/globalThis" + +web3-providers-ws@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.2.2.tgz#d2c05c68598cea5ad3fa6ef076c3bcb3ca300d29" + integrity sha512-Wb1mrWTGMTXOpJkL0yGvL/WYLt8fUIXx8k/l52QB2IiKzvyd42dTWn4+j8IKXGSYYzOm7NMqv6nhA5VDk12VfA== + dependencies: + underscore "1.9.1" + web3-core-helpers "1.2.2" + websocket "github:web3-js/WebSocket-Node#polyfill/globalThis" + +web3-providers-ws@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.7.4.tgz#6e60bcefb456f569a3e766e386d7807a96f90595" + integrity sha512-g72X77nrcHMFU8hRzQJzfgi/072n8dHwRCoTw+WQrGp+XCQ71fsk2qIu3Tp+nlp5BPn8bRudQbPblVm2uT4myQ== + dependencies: + eventemitter3 "4.0.4" + web3-core-helpers "1.7.4" + websocket "^1.0.32" + +web3-providers-ws@1.7.5: + version "1.7.5" + resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.7.5.tgz#196b9e56a4a48f9bee54def56875ea53dec7c711" + integrity sha512-9uJNVVkIGC8PmM9kNbgPth56HDMSSsxZh3ZEENdwO3LNWemaADiQYUDCsD/dMVkn0xsGLHP5dgAy4Q5msqySLg== + dependencies: + eventemitter3 "4.0.4" + web3-core-helpers "1.7.5" + websocket "^1.0.32" + +web3-shh@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.2.1.tgz#4460e3c1e07faf73ddec24ccd00da46f89152b0c" + integrity sha512-/3Cl04nza5kuFn25bV3FJWa0s3Vafr5BlT933h26xovQ6HIIz61LmvNQlvX1AhFL+SNJOTcQmK1SM59vcyC8bA== + dependencies: + web3-core "1.2.1" + web3-core-method "1.2.1" + web3-core-subscriptions "1.2.1" + web3-net "1.2.1" + +web3-shh@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.2.2.tgz#44ed998f2a6ba0ec5cb9d455184a0f647826a49c" + integrity sha512-og258NPhlBn8yYrDWjoWBBb6zo1OlBgoWGT+LL5/LPqRbjPe09hlOYHgscAAr9zZGtohTOty7RrxYw6Z6oDWCg== + dependencies: + web3-core "1.2.2" + web3-core-method "1.2.2" + web3-core-subscriptions "1.2.2" + web3-net "1.2.2" + +web3-shh@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.7.4.tgz#bee91cce2737c529fd347274010b548b6ea060f1" + integrity sha512-mlSZxSYcMkuMCxqhTYnZkUdahZ11h+bBv/8TlkXp/IHpEe4/Gg+KAbmfudakq3EzG/04z70XQmPgWcUPrsEJ+A== + dependencies: + web3-core "1.7.4" + web3-core-method "1.7.4" + web3-core-subscriptions "1.7.4" + web3-net "1.7.4" + +web3-shh@1.7.5: + version "1.7.5" + resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.7.5.tgz#742e27f5c44bea6d7adef3a49b085e0fcd6aa621" + integrity sha512-aCIWJyLMH5H76OybU4ZpUCJ93yNOPATGhJ+KboRPU8QZDzS2CcVhtEzyl27bbvw+rSnVroMLqBgTXBB4mmKI7A== + dependencies: + web3-core "1.7.5" + web3-core-method "1.7.5" + web3-core-subscriptions "1.7.5" + web3-net "1.7.5" + +web3-utils@1.2.1, web3-utils@1.2.2, web3-utils@1.7.3, web3-utils@1.7.4, web3-utils@1.7.5, web3-utils@^1.2.1: + version "1.7.3" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.7.3.tgz#b214d05f124530d8694ad364509ac454d05f207c" + integrity sha512-g6nQgvb/bUpVUIxJE+ezVN+rYwYmlFyMvMIRSuqpi1dk6ApDD00YNArrk7sPcZnjvxOJ76813Xs2vIN2rgh4lg== + dependencies: + bn.js "^4.11.9" + ethereum-bloom-filters "^1.0.6" + ethereumjs-util "^7.1.0" + ethjs-unit "0.1.6" + number-to-bn "1.7.0" + randombytes "^2.1.0" + utf8 "3.0.0" + +web3@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3/-/web3-1.2.1.tgz#5d8158bcca47838ab8c2b784a2dee4c3ceb4179b" + integrity sha512-nNMzeCK0agb5i/oTWNdQ1aGtwYfXzHottFP2Dz0oGIzavPMGSKyVlr8ibVb1yK5sJBjrWVnTdGaOC2zKDFuFRw== + dependencies: + web3-bzz "1.2.1" + web3-core "1.2.1" + web3-eth "1.2.1" + web3-eth-personal "1.2.1" + web3-net "1.2.1" + web3-shh "1.2.1" + web3-utils "1.2.1" + +web3@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/web3/-/web3-1.2.2.tgz#b1b8b69aafdf94cbaeadbb68a8aa1df2ef266aec" + integrity sha512-/ChbmB6qZpfGx6eNpczt5YSUBHEA5V2+iUCbn85EVb3Zv6FVxrOo5Tv7Lw0gE2tW7EEjASbCyp3mZeiZaCCngg== + dependencies: + "@types/node" "^12.6.1" + web3-bzz "1.2.2" + web3-core "1.2.2" + web3-eth "1.2.2" + web3-eth-personal "1.2.2" + web3-net "1.2.2" + web3-shh "1.2.2" + web3-utils "1.2.2" + +web3@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3/-/web3-1.7.4.tgz#00c9aef8e13ade92fd773d845fff250535828e93" + integrity sha512-iFGK5jO32vnXM/ASaJBaI0+gVR6uHozvYdxkdhaeOCD6HIQ4iIXadbO2atVpE9oc/H8l2MovJ4LtPhG7lIBN8A== + dependencies: + web3-bzz "1.7.4" + web3-core "1.7.4" + web3-eth "1.7.4" + web3-eth-personal "1.7.4" + web3-net "1.7.4" + web3-shh "1.7.4" + web3-utils "1.7.4" + +web3@^1.2.4, web3@^1.7.3: + version "1.7.5" + resolved "https://registry.yarnpkg.com/web3/-/web3-1.7.5.tgz#4e185d2058195b5775109b3f27cdea65a34a036e" + integrity sha512-3jHZTWyXt975AOXgnZKayiSWDLpoSKk9fZtLk1hURQtt7AdSbXPT8AK9ooBCm0Dt3GYaOeNcHGaiHC3gtyqhLg== + dependencies: + web3-bzz "1.7.5" + web3-core "1.7.5" + web3-eth "1.7.5" + web3-eth-personal "1.7.5" + web3-net "1.7.5" + web3-shh "1.7.5" + web3-utils "1.7.5" + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +webidl-conversions@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" + integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== + +webidl-conversions@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" + integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== + +websocket-driver@>=0.5.1: + version "0.7.4" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== + dependencies: + http-parser-js ">=0.5.1" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.4" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" + integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== + +websocket@^1.0.28, websocket@^1.0.32: + version "1.0.34" + resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.34.tgz#2bdc2602c08bf2c82253b730655c0ef7dcab3111" + integrity sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ== + dependencies: + bufferutil "^4.0.1" + debug "^2.2.0" + es5-ext "^0.10.50" + typedarray-to-buffer "^3.1.5" + utf-8-validate "^5.0.2" + yaeti "^0.0.6" + +"websocket@github:web3-js/WebSocket-Node#polyfill/globalThis": + version "1.0.29" + resolved "https://codeload.github.com/web3-js/WebSocket-Node/tar.gz/ef5ea2f41daf4a2113b80c9223df884b4d56c400" + dependencies: + debug "^2.2.0" + es5-ext "^0.10.50" + nan "^2.14.0" + typedarray-to-buffer "^3.1.5" + yaeti "^0.0.6" + +whatwg-encoding@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" + integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== + dependencies: + iconv-lite "0.4.24" + +whatwg-fetch@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f" + integrity sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng== + +whatwg-mimetype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" + integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== + +whatwg-mimetype@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7" + integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q== + +whatwg-url-without-unicode@8.0.0-3: + version "8.0.0-3" + resolved "https://registry.yarnpkg.com/whatwg-url-without-unicode/-/whatwg-url-without-unicode-8.0.0-3.tgz#ab6df4bf6caaa6c85a59f6e82c026151d4bb376b" + integrity sha512-HoKuzZrUlgpz35YO27XgD28uh/WJH4B0+3ttFqRo//lmq+9T/mIOJ6kqmINI9HpUpz1imRC/nR/lxKpJiv0uig== + dependencies: + buffer "^5.4.3" + punycode "^2.1.1" + webidl-conversions "^5.0.0" + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +whatwg-url@^8.0.0, whatwg-url@^8.5.0: + version "8.7.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" + integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== + dependencies: + lodash "^4.7.0" + tr46 "^2.1.0" + webidl-conversions "^6.1.0" + +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q== + +which-typed-array@^1.1.2: + version "1.1.8" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.8.tgz#0cfd53401a6f334d90ed1125754a42ed663eb01f" + integrity sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + es-abstract "^1.20.0" + for-each "^0.3.3" + has-tostringtag "^1.0.0" + is-typed-array "^1.1.9" + +which@2.0.2, which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +which@^1.2.9: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +winston-daily-rotate-file@^4.5.5: + version "4.7.1" + resolved "https://registry.yarnpkg.com/winston-daily-rotate-file/-/winston-daily-rotate-file-4.7.1.tgz#f60a643af87f8867f23170d8cd87dbe3603a625f" + integrity sha512-7LGPiYGBPNyGHLn9z33i96zx/bd71pjBn9tqQzO3I4Tayv94WPmBNwKC7CO1wPHdP9uvu+Md/1nr6VSH9h0iaA== + dependencies: + file-stream-rotator "^0.6.1" + object-hash "^2.0.1" + triple-beam "^1.3.0" + winston-transport "^4.4.0" + +winston-transport@^4.4.0, winston-transport@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.5.0.tgz#6e7b0dd04d393171ed5e4e4905db265f7ab384fa" + integrity sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q== + dependencies: + logform "^2.3.2" + readable-stream "^3.6.0" + triple-beam "^1.3.0" + +winston@^3.3.3: + version "3.8.1" + resolved "https://registry.yarnpkg.com/winston/-/winston-3.8.1.tgz#76f15b3478cde170b780234e0c4cf805c5a7fb57" + integrity sha512-r+6YAiCR4uI3N8eQNOg8k3P3PqwAm20cLKlzVD9E66Ch39+LZC+VH1UKf9JemQj2B3QoUHfKD7Poewn0Pr3Y1w== + dependencies: + "@dabh/diagnostics" "^2.0.2" + async "^3.2.3" + is-stream "^2.0.0" + logform "^2.4.0" + one-time "^1.0.0" + readable-stream "^3.4.0" + safe-stable-stringify "^2.3.1" + stack-trace "0.0.x" + triple-beam "^1.3.0" + winston-transport "^4.5.0" + +word-wrap@^1.2.3, word-wrap@~1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +workerpool@6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.0.tgz#827d93c9ba23ee2019c3ffaff5c27fccea289e8b" + integrity sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A== + +workerpool@6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" + integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw== + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +write-file-atomic@^2.0.0: + version "2.4.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" + integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + +write-file-atomic@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" + integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== + dependencies: + imurmurhash "^0.1.4" + is-typedarray "^1.0.0" + signal-exit "^3.0.2" + typedarray-to-buffer "^3.1.5" + +write-stream@~0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/write-stream/-/write-stream-0.4.3.tgz#83cc8c0347d0af6057a93862b4e3ae01de5c81c1" + integrity sha512-IJrvkhbAnj89W/GAVdVgbnPiVw5Ntg/B4tc/MUCIEwj/g6JIww1DWJyB/yBMT3yw2/TkT6IUZ0+IYef3flEw8A== + dependencies: + readable-stream "~0.0.2" + +ws@7.4.6: + version "7.4.6" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" + integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== + +ws@^3.0.0: + version "3.3.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" + integrity sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA== + dependencies: + async-limiter "~1.0.0" + safe-buffer "~5.1.0" + ultron "~1.1.0" + +ws@^7, ws@^7.2.0, ws@^7.4.5, ws@^7.4.6: + version "7.5.9" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" + integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== + +ws@^8.5.0: + version "8.8.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.8.1.tgz#5dbad0feb7ade8ecc99b830c1d77c913d4955ff0" + integrity sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA== + +xdg-basedir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" + integrity sha512-1Dly4xqlulvPD3fZUQJLY+FUIeqN3N2MM3uqe4rCJftAvOjFa3jFGfctOgluGx4ahPbUCsZkmJILiP0Vi4T6lQ== + +xhr-request-promise@^0.1.2: + version "0.1.3" + resolved "https://registry.yarnpkg.com/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz#2d5f4b16d8c6c893be97f1a62b0ed4cf3ca5f96c" + integrity sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg== + dependencies: + xhr-request "^1.1.0" + +xhr-request@^1.0.1, xhr-request@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/xhr-request/-/xhr-request-1.1.0.tgz#f4a7c1868b9f198723444d82dcae317643f2e2ed" + integrity sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA== + dependencies: + buffer-to-arraybuffer "^0.0.5" + object-assign "^4.1.1" + query-string "^5.0.1" + simple-get "^2.7.0" + timed-out "^4.0.1" + url-set-query "^1.0.0" + xhr "^2.0.4" + +xhr2-cookies@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz#7d77449d0999197f155cb73b23df72505ed89d48" + integrity sha512-hjXUA6q+jl/bd8ADHcVfFsSPIf+tyLIjuO9TwJC9WI6JP2zKcS7C+p56I9kCLLsaCiNT035iYvEUUzdEFj/8+g== + dependencies: + cookiejar "^2.1.1" + +xhr@^2.0.4, xhr@^2.3.3: + version "2.6.0" + resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.6.0.tgz#b69d4395e792b4173d6b7df077f0fc5e4e2b249d" + integrity sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA== + dependencies: + global "~4.4.0" + is-function "^1.0.1" + parse-headers "^2.0.0" + xtend "^4.0.0" + +xml-name-validator@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" + integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== + +xml2js@0.4.19: + version "0.4.19" + resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7" + integrity sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q== + dependencies: + sax ">=0.6.0" + xmlbuilder "~9.0.1" + +xml2js@^0.4.19, xml2js@^0.4.9: + version "0.4.23" + resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66" + integrity sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug== + dependencies: + sax ">=0.6.0" + xmlbuilder "~11.0.0" + +xmlbuilder@~11.0.0: + version "11.0.1" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" + integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== + +xmlbuilder@~9.0.1: + version "9.0.7" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" + integrity sha512-7YXTQc3P2l9+0rjaUbLwMKRhtmwg1M1eDf6nag7urC7pIPYLD9W/jmzQ4ptRSUbodw5S0jfoGTflLemQibSpeQ== + +xmlchars@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== + +xmlhttprequest@1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc" + integrity sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA== + +xss@^1.0.8: + version "1.0.14" + resolved "https://registry.yarnpkg.com/xss/-/xss-1.0.14.tgz#4f3efbde75ad0d82e9921cc3c95e6590dd336694" + integrity sha512-og7TEJhXvn1a7kzZGQ7ETjdQVS2UfZyTlsEdDOqvQF7GoxNfY+0YLCzBy1kPdsDDx4QuNAonQPddpsn6Xl/7sw== + dependencies: + commander "^2.20.3" + cssfilter "0.0.10" + +xstream@^11.14.0: + version "11.14.0" + resolved "https://registry.yarnpkg.com/xstream/-/xstream-11.14.0.tgz#2c071d26b18310523b6877e86b4e54df068a9ae5" + integrity sha512-1bLb+kKKtKPbgTK6i/BaoAn03g47PpFstlbe1BA+y3pNS/LfvcaghS5BFf9+EE1J+KwSQsEpfJvFN5GqFtiNmw== + dependencies: + globalthis "^1.0.1" + symbol-observable "^2.0.3" + +xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.0, xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +"y18n@^3.2.1 || ^4.0.0": + version "4.0.3" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yaeti@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577" + integrity sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug== + +yallist@^3.0.0, yallist@^3.0.2, yallist@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yargs-parser@20.2.4: + version "20.2.4" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" + integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== + +yargs-parser@20.x, yargs-parser@^20.2.2: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs-parser@^11.1.1: + version "11.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" + integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^21.0.0: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs-unparser@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" + integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== + dependencies: + camelcase "^6.0.0" + decamelize "^4.0.0" + flat "^5.0.2" + is-plain-obj "^2.1.0" + +yargs@16.2.0, yargs@^16.1.0, yargs@^16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yargs@^12.0.2: + version "12.0.5" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" + integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== + dependencies: + cliui "^4.0.0" + decamelize "^1.2.0" + find-up "^3.0.0" + get-caller-file "^1.0.1" + os-locale "^3.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1 || ^4.0.0" + yargs-parser "^11.1.1" + +yargs@^17.0.1: + version "17.5.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.5.1.tgz#e109900cab6fcb7fd44b1d8249166feb0b36e58e" + integrity sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.0.0" + +yarn@^1.22.17: + version "1.22.19" + resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.22.19.tgz#4ba7fc5c6e704fce2066ecbfb0b0d8976fe62447" + integrity sha512-/0V5q0WbslqnwP91tirOvldvYISzaqhClxzyUKXYxs07yUILIs5jx/k6CFe8bvKSkds5w+eiOqta39Wk3WxdcQ== + +yauzl@^2.4.2: + version "2.10.0" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" + integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== + dependencies: + buffer-crc32 "~0.2.3" + fd-slicer "~1.1.0" + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==