From 80ded9605410c835983b64290c7f9f00960d8264 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Livora?= Date: Fri, 10 Jul 2026 10:49:23 +0200 Subject: [PATCH 1/5] feat: add Pharos mainnet and testnet --- assets/chains.json | 24 + registry/manual.json | 19 + src/generated/named.rs | 1271 ++++++++++++++++++++-------------------- 3 files changed, 688 insertions(+), 626 deletions(-) diff --git a/assets/chains.json b/assets/chains.json index 55bf946..afaabfa 100644 --- a/assets/chains.json +++ b/assets/chains.json @@ -948,6 +948,18 @@ "etherscanBaseUrl": "https://explorer.gravity.xyz", "etherscanApiKeyName": null }, + "1672": { + "internalId": "Pharos", + "name": "pharos", + "averageBlocktimeHint": 1000, + "isLegacy": false, + "supportsShanghai": true, + "isTestnet": false, + "nativeCurrencySymbol": "PROS", + "etherscanApiUrl": null, + "etherscanBaseUrl": null, + "etherscanApiKeyName": null + }, "1776": { "internalId": "Injective", "name": "injective", @@ -2088,6 +2100,18 @@ "etherscanBaseUrl": "https://xaiscan.io", "etherscanApiKeyName": "ETHERSCAN_API_KEY" }, + "688688": { + "internalId": "PharosTestnet", + "name": "pharos-testnet", + "averageBlocktimeHint": 1000, + "isLegacy": false, + "supportsShanghai": true, + "isTestnet": true, + "nativeCurrencySymbol": "PHRS", + "etherscanApiUrl": null, + "etherscanBaseUrl": null, + "etherscanApiKeyName": null + }, "723487": { "internalId": "Radius", "name": "radius", diff --git a/registry/manual.json b/registry/manual.json index a98a7a0..5a00317 100644 --- a/registry/manual.json +++ b/registry/manual.json @@ -2442,6 +2442,25 @@ "nativeCurrencySymbol": "ETH", "etherscanApiUrl": "https://explorer.testnet.chain.robinhood.com/api", "etherscanBaseUrl": "https://explorer.testnet.chain.robinhood.com" + }, + { + "chainId": 1672, + "internalId": "Pharos", + "name": "pharos", + "averageBlocktimeHint": 1000, + "supportsShanghai": true, + "nativeCurrencySymbol": "PROS", + "etherscanBaseUrl": "https://pharosscan.xyz" + }, + { + "chainId": 688688, + "internalId": "PharosTestnet", + "name": "pharos-testnet", + "averageBlocktimeHint": 1000, + "supportsShanghai": true, + "isTestnet": true, + "nativeCurrencySymbol": "PHRS", + "etherscanBaseUrl": "https://testnet.pharosscan.xyz" } ] } diff --git a/src/generated/named.rs b/src/generated/named.rs index 27a1f06..2dc2677 100644 --- a/src/generated/named.rs +++ b/src/generated/named.rs @@ -89,6 +89,7 @@ pub enum NamedChain { Vana = 1480, Story = 1514, GravityAlphaMainnet = 1625, + Pharos = 1672, Injective = 1776, Soneium = 1868, SoneiumMinatoTestnet = 1946, @@ -184,6 +185,7 @@ pub enum NamedChain { Scroll = 534352, Hoodi = 560048, Xai = 660279, + PharosTestnet = 688688, Radius = 723487, Katana = 747474, InkSepolia = 763373, @@ -213,7 +215,7 @@ pub enum NamedChain { impl NamedChain { /// The number of named chains. - pub const COUNT: usize = 199; + pub const COUNT: usize = 201; /// All named chains in declaration order. pub const VARIANTS: &'static [Self] = &[ @@ -296,6 +298,7 @@ impl NamedChain { Self::Vana, Self::Story, Self::GravityAlphaMainnet, + Self::Pharos, Self::Injective, Self::Soneium, Self::SoneiumMinatoTestnet, @@ -391,6 +394,7 @@ impl NamedChain { Self::Scroll, Self::Hoodi, Self::Xai, + Self::PharosTestnet, Self::Radius, Self::Katana, Self::InkSepolia, @@ -420,7 +424,7 @@ impl NamedChain { /// All named chain string representations in declaration order. pub const VARIANT_NAMES: &'static [&'static str] = &{ - let mut names = [""; 199]; + let mut names = [""; 201]; let mut index = 0; while index < CHAIN_DATA.len() { names[index] = CHAIN_DATA[index].name(); @@ -515,126 +519,128 @@ impl NamedChain { Self::Vana => 76, Self::Story => 77, Self::GravityAlphaMainnet => 78, - Self::Injective => 79, - Self::Soneium => 80, - Self::SoneiumMinatoTestnet => 81, - Self::Ronin => 82, - Self::StableTestnet => 83, - Self::FraxtalTestnet => 84, - Self::Abstract => 85, - Self::FantomTestnet => 86, - Self::Merlin => 87, - Self::Tempo => 88, - Self::MegaEth => 89, - Self::MemeCore => 90, - Self::Robinhood => 91, - Self::Iotex => 92, - Self::WorldSepolia => 93, - Self::Mantle => 94, - Self::MantleSepolia => 95, - Self::OpBNBTestnet => 96, - Self::MegaEthTestnet => 97, - Self::Zeta => 98, - Self::Canto => 99, - Self::Kaia => 100, - Self::Base => 101, - Self::EvmosTestnet => 102, - Self::Evmos => 103, - Self::Plasma => 104, - Self::PlasmaTestnet => 105, - Self::MonadTestnet => 106, - Self::Chiado => 107, - Self::AbstractTestnet => 108, - Self::Cannon => 109, - Self::Immutable => 110, - Self::ImmutableTestnet => 111, - Self::GravityAlphaTestnetSepolia => 112, - Self::SignetPecorino => 113, - Self::SonicTestnet => 114, - Self::Holesky => 115, - Self::FluentDevnet => 116, - Self::FluentTestnet => 117, - Self::Fluent => 118, - Self::Oasis => 119, - Self::TempoDevnet => 120, - Self::AnvilHardhat => 121, - Self::Curtis => 122, - Self::ApeChain => 123, - Self::Mode => 124, - Self::LensTestnet => 125, - Self::Arbitrum => 126, - Self::ArbitrumNova => 127, - Self::Celo => 128, - Self::EmeraldTestnet => 129, - Self::Emerald => 130, - Self::TempoTestnet => 131, - Self::TempoModerato => 132, - Self::Etherlink => 133, - Self::AvalancheFuji => 134, - Self::Avalanche => 135, - Self::Formicarium => 136, - Self::Insectarium => 137, - Self::RobinhoodTestnet => 138, - Self::Sophon => 139, - Self::Superposition => 140, - Self::Ink => 141, - Self::PgnSepolia => 142, - Self::LineaGoerli => 143, - Self::LineaSepolia => 144, - Self::Linea => 145, - Self::Bob => 146, - Self::Treasure => 147, - Self::RadiusTestnet => 148, - Self::PolygonAmoy => 149, - Self::BerachainBepolia => 150, - Self::Berachain => 151, - Self::Blast => 152, - Self::BaseGoerli => 153, - Self::BaseSepolia => 154, - Self::Plume => 155, - Self::PlumeTestnet => 156, - Self::SuperpositionTestnet => 157, - Self::Gravity => 158, - Self::EtherlinkShadownet => 159, - Self::Taiko => 160, - Self::TaikoHekla => 161, - Self::Bitlayer => 162, - Self::RoninTestnet => 163, - Self::FilecoinCalibrationTestnet => 164, - Self::ArbitrumTestnet => 165, - Self::ArbitrumGoerli => 166, - Self::ArbitrumSepolia => 167, - Self::SyndrSepolia => 168, - Self::AutonomysNovaTestnet => 169, - Self::ScrollSepolia => 170, - Self::Scroll => 171, - Self::Hoodi => 172, - Self::Xai => 173, - Self::Radius => 174, - Self::Katana => 175, - Self::InkSepolia => 176, - Self::BobSepolia => 177, - Self::Odyssey => 178, - Self::TreasureTopaz => 179, - Self::ArcTestnet => 180, - Self::Zora => 181, - Self::CeloSepolia => 182, - Self::Sepolia => 183, - Self::OptimismSepolia => 184, - Self::Corn => 185, - Self::CornTestnet => 186, - Self::BlastSepolia => 187, - Self::SkaleBaseSepoliaTestnet => 188, - Self::PolkadotTestnet => 189, - Self::Kusama => 190, - Self::Polkadot => 191, - Self::SophonTestnet => 192, - Self::Degen => 193, - Self::ZoraSepolia => 194, - Self::SkaleBase => 195, - Self::Aurora => 196, - Self::AuroraTestnet => 197, - Self::XaiSepolia => 198, + Self::Pharos => 79, + Self::Injective => 80, + Self::Soneium => 81, + Self::SoneiumMinatoTestnet => 82, + Self::Ronin => 83, + Self::StableTestnet => 84, + Self::FraxtalTestnet => 85, + Self::Abstract => 86, + Self::FantomTestnet => 87, + Self::Merlin => 88, + Self::Tempo => 89, + Self::MegaEth => 90, + Self::MemeCore => 91, + Self::Robinhood => 92, + Self::Iotex => 93, + Self::WorldSepolia => 94, + Self::Mantle => 95, + Self::MantleSepolia => 96, + Self::OpBNBTestnet => 97, + Self::MegaEthTestnet => 98, + Self::Zeta => 99, + Self::Canto => 100, + Self::Kaia => 101, + Self::Base => 102, + Self::EvmosTestnet => 103, + Self::Evmos => 104, + Self::Plasma => 105, + Self::PlasmaTestnet => 106, + Self::MonadTestnet => 107, + Self::Chiado => 108, + Self::AbstractTestnet => 109, + Self::Cannon => 110, + Self::Immutable => 111, + Self::ImmutableTestnet => 112, + Self::GravityAlphaTestnetSepolia => 113, + Self::SignetPecorino => 114, + Self::SonicTestnet => 115, + Self::Holesky => 116, + Self::FluentDevnet => 117, + Self::FluentTestnet => 118, + Self::Fluent => 119, + Self::Oasis => 120, + Self::TempoDevnet => 121, + Self::AnvilHardhat => 122, + Self::Curtis => 123, + Self::ApeChain => 124, + Self::Mode => 125, + Self::LensTestnet => 126, + Self::Arbitrum => 127, + Self::ArbitrumNova => 128, + Self::Celo => 129, + Self::EmeraldTestnet => 130, + Self::Emerald => 131, + Self::TempoTestnet => 132, + Self::TempoModerato => 133, + Self::Etherlink => 134, + Self::AvalancheFuji => 135, + Self::Avalanche => 136, + Self::Formicarium => 137, + Self::Insectarium => 138, + Self::RobinhoodTestnet => 139, + Self::Sophon => 140, + Self::Superposition => 141, + Self::Ink => 142, + Self::PgnSepolia => 143, + Self::LineaGoerli => 144, + Self::LineaSepolia => 145, + Self::Linea => 146, + Self::Bob => 147, + Self::Treasure => 148, + Self::RadiusTestnet => 149, + Self::PolygonAmoy => 150, + Self::BerachainBepolia => 151, + Self::Berachain => 152, + Self::Blast => 153, + Self::BaseGoerli => 154, + Self::BaseSepolia => 155, + Self::Plume => 156, + Self::PlumeTestnet => 157, + Self::SuperpositionTestnet => 158, + Self::Gravity => 159, + Self::EtherlinkShadownet => 160, + Self::Taiko => 161, + Self::TaikoHekla => 162, + Self::Bitlayer => 163, + Self::RoninTestnet => 164, + Self::FilecoinCalibrationTestnet => 165, + Self::ArbitrumTestnet => 166, + Self::ArbitrumGoerli => 167, + Self::ArbitrumSepolia => 168, + Self::SyndrSepolia => 169, + Self::AutonomysNovaTestnet => 170, + Self::ScrollSepolia => 171, + Self::Scroll => 172, + Self::Hoodi => 173, + Self::Xai => 174, + Self::PharosTestnet => 175, + Self::Radius => 176, + Self::Katana => 177, + Self::InkSepolia => 178, + Self::BobSepolia => 179, + Self::Odyssey => 180, + Self::TreasureTopaz => 181, + Self::ArcTestnet => 182, + Self::Zora => 183, + Self::CeloSepolia => 184, + Self::Sepolia => 185, + Self::OptimismSepolia => 186, + Self::Corn => 187, + Self::CornTestnet => 188, + Self::BlastSepolia => 189, + Self::SkaleBaseSepoliaTestnet => 190, + Self::PolkadotTestnet => 191, + Self::Kusama => 192, + Self::Polkadot => 193, + Self::SophonTestnet => 194, + Self::Degen => 195, + Self::ZoraSepolia => 196, + Self::SkaleBase => 197, + Self::Aurora => 198, + Self::AuroraTestnet => 199, + Self::XaiSepolia => 200, } } @@ -730,6 +736,7 @@ impl NamedChain { 1480 => Some(Self::Vana), 1514 => Some(Self::Story), 1625 => Some(Self::GravityAlphaMainnet), + 1672 => Some(Self::Pharos), 1776 => Some(Self::Injective), 1868 => Some(Self::Soneium), 1946 => Some(Self::SoneiumMinatoTestnet), @@ -825,6 +832,7 @@ impl NamedChain { 534352 => Some(Self::Scroll), 560048 => Some(Self::Hoodi), 660279 => Some(Self::Xai), + 688688 => Some(Self::PharosTestnet), 723487 => Some(Self::Radius), 747474 => Some(Self::Katana), 763373 => Some(Self::InkSepolia), @@ -1149,6 +1157,7 @@ pub(crate) const SERDE_ALIASES: &[(NamedChain, &str)] = &[ (NamedChain::AutonomysNovaTestnet, "autonomys_nova_testnet"), (NamedChain::ScrollSepolia, "scroll_sepolia"), (NamedChain::ScrollSepolia, "scroll_sepolia_testnet"), + (NamedChain::PharosTestnet, "pharos_testnet"), (NamedChain::InkSepolia, "ink_sepolia"), (NamedChain::InkSepolia, "ink_sepolia_testnet"), (NamedChain::BobSepolia, "bob_sepolia"), @@ -1167,7 +1176,7 @@ pub(crate) const SERDE_ALIASES: &[(NamedChain, &str)] = &[ (NamedChain::XaiSepolia, "xai_sepolia"), ]; -static CHAIN_NAMES: [&str; 199] = [ +static CHAIN_NAMES: [&str; 201] = [ "mainnet", "morden", "ropsten", @@ -1247,6 +1256,7 @@ static CHAIN_NAMES: [&str; 199] = [ "vana", "story", "gravity-alpha-mainnet", + "pharos", "injective", "soneium", "soneium-minato-testnet", @@ -1342,6 +1352,7 @@ static CHAIN_NAMES: [&str; 199] = [ "scroll", "hoodi", "xai", + "pharos-testnet", "radius", "katana", "ink-sepolia", @@ -1369,13 +1380,13 @@ static CHAIN_NAMES: [&str; 199] = [ "xai-sepolia", ]; -static NATIVE_CURRENCY_SYMBOLS: [&str; 62] = [ +static NATIVE_CURRENCY_SYMBOLS: [&str; 64] = [ "ETH", "FLR", "RBTC", "tRBTC", "TLOS", "CRAB", "RING", "XDC", "TXDC", "BNB", "CFX", "C2FLR", "POL", "MON", "S", "SMR", "RBNT", "HAPPY", "GHO", "PLS", "WRLD", "KRING", "USDT0", "HYPE", - "CORE", "DEV", "GLMR", "MOVR", "SEI", "INJ", "VANA", "IP", "G", "RON", "BTC", "USD", "M", - "IOTX", "MNT", "ZETA", "KAIA", "XPL", "IMX", "tIMX", "USDS", "APE", "GRASS", "CELO", "XTZ", - "tM", "SOPH", "MAGIC", "RUSD", "BERA", "PLUME", "XAI", "USDC", "BTCN", "PAS", "KSM", "DOT", - "DEGEN", + "CORE", "DEV", "GLMR", "MOVR", "SEI", "INJ", "VANA", "IP", "G", "PROS", "RON", "BTC", "USD", + "M", "IOTX", "MNT", "ZETA", "KAIA", "XPL", "IMX", "tIMX", "USDS", "APE", "GRASS", "CELO", + "XTZ", "tM", "SOPH", "MAGIC", "RUSD", "BERA", "PLUME", "XAI", "PHRS", "USDC", "BTCN", "PAS", + "KSM", "DOT", "DEGEN", ]; static ETHERSCAN_API_URLS: [&str; 161] = [ @@ -1542,7 +1553,7 @@ static ETHERSCAN_API_URLS: [&str; 161] = [ "https://api.etherscan.io/v2/api?chainid=37714555429", ]; -static ETHERSCAN_BASE_URLS: [&str; 163] = [ +static ETHERSCAN_BASE_URLS: [&str; 165] = [ "https://etherscan.io", "https://optimistic.etherscan.io", "https://flare-explorer.flare.network", @@ -1603,6 +1614,7 @@ static ETHERSCAN_BASE_URLS: [&str; 163] = [ "https://vanascan.io", "https://www.storyscan.xyz", "https://explorer.gravity.xyz", + "https://pharosscan.xyz", "https://blockscout.injective.network", "https://soneium.blockscout.com", "https://soneium-minato.blockscout.com", @@ -1682,6 +1694,7 @@ static ETHERSCAN_BASE_URLS: [&str; 163] = [ "https://scrollscan.com", "https://hoodi.etherscan.io", "https://xaiscan.io", + "https://testnet.pharosscan.xyz", "https://network.radiustech.xyz", "https://katanascan.com", "https://explorer-sepolia.inkonchain.com", @@ -1760,7 +1773,7 @@ static WRAPPED_NATIVE_TOKENS: [Address; 34] = [ address!("0x5300000000000000000000000000000000000004"), ]; -static CHAIN_DATA: [ChainData; 199] = { +static CHAIN_DATA: [ChainData; 201] = { use FLAG_ARBITRUM as A; use FLAG_ELASTIC as X; use FLAG_ETHEREUM as E; @@ -1875,584 +1888,590 @@ static CHAIN_DATA: [ChainData; 199] = { d(76, 30, 57, 57, 1, 6000, 0, 13), d(77, 31, 58, 58, 1, 2500, 0, 14), d(78, 32, 59, 59, N, 260, S, W), - d(79, 29, 60, 60, 1, 700, S, W), - d(80, N, 61, 61, 1, 2000, S | O, W), - d(81, N, 62, 62, 1, 2000, S | T | O, W), - d(82, 33, 63, 63, N, 3000, 0, W), - d(83, 22, 64, 64, 0, 700, S | T, W), - d(84, N, 65, 65, 0, 2000, S | T | O, W), - d(85, 0, 66, 66, 0, 1000, X, 15), - d(86, N, N, N, 3, 1200, L | T, W), - d(87, 34, 67, 67, 7, 3000, 0, 16), - d(88, 35, 68, 68, N, 500, S | TP, W), - d(89, 0, 69, 69, 0, 1000, S, W), - d(90, 36, 70, 70, 0, 7000, S, 17), - d(91, 0, 71, 71, N, 400, S | A, W), - d(92, 37, N, N, N, 5000, S, 18), - d(93, 20, 72, 72, 1, 2000, S | T | O, W), - d(94, 38, 73, 73, 0, 2000, S, 19), - d(95, 38, 74, 74, 0, 2000, S | T, W), - d(96, 9, 75, 75, 0, 1000, S | T | O, W), - d(97, 0, 76, 76, 0, 1000, S | T, W), - d(98, 39, 77, 77, 8, 6000, 0, 20), - d(99, N, N, N, 1, 5700, 0, W), - d(100, 40, 78, 78, 9, 1000, 0, 21), - d(101, 0, 79, 79, 0, 2000, S | O, 1), - d(102, N, N, N, N, 1900, T, W), - d(103, N, N, N, N, 1900, 0, W), - d(104, 41, 80, 80, 0, 1000, 0, W), - d(105, 41, 81, 81, 0, 1000, T, W), - d(106, 13, 82, 82, 0, 400, S | T, W), - d(107, N, 83, 83, N, 5000, S, W), - d(108, N, 84, 84, 0, 1000, T | X, W), - d(109, N, N, N, N, 0, S | T, W), - d(110, 42, 85, 85, 1, 2000, S, W), - d(111, 43, 86, 86, 1, 2000, S | T, W), - d(112, 32, 87, 87, N, 260, S | T, W), - d(113, 44, 88, 88, 1, 12000, S | T, W), - d(114, 14, 89, 89, 0, 1000, T, W), - d(115, 0, 90, 90, 0, 0, S | T | E, W), - d(116, N, 91, 91, N, 3000, S | T, W), - d(117, N, 92, 92, N, 1000, S | T, W), - d(118, N, 93, 93, N, 1000, 0, W), - d(119, N, N, N, N, 5500, 0, W), - d(120, 35, N, N, N, 500, S | T | TP, W), - d(121, N, N, N, N, 200, S | T, W), - d(122, 45, 94, 94, 1, 260, S | T, W), - d(123, 45, 95, 95, 0, 260, S, 22), - d(124, N, 96, 96, 1, 2000, S | O, W), - d(125, 46, 97, 97, N, 1000, T | X, W), - d(126, 0, 98, 98, 0, 260, S | A, 23), - d(127, 0, 99, 99, 0, 260, S | A, W), - d(128, 47, 100, 100, 0, 1000, S | O, W), - d(129, N, 101, 101, N, 0, L | T, W), - d(130, N, 102, 102, N, 6000, L, W), - d(131, 35, 68, 103, N, 500, S | T | TP, W), - d(132, 35, 68, 104, N, 500, S | T | TP, W), - d(133, 48, 103, 105, 1, 5000, S, W), - d(134, N, 104, 106, 0, 2000, S | T, W), - d(135, N, 105, 107, 0, 2000, S, 24), - d(136, 49, 106, 108, 0, 7000, S | T, 17), - d(137, 49, 107, 109, N, 7000, S | T, 17), - d(138, 0, 108, 110, N, 400, S | T | A, W), - d(139, 50, 109, 111, 0, 1000, L | X, 25), - d(140, 0, 110, 112, 1, 260, S, 26), - d(141, 0, 111, 113, 1, 1000, S | O, W), - d(142, N, N, N, 1, 2000, T | O, W), - d(143, N, N, N, N, 2000, T, W), - d(144, N, 112, 114, 0, 2000, T, W), - d(145, 0, 113, 115, 0, 2000, S, 27), - d(146, 0, 114, 116, N, 2000, S, W), - d(147, 51, N, N, N, 0, L, 28), - d(148, 52, 115, 117, N, 500, S | T, W), - d(149, 12, 116, 118, 0, 2100, T, W), - d(150, 53, 117, 119, 10, 2000, S | T, W), - d(151, 53, 118, 120, 10, 2000, S, 29), - d(152, N, 119, 121, 0, 2000, S, 30), - d(153, 0, N, N, 0, 2000, S | T | O, W), - d(154, 0, 120, 122, 0, 2000, S | T | O, W), - d(155, 54, 121, 123, N, 260, S, W), - d(156, 54, 122, 124, N, 260, S | T, W), - d(157, 0, 123, 125, 1, 260, S | T, W), - d(158, 32, 124, 126, N, 260, S, W), - d(159, 48, 125, 127, 1, 5000, S | T, W), - d(160, 0, 126, 128, 0, 12000, S, 31), - d(161, 0, 127, 129, 0, 12000, S | T, W), - d(162, 34, 128, 130, 11, 3000, 0, 32), - d(163, 33, 129, 131, N, 3000, T, W), - d(164, N, 130, 132, N, 30000, T, W), - d(165, N, N, N, 0, 260, T | A, W), + d(79, 33, N, 60, N, 1000, S, W), + d(80, 29, 60, 61, 1, 700, S, W), + d(81, N, 61, 62, 1, 2000, S | O, W), + d(82, N, 62, 63, 1, 2000, S | T | O, W), + d(83, 34, 63, 64, N, 3000, 0, W), + d(84, 22, 64, 65, 0, 700, S | T, W), + d(85, N, 65, 66, 0, 2000, S | T | O, W), + d(86, 0, 66, 67, 0, 1000, X, 15), + d(87, N, N, N, 3, 1200, L | T, W), + d(88, 35, 67, 68, 7, 3000, 0, 16), + d(89, 36, 68, 69, N, 500, S | TP, W), + d(90, 0, 69, 70, 0, 1000, S, W), + d(91, 37, 70, 71, 0, 7000, S, 17), + d(92, 0, 71, 72, N, 400, S | A, W), + d(93, 38, N, N, N, 5000, S, 18), + d(94, 20, 72, 73, 1, 2000, S | T | O, W), + d(95, 39, 73, 74, 0, 2000, S, 19), + d(96, 39, 74, 75, 0, 2000, S | T, W), + d(97, 9, 75, 76, 0, 1000, S | T | O, W), + d(98, 0, 76, 77, 0, 1000, S | T, W), + d(99, 40, 77, 78, 8, 6000, 0, 20), + d(100, N, N, N, 1, 5700, 0, W), + d(101, 41, 78, 79, 9, 1000, 0, 21), + d(102, 0, 79, 80, 0, 2000, S | O, 1), + d(103, N, N, N, N, 1900, T, W), + d(104, N, N, N, N, 1900, 0, W), + d(105, 42, 80, 81, 0, 1000, 0, W), + d(106, 42, 81, 82, 0, 1000, T, W), + d(107, 13, 82, 83, 0, 400, S | T, W), + d(108, N, 83, 84, N, 5000, S, W), + d(109, N, 84, 85, 0, 1000, T | X, W), + d(110, N, N, N, N, 0, S | T, W), + d(111, 43, 85, 86, 1, 2000, S, W), + d(112, 44, 86, 87, 1, 2000, S | T, W), + d(113, 32, 87, 88, N, 260, S | T, W), + d(114, 45, 88, 89, 1, 12000, S | T, W), + d(115, 14, 89, 90, 0, 1000, T, W), + d(116, 0, 90, 91, 0, 0, S | T | E, W), + d(117, N, 91, 92, N, 3000, S | T, W), + d(118, N, 92, 93, N, 1000, S | T, W), + d(119, N, 93, 94, N, 1000, 0, W), + d(120, N, N, N, N, 5500, 0, W), + d(121, 36, N, N, N, 500, S | T | TP, W), + d(122, N, N, N, N, 200, S | T, W), + d(123, 46, 94, 95, 1, 260, S | T, W), + d(124, 46, 95, 96, 0, 260, S, 22), + d(125, N, 96, 97, 1, 2000, S | O, W), + d(126, 47, 97, 98, N, 1000, T | X, W), + d(127, 0, 98, 99, 0, 260, S | A, 23), + d(128, 0, 99, 100, 0, 260, S | A, W), + d(129, 48, 100, 101, 0, 1000, S | O, W), + d(130, N, 101, 102, N, 0, L | T, W), + d(131, N, 102, 103, N, 6000, L, W), + d(132, 36, 68, 104, N, 500, S | T | TP, W), + d(133, 36, 68, 105, N, 500, S | T | TP, W), + d(134, 49, 103, 106, 1, 5000, S, W), + d(135, N, 104, 107, 0, 2000, S | T, W), + d(136, N, 105, 108, 0, 2000, S, 24), + d(137, 50, 106, 109, 0, 7000, S | T, 17), + d(138, 50, 107, 110, N, 7000, S | T, 17), + d(139, 0, 108, 111, N, 400, S | T | A, W), + d(140, 51, 109, 112, 0, 1000, L | X, 25), + d(141, 0, 110, 113, 1, 260, S, 26), + d(142, 0, 111, 114, 1, 1000, S | O, W), + d(143, N, N, N, 1, 2000, T | O, W), + d(144, N, N, N, N, 2000, T, W), + d(145, N, 112, 115, 0, 2000, T, W), + d(146, 0, 113, 116, 0, 2000, S, 27), + d(147, 0, 114, 117, N, 2000, S, W), + d(148, 52, N, N, N, 0, L, 28), + d(149, 53, 115, 118, N, 500, S | T, W), + d(150, 12, 116, 119, 0, 2100, T, W), + d(151, 54, 117, 120, 10, 2000, S | T, W), + d(152, 54, 118, 121, 10, 2000, S, 29), + d(153, N, 119, 122, 0, 2000, S, 30), + d(154, 0, N, N, 0, 2000, S | T | O, W), + d(155, 0, 120, 123, 0, 2000, S | T | O, W), + d(156, 55, 121, 124, N, 260, S, W), + d(157, 55, 122, 125, N, 260, S | T, W), + d(158, 0, 123, 126, 1, 260, S | T, W), + d(159, 32, 124, 127, N, 260, S, W), + d(160, 49, 125, 128, 1, 5000, S | T, W), + d(161, 0, 126, 129, 0, 12000, S, 31), + d(162, 0, 127, 130, 0, 12000, S | T, W), + d(163, 35, 128, 131, 11, 3000, 0, 32), + d(164, 34, 129, 132, N, 3000, T, W), + d(165, N, 130, 133, N, 30000, T, W), d(166, N, N, N, 0, 260, T | A, W), - d(167, N, 131, 133, 0, 260, S | T | A, W), - d(168, N, 132, 134, 0, 260, S | T, W), - d(169, N, N, N, N, 1000, S | T, W), - d(170, 0, 133, 135, 0, 3000, S | T, W), - d(171, 0, 134, 136, 0, 3000, S, 33), - d(172, N, 135, 137, 0, 0, S | T, W), - d(173, 55, 136, 138, 0, 260, S, W), - d(174, 52, 137, 139, N, 500, S, W), - d(175, 0, 138, 140, 0, 1000, S | O, W), - d(176, N, 139, 141, 1, 1000, S | T | O, W), - d(177, N, 140, 142, N, 2000, S | T, W), - d(178, N, 141, 143, N, 1000, S | T | O, W), - d(179, 51, N, N, N, 0, L | T, W), - d(180, 56, 142, 144, 1, 500, S | T, W), - d(181, N, 143, 145, 1, 2000, O, W), - d(182, 47, 144, 146, 1, 1000, S | T, W), - d(183, 0, 145, 147, 0, 0, S | T | E, W), - d(184, 0, 146, 148, 0, 2000, S | T | O, W), - d(185, 57, 147, 149, 2, 0, S, W), - d(186, 57, 148, 150, 2, 0, S | T, W), - d(187, N, 149, 151, 0, 2000, S | T | O, W), - d(188, N, 150, 152, 1, 1000, T, W), - d(189, 58, 151, 153, 1, 2000, S | T, W), - d(190, 59, 152, 154, 1, 2000, S, W), - d(191, 60, 153, 155, 1, 2000, S, W), - d(192, 50, 154, 156, 0, 1000, L | T | X, W), - d(193, 61, 155, 157, N, 600, 0, W), - d(194, N, 156, 158, 1, 2000, S | T | O, W), - d(195, N, 157, 159, 1, 1000, 0, W), - d(196, N, 158, 160, 0, 1100, 0, W), - d(197, N, 159, 161, 0, 1100, T, W), - d(198, 55, 160, 162, 0, 260, S | T, W), + d(167, N, N, N, 0, 260, T | A, W), + d(168, N, 131, 134, 0, 260, S | T | A, W), + d(169, N, 132, 135, 0, 260, S | T, W), + d(170, N, N, N, N, 1000, S | T, W), + d(171, 0, 133, 136, 0, 3000, S | T, W), + d(172, 0, 134, 137, 0, 3000, S, 33), + d(173, N, 135, 138, 0, 0, S | T, W), + d(174, 56, 136, 139, 0, 260, S, W), + d(175, 57, N, 140, N, 1000, S | T, W), + d(176, 53, 137, 141, N, 500, S, W), + d(177, 0, 138, 142, 0, 1000, S | O, W), + d(178, N, 139, 143, 1, 1000, S | T | O, W), + d(179, N, 140, 144, N, 2000, S | T, W), + d(180, N, 141, 145, N, 1000, S | T | O, W), + d(181, 52, N, N, N, 0, L | T, W), + d(182, 58, 142, 146, 1, 500, S | T, W), + d(183, N, 143, 147, 1, 2000, O, W), + d(184, 48, 144, 148, 1, 1000, S | T, W), + d(185, 0, 145, 149, 0, 0, S | T | E, W), + d(186, 0, 146, 150, 0, 2000, S | T | O, W), + d(187, 59, 147, 151, 2, 0, S, W), + d(188, 59, 148, 152, 2, 0, S | T, W), + d(189, N, 149, 153, 0, 2000, S | T | O, W), + d(190, N, 150, 154, 1, 1000, T, W), + d(191, 60, 151, 155, 1, 2000, S | T, W), + d(192, 61, 152, 156, 1, 2000, S, W), + d(193, 62, 153, 157, 1, 2000, S, W), + d(194, 51, 154, 158, 0, 1000, L | T | X, W), + d(195, 63, 155, 159, N, 600, 0, W), + d(196, N, 156, 160, 1, 2000, S | T | O, W), + d(197, N, 157, 161, 1, 1000, 0, W), + d(198, N, 158, 162, 0, 1100, 0, W), + d(199, N, 159, 163, 0, 1100, T, W), + d(200, 56, 160, 164, 0, 260, S | T, W), ] }; static PARSE_NAMES: phf::Map<&'static str, ChainIndex> = ::phf::Map { key: 16287231350648472473, disps: &[ - (0, 34), - (0, 62), - (0, 2), - (0, 18), - (0, 59), - (0, 33), - (0, 5), - (0, 2), - (0, 34), - (0, 16), - (0, 1), - (0, 53), + (0, 3), (0, 0), - (0, 51), - (0, 50), - (0, 27), (0, 0), - (0, 18), - (0, 4), - (0, 5), - (0, 2), + (0, 11), + (0, 6), + (0, 54), + (0, 3), + (0, 3), + (0, 42), + (0, 23), (0, 0), - (0, 2), - (0, 100), + (0, 3), + (0, 3), + (0, 40), + (0, 0), + (0, 42), + (0, 0), + (0, 4), + (0, 13), + (0, 65), (0, 6), - (0, 5), (0, 2), - (0, 30), - (0, 15), - (0, 15), - (0, 1), - (1, 57), - (0, 0), + (0, 113), + (0, 123), + (0, 14), + (0, 10), + (0, 5), + (0, 13), (0, 7), - (0, 9), (0, 0), - (0, 54), + (0, 2), + (0, 66), + (0, 0), + (0, 49), (0, 7), - (0, 12), - (0, 30), (0, 0), - (0, 12), + (0, 74), + (0, 1), + (0, 39), + (0, 27), + (0, 102), + (0, 29), + (0, 38), + (0, 101), + (0, 97), + (0, 9), (0, 24), - (0, 60), - (0, 58), - (0, 0), - (0, 6), + (0, 164), (0, 9), + (0, 2), + (0, 20), + (0, 18), (0, 0), - (0, 8), - (0, 12), - (0, 14), - (0, 8), - (0, 3), (0, 0), - (1, 67), - (0, 20), - (0, 37), - (0, 12), + (0, 26), + (0, 27), (0, 0), - (0, 33), - (0, 14), - (0, 11), + (1, 87), + (0, 8), + (0, 50), + (0, 41), + (0, 5), + (0, 23), (0, 0), - (0, 21), - (2, 22), - (0, 29), - (0, 146), + (0, 203), + (2, 216), + (0, 191), + (2, 117), (0, 0), (0, 1), - (0, 3), - (0, 179), + (0, 28), + (0, 11), + (0, 0), ], entries: &[ - ("fluent", NamedChain::Fluent.index()), - ("xdc-testnet", NamedChain::XdcTestnet.index()), - ("soneium-minato-testnet", NamedChain::SoneiumMinatoTestnet.index()), - ("arbitrum-nova", NamedChain::ArbitrumNova.index()), - ("evmos", NamedChain::Evmos.index()), - ("superposition-testnet", NamedChain::SuperpositionTestnet.index()), - ("plasma", NamedChain::Plasma.index()), - ("binance-smart-chain", NamedChain::BinanceSmartChain.index()), - ("corn", NamedChain::Corn.index()), - ("lisk", NamedChain::Lisk.index()), - ("bob-sepolia", NamedChain::BobSepolia.index()), - ("tempo-devnet", NamedChain::TempoDevnet.index()), - ("fuji", NamedChain::AvalancheFuji.index()), - ("ronin-testnet", NamedChain::RoninTestnet.index()), - ("plasma-testnet", NamedChain::PlasmaTestnet.index()), - ("canto", NamedChain::Canto.index()), - ("goerli", NamedChain::Goerli.index()), - ("optimism-kovan", NamedChain::OptimismKovan.index()), - ("aurora", NamedChain::Aurora.index()), - ("memecore-formicarium", NamedChain::Formicarium.index()), - ("zksync-testnet", NamedChain::ZkSyncTestnet.index()), - ("avalanche-fuji", NamedChain::AvalancheFuji.index()), - ("syndr-sepolia", NamedChain::SyndrSepolia.index()), - ("immutable-testnet", NamedChain::ImmutableTestnet.index()), + ("cronos-testnet", NamedChain::CronosTestnet.index()), + ("degen", NamedChain::Degen.index()), + ("telos", NamedChain::TelosEvm.index()), + ("linea-sepolia", NamedChain::LineaSepolia.index()), + ("unichain", NamedChain::Unichain.index()), + ("battlechain", NamedChain::BattleChain.index()), + ("monad", NamedChain::Monad.index()), + ("karura", NamedChain::Karura.index()), ("megaeth", NamedChain::MegaEth.index()), - ("elastos", NamedChain::Elastos.index()), - ("celo-sepolia", NamedChain::CeloSepolia.index()), - ("world-sepolia", NamedChain::WorldSepolia.index()), - ("cannon", NamedChain::Cannon.index()), - ("evmos-testnet", NamedChain::EvmosTestnet.index()), - ("iotex", NamedChain::Iotex.index()), - ("tempo-mainnet", NamedChain::Tempo.index()), - ("boba", NamedChain::Boba.index()), - ("amoy", NamedChain::PolygonAmoy.index()), - ("sophon-testnet", NamedChain::SophonTestnet.index()), + ("filecoin-mainnet", NamedChain::FilecoinMainnet.index()), + ("lens-testnet", NamedChain::LensTestnet.index()), ("opbnb-testnet", NamedChain::OpBNBTestnet.index()), - ("taiko", NamedChain::Taiko.index()), - ("plume-testnet", NamedChain::PlumeTestnet.index()), - ("skale-base-sepolia-testnet", NamedChain::SkaleBaseSepoliaTestnet.index()), - ("bitlayer", NamedChain::Bitlayer.index()), - ("zora", NamedChain::Zora.index()), - ("bsc", NamedChain::BinanceSmartChain.index()), - ("poa", NamedChain::Poa.index()), - ("abstract-testnet", NamedChain::AbstractTestnet.index()), - ("unichain-sepolia", NamedChain::UnichainSepolia.index()), - ("optimism-goerli", NamedChain::OptimismGoerli.index()), + ("gnosis-chain", NamedChain::Gnosis.index()), + ("acala-mandala-testnet", NamedChain::AcalaMandalaTestnet.index()), + ("emerald", NamedChain::Emerald.index()), + ("opbnb-mainnet", NamedChain::OpBNBMainnet.index()), + ("polygon-amoy", NamedChain::PolygonAmoy.index()), + ("celo", NamedChain::Celo.index()), ("avalanche", NamedChain::Avalanche.index()), - ("moonriver", NamedChain::Moonriver.index()), - ("megaeth-testnet", NamedChain::MegaEthTestnet.index()), - ("darwinia", NamedChain::Darwinia.index()), - ("morden", NamedChain::Morden.index()), - ("rsk", NamedChain::Rsk.index()), - ("hoodi", NamedChain::Hoodi.index()), - ("memecore-insectarium", NamedChain::Insectarium.index()), - ("fuse", NamedChain::Fuse.index()), - ("gnosis", NamedChain::Gnosis.index()), - ("moonbeam", NamedChain::Moonbeam.index()), - ("aurora-testnet", NamedChain::AuroraTestnet.index()), - ("linea-sepolia", NamedChain::LineaSepolia.index()), + ("cannon", NamedChain::Cannon.index()), + ("filecoin-calibration-testnet", NamedChain::FilecoinCalibrationTestnet.index()), + ("skale-base", NamedChain::SkaleBase.index()), + ("zora", NamedChain::Zora.index()), + ("syndr", NamedChain::Syndr.index()), + ("story", NamedChain::Story.index()), + ("karura-testnet", NamedChain::KaruraTestnet.index()), + ("celo-sepolia", NamedChain::CeloSepolia.index()), + ("oasis", NamedChain::Oasis.index()), + ("sepolia", NamedChain::Sepolia.index()), ("radius", NamedChain::Radius.index()), - ("xdai", NamedChain::Gnosis.index()), - ("polygon", NamedChain::Polygon.index()), - ("sonic", NamedChain::Sonic.index()), - ("mode", NamedChain::Mode.index()), - ("bob", NamedChain::Bob.index()), - ("emerald", NamedChain::Emerald.index()), - ("blast", NamedChain::Blast.index()), - ("mantle", NamedChain::Mantle.index()), - ("base-sepolia", NamedChain::BaseSepolia.index()), - ("monad-testnet", NamedChain::MonadTestnet.index()), - ("dev", NamedChain::Dev.index()), - ("zora-sepolia", NamedChain::ZoraSepolia.index()), - ("base-goerli", NamedChain::BaseGoerli.index()), + ("bsc-testnet", NamedChain::BinanceSmartChainTestnet.index()), + ("pgn", NamedChain::Pgn.index()), ("stable-mainnet", NamedChain::StableMainnet.index()), + ("katana", NamedChain::Katana.index()), + ("ink-sepolia", NamedChain::InkSepolia.index()), ("arbitrum-goerli", NamedChain::ArbitrumGoerli.index()), - ("arbitrum", NamedChain::Arbitrum.index()), - ("optimism-sepolia", NamedChain::OptimismSepolia.index()), - ("fluent-devnet", NamedChain::FluentDevnet.index()), - ("robinhood", NamedChain::Robinhood.index()), - ("superposition", NamedChain::Superposition.index()), - ("kusama", NamedChain::Kusama.index()), - ("degen", NamedChain::Degen.index()), - ("hardhat", NamedChain::AnvilHardhat.index()), - ("memecore", NamedChain::MemeCore.index()), - ("berachain-bepolia", NamedChain::BerachainBepolia.index()), - ("hyperliquid", NamedChain::Hyperliquid.index()), - ("zeta", NamedChain::Zeta.index()), - ("bnb-smart-chain-testnet", NamedChain::BinanceSmartChainTestnet.index()), - ("plume", NamedChain::Plume.index()), - ("injective-testnet", NamedChain::InjectiveTestnet.index()), - ("ethlive", NamedChain::Mainnet.index()), - ("abstract", NamedChain::Abstract.index()), - ("arc-testnet", NamedChain::ArcTestnet.index()), - ("apechain-testnet", NamedChain::Curtis.index()), - ("merlin", NamedChain::Merlin.index()), - ("flare-coston2", NamedChain::FlareCoston2.index()), - ("mainnet", NamedChain::Mainnet.index()), - ("viction", NamedChain::Viction.index()), - ("fraxtal-testnet", NamedChain::FraxtalTestnet.index()), ("happychain-testnet", NamedChain::HappychainTestnet.index()), - ("ink", NamedChain::Ink.index()), - ("syndr", NamedChain::Syndr.index()), - ("immutable", NamedChain::Immutable.index()), - ("rsk-testnet", NamedChain::RskTestnet.index()), - ("lens-testnet", NamedChain::LensTestnet.index()), - ("story", NamedChain::Story.index()), - ("celo", NamedChain::Celo.index()), - ("acala", NamedChain::Acala.index()), - ("vana", NamedChain::Vana.index()), - ("cfx", NamedChain::Cfx.index()), - ("skale-base", NamedChain::SkaleBase.index()), - ("acala-mandala-testnet", NamedChain::AcalaMandalaTestnet.index()), - ("apechain", NamedChain::ApeChain.index()), + ("plume-testnet", NamedChain::PlumeTestnet.index()), + ("taiko", NamedChain::Taiko.index()), + ("taiko-hekla", NamedChain::TaikoHekla.index()), ("robinhood-testnet", NamedChain::RobinhoodTestnet.index()), - ("filecoin-calibration-testnet", NamedChain::FilecoinCalibrationTestnet.index()), + ("base-sepolia", NamedChain::BaseSepolia.index()), + ("plasma-testnet", NamedChain::PlasmaTestnet.index()), ("stable-testnet", NamedChain::StableTestnet.index()), - ("berachain", NamedChain::Berachain.index()), - ("cronos-testnet", NamedChain::CronosTestnet.index()), - ("kaia", NamedChain::Kaia.index()), - ("opbnb-mainnet", NamedChain::OpBNBMainnet.index()), - ("karura-testnet", NamedChain::KaruraTestnet.index()), - ("autonomys-nova-testnet", NamedChain::AutonomysNovaTestnet.index()), - ("monad", NamedChain::Monad.index()), - ("zksync", NamedChain::ZkSync.index()), - ("pgn-sepolia", NamedChain::PgnSepolia.index()), - ("fantom", NamedChain::Fantom.index()), - ("redbelly", NamedChain::Redbelly.index()), - ("bsc-testnet", NamedChain::BinanceSmartChainTestnet.index()), - ("blast-sepolia", NamedChain::BlastSepolia.index()), - ("linea", NamedChain::Linea.index()), ("fantom-testnet", NamedChain::FantomTestnet.index()), - ("crab", NamedChain::Crab.index()), - ("corn-testnet", NamedChain::CornTestnet.index()), - ("chiado", NamedChain::Chiado.index()), - ("xdc-mainnet", NamedChain::XdcMainnet.index()), - ("redbelly-testnet", NamedChain::RedbellyTestnet.index()), - ("grav", NamedChain::Gravity.index()), - ("bnb-smart-chain", NamedChain::BinanceSmartChain.index()), - ("radius-testnet", NamedChain::RadiusTestnet.index()), - ("sokol", NamedChain::Sokol.index()), - ("formicarium", NamedChain::Formicarium.index()), - ("fraxtal", NamedChain::Fraxtal.index()), - ("flare", NamedChain::Flare.index()), - ("ropsten", NamedChain::Ropsten.index()), - ("moonbeam-dev", NamedChain::MoonbeamDev.index()), - ("injective", NamedChain::Injective.index()), + ("boba", NamedChain::Boba.index()), + ("bob", NamedChain::Bob.index()), + ("corn", NamedChain::Corn.index()), + ("tempo-mainnet", NamedChain::Tempo.index()), + ("shimmer", NamedChain::Shimmer.index()), + ("battlechain-testnet", NamedChain::BattleChainTestnet.index()), + ("tempo", NamedChain::Tempo.index()), + ("gnosis", NamedChain::Gnosis.index()), + ("memecore", NamedChain::MemeCore.index()), + ("injective-testnet", NamedChain::InjectiveTestnet.index()), + ("telos-testnet", NamedChain::TelosEvmTestnet.index()), + ("tempo-testnet", NamedChain::TempoTestnet.index()), + ("autonomys-nova-testnet", NamedChain::AutonomysNovaTestnet.index()), + ("flare-coston2", NamedChain::FlareCoston2.index()), + ("hardhat", NamedChain::AnvilHardhat.index()), ("xai", NamedChain::Xai.index()), - ("pulsechain", NamedChain::Pulsechain.index()), - ("battlechain", NamedChain::BattleChain.index()), - ("sei", NamedChain::Sei.index()), - ("core", NamedChain::Core.index()), + ("sonic", NamedChain::Sonic.index()), + ("binance-smart-chain-testnet", NamedChain::BinanceSmartChainTestnet.index()), + ("bnb-smart-chain-testnet", NamedChain::BinanceSmartChainTestnet.index()), + ("emerald-testnet", NamedChain::EmeraldTestnet.index()), + ("corn-testnet", NamedChain::CornTestnet.index()), + ("abstract-testnet", NamedChain::AbstractTestnet.index()), + ("sonic-testnet", NamedChain::SonicTestnet.index()), + ("immutable", NamedChain::Immutable.index()), + ("binance-smart-chain", NamedChain::BinanceSmartChain.index()), + ("base", NamedChain::Base.index()), + ("megaeth-testnet", NamedChain::MegaEthTestnet.index()), + ("avalanche-fuji", NamedChain::AvalancheFuji.index()), + ("rsk-testnet", NamedChain::RskTestnet.index()), + ("fluent", NamedChain::Fluent.index()), + ("sei-testnet", NamedChain::SeiTestnet.index()), + ("rinkeby", NamedChain::Rinkeby.index()), + ("linea-goerli", NamedChain::LineaGoerli.index()), ("berachain-bepolia-testnet", NamedChain::BerachainBepolia.index()), + ("pulsechain", NamedChain::Pulsechain.index()), ("optimism", NamedChain::Optimism.index()), - ("etherlink-shadownet", NamedChain::EtherlinkShadownet.index()), - ("scroll-sepolia", NamedChain::ScrollSepolia.index()), - ("pgn", NamedChain::Pgn.index()), - ("ink-sepolia", NamedChain::InkSepolia.index()), - ("binance-smart-chain-testnet", NamedChain::BinanceSmartChainTestnet.index()), + ("pharos-testnet", NamedChain::PharosTestnet.index()), + ("mantle", NamedChain::Mantle.index()), + ("mode-sepolia", NamedChain::ModeSepolia.index()), ("ronin", NamedChain::Ronin.index()), - ("insectarium", NamedChain::Insectarium.index()), - ("xai-sepolia", NamedChain::XaiSepolia.index()), - ("tempo-testnet", NamedChain::TempoTestnet.index()), - ("arbitrum-sepolia", NamedChain::ArbitrumSepolia.index()), - ("telos", NamedChain::TelosEvm.index()), - ("acala-testnet", NamedChain::AcalaTestnet.index()), - ("rinkeby", NamedChain::Rinkeby.index()), - ("odyssey", NamedChain::Odyssey.index()), ("kovan", NamedChain::Kovan.index()), - ("gravity-alpha-testnet-sepolia", NamedChain::GravityAlphaTestnetSepolia.index()), - ("lens", NamedChain::Lens.index()), - ("emerald-testnet", NamedChain::EmeraldTestnet.index()), - ("sophon", NamedChain::Sophon.index()), - ("polkadot", NamedChain::Polkadot.index()), + ("darwinia", NamedChain::Darwinia.index()), + ("canto", NamedChain::Canto.index()), ("metis", NamedChain::Metis.index()), - ("scroll", NamedChain::Scroll.index()), - ("oasis", NamedChain::Oasis.index()), - ("base", NamedChain::Base.index()), - ("polkadot-testnet", NamedChain::PolkadotTestnet.index()), - ("mantle-sepolia", NamedChain::MantleSepolia.index()), - ("canto-testnet", NamedChain::CantoTestnet.index()), - ("etherlink", NamedChain::Etherlink.index()), - ("unichain", NamedChain::Unichain.index()), + ("memecore-formicarium", NamedChain::Formicarium.index()), + ("optimism-kovan", NamedChain::OptimismKovan.index()), + ("anvil-hardhat", NamedChain::AnvilHardhat.index()), + ("sei", NamedChain::Sei.index()), ("curtis", NamedChain::Curtis.index()), + ("morden", NamedChain::Morden.index()), + ("fuji", NamedChain::AvalancheFuji.index()), + ("xai-sepolia", NamedChain::XaiSepolia.index()), + ("arbitrum-nova", NamedChain::ArbitrumNova.index()), + ("xdc-testnet", NamedChain::XdcTestnet.index()), + ("optimism-goerli", NamedChain::OptimismGoerli.index()), + ("polygon", NamedChain::Polygon.index()), + ("amoy", NamedChain::PolygonAmoy.index()), + ("tempo-moderato", NamedChain::TempoModerato.index()), + ("hyperliquid", NamedChain::Hyperliquid.index()), + ("polkadot", NamedChain::Polkadot.index()), + ("superposition-testnet", NamedChain::SuperpositionTestnet.index()), + ("pgn-sepolia", NamedChain::PgnSepolia.index()), ("holesky", NamedChain::Holesky.index()), - ("filecoin-mainnet", NamedChain::FilecoinMainnet.index()), - ("koi", NamedChain::Koi.index()), - ("tempo", NamedChain::Tempo.index()), - ("signet-pecorino", NamedChain::SignetPecorino.index()), - ("gravity-alpha-mainnet", NamedChain::GravityAlphaMainnet.index()), - ("treasure-topaz", NamedChain::TreasureTopaz.index()), - ("sonic-testnet", NamedChain::SonicTestnet.index()), - ("polygon-amoy", NamedChain::PolygonAmoy.index()), + ("redbelly", NamedChain::Redbelly.index()), + ("ethlive", NamedChain::Mainnet.index()), + ("core", NamedChain::Core.index()), + ("superposition", NamedChain::Superposition.index()), + ("aurora", NamedChain::Aurora.index()), + ("xdai", NamedChain::Gnosis.index()), ("fluent-testnet", NamedChain::FluentTestnet.index()), - ("telos-testnet", NamedChain::TelosEvmTestnet.index()), - ("shimmer", NamedChain::Shimmer.index()), ("world", NamedChain::World.index()), - ("sei-testnet", NamedChain::SeiTestnet.index()), - ("pulsechain-testnet", NamedChain::PulsechainTestnet.index()), - ("gnosis-chain", NamedChain::Gnosis.index()), + ("xdc-mainnet", NamedChain::XdcMainnet.index()), ("cfx-testnet", NamedChain::CfxTestnet.index()), - ("katana", NamedChain::Katana.index()), - ("cronos", NamedChain::Cronos.index()), - ("sepolia", NamedChain::Sepolia.index()), - ("tempo-moderato", NamedChain::TempoModerato.index()), - ("battlechain-testnet", NamedChain::BattleChainTestnet.index()), - ("taiko-hekla", NamedChain::TaikoHekla.index()), - ("treasure", NamedChain::Treasure.index()), - ("anvil-hardhat", NamedChain::AnvilHardhat.index()), - ("anvil", NamedChain::AnvilHardhat.index()), - ("soneium", NamedChain::Soneium.index()), + ("tempo-devnet", NamedChain::TempoDevnet.index()), + ("berachain-bepolia", NamedChain::BerachainBepolia.index()), + ("scroll-sepolia", NamedChain::ScrollSepolia.index()), ("arbitrum-testnet", NamedChain::ArbitrumTestnet.index()), - ("linea-goerli", NamedChain::LineaGoerli.index()), + ("sophon", NamedChain::Sophon.index()), + ("optimism-sepolia", NamedChain::OptimismSepolia.index()), + ("gravity-alpha-mainnet", NamedChain::GravityAlphaMainnet.index()), + ("poa", NamedChain::Poa.index()), + ("crab", NamedChain::Crab.index()), + ("rsk", NamedChain::Rsk.index()), + ("arbitrum-sepolia", NamedChain::ArbitrumSepolia.index()), + ("sokol", NamedChain::Sokol.index()), + ("pharos", NamedChain::Pharos.index()), + ("vana", NamedChain::Vana.index()), + ("zksync", NamedChain::ZkSync.index()), + ("lisk", NamedChain::Lisk.index()), + ("aurora-testnet", NamedChain::AuroraTestnet.index()), + ("bsc", NamedChain::BinanceSmartChain.index()), + ("bob-sepolia", NamedChain::BobSepolia.index()), + ("scroll", NamedChain::Scroll.index()), + ("blast-sepolia", NamedChain::BlastSepolia.index()), + ("viction", NamedChain::Viction.index()), + ("robinhood", NamedChain::Robinhood.index()), + ("plume", NamedChain::Plume.index()), + ("skale-base-sepolia-testnet", NamedChain::SkaleBaseSepoliaTestnet.index()), + ("cronos", NamedChain::Cronos.index()), + ("arc-testnet", NamedChain::ArcTestnet.index()), + ("acala", NamedChain::Acala.index()), + ("abstract", NamedChain::Abstract.index()), + ("kaia", NamedChain::Kaia.index()), + ("syndr-sepolia", NamedChain::SyndrSepolia.index()), + ("dev", NamedChain::Dev.index()), + ("mantle-sepolia", NamedChain::MantleSepolia.index()), + ("radius-testnet", NamedChain::RadiusTestnet.index()), + ("injective", NamedChain::Injective.index()), + ("mainnet", NamedChain::Mainnet.index()), ("treasure-topaz-testnet", NamedChain::TreasureTopaz.index()), - ("mode-sepolia", NamedChain::ModeSepolia.index()), + ("merlin", NamedChain::Merlin.index()), + ("evmos-testnet", NamedChain::EvmosTestnet.index()), + ("pulsechain-testnet", NamedChain::PulsechainTestnet.index()), + ("fraxtal", NamedChain::Fraxtal.index()), + ("zeta", NamedChain::Zeta.index()), + ("berachain", NamedChain::Berachain.index()), + ("canto-testnet", NamedChain::CantoTestnet.index()), + ("zora-sepolia", NamedChain::ZoraSepolia.index()), + ("apechain-testnet", NamedChain::Curtis.index()), + ("fluent-devnet", NamedChain::FluentDevnet.index()), + ("blast", NamedChain::Blast.index()), + ("base-goerli", NamedChain::BaseGoerli.index()), + ("monad-testnet", NamedChain::MonadTestnet.index()), + ("moonbeam-dev", NamedChain::MoonbeamDev.index()), + ("ronin-testnet", NamedChain::RoninTestnet.index()), + ("chiado", NamedChain::Chiado.index()), + ("formicarium", NamedChain::Formicarium.index()), + ("zksync-testnet", NamedChain::ZkSyncTestnet.index()), + ("kusama", NamedChain::Kusama.index()), + ("memecore-insectarium", NamedChain::Insectarium.index()), + ("etherlink", NamedChain::Etherlink.index()), + ("treasure-topaz", NamedChain::TreasureTopaz.index()), + ("fuse", NamedChain::Fuse.index()), + ("fraxtal-testnet", NamedChain::FraxtalTestnet.index()), + ("unichain-sepolia", NamedChain::UnichainSepolia.index()), + ("ink", NamedChain::Ink.index()), + ("iotex", NamedChain::Iotex.index()), + ("hoodi", NamedChain::Hoodi.index()), + ("mode", NamedChain::Mode.index()), + ("linea", NamedChain::Linea.index()), + ("redbelly-testnet", NamedChain::RedbellyTestnet.index()), + ("odyssey", NamedChain::Odyssey.index()), + ("moonriver", NamedChain::Moonriver.index()), + ("cfx", NamedChain::Cfx.index()), + ("anvil", NamedChain::AnvilHardhat.index()), + ("bnb-smart-chain", NamedChain::BinanceSmartChain.index()), + ("koi", NamedChain::Koi.index()), + ("immutable-testnet", NamedChain::ImmutableTestnet.index()), + ("soneium-minato-testnet", NamedChain::SoneiumMinatoTestnet.index()), + ("grav", NamedChain::Gravity.index()), + ("fantom", NamedChain::Fantom.index()), + ("world-sepolia", NamedChain::WorldSepolia.index()), + ("moonbeam", NamedChain::Moonbeam.index()), + ("evmos", NamedChain::Evmos.index()), + ("goerli", NamedChain::Goerli.index()), + ("treasure", NamedChain::Treasure.index()), + ("polkadot-testnet", NamedChain::PolkadotTestnet.index()), + ("acala-testnet", NamedChain::AcalaTestnet.index()), + ("sophon-testnet", NamedChain::SophonTestnet.index()), + ("bitlayer", NamedChain::Bitlayer.index()), + ("ropsten", NamedChain::Ropsten.index()), + ("apechain", NamedChain::ApeChain.index()), + ("elastos", NamedChain::Elastos.index()), + ("plasma", NamedChain::Plasma.index()), + ("insectarium", NamedChain::Insectarium.index()), ("moonbase", NamedChain::Moonbase.index()), - ("karura", NamedChain::Karura.index()), + ("soneium", NamedChain::Soneium.index()), + ("signet-pecorino", NamedChain::SignetPecorino.index()), + ("gravity-alpha-testnet-sepolia", NamedChain::GravityAlphaTestnetSepolia.index()), + ("flare", NamedChain::Flare.index()), + ("lens", NamedChain::Lens.index()), + ("etherlink-shadownet", NamedChain::EtherlinkShadownet.index()), + ("arbitrum", NamedChain::Arbitrum.index()), ], }; #[cfg(feature = "serde")] static SERDE_NAMES: phf::Map<&'static str, ChainIndex> = ::phf::Map { key: 16287231350648472473, disps: &[ - (0, 7), - (0, 18), - (0, 9), - (0, 17), - (0, 1), - (0, 22), - (0, 4), + (0, 2), (0, 0), - (0, 13), - (0, 17), + (0, 22), + (0, 5), + (0, 37), + (0, 77), + (0, 1), (0, 0), + (0, 11), + (0, 3), + (0, 55), (0, 0), - (0, 76), + (0, 7), + (0, 1), (0, 0), - (1, 0), (0, 2), - (0, 3), + (1, 55), + (1, 0), + (0, 42), (0, 1), - (0, 7), - (0, 13), - (0, 4), - (1, 52), - (0, 2), - (0, 4), - (0, 84), - (0, 8), - (0, 16), - (0, 6), - (1, 17), - (0, 16), - (0, 3), - (0, 0), - (0, 100), - (0, 6), - (0, 29), - (0, 26), - (0, 0), - (0, 104), - (0, 38), + (0, 1), + (0, 11), + (0, 1), + (0, 1), + (1, 95), + (0, 9), + (0, 89), + (3, 73), + (0, 17), + (0, 23), + (0, 5), + (0, 14), + (0, 34), + (1, 6), + (0, 92), + (0, 61), + (0, 18), + (0, 14), + (2, 56), ], entries: &[ - ("ink_sepolia_testnet", NamedChain::InkSepolia.index()), - ("skale_base_sepolia_testnet", NamedChain::SkaleBaseSepoliaTestnet.index()), - ("telos_evm_testnet", NamedChain::TelosEvmTestnet.index()), - ("arbitrum_nova", NamedChain::ArbitrumNova.index()), - ("mantle_sepolia", NamedChain::MantleSepolia.index()), - ("ink_sepolia", NamedChain::InkSepolia.index()), - ("optimism_kovan", NamedChain::OptimismKovan.index()), - ("arbitrum-one", NamedChain::Arbitrum.index()), - ("sonic_testnet", NamedChain::SonicTestnet.index()), - ("bsc_testnet", NamedChain::BinanceSmartChainTestnet.index()), - ("fraxtal_testnet", NamedChain::FraxtalTestnet.index()), - ("fluent_testnet", NamedChain::FluentTestnet.index()), - ("arbitrum_testnet", NamedChain::ArbitrumTestnet.index()), - ("gravity_alpha_testnet_sepolia", NamedChain::GravityAlphaTestnetSepolia.index()), - ("formicairum", NamedChain::Formicarium.index()), - ("arc_testnet", NamedChain::ArcTestnet.index()), ("meme_core", NamedChain::MemeCore.index()), - ("berachain_bepolia", NamedChain::BerachainBepolia.index()), - ("battlechain_testnet", NamedChain::BattleChainTestnet.index()), - ("aurora_testnet", NamedChain::AuroraTestnet.index()), + ("plume_testnet", NamedChain::PlumeTestnet.index()), + ("happychain_testnet", NamedChain::HappychainTestnet.index()), ("celo_sepolia", NamedChain::CeloSepolia.index()), + ("telos_testnet", NamedChain::TelosEvmTestnet.index()), + ("taiko_hekla", NamedChain::TaikoHekla.index()), + ("karura_testnet", NamedChain::KaruraTestnet.index()), ("zk_sync", NamedChain::ZkSync.index()), - ("acala_mandala_testnet", NamedChain::AcalaMandalaTestnet.index()), - ("syndr_sepolia", NamedChain::SyndrSepolia.index()), - ("opbnb_mainnet", NamedChain::OpBNBMainnet.index()), - ("megaeth_testnet", NamedChain::MegaEthTestnet.index()), - ("sei_testnet", NamedChain::SeiTestnet.index()), - ("zora_sepolia", NamedChain::ZoraSepolia.index()), - ("arbitrum_goerli", NamedChain::ArbitrumGoerli.index()), - ("stable_testnet", NamedChain::StableTestnet.index()), - ("pulsechain_testnet", NamedChain::PulsechainTestnet.index()), - ("tempo_moderato", NamedChain::TempoModerato.index()), - ("linea_sepolia", NamedChain::LineaSepolia.index()), - ("filecoin_calibration_testnet", NamedChain::FilecoinCalibrationTestnet.index()), - ("xdc_mainnet", NamedChain::XdcMainnet.index()), - ("op-bnb-testnet", NamedChain::OpBNBTestnet.index()), - ("tempo_testnet", NamedChain::TempoTestnet.index()), - ("fantom_testnet", NamedChain::FantomTestnet.index()), - ("plume_testnet", NamedChain::PlumeTestnet.index()), - ("ronin_testnet", NamedChain::RoninTestnet.index()), - ("ape_chain", NamedChain::ApeChain.index()), - ("scroll_sepolia", NamedChain::ScrollSepolia.index()), - ("pgn_sepolia", NamedChain::PgnSepolia.index()), - ("soneium_minato_testnet", NamedChain::SoneiumMinatoTestnet.index()), - ("binance_smart_chain", NamedChain::BinanceSmartChain.index()), - ("xai_sepolia", NamedChain::XaiSepolia.index()), - ("skale_base", NamedChain::SkaleBase.index()), - ("plasma_testnet", NamedChain::PlasmaTestnet.index()), + ("polygon_amoy", NamedChain::PolygonAmoy.index()), + ("base_goerli", NamedChain::BaseGoerli.index()), + ("pharos_testnet", NamedChain::PharosTestnet.index()), + ("rsk_testnet", NamedChain::RskTestnet.index()), + ("moonbeam_dev", NamedChain::MoonbeamDev.index()), + ("sophon_testnet", NamedChain::SophonTestnet.index()), ("stable_mainnet", NamedChain::StableMainnet.index()), - ("canto_testnet", NamedChain::CantoTestnet.index()), + ("battle_chain", NamedChain::BattleChain.index()), + ("superposition_testnet", NamedChain::SuperpositionTestnet.index()), + ("sonic_testnet", NamedChain::SonicTestnet.index()), + ("telos_evm", NamedChain::TelosEvm.index()), ("unichain_sepolia", NamedChain::UnichainSepolia.index()), - ("zksync_testnet", NamedChain::ZkSyncTestnet.index()), - ("bob_sepolia", NamedChain::BobSepolia.index()), - ("lens_testnet", NamedChain::LensTestnet.index()), - ("treasure_topaz", NamedChain::TreasureTopaz.index()), - ("evmos_testnet", NamedChain::EvmosTestnet.index()), - ("robinhood_testnet", NamedChain::RobinhoodTestnet.index()), - ("base_sepolia", NamedChain::BaseSepolia.index()), - ("binance_smart_chain_testnet", NamedChain::BinanceSmartChainTestnet.index()), - ("worldchain-sepolia", NamedChain::WorldSepolia.index()), - ("autonomys_nova_testnet", NamedChain::AutonomysNovaTestnet.index()), - ("optimism_sepolia", NamedChain::OptimismSepolia.index()), - ("corn_testnet", NamedChain::CornTestnet.index()), - ("zk_sync_testnet", NamedChain::ZkSyncTestnet.index()), + ("mega_eth", NamedChain::MegaEth.index()), + ("telos_evm_testnet", NamedChain::TelosEvmTestnet.index()), + ("formicairum", NamedChain::Formicarium.index()), + ("soneium_minato_testnet", NamedChain::SoneiumMinatoTestnet.index()), + ("world_sepolia", NamedChain::WorldSepolia.index()), + ("abstract_testnet", NamedChain::AbstractTestnet.index()), + ("aurora_testnet", NamedChain::AuroraTestnet.index()), + ("skale_base", NamedChain::SkaleBase.index()), ("linea_goerli", NamedChain::LineaGoerli.index()), - ("superposition_testnet", NamedChain::SuperpositionTestnet.index()), - ("etherlink_shadownet", NamedChain::EtherlinkShadownet.index()), + ("ronin_testnet", NamedChain::RoninTestnet.index()), + ("tempo_testnet", NamedChain::TempoTestnet.index()), + ("ink_sepolia", NamedChain::InkSepolia.index()), + ("stable_testnet", NamedChain::StableTestnet.index()), ("blast_sepolia", NamedChain::BlastSepolia.index()), - ("base_goerli", NamedChain::BaseGoerli.index()), - ("abstract_testnet", NamedChain::AbstractTestnet.index()), - ("fluent_devnet", NamedChain::FluentDevnet.index()), + ("conflux-espace", NamedChain::Cfx.index()), + ("mantle_sepolia", NamedChain::MantleSepolia.index()), + ("optimism_kovan", NamedChain::OptimismKovan.index()), + ("radius_testnet", NamedChain::RadiusTestnet.index()), + ("battlechain_testnet", NamedChain::BattleChainTestnet.index()), + ("arbitrum_testnet", NamedChain::ArbitrumTestnet.index()), + ("skale_base_sepolia_testnet", NamedChain::SkaleBaseSepoliaTestnet.index()), ("gravity", NamedChain::Gravity.index()), - ("acala_testnet", NamedChain::AcalaTestnet.index()), - ("filecoin_mainnet", NamedChain::FilecoinMainnet.index()), - ("telos-evm-testnet", NamedChain::TelosEvmTestnet.index()), - ("opbnb_testnet", NamedChain::OpBNBTestnet.index()), - ("flare_coston2", NamedChain::FlareCoston2.index()), - ("monad_testnet", NamedChain::MonadTestnet.index()), - ("moonbeam_dev", NamedChain::MoonbeamDev.index()), - ("telos_testnet", NamedChain::TelosEvmTestnet.index()), + ("worldchain-sepolia", NamedChain::WorldSepolia.index()), ("optimism_goerli", NamedChain::OptimismGoerli.index()), - ("xdc_testnet", NamedChain::XdcTestnet.index()), - ("arbitrum_sepolia", NamedChain::ArbitrumSepolia.index()), + ("mega_eth_testnet", NamedChain::MegaEthTestnet.index()), + ("binance_smart_chain", NamedChain::BinanceSmartChain.index()), ("scroll_sepolia_testnet", NamedChain::ScrollSepolia.index()), + ("xdc_mainnet", NamedChain::XdcMainnet.index()), + ("pulsechain_testnet", NamedChain::PulsechainTestnet.index()), + ("arbitrum-one", NamedChain::Arbitrum.index()), ("conflux-espace-testnet", NamedChain::CfxTestnet.index()), - ("worldchain", NamedChain::World.index()), - ("happychain_testnet", NamedChain::HappychainTestnet.index()), - ("op-bnb-mainnet", NamedChain::OpBNBMainnet.index()), - ("sophon_testnet", NamedChain::SophonTestnet.index()), - ("mega_eth", NamedChain::MegaEth.index()), - ("anvil_hardhat", NamedChain::AnvilHardhat.index()), - ("emerald_testnet", NamedChain::EmeraldTestnet.index()), - ("world_sepolia", NamedChain::WorldSepolia.index()), - ("rsk_testnet", NamedChain::RskTestnet.index()), - ("telos_evm", NamedChain::TelosEvm.index()), - ("mode_sepolia", NamedChain::ModeSepolia.index()), ("cronos_testnet", NamedChain::CronosTestnet.index()), - ("signet_pecorino", NamedChain::SignetPecorino.index()), + ("zk_sync_testnet", NamedChain::ZkSyncTestnet.index()), + ("tempo_moderato", NamedChain::TempoModerato.index()), + ("gravity_alpha_testnet_sepolia", NamedChain::GravityAlphaTestnetSepolia.index()), + ("acala_mandala_testnet", NamedChain::AcalaMandalaTestnet.index()), + ("zora_sepolia", NamedChain::ZoraSepolia.index()), + ("emerald_testnet", NamedChain::EmeraldTestnet.index()), + ("fluent_devnet", NamedChain::FluentDevnet.index()), + ("megaeth_testnet", NamedChain::MegaEthTestnet.index()), + ("arc_testnet", NamedChain::ArcTestnet.index()), + ("robinhood_testnet", NamedChain::RobinhoodTestnet.index()), + ("optimism_sepolia", NamedChain::OptimismSepolia.index()), + ("base_sepolia", NamedChain::BaseSepolia.index()), + ("linea_sepolia", NamedChain::LineaSepolia.index()), + ("polkadot_testnet", NamedChain::PolkadotTestnet.index()), + ("xai_sepolia", NamedChain::XaiSepolia.index()), + ("scroll_sepolia", NamedChain::ScrollSepolia.index()), + ("op-bnb-mainnet", NamedChain::OpBNBMainnet.index()), + ("immutable_testnet", NamedChain::ImmutableTestnet.index()), + ("syndr_sepolia", NamedChain::SyndrSepolia.index()), ("avalanche_fuji", NamedChain::AvalancheFuji.index()), - ("polygon_amoy", NamedChain::PolygonAmoy.index()), + ("acala_testnet", NamedChain::AcalaTestnet.index()), + ("etherlink_shadownet", NamedChain::EtherlinkShadownet.index()), ("gravity_alpha_mainnet", NamedChain::GravityAlphaMainnet.index()), - ("karura_testnet", NamedChain::KaruraTestnet.index()), - ("redbelly_testnet", NamedChain::RedbellyTestnet.index()), + ("treasure_topaz", NamedChain::TreasureTopaz.index()), + ("mode_sepolia", NamedChain::ModeSepolia.index()), + ("ink_sepolia_testnet", NamedChain::InkSepolia.index()), ("battle_chain_testnet", NamedChain::BattleChainTestnet.index()), - ("mega_eth_testnet", NamedChain::MegaEthTestnet.index()), + ("autonomys_nova_testnet", NamedChain::AutonomysNovaTestnet.index()), + ("flare_coston2", NamedChain::FlareCoston2.index()), + ("bsc_testnet", NamedChain::BinanceSmartChainTestnet.index()), + ("injective_testnet", NamedChain::InjectiveTestnet.index()), + ("pgn_sepolia", NamedChain::PgnSepolia.index()), + ("plasma_testnet", NamedChain::PlasmaTestnet.index()), + ("worldchain", NamedChain::World.index()), + ("berachain_bepolia", NamedChain::BerachainBepolia.index()), + ("binance_smart_chain_testnet", NamedChain::BinanceSmartChainTestnet.index()), + ("filecoin_calibration_testnet", NamedChain::FilecoinCalibrationTestnet.index()), + ("fluent_testnet", NamedChain::FluentTestnet.index()), + ("arbitrum_nova", NamedChain::ArbitrumNova.index()), + ("zksync_testnet", NamedChain::ZkSyncTestnet.index()), + ("bob_sepolia", NamedChain::BobSepolia.index()), ("arbitrum_one", NamedChain::Arbitrum.index()), - ("immutable_testnet", NamedChain::ImmutableTestnet.index()), - ("battle_chain", NamedChain::BattleChain.index()), + ("evmos_testnet", NamedChain::EvmosTestnet.index()), + ("op-bnb-testnet", NamedChain::OpBNBTestnet.index()), + ("arbitrum_sepolia", NamedChain::ArbitrumSepolia.index()), + ("signet_pecorino", NamedChain::SignetPecorino.index()), + ("monad_testnet", NamedChain::MonadTestnet.index()), + ("xdc_testnet", NamedChain::XdcTestnet.index()), + ("opbnb_testnet", NamedChain::OpBNBTestnet.index()), + ("telos-evm-testnet", NamedChain::TelosEvmTestnet.index()), ("cfx_testnet", NamedChain::CfxTestnet.index()), + ("ape_chain", NamedChain::ApeChain.index()), ("tempo_devnet", NamedChain::TempoDevnet.index()), - ("radius_testnet", NamedChain::RadiusTestnet.index()), - ("polkadot_testnet", NamedChain::PolkadotTestnet.index()), - ("taiko_hekla", NamedChain::TaikoHekla.index()), - ("injective_testnet", NamedChain::InjectiveTestnet.index()), - ("conflux-espace", NamedChain::Cfx.index()), + ("opbnb_mainnet", NamedChain::OpBNBMainnet.index()), + ("redbelly_testnet", NamedChain::RedbellyTestnet.index()), + ("canto_testnet", NamedChain::CantoTestnet.index()), + ("anvil_hardhat", NamedChain::AnvilHardhat.index()), + ("filecoin_mainnet", NamedChain::FilecoinMainnet.index()), + ("lens_testnet", NamedChain::LensTestnet.index()), + ("fantom_testnet", NamedChain::FantomTestnet.index()), + ("fraxtal_testnet", NamedChain::FraxtalTestnet.index()), + ("sei_testnet", NamedChain::SeiTestnet.index()), + ("corn_testnet", NamedChain::CornTestnet.index()), + ("arbitrum_goerli", NamedChain::ArbitrumGoerli.index()), ], }; From fc30c42534b81c9c152c93bfad47a34ce2c16e75 Mon Sep 17 00:00:00 2001 From: DaniPopes <57450786+DaniPopes@users.noreply.github.com> Date: Mon, 13 Jul 2026 22:04:27 +0200 Subject: [PATCH 2/5] chore: update generated code --- assets/chains.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/assets/chains.json b/assets/chains.json index afaabfa..424b8e7 100644 --- a/assets/chains.json +++ b/assets/chains.json @@ -957,7 +957,7 @@ "isTestnet": false, "nativeCurrencySymbol": "PROS", "etherscanApiUrl": null, - "etherscanBaseUrl": null, + "etherscanBaseUrl": "https://pharosscan.xyz", "etherscanApiKeyName": null }, "1776": { @@ -2109,7 +2109,7 @@ "isTestnet": true, "nativeCurrencySymbol": "PHRS", "etherscanApiUrl": null, - "etherscanBaseUrl": null, + "etherscanBaseUrl": "https://testnet.pharosscan.xyz", "etherscanApiKeyName": null }, "723487": { From 313579ed261fa130ec27de1b1c4e0f70634791e7 Mon Sep 17 00:00:00 2001 From: DaniPopes <57450786+DaniPopes@users.noreply.github.com> Date: Mon, 13 Jul 2026 22:27:37 +0200 Subject: [PATCH 3/5] fix: remove unsupported Pharos explorers The explorer base URLs do not have corresponding Etherscan-compatible API endpoints. Removing them keeps the generated registry and all-features chain specification in sync. --- assets/chains.json | 4 +- registry/manual.json | 6 +- src/generated/named.rs | 214 ++++++++++++++++++++--------------------- 3 files changed, 110 insertions(+), 114 deletions(-) diff --git a/assets/chains.json b/assets/chains.json index 424b8e7..afaabfa 100644 --- a/assets/chains.json +++ b/assets/chains.json @@ -957,7 +957,7 @@ "isTestnet": false, "nativeCurrencySymbol": "PROS", "etherscanApiUrl": null, - "etherscanBaseUrl": "https://pharosscan.xyz", + "etherscanBaseUrl": null, "etherscanApiKeyName": null }, "1776": { @@ -2109,7 +2109,7 @@ "isTestnet": true, "nativeCurrencySymbol": "PHRS", "etherscanApiUrl": null, - "etherscanBaseUrl": "https://testnet.pharosscan.xyz", + "etherscanBaseUrl": null, "etherscanApiKeyName": null }, "723487": { diff --git a/registry/manual.json b/registry/manual.json index 5a00317..a058ea5 100644 --- a/registry/manual.json +++ b/registry/manual.json @@ -2449,8 +2449,7 @@ "name": "pharos", "averageBlocktimeHint": 1000, "supportsShanghai": true, - "nativeCurrencySymbol": "PROS", - "etherscanBaseUrl": "https://pharosscan.xyz" + "nativeCurrencySymbol": "PROS" }, { "chainId": 688688, @@ -2459,8 +2458,7 @@ "averageBlocktimeHint": 1000, "supportsShanghai": true, "isTestnet": true, - "nativeCurrencySymbol": "PHRS", - "etherscanBaseUrl": "https://testnet.pharosscan.xyz" + "nativeCurrencySymbol": "PHRS" } ] } diff --git a/src/generated/named.rs b/src/generated/named.rs index 2dc2677..74af705 100644 --- a/src/generated/named.rs +++ b/src/generated/named.rs @@ -1553,7 +1553,7 @@ static ETHERSCAN_API_URLS: [&str; 161] = [ "https://api.etherscan.io/v2/api?chainid=37714555429", ]; -static ETHERSCAN_BASE_URLS: [&str; 165] = [ +static ETHERSCAN_BASE_URLS: [&str; 163] = [ "https://etherscan.io", "https://optimistic.etherscan.io", "https://flare-explorer.flare.network", @@ -1614,7 +1614,6 @@ static ETHERSCAN_BASE_URLS: [&str; 165] = [ "https://vanascan.io", "https://www.storyscan.xyz", "https://explorer.gravity.xyz", - "https://pharosscan.xyz", "https://blockscout.injective.network", "https://soneium.blockscout.com", "https://soneium-minato.blockscout.com", @@ -1694,7 +1693,6 @@ static ETHERSCAN_BASE_URLS: [&str; 165] = [ "https://scrollscan.com", "https://hoodi.etherscan.io", "https://xaiscan.io", - "https://testnet.pharosscan.xyz", "https://network.radiustech.xyz", "https://katanascan.com", "https://explorer-sepolia.inkonchain.com", @@ -1888,128 +1886,128 @@ static CHAIN_DATA: [ChainData; 201] = { d(76, 30, 57, 57, 1, 6000, 0, 13), d(77, 31, 58, 58, 1, 2500, 0, 14), d(78, 32, 59, 59, N, 260, S, W), - d(79, 33, N, 60, N, 1000, S, W), - d(80, 29, 60, 61, 1, 700, S, W), - d(81, N, 61, 62, 1, 2000, S | O, W), - d(82, N, 62, 63, 1, 2000, S | T | O, W), - d(83, 34, 63, 64, N, 3000, 0, W), - d(84, 22, 64, 65, 0, 700, S | T, W), - d(85, N, 65, 66, 0, 2000, S | T | O, W), - d(86, 0, 66, 67, 0, 1000, X, 15), + d(79, 33, N, N, N, 1000, S, W), + d(80, 29, 60, 60, 1, 700, S, W), + d(81, N, 61, 61, 1, 2000, S | O, W), + d(82, N, 62, 62, 1, 2000, S | T | O, W), + d(83, 34, 63, 63, N, 3000, 0, W), + d(84, 22, 64, 64, 0, 700, S | T, W), + d(85, N, 65, 65, 0, 2000, S | T | O, W), + d(86, 0, 66, 66, 0, 1000, X, 15), d(87, N, N, N, 3, 1200, L | T, W), - d(88, 35, 67, 68, 7, 3000, 0, 16), - d(89, 36, 68, 69, N, 500, S | TP, W), - d(90, 0, 69, 70, 0, 1000, S, W), - d(91, 37, 70, 71, 0, 7000, S, 17), - d(92, 0, 71, 72, N, 400, S | A, W), + d(88, 35, 67, 67, 7, 3000, 0, 16), + d(89, 36, 68, 68, N, 500, S | TP, W), + d(90, 0, 69, 69, 0, 1000, S, W), + d(91, 37, 70, 70, 0, 7000, S, 17), + d(92, 0, 71, 71, N, 400, S | A, W), d(93, 38, N, N, N, 5000, S, 18), - d(94, 20, 72, 73, 1, 2000, S | T | O, W), - d(95, 39, 73, 74, 0, 2000, S, 19), - d(96, 39, 74, 75, 0, 2000, S | T, W), - d(97, 9, 75, 76, 0, 1000, S | T | O, W), - d(98, 0, 76, 77, 0, 1000, S | T, W), - d(99, 40, 77, 78, 8, 6000, 0, 20), + d(94, 20, 72, 72, 1, 2000, S | T | O, W), + d(95, 39, 73, 73, 0, 2000, S, 19), + d(96, 39, 74, 74, 0, 2000, S | T, W), + d(97, 9, 75, 75, 0, 1000, S | T | O, W), + d(98, 0, 76, 76, 0, 1000, S | T, W), + d(99, 40, 77, 77, 8, 6000, 0, 20), d(100, N, N, N, 1, 5700, 0, W), - d(101, 41, 78, 79, 9, 1000, 0, 21), - d(102, 0, 79, 80, 0, 2000, S | O, 1), + d(101, 41, 78, 78, 9, 1000, 0, 21), + d(102, 0, 79, 79, 0, 2000, S | O, 1), d(103, N, N, N, N, 1900, T, W), d(104, N, N, N, N, 1900, 0, W), - d(105, 42, 80, 81, 0, 1000, 0, W), - d(106, 42, 81, 82, 0, 1000, T, W), - d(107, 13, 82, 83, 0, 400, S | T, W), - d(108, N, 83, 84, N, 5000, S, W), - d(109, N, 84, 85, 0, 1000, T | X, W), + d(105, 42, 80, 80, 0, 1000, 0, W), + d(106, 42, 81, 81, 0, 1000, T, W), + d(107, 13, 82, 82, 0, 400, S | T, W), + d(108, N, 83, 83, N, 5000, S, W), + d(109, N, 84, 84, 0, 1000, T | X, W), d(110, N, N, N, N, 0, S | T, W), - d(111, 43, 85, 86, 1, 2000, S, W), - d(112, 44, 86, 87, 1, 2000, S | T, W), - d(113, 32, 87, 88, N, 260, S | T, W), - d(114, 45, 88, 89, 1, 12000, S | T, W), - d(115, 14, 89, 90, 0, 1000, T, W), - d(116, 0, 90, 91, 0, 0, S | T | E, W), - d(117, N, 91, 92, N, 3000, S | T, W), - d(118, N, 92, 93, N, 1000, S | T, W), - d(119, N, 93, 94, N, 1000, 0, W), + d(111, 43, 85, 85, 1, 2000, S, W), + d(112, 44, 86, 86, 1, 2000, S | T, W), + d(113, 32, 87, 87, N, 260, S | T, W), + d(114, 45, 88, 88, 1, 12000, S | T, W), + d(115, 14, 89, 89, 0, 1000, T, W), + d(116, 0, 90, 90, 0, 0, S | T | E, W), + d(117, N, 91, 91, N, 3000, S | T, W), + d(118, N, 92, 92, N, 1000, S | T, W), + d(119, N, 93, 93, N, 1000, 0, W), d(120, N, N, N, N, 5500, 0, W), d(121, 36, N, N, N, 500, S | T | TP, W), d(122, N, N, N, N, 200, S | T, W), - d(123, 46, 94, 95, 1, 260, S | T, W), - d(124, 46, 95, 96, 0, 260, S, 22), - d(125, N, 96, 97, 1, 2000, S | O, W), - d(126, 47, 97, 98, N, 1000, T | X, W), - d(127, 0, 98, 99, 0, 260, S | A, 23), - d(128, 0, 99, 100, 0, 260, S | A, W), - d(129, 48, 100, 101, 0, 1000, S | O, W), - d(130, N, 101, 102, N, 0, L | T, W), - d(131, N, 102, 103, N, 6000, L, W), - d(132, 36, 68, 104, N, 500, S | T | TP, W), - d(133, 36, 68, 105, N, 500, S | T | TP, W), - d(134, 49, 103, 106, 1, 5000, S, W), - d(135, N, 104, 107, 0, 2000, S | T, W), - d(136, N, 105, 108, 0, 2000, S, 24), - d(137, 50, 106, 109, 0, 7000, S | T, 17), - d(138, 50, 107, 110, N, 7000, S | T, 17), - d(139, 0, 108, 111, N, 400, S | T | A, W), - d(140, 51, 109, 112, 0, 1000, L | X, 25), - d(141, 0, 110, 113, 1, 260, S, 26), - d(142, 0, 111, 114, 1, 1000, S | O, W), + d(123, 46, 94, 94, 1, 260, S | T, W), + d(124, 46, 95, 95, 0, 260, S, 22), + d(125, N, 96, 96, 1, 2000, S | O, W), + d(126, 47, 97, 97, N, 1000, T | X, W), + d(127, 0, 98, 98, 0, 260, S | A, 23), + d(128, 0, 99, 99, 0, 260, S | A, W), + d(129, 48, 100, 100, 0, 1000, S | O, W), + d(130, N, 101, 101, N, 0, L | T, W), + d(131, N, 102, 102, N, 6000, L, W), + d(132, 36, 68, 103, N, 500, S | T | TP, W), + d(133, 36, 68, 104, N, 500, S | T | TP, W), + d(134, 49, 103, 105, 1, 5000, S, W), + d(135, N, 104, 106, 0, 2000, S | T, W), + d(136, N, 105, 107, 0, 2000, S, 24), + d(137, 50, 106, 108, 0, 7000, S | T, 17), + d(138, 50, 107, 109, N, 7000, S | T, 17), + d(139, 0, 108, 110, N, 400, S | T | A, W), + d(140, 51, 109, 111, 0, 1000, L | X, 25), + d(141, 0, 110, 112, 1, 260, S, 26), + d(142, 0, 111, 113, 1, 1000, S | O, W), d(143, N, N, N, 1, 2000, T | O, W), d(144, N, N, N, N, 2000, T, W), - d(145, N, 112, 115, 0, 2000, T, W), - d(146, 0, 113, 116, 0, 2000, S, 27), - d(147, 0, 114, 117, N, 2000, S, W), + d(145, N, 112, 114, 0, 2000, T, W), + d(146, 0, 113, 115, 0, 2000, S, 27), + d(147, 0, 114, 116, N, 2000, S, W), d(148, 52, N, N, N, 0, L, 28), - d(149, 53, 115, 118, N, 500, S | T, W), - d(150, 12, 116, 119, 0, 2100, T, W), - d(151, 54, 117, 120, 10, 2000, S | T, W), - d(152, 54, 118, 121, 10, 2000, S, 29), - d(153, N, 119, 122, 0, 2000, S, 30), + d(149, 53, 115, 117, N, 500, S | T, W), + d(150, 12, 116, 118, 0, 2100, T, W), + d(151, 54, 117, 119, 10, 2000, S | T, W), + d(152, 54, 118, 120, 10, 2000, S, 29), + d(153, N, 119, 121, 0, 2000, S, 30), d(154, 0, N, N, 0, 2000, S | T | O, W), - d(155, 0, 120, 123, 0, 2000, S | T | O, W), - d(156, 55, 121, 124, N, 260, S, W), - d(157, 55, 122, 125, N, 260, S | T, W), - d(158, 0, 123, 126, 1, 260, S | T, W), - d(159, 32, 124, 127, N, 260, S, W), - d(160, 49, 125, 128, 1, 5000, S | T, W), - d(161, 0, 126, 129, 0, 12000, S, 31), - d(162, 0, 127, 130, 0, 12000, S | T, W), - d(163, 35, 128, 131, 11, 3000, 0, 32), - d(164, 34, 129, 132, N, 3000, T, W), - d(165, N, 130, 133, N, 30000, T, W), + d(155, 0, 120, 122, 0, 2000, S | T | O, W), + d(156, 55, 121, 123, N, 260, S, W), + d(157, 55, 122, 124, N, 260, S | T, W), + d(158, 0, 123, 125, 1, 260, S | T, W), + d(159, 32, 124, 126, N, 260, S, W), + d(160, 49, 125, 127, 1, 5000, S | T, W), + d(161, 0, 126, 128, 0, 12000, S, 31), + d(162, 0, 127, 129, 0, 12000, S | T, W), + d(163, 35, 128, 130, 11, 3000, 0, 32), + d(164, 34, 129, 131, N, 3000, T, W), + d(165, N, 130, 132, N, 30000, T, W), d(166, N, N, N, 0, 260, T | A, W), d(167, N, N, N, 0, 260, T | A, W), - d(168, N, 131, 134, 0, 260, S | T | A, W), - d(169, N, 132, 135, 0, 260, S | T, W), + d(168, N, 131, 133, 0, 260, S | T | A, W), + d(169, N, 132, 134, 0, 260, S | T, W), d(170, N, N, N, N, 1000, S | T, W), - d(171, 0, 133, 136, 0, 3000, S | T, W), - d(172, 0, 134, 137, 0, 3000, S, 33), - d(173, N, 135, 138, 0, 0, S | T, W), - d(174, 56, 136, 139, 0, 260, S, W), - d(175, 57, N, 140, N, 1000, S | T, W), - d(176, 53, 137, 141, N, 500, S, W), - d(177, 0, 138, 142, 0, 1000, S | O, W), - d(178, N, 139, 143, 1, 1000, S | T | O, W), - d(179, N, 140, 144, N, 2000, S | T, W), - d(180, N, 141, 145, N, 1000, S | T | O, W), + d(171, 0, 133, 135, 0, 3000, S | T, W), + d(172, 0, 134, 136, 0, 3000, S, 33), + d(173, N, 135, 137, 0, 0, S | T, W), + d(174, 56, 136, 138, 0, 260, S, W), + d(175, 57, N, N, N, 1000, S | T, W), + d(176, 53, 137, 139, N, 500, S, W), + d(177, 0, 138, 140, 0, 1000, S | O, W), + d(178, N, 139, 141, 1, 1000, S | T | O, W), + d(179, N, 140, 142, N, 2000, S | T, W), + d(180, N, 141, 143, N, 1000, S | T | O, W), d(181, 52, N, N, N, 0, L | T, W), - d(182, 58, 142, 146, 1, 500, S | T, W), - d(183, N, 143, 147, 1, 2000, O, W), - d(184, 48, 144, 148, 1, 1000, S | T, W), - d(185, 0, 145, 149, 0, 0, S | T | E, W), - d(186, 0, 146, 150, 0, 2000, S | T | O, W), - d(187, 59, 147, 151, 2, 0, S, W), - d(188, 59, 148, 152, 2, 0, S | T, W), - d(189, N, 149, 153, 0, 2000, S | T | O, W), - d(190, N, 150, 154, 1, 1000, T, W), - d(191, 60, 151, 155, 1, 2000, S | T, W), - d(192, 61, 152, 156, 1, 2000, S, W), - d(193, 62, 153, 157, 1, 2000, S, W), - d(194, 51, 154, 158, 0, 1000, L | T | X, W), - d(195, 63, 155, 159, N, 600, 0, W), - d(196, N, 156, 160, 1, 2000, S | T | O, W), - d(197, N, 157, 161, 1, 1000, 0, W), - d(198, N, 158, 162, 0, 1100, 0, W), - d(199, N, 159, 163, 0, 1100, T, W), - d(200, 56, 160, 164, 0, 260, S | T, W), + d(182, 58, 142, 144, 1, 500, S | T, W), + d(183, N, 143, 145, 1, 2000, O, W), + d(184, 48, 144, 146, 1, 1000, S | T, W), + d(185, 0, 145, 147, 0, 0, S | T | E, W), + d(186, 0, 146, 148, 0, 2000, S | T | O, W), + d(187, 59, 147, 149, 2, 0, S, W), + d(188, 59, 148, 150, 2, 0, S | T, W), + d(189, N, 149, 151, 0, 2000, S | T | O, W), + d(190, N, 150, 152, 1, 1000, T, W), + d(191, 60, 151, 153, 1, 2000, S | T, W), + d(192, 61, 152, 154, 1, 2000, S, W), + d(193, 62, 153, 155, 1, 2000, S, W), + d(194, 51, 154, 156, 0, 1000, L | T | X, W), + d(195, 63, 155, 157, N, 600, 0, W), + d(196, N, 156, 158, 1, 2000, S | T | O, W), + d(197, N, 157, 159, 1, 1000, 0, W), + d(198, N, 158, 160, 0, 1100, 0, W), + d(199, N, 159, 161, 0, 1100, T, W), + d(200, 56, 160, 162, 0, 260, S | T, W), ] }; From a2e092ed3892885ed35bde4a512a95ca646d08bc Mon Sep 17 00:00:00 2001 From: DaniPopes <57450786+DaniPopes@users.noreply.github.com> Date: Mon, 13 Jul 2026 22:58:34 +0200 Subject: [PATCH 4/5] fix: validate explorer URL pairs Require Etherscan API and base URLs to be defined together so the generated JSON and Rust registry cannot diverge. Add the documented SocialScan endpoints for Pharos mainnet and testnet. --- assets/chains.json | 8 +- registry/manual.json | 8 +- scripts/update-registry.py | 5 + src/generated/named.rs | 218 +++++++++++++++++++------------------ 4 files changed, 126 insertions(+), 113 deletions(-) diff --git a/assets/chains.json b/assets/chains.json index afaabfa..0251194 100644 --- a/assets/chains.json +++ b/assets/chains.json @@ -956,8 +956,8 @@ "supportsShanghai": true, "isTestnet": false, "nativeCurrencySymbol": "PROS", - "etherscanApiUrl": null, - "etherscanBaseUrl": null, + "etherscanApiUrl": "https://api.socialscan.io/pharos-mainnet/v1/explorer/command_api/contract", + "etherscanBaseUrl": "https://pharosscan.xyz", "etherscanApiKeyName": null }, "1776": { @@ -2108,8 +2108,8 @@ "supportsShanghai": true, "isTestnet": true, "nativeCurrencySymbol": "PHRS", - "etherscanApiUrl": null, - "etherscanBaseUrl": null, + "etherscanApiUrl": "https://api.socialscan.io/pharos-testnet/v1/explorer/command_api/contract", + "etherscanBaseUrl": "https://testnet.pharosscan.xyz", "etherscanApiKeyName": null }, "723487": { diff --git a/registry/manual.json b/registry/manual.json index a058ea5..b9caca3 100644 --- a/registry/manual.json +++ b/registry/manual.json @@ -2449,7 +2449,9 @@ "name": "pharos", "averageBlocktimeHint": 1000, "supportsShanghai": true, - "nativeCurrencySymbol": "PROS" + "nativeCurrencySymbol": "PROS", + "etherscanApiUrl": "https://api.socialscan.io/pharos-mainnet/v1/explorer/command_api/contract", + "etherscanBaseUrl": "https://pharosscan.xyz" }, { "chainId": 688688, @@ -2458,7 +2460,9 @@ "averageBlocktimeHint": 1000, "supportsShanghai": true, "isTestnet": true, - "nativeCurrencySymbol": "PHRS" + "nativeCurrencySymbol": "PHRS", + "etherscanApiUrl": "https://api.socialscan.io/pharos-testnet/v1/explorer/command_api/contract", + "etherscanBaseUrl": "https://testnet.pharosscan.xyz" } ] } diff --git a/scripts/update-registry.py b/scripts/update-registry.py index a22dea3..f1c3b41 100755 --- a/scripts/update-registry.py +++ b/scripts/update-registry.py @@ -172,6 +172,11 @@ def validate_chains(chains: list[Chain]) -> None: seen_ids.add(chain.chain_id) seen_variants.add(chain.internal_id) + if (chain.etherscan_api_url is None) != (chain.etherscan_base_url is None): + raise ValueError( + f"Chain {chain.internal_id} must define both etherscanApiUrl and etherscanBaseUrl" + ) + for name in [chain.name, *chain.aliases]: previous = parse_names.setdefault(name, chain.internal_id) if previous != chain.internal_id: diff --git a/src/generated/named.rs b/src/generated/named.rs index 74af705..d8246f6 100644 --- a/src/generated/named.rs +++ b/src/generated/named.rs @@ -1389,7 +1389,7 @@ static NATIVE_CURRENCY_SYMBOLS: [&str; 64] = [ "KSM", "DOT", "DEGEN", ]; -static ETHERSCAN_API_URLS: [&str; 161] = [ +static ETHERSCAN_API_URLS: [&str; 163] = [ "https://api.etherscan.io/v2/api?chainid=1", "https://api.etherscan.io/v2/api?chainid=10", "https://flare-explorer.flare.network/api", @@ -1450,6 +1450,7 @@ static ETHERSCAN_API_URLS: [&str; 161] = [ "https://api.vanascan.io/api", "https://www.storyscan.xyz/api", "https://explorer.gravity.xyz/api", + "https://api.socialscan.io/pharos-mainnet/v1/explorer/command_api/contract", "https://blockscout-api.injective.network/api", "https://soneium.blockscout.com/api", "https://soneium-minato.blockscout.com/api", @@ -1527,6 +1528,7 @@ static ETHERSCAN_API_URLS: [&str; 161] = [ "https://api.etherscan.io/v2/api?chainid=534352", "https://api.etherscan.io/v2/api?chainid=560048", "https://api.etherscan.io/v2/api?chainid=660279", + "https://api.socialscan.io/pharos-testnet/v1/explorer/command_api/contract", "https://network.radiustech.xyz/api", "https://api.etherscan.io/v2/api?chainid=747474", "https://explorer-sepolia.inkonchain.com/api/v2", @@ -1553,7 +1555,7 @@ static ETHERSCAN_API_URLS: [&str; 161] = [ "https://api.etherscan.io/v2/api?chainid=37714555429", ]; -static ETHERSCAN_BASE_URLS: [&str; 163] = [ +static ETHERSCAN_BASE_URLS: [&str; 165] = [ "https://etherscan.io", "https://optimistic.etherscan.io", "https://flare-explorer.flare.network", @@ -1614,6 +1616,7 @@ static ETHERSCAN_BASE_URLS: [&str; 163] = [ "https://vanascan.io", "https://www.storyscan.xyz", "https://explorer.gravity.xyz", + "https://pharosscan.xyz", "https://blockscout.injective.network", "https://soneium.blockscout.com", "https://soneium-minato.blockscout.com", @@ -1693,6 +1696,7 @@ static ETHERSCAN_BASE_URLS: [&str; 163] = [ "https://scrollscan.com", "https://hoodi.etherscan.io", "https://xaiscan.io", + "https://testnet.pharosscan.xyz", "https://network.radiustech.xyz", "https://katanascan.com", "https://explorer-sepolia.inkonchain.com", @@ -1886,128 +1890,128 @@ static CHAIN_DATA: [ChainData; 201] = { d(76, 30, 57, 57, 1, 6000, 0, 13), d(77, 31, 58, 58, 1, 2500, 0, 14), d(78, 32, 59, 59, N, 260, S, W), - d(79, 33, N, N, N, 1000, S, W), - d(80, 29, 60, 60, 1, 700, S, W), - d(81, N, 61, 61, 1, 2000, S | O, W), - d(82, N, 62, 62, 1, 2000, S | T | O, W), - d(83, 34, 63, 63, N, 3000, 0, W), - d(84, 22, 64, 64, 0, 700, S | T, W), - d(85, N, 65, 65, 0, 2000, S | T | O, W), - d(86, 0, 66, 66, 0, 1000, X, 15), + d(79, 33, 60, 60, N, 1000, S, W), + d(80, 29, 61, 61, 1, 700, S, W), + d(81, N, 62, 62, 1, 2000, S | O, W), + d(82, N, 63, 63, 1, 2000, S | T | O, W), + d(83, 34, 64, 64, N, 3000, 0, W), + d(84, 22, 65, 65, 0, 700, S | T, W), + d(85, N, 66, 66, 0, 2000, S | T | O, W), + d(86, 0, 67, 67, 0, 1000, X, 15), d(87, N, N, N, 3, 1200, L | T, W), - d(88, 35, 67, 67, 7, 3000, 0, 16), - d(89, 36, 68, 68, N, 500, S | TP, W), - d(90, 0, 69, 69, 0, 1000, S, W), - d(91, 37, 70, 70, 0, 7000, S, 17), - d(92, 0, 71, 71, N, 400, S | A, W), + d(88, 35, 68, 68, 7, 3000, 0, 16), + d(89, 36, 69, 69, N, 500, S | TP, W), + d(90, 0, 70, 70, 0, 1000, S, W), + d(91, 37, 71, 71, 0, 7000, S, 17), + d(92, 0, 72, 72, N, 400, S | A, W), d(93, 38, N, N, N, 5000, S, 18), - d(94, 20, 72, 72, 1, 2000, S | T | O, W), - d(95, 39, 73, 73, 0, 2000, S, 19), - d(96, 39, 74, 74, 0, 2000, S | T, W), - d(97, 9, 75, 75, 0, 1000, S | T | O, W), - d(98, 0, 76, 76, 0, 1000, S | T, W), - d(99, 40, 77, 77, 8, 6000, 0, 20), + d(94, 20, 73, 73, 1, 2000, S | T | O, W), + d(95, 39, 74, 74, 0, 2000, S, 19), + d(96, 39, 75, 75, 0, 2000, S | T, W), + d(97, 9, 76, 76, 0, 1000, S | T | O, W), + d(98, 0, 77, 77, 0, 1000, S | T, W), + d(99, 40, 78, 78, 8, 6000, 0, 20), d(100, N, N, N, 1, 5700, 0, W), - d(101, 41, 78, 78, 9, 1000, 0, 21), - d(102, 0, 79, 79, 0, 2000, S | O, 1), + d(101, 41, 79, 79, 9, 1000, 0, 21), + d(102, 0, 80, 80, 0, 2000, S | O, 1), d(103, N, N, N, N, 1900, T, W), d(104, N, N, N, N, 1900, 0, W), - d(105, 42, 80, 80, 0, 1000, 0, W), - d(106, 42, 81, 81, 0, 1000, T, W), - d(107, 13, 82, 82, 0, 400, S | T, W), - d(108, N, 83, 83, N, 5000, S, W), - d(109, N, 84, 84, 0, 1000, T | X, W), + d(105, 42, 81, 81, 0, 1000, 0, W), + d(106, 42, 82, 82, 0, 1000, T, W), + d(107, 13, 83, 83, 0, 400, S | T, W), + d(108, N, 84, 84, N, 5000, S, W), + d(109, N, 85, 85, 0, 1000, T | X, W), d(110, N, N, N, N, 0, S | T, W), - d(111, 43, 85, 85, 1, 2000, S, W), - d(112, 44, 86, 86, 1, 2000, S | T, W), - d(113, 32, 87, 87, N, 260, S | T, W), - d(114, 45, 88, 88, 1, 12000, S | T, W), - d(115, 14, 89, 89, 0, 1000, T, W), - d(116, 0, 90, 90, 0, 0, S | T | E, W), - d(117, N, 91, 91, N, 3000, S | T, W), - d(118, N, 92, 92, N, 1000, S | T, W), - d(119, N, 93, 93, N, 1000, 0, W), + d(111, 43, 86, 86, 1, 2000, S, W), + d(112, 44, 87, 87, 1, 2000, S | T, W), + d(113, 32, 88, 88, N, 260, S | T, W), + d(114, 45, 89, 89, 1, 12000, S | T, W), + d(115, 14, 90, 90, 0, 1000, T, W), + d(116, 0, 91, 91, 0, 0, S | T | E, W), + d(117, N, 92, 92, N, 3000, S | T, W), + d(118, N, 93, 93, N, 1000, S | T, W), + d(119, N, 94, 94, N, 1000, 0, W), d(120, N, N, N, N, 5500, 0, W), d(121, 36, N, N, N, 500, S | T | TP, W), d(122, N, N, N, N, 200, S | T, W), - d(123, 46, 94, 94, 1, 260, S | T, W), - d(124, 46, 95, 95, 0, 260, S, 22), - d(125, N, 96, 96, 1, 2000, S | O, W), - d(126, 47, 97, 97, N, 1000, T | X, W), - d(127, 0, 98, 98, 0, 260, S | A, 23), - d(128, 0, 99, 99, 0, 260, S | A, W), - d(129, 48, 100, 100, 0, 1000, S | O, W), - d(130, N, 101, 101, N, 0, L | T, W), - d(131, N, 102, 102, N, 6000, L, W), - d(132, 36, 68, 103, N, 500, S | T | TP, W), - d(133, 36, 68, 104, N, 500, S | T | TP, W), - d(134, 49, 103, 105, 1, 5000, S, W), - d(135, N, 104, 106, 0, 2000, S | T, W), - d(136, N, 105, 107, 0, 2000, S, 24), - d(137, 50, 106, 108, 0, 7000, S | T, 17), - d(138, 50, 107, 109, N, 7000, S | T, 17), - d(139, 0, 108, 110, N, 400, S | T | A, W), - d(140, 51, 109, 111, 0, 1000, L | X, 25), - d(141, 0, 110, 112, 1, 260, S, 26), - d(142, 0, 111, 113, 1, 1000, S | O, W), + d(123, 46, 95, 95, 1, 260, S | T, W), + d(124, 46, 96, 96, 0, 260, S, 22), + d(125, N, 97, 97, 1, 2000, S | O, W), + d(126, 47, 98, 98, N, 1000, T | X, W), + d(127, 0, 99, 99, 0, 260, S | A, 23), + d(128, 0, 100, 100, 0, 260, S | A, W), + d(129, 48, 101, 101, 0, 1000, S | O, W), + d(130, N, 102, 102, N, 0, L | T, W), + d(131, N, 103, 103, N, 6000, L, W), + d(132, 36, 69, 104, N, 500, S | T | TP, W), + d(133, 36, 69, 105, N, 500, S | T | TP, W), + d(134, 49, 104, 106, 1, 5000, S, W), + d(135, N, 105, 107, 0, 2000, S | T, W), + d(136, N, 106, 108, 0, 2000, S, 24), + d(137, 50, 107, 109, 0, 7000, S | T, 17), + d(138, 50, 108, 110, N, 7000, S | T, 17), + d(139, 0, 109, 111, N, 400, S | T | A, W), + d(140, 51, 110, 112, 0, 1000, L | X, 25), + d(141, 0, 111, 113, 1, 260, S, 26), + d(142, 0, 112, 114, 1, 1000, S | O, W), d(143, N, N, N, 1, 2000, T | O, W), d(144, N, N, N, N, 2000, T, W), - d(145, N, 112, 114, 0, 2000, T, W), - d(146, 0, 113, 115, 0, 2000, S, 27), - d(147, 0, 114, 116, N, 2000, S, W), + d(145, N, 113, 115, 0, 2000, T, W), + d(146, 0, 114, 116, 0, 2000, S, 27), + d(147, 0, 115, 117, N, 2000, S, W), d(148, 52, N, N, N, 0, L, 28), - d(149, 53, 115, 117, N, 500, S | T, W), - d(150, 12, 116, 118, 0, 2100, T, W), - d(151, 54, 117, 119, 10, 2000, S | T, W), - d(152, 54, 118, 120, 10, 2000, S, 29), - d(153, N, 119, 121, 0, 2000, S, 30), + d(149, 53, 116, 118, N, 500, S | T, W), + d(150, 12, 117, 119, 0, 2100, T, W), + d(151, 54, 118, 120, 10, 2000, S | T, W), + d(152, 54, 119, 121, 10, 2000, S, 29), + d(153, N, 120, 122, 0, 2000, S, 30), d(154, 0, N, N, 0, 2000, S | T | O, W), - d(155, 0, 120, 122, 0, 2000, S | T | O, W), - d(156, 55, 121, 123, N, 260, S, W), - d(157, 55, 122, 124, N, 260, S | T, W), - d(158, 0, 123, 125, 1, 260, S | T, W), - d(159, 32, 124, 126, N, 260, S, W), - d(160, 49, 125, 127, 1, 5000, S | T, W), - d(161, 0, 126, 128, 0, 12000, S, 31), - d(162, 0, 127, 129, 0, 12000, S | T, W), - d(163, 35, 128, 130, 11, 3000, 0, 32), - d(164, 34, 129, 131, N, 3000, T, W), - d(165, N, 130, 132, N, 30000, T, W), + d(155, 0, 121, 123, 0, 2000, S | T | O, W), + d(156, 55, 122, 124, N, 260, S, W), + d(157, 55, 123, 125, N, 260, S | T, W), + d(158, 0, 124, 126, 1, 260, S | T, W), + d(159, 32, 125, 127, N, 260, S, W), + d(160, 49, 126, 128, 1, 5000, S | T, W), + d(161, 0, 127, 129, 0, 12000, S, 31), + d(162, 0, 128, 130, 0, 12000, S | T, W), + d(163, 35, 129, 131, 11, 3000, 0, 32), + d(164, 34, 130, 132, N, 3000, T, W), + d(165, N, 131, 133, N, 30000, T, W), d(166, N, N, N, 0, 260, T | A, W), d(167, N, N, N, 0, 260, T | A, W), - d(168, N, 131, 133, 0, 260, S | T | A, W), - d(169, N, 132, 134, 0, 260, S | T, W), + d(168, N, 132, 134, 0, 260, S | T | A, W), + d(169, N, 133, 135, 0, 260, S | T, W), d(170, N, N, N, N, 1000, S | T, W), - d(171, 0, 133, 135, 0, 3000, S | T, W), - d(172, 0, 134, 136, 0, 3000, S, 33), - d(173, N, 135, 137, 0, 0, S | T, W), - d(174, 56, 136, 138, 0, 260, S, W), - d(175, 57, N, N, N, 1000, S | T, W), - d(176, 53, 137, 139, N, 500, S, W), - d(177, 0, 138, 140, 0, 1000, S | O, W), - d(178, N, 139, 141, 1, 1000, S | T | O, W), - d(179, N, 140, 142, N, 2000, S | T, W), - d(180, N, 141, 143, N, 1000, S | T | O, W), + d(171, 0, 134, 136, 0, 3000, S | T, W), + d(172, 0, 135, 137, 0, 3000, S, 33), + d(173, N, 136, 138, 0, 0, S | T, W), + d(174, 56, 137, 139, 0, 260, S, W), + d(175, 57, 138, 140, N, 1000, S | T, W), + d(176, 53, 139, 141, N, 500, S, W), + d(177, 0, 140, 142, 0, 1000, S | O, W), + d(178, N, 141, 143, 1, 1000, S | T | O, W), + d(179, N, 142, 144, N, 2000, S | T, W), + d(180, N, 143, 145, N, 1000, S | T | O, W), d(181, 52, N, N, N, 0, L | T, W), - d(182, 58, 142, 144, 1, 500, S | T, W), - d(183, N, 143, 145, 1, 2000, O, W), - d(184, 48, 144, 146, 1, 1000, S | T, W), - d(185, 0, 145, 147, 0, 0, S | T | E, W), - d(186, 0, 146, 148, 0, 2000, S | T | O, W), - d(187, 59, 147, 149, 2, 0, S, W), - d(188, 59, 148, 150, 2, 0, S | T, W), - d(189, N, 149, 151, 0, 2000, S | T | O, W), - d(190, N, 150, 152, 1, 1000, T, W), - d(191, 60, 151, 153, 1, 2000, S | T, W), - d(192, 61, 152, 154, 1, 2000, S, W), - d(193, 62, 153, 155, 1, 2000, S, W), - d(194, 51, 154, 156, 0, 1000, L | T | X, W), - d(195, 63, 155, 157, N, 600, 0, W), - d(196, N, 156, 158, 1, 2000, S | T | O, W), - d(197, N, 157, 159, 1, 1000, 0, W), - d(198, N, 158, 160, 0, 1100, 0, W), - d(199, N, 159, 161, 0, 1100, T, W), - d(200, 56, 160, 162, 0, 260, S | T, W), + d(182, 58, 144, 146, 1, 500, S | T, W), + d(183, N, 145, 147, 1, 2000, O, W), + d(184, 48, 146, 148, 1, 1000, S | T, W), + d(185, 0, 147, 149, 0, 0, S | T | E, W), + d(186, 0, 148, 150, 0, 2000, S | T | O, W), + d(187, 59, 149, 151, 2, 0, S, W), + d(188, 59, 150, 152, 2, 0, S | T, W), + d(189, N, 151, 153, 0, 2000, S | T | O, W), + d(190, N, 152, 154, 1, 1000, T, W), + d(191, 60, 153, 155, 1, 2000, S | T, W), + d(192, 61, 154, 156, 1, 2000, S, W), + d(193, 62, 155, 157, 1, 2000, S, W), + d(194, 51, 156, 158, 0, 1000, L | T | X, W), + d(195, 63, 157, 159, N, 600, 0, W), + d(196, N, 158, 160, 1, 2000, S | T | O, W), + d(197, N, 159, 161, 1, 1000, 0, W), + d(198, N, 160, 162, 0, 1100, 0, W), + d(199, N, 161, 163, 0, 1100, T, W), + d(200, 56, 162, 164, 0, 260, S | T, W), ] }; From f7aca122264e1ebeed4ae00c741d700aeae3bbd0 Mon Sep 17 00:00:00 2001 From: DaniPopes <57450786+DaniPopes@users.noreply.github.com> Date: Mon, 13 Jul 2026 23:06:15 +0200 Subject: [PATCH 5/5] fix: remove Pharos explorer URLs SocialScan separates general API reads from contract verification across two endpoints, while the chain registry exposes only one API URL. Avoid advertising the verification-only endpoint as a general Etherscan API. --- assets/chains.json | 8 +- registry/manual.json | 8 +- src/generated/named.rs | 218 ++++++++++++++++++++--------------------- 3 files changed, 113 insertions(+), 121 deletions(-) diff --git a/assets/chains.json b/assets/chains.json index 0251194..afaabfa 100644 --- a/assets/chains.json +++ b/assets/chains.json @@ -956,8 +956,8 @@ "supportsShanghai": true, "isTestnet": false, "nativeCurrencySymbol": "PROS", - "etherscanApiUrl": "https://api.socialscan.io/pharos-mainnet/v1/explorer/command_api/contract", - "etherscanBaseUrl": "https://pharosscan.xyz", + "etherscanApiUrl": null, + "etherscanBaseUrl": null, "etherscanApiKeyName": null }, "1776": { @@ -2108,8 +2108,8 @@ "supportsShanghai": true, "isTestnet": true, "nativeCurrencySymbol": "PHRS", - "etherscanApiUrl": "https://api.socialscan.io/pharos-testnet/v1/explorer/command_api/contract", - "etherscanBaseUrl": "https://testnet.pharosscan.xyz", + "etherscanApiUrl": null, + "etherscanBaseUrl": null, "etherscanApiKeyName": null }, "723487": { diff --git a/registry/manual.json b/registry/manual.json index b9caca3..a058ea5 100644 --- a/registry/manual.json +++ b/registry/manual.json @@ -2449,9 +2449,7 @@ "name": "pharos", "averageBlocktimeHint": 1000, "supportsShanghai": true, - "nativeCurrencySymbol": "PROS", - "etherscanApiUrl": "https://api.socialscan.io/pharos-mainnet/v1/explorer/command_api/contract", - "etherscanBaseUrl": "https://pharosscan.xyz" + "nativeCurrencySymbol": "PROS" }, { "chainId": 688688, @@ -2460,9 +2458,7 @@ "averageBlocktimeHint": 1000, "supportsShanghai": true, "isTestnet": true, - "nativeCurrencySymbol": "PHRS", - "etherscanApiUrl": "https://api.socialscan.io/pharos-testnet/v1/explorer/command_api/contract", - "etherscanBaseUrl": "https://testnet.pharosscan.xyz" + "nativeCurrencySymbol": "PHRS" } ] } diff --git a/src/generated/named.rs b/src/generated/named.rs index d8246f6..74af705 100644 --- a/src/generated/named.rs +++ b/src/generated/named.rs @@ -1389,7 +1389,7 @@ static NATIVE_CURRENCY_SYMBOLS: [&str; 64] = [ "KSM", "DOT", "DEGEN", ]; -static ETHERSCAN_API_URLS: [&str; 163] = [ +static ETHERSCAN_API_URLS: [&str; 161] = [ "https://api.etherscan.io/v2/api?chainid=1", "https://api.etherscan.io/v2/api?chainid=10", "https://flare-explorer.flare.network/api", @@ -1450,7 +1450,6 @@ static ETHERSCAN_API_URLS: [&str; 163] = [ "https://api.vanascan.io/api", "https://www.storyscan.xyz/api", "https://explorer.gravity.xyz/api", - "https://api.socialscan.io/pharos-mainnet/v1/explorer/command_api/contract", "https://blockscout-api.injective.network/api", "https://soneium.blockscout.com/api", "https://soneium-minato.blockscout.com/api", @@ -1528,7 +1527,6 @@ static ETHERSCAN_API_URLS: [&str; 163] = [ "https://api.etherscan.io/v2/api?chainid=534352", "https://api.etherscan.io/v2/api?chainid=560048", "https://api.etherscan.io/v2/api?chainid=660279", - "https://api.socialscan.io/pharos-testnet/v1/explorer/command_api/contract", "https://network.radiustech.xyz/api", "https://api.etherscan.io/v2/api?chainid=747474", "https://explorer-sepolia.inkonchain.com/api/v2", @@ -1555,7 +1553,7 @@ static ETHERSCAN_API_URLS: [&str; 163] = [ "https://api.etherscan.io/v2/api?chainid=37714555429", ]; -static ETHERSCAN_BASE_URLS: [&str; 165] = [ +static ETHERSCAN_BASE_URLS: [&str; 163] = [ "https://etherscan.io", "https://optimistic.etherscan.io", "https://flare-explorer.flare.network", @@ -1616,7 +1614,6 @@ static ETHERSCAN_BASE_URLS: [&str; 165] = [ "https://vanascan.io", "https://www.storyscan.xyz", "https://explorer.gravity.xyz", - "https://pharosscan.xyz", "https://blockscout.injective.network", "https://soneium.blockscout.com", "https://soneium-minato.blockscout.com", @@ -1696,7 +1693,6 @@ static ETHERSCAN_BASE_URLS: [&str; 165] = [ "https://scrollscan.com", "https://hoodi.etherscan.io", "https://xaiscan.io", - "https://testnet.pharosscan.xyz", "https://network.radiustech.xyz", "https://katanascan.com", "https://explorer-sepolia.inkonchain.com", @@ -1890,128 +1886,128 @@ static CHAIN_DATA: [ChainData; 201] = { d(76, 30, 57, 57, 1, 6000, 0, 13), d(77, 31, 58, 58, 1, 2500, 0, 14), d(78, 32, 59, 59, N, 260, S, W), - d(79, 33, 60, 60, N, 1000, S, W), - d(80, 29, 61, 61, 1, 700, S, W), - d(81, N, 62, 62, 1, 2000, S | O, W), - d(82, N, 63, 63, 1, 2000, S | T | O, W), - d(83, 34, 64, 64, N, 3000, 0, W), - d(84, 22, 65, 65, 0, 700, S | T, W), - d(85, N, 66, 66, 0, 2000, S | T | O, W), - d(86, 0, 67, 67, 0, 1000, X, 15), + d(79, 33, N, N, N, 1000, S, W), + d(80, 29, 60, 60, 1, 700, S, W), + d(81, N, 61, 61, 1, 2000, S | O, W), + d(82, N, 62, 62, 1, 2000, S | T | O, W), + d(83, 34, 63, 63, N, 3000, 0, W), + d(84, 22, 64, 64, 0, 700, S | T, W), + d(85, N, 65, 65, 0, 2000, S | T | O, W), + d(86, 0, 66, 66, 0, 1000, X, 15), d(87, N, N, N, 3, 1200, L | T, W), - d(88, 35, 68, 68, 7, 3000, 0, 16), - d(89, 36, 69, 69, N, 500, S | TP, W), - d(90, 0, 70, 70, 0, 1000, S, W), - d(91, 37, 71, 71, 0, 7000, S, 17), - d(92, 0, 72, 72, N, 400, S | A, W), + d(88, 35, 67, 67, 7, 3000, 0, 16), + d(89, 36, 68, 68, N, 500, S | TP, W), + d(90, 0, 69, 69, 0, 1000, S, W), + d(91, 37, 70, 70, 0, 7000, S, 17), + d(92, 0, 71, 71, N, 400, S | A, W), d(93, 38, N, N, N, 5000, S, 18), - d(94, 20, 73, 73, 1, 2000, S | T | O, W), - d(95, 39, 74, 74, 0, 2000, S, 19), - d(96, 39, 75, 75, 0, 2000, S | T, W), - d(97, 9, 76, 76, 0, 1000, S | T | O, W), - d(98, 0, 77, 77, 0, 1000, S | T, W), - d(99, 40, 78, 78, 8, 6000, 0, 20), + d(94, 20, 72, 72, 1, 2000, S | T | O, W), + d(95, 39, 73, 73, 0, 2000, S, 19), + d(96, 39, 74, 74, 0, 2000, S | T, W), + d(97, 9, 75, 75, 0, 1000, S | T | O, W), + d(98, 0, 76, 76, 0, 1000, S | T, W), + d(99, 40, 77, 77, 8, 6000, 0, 20), d(100, N, N, N, 1, 5700, 0, W), - d(101, 41, 79, 79, 9, 1000, 0, 21), - d(102, 0, 80, 80, 0, 2000, S | O, 1), + d(101, 41, 78, 78, 9, 1000, 0, 21), + d(102, 0, 79, 79, 0, 2000, S | O, 1), d(103, N, N, N, N, 1900, T, W), d(104, N, N, N, N, 1900, 0, W), - d(105, 42, 81, 81, 0, 1000, 0, W), - d(106, 42, 82, 82, 0, 1000, T, W), - d(107, 13, 83, 83, 0, 400, S | T, W), - d(108, N, 84, 84, N, 5000, S, W), - d(109, N, 85, 85, 0, 1000, T | X, W), + d(105, 42, 80, 80, 0, 1000, 0, W), + d(106, 42, 81, 81, 0, 1000, T, W), + d(107, 13, 82, 82, 0, 400, S | T, W), + d(108, N, 83, 83, N, 5000, S, W), + d(109, N, 84, 84, 0, 1000, T | X, W), d(110, N, N, N, N, 0, S | T, W), - d(111, 43, 86, 86, 1, 2000, S, W), - d(112, 44, 87, 87, 1, 2000, S | T, W), - d(113, 32, 88, 88, N, 260, S | T, W), - d(114, 45, 89, 89, 1, 12000, S | T, W), - d(115, 14, 90, 90, 0, 1000, T, W), - d(116, 0, 91, 91, 0, 0, S | T | E, W), - d(117, N, 92, 92, N, 3000, S | T, W), - d(118, N, 93, 93, N, 1000, S | T, W), - d(119, N, 94, 94, N, 1000, 0, W), + d(111, 43, 85, 85, 1, 2000, S, W), + d(112, 44, 86, 86, 1, 2000, S | T, W), + d(113, 32, 87, 87, N, 260, S | T, W), + d(114, 45, 88, 88, 1, 12000, S | T, W), + d(115, 14, 89, 89, 0, 1000, T, W), + d(116, 0, 90, 90, 0, 0, S | T | E, W), + d(117, N, 91, 91, N, 3000, S | T, W), + d(118, N, 92, 92, N, 1000, S | T, W), + d(119, N, 93, 93, N, 1000, 0, W), d(120, N, N, N, N, 5500, 0, W), d(121, 36, N, N, N, 500, S | T | TP, W), d(122, N, N, N, N, 200, S | T, W), - d(123, 46, 95, 95, 1, 260, S | T, W), - d(124, 46, 96, 96, 0, 260, S, 22), - d(125, N, 97, 97, 1, 2000, S | O, W), - d(126, 47, 98, 98, N, 1000, T | X, W), - d(127, 0, 99, 99, 0, 260, S | A, 23), - d(128, 0, 100, 100, 0, 260, S | A, W), - d(129, 48, 101, 101, 0, 1000, S | O, W), - d(130, N, 102, 102, N, 0, L | T, W), - d(131, N, 103, 103, N, 6000, L, W), - d(132, 36, 69, 104, N, 500, S | T | TP, W), - d(133, 36, 69, 105, N, 500, S | T | TP, W), - d(134, 49, 104, 106, 1, 5000, S, W), - d(135, N, 105, 107, 0, 2000, S | T, W), - d(136, N, 106, 108, 0, 2000, S, 24), - d(137, 50, 107, 109, 0, 7000, S | T, 17), - d(138, 50, 108, 110, N, 7000, S | T, 17), - d(139, 0, 109, 111, N, 400, S | T | A, W), - d(140, 51, 110, 112, 0, 1000, L | X, 25), - d(141, 0, 111, 113, 1, 260, S, 26), - d(142, 0, 112, 114, 1, 1000, S | O, W), + d(123, 46, 94, 94, 1, 260, S | T, W), + d(124, 46, 95, 95, 0, 260, S, 22), + d(125, N, 96, 96, 1, 2000, S | O, W), + d(126, 47, 97, 97, N, 1000, T | X, W), + d(127, 0, 98, 98, 0, 260, S | A, 23), + d(128, 0, 99, 99, 0, 260, S | A, W), + d(129, 48, 100, 100, 0, 1000, S | O, W), + d(130, N, 101, 101, N, 0, L | T, W), + d(131, N, 102, 102, N, 6000, L, W), + d(132, 36, 68, 103, N, 500, S | T | TP, W), + d(133, 36, 68, 104, N, 500, S | T | TP, W), + d(134, 49, 103, 105, 1, 5000, S, W), + d(135, N, 104, 106, 0, 2000, S | T, W), + d(136, N, 105, 107, 0, 2000, S, 24), + d(137, 50, 106, 108, 0, 7000, S | T, 17), + d(138, 50, 107, 109, N, 7000, S | T, 17), + d(139, 0, 108, 110, N, 400, S | T | A, W), + d(140, 51, 109, 111, 0, 1000, L | X, 25), + d(141, 0, 110, 112, 1, 260, S, 26), + d(142, 0, 111, 113, 1, 1000, S | O, W), d(143, N, N, N, 1, 2000, T | O, W), d(144, N, N, N, N, 2000, T, W), - d(145, N, 113, 115, 0, 2000, T, W), - d(146, 0, 114, 116, 0, 2000, S, 27), - d(147, 0, 115, 117, N, 2000, S, W), + d(145, N, 112, 114, 0, 2000, T, W), + d(146, 0, 113, 115, 0, 2000, S, 27), + d(147, 0, 114, 116, N, 2000, S, W), d(148, 52, N, N, N, 0, L, 28), - d(149, 53, 116, 118, N, 500, S | T, W), - d(150, 12, 117, 119, 0, 2100, T, W), - d(151, 54, 118, 120, 10, 2000, S | T, W), - d(152, 54, 119, 121, 10, 2000, S, 29), - d(153, N, 120, 122, 0, 2000, S, 30), + d(149, 53, 115, 117, N, 500, S | T, W), + d(150, 12, 116, 118, 0, 2100, T, W), + d(151, 54, 117, 119, 10, 2000, S | T, W), + d(152, 54, 118, 120, 10, 2000, S, 29), + d(153, N, 119, 121, 0, 2000, S, 30), d(154, 0, N, N, 0, 2000, S | T | O, W), - d(155, 0, 121, 123, 0, 2000, S | T | O, W), - d(156, 55, 122, 124, N, 260, S, W), - d(157, 55, 123, 125, N, 260, S | T, W), - d(158, 0, 124, 126, 1, 260, S | T, W), - d(159, 32, 125, 127, N, 260, S, W), - d(160, 49, 126, 128, 1, 5000, S | T, W), - d(161, 0, 127, 129, 0, 12000, S, 31), - d(162, 0, 128, 130, 0, 12000, S | T, W), - d(163, 35, 129, 131, 11, 3000, 0, 32), - d(164, 34, 130, 132, N, 3000, T, W), - d(165, N, 131, 133, N, 30000, T, W), + d(155, 0, 120, 122, 0, 2000, S | T | O, W), + d(156, 55, 121, 123, N, 260, S, W), + d(157, 55, 122, 124, N, 260, S | T, W), + d(158, 0, 123, 125, 1, 260, S | T, W), + d(159, 32, 124, 126, N, 260, S, W), + d(160, 49, 125, 127, 1, 5000, S | T, W), + d(161, 0, 126, 128, 0, 12000, S, 31), + d(162, 0, 127, 129, 0, 12000, S | T, W), + d(163, 35, 128, 130, 11, 3000, 0, 32), + d(164, 34, 129, 131, N, 3000, T, W), + d(165, N, 130, 132, N, 30000, T, W), d(166, N, N, N, 0, 260, T | A, W), d(167, N, N, N, 0, 260, T | A, W), - d(168, N, 132, 134, 0, 260, S | T | A, W), - d(169, N, 133, 135, 0, 260, S | T, W), + d(168, N, 131, 133, 0, 260, S | T | A, W), + d(169, N, 132, 134, 0, 260, S | T, W), d(170, N, N, N, N, 1000, S | T, W), - d(171, 0, 134, 136, 0, 3000, S | T, W), - d(172, 0, 135, 137, 0, 3000, S, 33), - d(173, N, 136, 138, 0, 0, S | T, W), - d(174, 56, 137, 139, 0, 260, S, W), - d(175, 57, 138, 140, N, 1000, S | T, W), - d(176, 53, 139, 141, N, 500, S, W), - d(177, 0, 140, 142, 0, 1000, S | O, W), - d(178, N, 141, 143, 1, 1000, S | T | O, W), - d(179, N, 142, 144, N, 2000, S | T, W), - d(180, N, 143, 145, N, 1000, S | T | O, W), + d(171, 0, 133, 135, 0, 3000, S | T, W), + d(172, 0, 134, 136, 0, 3000, S, 33), + d(173, N, 135, 137, 0, 0, S | T, W), + d(174, 56, 136, 138, 0, 260, S, W), + d(175, 57, N, N, N, 1000, S | T, W), + d(176, 53, 137, 139, N, 500, S, W), + d(177, 0, 138, 140, 0, 1000, S | O, W), + d(178, N, 139, 141, 1, 1000, S | T | O, W), + d(179, N, 140, 142, N, 2000, S | T, W), + d(180, N, 141, 143, N, 1000, S | T | O, W), d(181, 52, N, N, N, 0, L | T, W), - d(182, 58, 144, 146, 1, 500, S | T, W), - d(183, N, 145, 147, 1, 2000, O, W), - d(184, 48, 146, 148, 1, 1000, S | T, W), - d(185, 0, 147, 149, 0, 0, S | T | E, W), - d(186, 0, 148, 150, 0, 2000, S | T | O, W), - d(187, 59, 149, 151, 2, 0, S, W), - d(188, 59, 150, 152, 2, 0, S | T, W), - d(189, N, 151, 153, 0, 2000, S | T | O, W), - d(190, N, 152, 154, 1, 1000, T, W), - d(191, 60, 153, 155, 1, 2000, S | T, W), - d(192, 61, 154, 156, 1, 2000, S, W), - d(193, 62, 155, 157, 1, 2000, S, W), - d(194, 51, 156, 158, 0, 1000, L | T | X, W), - d(195, 63, 157, 159, N, 600, 0, W), - d(196, N, 158, 160, 1, 2000, S | T | O, W), - d(197, N, 159, 161, 1, 1000, 0, W), - d(198, N, 160, 162, 0, 1100, 0, W), - d(199, N, 161, 163, 0, 1100, T, W), - d(200, 56, 162, 164, 0, 260, S | T, W), + d(182, 58, 142, 144, 1, 500, S | T, W), + d(183, N, 143, 145, 1, 2000, O, W), + d(184, 48, 144, 146, 1, 1000, S | T, W), + d(185, 0, 145, 147, 0, 0, S | T | E, W), + d(186, 0, 146, 148, 0, 2000, S | T | O, W), + d(187, 59, 147, 149, 2, 0, S, W), + d(188, 59, 148, 150, 2, 0, S | T, W), + d(189, N, 149, 151, 0, 2000, S | T | O, W), + d(190, N, 150, 152, 1, 1000, T, W), + d(191, 60, 151, 153, 1, 2000, S | T, W), + d(192, 61, 152, 154, 1, 2000, S, W), + d(193, 62, 153, 155, 1, 2000, S, W), + d(194, 51, 154, 156, 0, 1000, L | T | X, W), + d(195, 63, 155, 157, N, 600, 0, W), + d(196, N, 156, 158, 1, 2000, S | T | O, W), + d(197, N, 157, 159, 1, 1000, 0, W), + d(198, N, 158, 160, 0, 1100, 0, W), + d(199, N, 159, 161, 0, 1100, T, W), + d(200, 56, 160, 162, 0, 260, S | T, W), ] };